เครื่องมือดูสถานะระบบอย่างละเอียด (centos)

หลายๆ ตัวมันไว้ดูรายละเอียดการทำงานของเครื่องได้เยอะ
บางตัวอาจเฉพาะทาง แล้วก็ดูงงๆ หน่อย
แต่ใช้รวมกันก็ช่วยให้เรามีข้อมูลในการวิเคราะห์หาสาเหตุข้อขัดข้องต่างๆ ของระบบได้ดีขึ้น
รายการต่อไปนี้เป็นเครื่องมือที่ผมใช้อยู่บ่อยๆ ใครมีอะไรเสริมก็แนะนำเพิ่มได้เลยครับ

อันแรกเลยครับ เครื่องมือหลักประจำเครื่อง

[B][COLOR=#ff0000][SIZE=5]" top "[/SIZE][/COLOR][/B]


(capture ช้าไปสองวิ เสียดายจัง)

ไม่ต้องลงเพิ่ม ติดมากับ os อยู่แล้วไม่ว่าจะลงแบบ minimal ขนาดไหน
หรือถ้าทำหายไป มันจะอยู่ใน package “procps” ครับ

[COLOR=#666666][FONT=Tahoma][B]มันบอกอะไรบ้าง[/B]
ไล่ทีละบรรทัด เลยนะครับ (คิดจากค่าปกติของ centos ซึ่ง os อื่นๆ ก็คล้ายๆ กัน อาจมีแตกต่างบ้างแล้วแต่การปรับตั้งค่า)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]บรรทัดบนสุด
top – [COLOR=red]09:13:20[/COLOR] [COLOR=green]up 187 days, 8:40[/COLOR], [COLOR=purple]1 user[/COLOR], [COLOR=blue]load average: 0.43, 0.66, 0.61[/COLOR]
[COLOR=red]สีแดง[/COLOR]: เวลาปัจจุบันของ server
[COLOR=green]สีเขียว[/COLOR]: uptime (ระยะเวลาตั้งแต่ boot OS ขึ้นมา)
[COLOR=purple]สีม่วง[/COLOR]: จำนวน user ที่ login เข้าไปใน shell (การ login หน้าเครื่อง + ssh ที่เปิด terminal เท่านั้น)
[COLOR=blue]สีน้ำเงิน[/COLOR]: load average : ปริมาณงานที่ “ค้าง” ในระบบเฉลี่ย ในรอบ 1 , 5 และ 15 นาทีตามลำดับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
บรรทัดที่ 2: บรรทัดนี้จะบอกข้อมูลเกี่ยวกับ process ในเครื่องครับ
Tasks: [COLOR=red]183 total[/COLOR], [COLOR=green]3 running[/COLOR], [COLOR=purple]180 sleeping[/COLOR], [COLOR=blue]0 stopped[/COLOR], [COLOR=#FFC0CB]0 zombie[/COLOR]
[COLOR=red]สีแดง[/COLOR]: จำนวน process ทั้งหมด
[COLOR=green]สีเขียว[/COLOR]: จำนวน process ที่กำลังเรียกใช้ CPU อยู่ “ณ เวลานั้นๆ”
[COLOR=purple]สีม่วง[/COLOR]: จำนวน process ที่ไม่มีการทำงาน/ไม่มีการเรียกใช้ CPU อยู่
[COLOR=blue]สีน้ำเงิน[/COLOR]: process ที่อยู่ในสถานะ “หยุด” (ไอนี้ไม่แน่ใจครับ คู่มือมันเขียนแบบนั้นแต่ผมไม่เคยเห็นตัวเลขขึ้นซักที)
[COLOR=#FFC0CB]สีชมพู[/COLOR]: process ผีดิบ => มันคือ process ที่ตาย/จบการทำงานไปแล้ว แต่ยังไม่สามารถ clear ออกจากหน่วยความจำได้ ส่วนมากจะเป็นพวก process ที่รอการตอบสนองจาก hardware ต่างๆ อยู่ครับ (รวมถึงแรมด้วย)

[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]บรรทัดที่ 3: การใช้งาน CPU อันนี้มีของเล่นนิดหน่อยครับ สำหรับเครื่องที่ cpu หลาย core หรือหลาย cpu
Cpu(s): 4.0%us, 0.7%sy, 0.0%ni, 94.1%id, 0.9%wa, 0.0%hi, 0.3%si, 0.0%st[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]สังเกต ดีๆ มันจะเขียนหน้าบรรทัดว่า Cpu(s) <– ตรง (s) หมายความว่าเป็นภาพรวม cpu ทุก core
ให้กดแป้นพิมพ์เลข 1 ตรงแป้นพิมพ์ธรรมดา ที่อยู่ข้างๆ ปุ่มตัวหนอน (` / ~) แล้วมันจะแตกออกมาเป็นแบบนี้ครับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]Cpu0 : 27.6%us, 7.2%sy, 0.2%ni, 53.6%id, 10.9%wa, 0.0%hi, 0.5%si, 0.0%st
Cpu1 : 28.1%us, 7.2%sy, 0.1%ni, 55.3%id, 9.0%wa, 0.0%hi, 0.4%si, 0.0%st
Cpu2 : 27.8%us, 7.0%sy, 0.2%ni, 62.0%id, 2.8%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu3 : 28.1%us, 7.3%sy, 0.2%ni, 58.8%id, 3.4%wa, 0.2%hi, 2.1%si, 0.0%st[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]แยกกันให้เห็นหมดเลย ว่า CPU ไหนกำลังทำอะไรอยู่
ทีนี้ แต่ละ column ที่มีตัวอักษรย่อสองตัว มีความหมายต่างกันตามนี้ครับ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]us => user :: เป็นการเรียกใช้ CPU ตามปกติของโปรแกรม ที่เป็นการประมวลผลภายในโปรแกรมนั้นๆ
sy => system :: การเรียกใช้คำสั่งในระดับ kernel ที่มีการประมวลผลอยู่ภายใน kernel โดยไม่เรียกใช้ hardware
ni => nice :: การจัดลำดับความสำคัญของการประมวลผล (priority) ไว้สลับการทำงานของ process ที่มี priority ต่างๆ กันเวลาเรียกใช้ cpu พร้อมๆ กัน
id => idle :: cpu ที่ว่างงาน
wa => iowait :: เป็นการ ‘เสีย เวลารอ’ การเรียกใช้ และติดต่อกับ hardware ตั้งแต่ harddisk ram การ์ดจอ การ์ดแลน (แต่ส่วนใหญ่ก็ harddisk แหละ)
hi => ?
si => ? (สามอันนี้ขออภัยด้วยครับ ไม่ทราบจริงๆ ส่วนมากก็ไม่ค่อยขึ้นมาให้เห็นเท่าไหร่ด้วย)
st => ?[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
บรรทัดที่ 4-5: เกี่ยวกับหน่วยความจำ ขอรวบเป็นหัวข้อเดียวเลยนะครับ เพราะมันเกี่ยวข้องกัน
Mem: [COLOR=red]8310380k total[/COLOR], [COLOR=#FFC0CB]4970936k used[/COLOR], [COLOR=green]3339444k free[/COLOR], [COLOR=orange]217448k buffers[/COLOR]
Swap: [COLOR=purple]6225904k total[/COLOR], [COLOR=blue]52816k used[/COLOR], [COLOR=#A52A2A]6173088k free[/COLOR], 3001860k cached
[COLOR=red]สีแดง[/COLOR]: RAM ทั้งหมดที่ติดตั้งไว้ และ OS มองเห็น (หมายถึงหน่วยความจำหลักอย่างเดียวครับ)
[COLOR=#FFC0CB]สีชมพู[/COLOR]: ใช้แรมไปแล้ว “ทั้งหมด” เท่าไหร่
[COLOR=green]สีเขียว[/COLOR]: แรมที่ยังว่างจริงๆ (คือไม่ได้จองให้กับอะไรเลย)
[COLOR=orange]สีส้ม[/COLOR]: แรมที่ถูกใช้เป็น buffer ที่พักข้อมูลก่อนที่จะมีการอ่าน/เขียนลง harddisk หรือ CPU
[COLOR=purple]สีม่วง[/COLOR]: swap space พื้นที่แรมเสมือนทั้งหมด ที่ใช้พื้นที่จาก harddisk เก็บข้อมูลแทนแรม — บน windows มันจะมีชื่อว่า pagefile
[COLOR=blue]สีน้ำเงิน[/COLOR]: ปริมาณการใช้งาน swap space มากน้อยไม่ใช่ปัญหาเท่าไหร่ (ถึงมันจะไม่ควรใช้ก็ตาม) แต่ถ้าตัวเลขแกว่งไปมา (พร้อมกับ iowait พุ่ง) หมายความว่ามีปัญหาแรมไม่พอจนต้องมาเขียนลง swap space
[COLOR=#A52A2A]สีน้ำตาล[/COLOR]: พื้นที่ swap space ที่ไม่ได้ใช้งาน
สีดำ: เป็น file system memory cache ครับ คือ linux จะมีการใช้ ram เพื่อเก็บข้อมูลไฟล์ที่มีการเรียกใช้งานบ่อยๆ ไว้ใน ram (เผื่อมีอะไรก็อ่านเอาจากแรมไปเลย เร็วกว่าเยอะ)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]วิธีคิดพื้นที่ แรมว่าง ให้คิดจาก free + cached ไม่นับพื้นที่ cache เป็นพื้นที่ที่มีการใช้งาน
เพราะมันจะถูกลบออกได้เสมอถ้ามีความต้องการ ใช้แรมจาก process เยอะๆ[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
ส่วนพื้นที่ที่เหลือด้านล่าง จะเป็นรายการ process ทั้งหมด (แสดงเท่าที่พื้นที่จอเหลือ)
เรียงลำดับ ตามปริมาณการใช้งาน CPU ของ process นั้นๆ (เปลี่ยนได้ครับ)[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]มีหัว ข้อตามนี้
[B]PID : หมายเลข process id
USER : user ที่ process ทำงาน
[/B]PR : priority ของ process ที่ nice เท่ากัน
NI : รหัส nice เรียงความสำคัญของ process (ยิ่งน้อยยิ่งสำคัญ)
VIRT : ปริมาณการใช้งาน virtual image ทั้งหมด (ตั้งแต่ process ยันเตไปถึงการเรียก library)
RES / SHR : การใช้แรมส่วนของ private (เฉพาะภายใน app) / shared (ram กลางของระบบ)
S : สถานะของ process
%CPU : ปริมาณการใช้งาน CPU (นับต่อ core นะครับ) สมมติ cpu 4 core + process รัน 4 thread แต่ละ thread เรียกใช้ cpu เต็มที่ มันก็ขึ้น 400 ขึ้นมาได้เหมือนกัน
%MEM : ปริมาณการใช้งาน ram เป็น %
TIME+ : “ระยะเวลา” ที่เรียกใช้ CPU ทั้งหมดตั้งแต่รัน process (เพราะ process ไม่ได้ทำงานตลอดเวลา)
COMMAND : คำสั่งที่ใช้รัน process[/FONT][/COLOR]
[COLOR=#666666][FONT=Tahoma]
ลูกเล่นเพิ่มเติมของ top สามารถหาอ่านได้จากคำสั่ง man top นะครับ
มีอีก เพียบ นี่แค่แซมเปิ้ลๆ[/FONT][/COLOR]

อันที่สอง ขอสั้นๆ บ้าง (เหนื่อย)

[B][COLOR=#ff0000][SIZE=5]" w "
[/SIZE][/COLOR][/B]

(สั้นไปมั้ย?)

บรรทัดแรกเหมือนกับการสั่ง top เลยครับ lol
ส่วนด้านล่างแค่แสดงรายการ user ที่กำลัง login อยู่แค่นั้นเอง ไม่มีอะไร สั้นๆ ง่ายๆ

หรือถ้าจะเอาแค่รายละเอียด load average ก็สั่ง
" uptime "
เฉยๆ ก็ได้

(สั้นได้ใจ)

ว้าว น้อง top ยอดฮิต ขอบคุณมากครับพี่ไอซ์ อธิบายละเอียดดีมาก

ที่น่าใช้อีกตัว … ไอ้นี่ได้มาจากใครแล้วก็ไม่รู้

[B][COLOR=#ff0000][SIZE=5]" dstat "[/SIZE][/COLOR][/B]

อันนี้ต้องลงเพิ่มครับ อยู่ใน package ชื่อ dstat

สั่ง yum install dstat ได้เลย

สีสันสวยงามน่าใช้

ค่าปกติถ้ารันแบบไม่ระบุ parameter เพิ่ม มันจะแสดงผลตามนี้ครับ

[FONT=courier]----total-cpu-usage---- -dsk/total- -net/total- —paging-- —system–

usr sys idl [COLOR=red]wai [/COLOR]hiq siq| [COLOR=red]read writ[/COLOR]| recv send| in out | [COLOR=red]int csw[/COLOR][/FONT]

6 ชุดแรกเป็น CPU usage

2 อันต่อมาเป็น ปริมาณการอ่าน/เขียน harddisk

2 อันต่อมาเป็น ปริมาณการรับ/ส่ง ข้อมูลเน็ต

2 อันต่อมาเป็นการเรียกใช้ paging (swap)

2 อันสุดท้าย เป็น interrupt และ context switch

ช่องที่น่าสนใจคือช่องที่ผมทำตัวแดงๆ ไว้ครับ

ดูประกอบกัน 5 ช่อง wait เยอะ disk read/write เยอะ == harddisk ทำงานหนัก

int/csw ขึ้นกับจำนวน process ส่วนมากถ้าเป็น hosting ไอ้ csw มันก็เยอะล่ะครับ

(คำสั่งนี้ไม่แน่ใจว่าใน vps ใช้ได้รึเปล่านะครับ ยังไม่เคยเทส)

dstat สีสวยน่าใช้ดีแหะ เดี๋ยว yum เล่นแปป

ต่อกันด้วยการ monitor traffic แบบสดๆ ว่าเน็ตวิ่งเท่าไหร่ยังไง

[B][SIZE=5][COLOR=#ff0000]" iptraf "[/COLOR][/SIZE][/B]

ต้องลงเพิ่มอีกเหมือนกันครับ ลงแบบปกติไม่มีมาให้
yum install iptraf ได้เลยเหมือนกัน

*** คำเตือน คำสั่งนี้เปลือง cpu เอาการ และไม่ค่อยได้ช่วยอะไรซักเท่าไหร่ ไว้ดูเล่นขำๆ ละกันครับ

หัวข้อที่ใช้งานจริงๆ มีแค่ 3 อันบนแค่นั้นแหละครับ นอกนั้นอันอื่นก็ไม่มีอะไรให้ดู
(อันที่จริงผมดูแค่อันที่ 3 ด้วยซ้ำ)

กดปุ่มตัว d (หรือกดลูกศรเลื่อนลงมาก็ได้) แล้วเลือกการ์ด lan ที่จะจับ traffic

ก็ไม่มีอะไรมากครับ บอกปริมาณ traffic ที่วิ่งอยู่สดๆ แค่นั้นเอง
แยก protocol แยก in out ให้หน่อยนึง

อันนี้เครื่องมือหลักอีกตัว (ไว้ใช้คู่กับ top)

[B][COLOR=#ff0000][SIZE=5]" iostat "[/SIZE][/COLOR][/B]

ลงเพิ่มอีกเหมือนกันครับ อยู่ใน package ชื่อ "sysstat"
yum install sysstat เอา

iostat เป็นคำสั่งที่มีวิธีรันให้ดูสดๆ ได้อยู่หลายวิธีครับ ที่ใช้เพื่อดูสถานะการทำงานของ harddisk แต่ละลูก

ตย.

[B]# iostat -ktx 2 [/B]

[font=courier]Time: 10:24:47 AM
avg-cpu:

เครื่องมือหากินอีกตัว ใช้บ่อยพอๆ กับ top ด้วยซ้ำ lol

[COLOR=#ff0000][SIZE=5][B]" mytop "[/B][/SIZE][/COLOR]

วิธีลงวุ่นวายหน่อยนึงครับ ยิ่งถ้าใช้ DA นะ

อย่างนี้ต้อง bookmark เก็บไว้ :slight_smile:
ขอบคุณมากครับ

สรุปว่าเวลานั่งเฝ้าสถานะ server แล้วควรจะเปิดอะไรบ้าง

  1. top
  2. iostat
  3. mytop
  4. apache status
  5. mrtg/munin/monit/cacti/… อะไรพวกนี้แหละ
  6. ssh terminal เปล่าๆ อีกจอไว้เผื่อพิมพ์คำสั่ง

เปิด ssh 4 หน้า เปิด browser อีก 2 ต่อ 1 server

เพราะงี้ไงถึงอยากได้จอใหญ่ๆ T_T

จอใหญ่มันคงไม่พอ… มันต้องมีความละเอียดสูงด้วย เพื่อที่จะบีบให้หน้าต่างได้ขนาดเล็กลง และจอเดียวมันคงไม่พอ… มันต้องหลายจอ เพราะแค่เปิด top กันให้ครบๆ
5 จอยังเอาไม่อยู่เลย

อะ ลืมเขียน apache status

สำหรับ centos httpd rpm (ที่มากับ OS) เปิดไฟล์ /etc/httpd/conf/httpd.conf
สำหรับ directadmin apache เปิดไฟล์ /etc/httpd/conf/extra/httpd-info.conf (มั้ง)

แก้


ExtendedStatus On
&lt;Location /server-status&gt;

bookmark โดยด่วน +100
ความรู้แน่นปึ้กมากๆ

สุดยอดครับ ละเอียดยิบ

แบบนี้ให้ใจเลย

+1 ครับ

อันที่จริงมีอีกตัวนึงที่เคยใช้ๆ อยู่บ้าง (และเห็นว่าหลายๆ คนก็ใช้)

" vmstat "
ติดมากับเครื่องเหมือนกันครับ
มันดูอะไรได้เยอะเหมือนกัน แต่ผมยังไม่แม่นเท่าไหร่ มีใครช่วยเสริมได้มั้ย lol

ขอบคุณเซียนพี่ไอซ์ ได้ความรู้ Bookmark ไว้ก่อน

น่าจะเขียนสารบัญไว้ rap แรกครับ

^
^

vmstat เป็น virtual memory statistics realtime รายงาน process, memory, paging, block IO and cpu activity

procs -----------memory---------- —swap-- -----io---- --system-- -----cpu------
r

ขอยืมรูปนี้มาเสริมอีกนิด

การตอบสนอง Query SQL กลับไป mysql ได้ช้า…จะเกิด “W” สะสมมาก
หากมี W สะสมมากเกินกว่า 70% ควรดู mytop ประกอบพร้อมกันไป…

แล้วจะพบว่า table database ไหน inquery อยู่ แล้วหาเว็บที่ใช้ db ตัวนี้ แค่ลองระงับเว็บนั้นก่อนชั่วคราว…แล้วดู Load + apache server stat (ทำการ restart httpd service สักครั้งก่อน)

ก็ตรวจเจอต้นตอเว็บและ db ที่สร้างภาระโหลดแล้ว… จากนั้นก็ไปไล่ข้อมูลในเว็บต่อ จะทำอะไรต่อก็ทำได้เลย
การที่ปล่อยให้มี “W” สะสมมากๆ นั้นหมายความว่า… การรับส่งข้อมูล I/O ของ httpd ไม่คล่องตัว

มาว่ากันด้วย Log เครื่องมือช่วยติดตามและดูปัญหา hw

เป็น message log ของเครื่องที่จะรายงานผลต่างๆทั้ง software error และ hw error
#tail -f /var/log/messages

ดูพวกที่พยามเข้ามาในระบบ
#tail -f secure

ตัว prob ข้อมูลตั้งแต่การ system booting รายงาน hw device ต่างๆอะไรที่ active/non active
#dmesg

ไอ้ W นั่นไม่ต้องไปย้ำไปดูมันมากๆ หรอกครับ - -’ เสียเวลาเปล่าๆ ไม่ได้เจอสาเหตุด้วย

ดูลงไปตรงรายละเอียดเลยดีกว่าว่ามันค้าง CPU SS เยอะๆ ที่ URL ไหน
แล้วก็เปิดมันให้ครบตามที่ผม list รายการไว้นั่นแหละ