Press "Enter" to skip to content

The basic system monitoring

พื้นฐานการตรวจสอบระบบสิ่งที่ง่านที่สุดคือ ทำให้ระบบใช้งานได้จะแบ่งออกเป็น 2 อย่าง คือ

  1. ความพร้อมใช้งาน (Availability)
  2. ความน่าเชื่อถือ (Reliability)

ซึ่ง 2 อย่างนี้แตกต่างกันชัดเจน สามารถอ่านได้ที่นี่ https://nonmadden.com/node/server-hardware-and-availability/

การเริ่ม monitoring เราควรดูว่าปัญหานั้นมาจากอะไรก่อนเป็นอันดับแรก เช่น

statuscats21

ERROR 404 เป็น http status ที่มีข้อความสั้นๆว่า “หาไม่เจอ” คำถามคือ แล้วอะไรละที่หาไม่เจอ?

statuscats12

ERROR 500 เป็น http status ที่มีข้อความสั้นๆว่า “ภายในเซิฟเวอร์ผิดผลาด” แล้วอะไรละที่ผิดผลาด?

จะเห็นได้ว่าสิ่งเหล่านี้จะบอกว่า error เหล่านั้นเป็น error ประเภทอะไร เพื่อให้นักพัฒนาหรือผู้ดูแลระบบทราบว่าจะต้องไปแก้ไขอย่างไร เพราะการเกิด error แต่ละแบบเกิดได้หลายสาเหตุ และการแก้ไขต่างกันออกไป ซึ่งเป็นหน้าที่ที่นักพัฒนาและผู้ดูแลระบบควรจะทราบ

มาเริ่มกับสิ่งที่ผมจะแนะนำ

TOP
display and update sorted information about process

คือ โปรแกรมที่ใช้ในการแสดงข้อมูลเกี่ยวกับ process เพื่อใช้ในการ monitor ดูว่าเครื่องเซิฟเวอร์กำลังทำงานอะไรอยู่บ้างและแต่ละ process ใช้ทรัพยากรเครื่องไปเท่าไร่

มาดูคำสั่งกัน

NAME
       top - display and update sorted information about processes

SYNOPSIS
       top    [-a | -d | -e | -c ]
              [-F | -f]
              [-h]
              [-i ]
              [-l ]
              [-ncols ]
              [-o ] [-O ]
              [-R | -r]
              [-S]
              [-s ]
              [-n ]
              [-stats ]
              [-pid ]
              [-user ]
              [-U ]
              [-u]

ลักษณะการแสดงผล

Screen Shot 2558-04-22 at 11.19.44 PM

มีรายละเอียดดังนี้

บรรทัดที่ 1 Uptime

  • เวลาปัจจุบันของ server
  • uptime (ระยะเวลาตั้งแต่ boot OS ขึ้นมา)
  • จำนวน user ที่ login เข้าไปใน shell
  • load average : ปริมาณงานที่ “ค้าง” ในระบบเฉลี่ย ในรอบ 1 , 5 และ 15 นาทีตามลำดับ

บรรทัดที่ 2 Process

  • จำนวน process ทั้งหมด
  • จำนวน process ที่กำลังเรียกใช้ CPU อยู่ “ณ เวลานั้นๆ”
  • จำนวน process ที่ไม่มีการทำงาน/ไม่มีการเรียกใช้ CPU อยู่
  • process ที่อยู่ในสถานะ “หยุด”
  • process ผีดิบ คือ process ที่ตาย/จบการทำงานไปแล้ว แต่ยังไม่สามารถ clear ออกจากหน่วยความจำได้

บรรทัดที่ 3 CPU

  • us => user :: เป็นการเรียกใช้ CPU ตามปกติของโปรแกรม ที่เป็นการประมวลผลภายในโปรแกรมนั้นๆ
  • sy => system :: การเรียกใช้คำสั่งในระดับ kernel ที่มีการประมวลผลอยู่ภายใน kernel โดยไม่เรียกใช้ hardware
  • ni => nice :: การจัดลำดับความสำคัญของการประมวลผล (priority)
  • id => idle :: ว่างงาน
  • wa => iowait :: เป็นการ ‘เสีย เวลารอ’ การเรียกใช้ และติดต่อกับ hardware ตั้งแต่ harddisk ram การ์ดจอ การ์ดแลน

บรรทัดที่ 4 Ram

  • RAM ทั้งหมดที่ติดตั้งไว้ และ OS มองเห็น
  • ใช้แรมไปแล้ว “ทั้งหมด” เท่าไหร่
  • แรมที่ยังว่างจริงๆ
  • แรมที่ถูกใช้เป็น buffer ที่พักข้อมูลก่อนที่จะมีการอ่าน/เขียนลง harddisk หรือ CPU

บรรทัดที่ 5 Swap

  • swap space พื้นที่แรมเสมือนทั้งหมด ที่ใช้พื้นที่จาก harddisk เก็บข้อมูลแทนแรม
  • ปริมาณการใช้งาน swap space
  • พื้นที่ swap space ที่ไม่ได้ใช้งาน
  • เป็น file system memory cache

บรรทัดที่ 6 Activity

  • PID => Process identity
  • User => user process
  • PR => Priority
  • NI => Nice code
  • VIRT => Virtual image
  • RES / SHR => Private ram
  • S => Status
  • %CPU
  • %MEM
  • TIME+
  • COMMAND

Evolution of the TOP

Screen Shot 2558-04-23 at 12.50.05 AM Screen Shot 2558-04-23 at 1.15.52 AM

ส่วนประกอบหลักๆ ของ htop และ vtop จะอยู่บนพื้นฐานของ top ซึ่งมีทุกสิ่งที่ได้บอกไว้ข้างต้น แต่จะใช้งานสะดวกและง่ายขึ้น ด้วย menu ที่ใช้งานไม่ซับซ้อน มี graphic ให้เห็นเพื่อที่จะได้วิเคราะห์ง่ายๆ และสามารถ monitor แบบ realtime เพื่อดูว่า process ไหนใช้งาน resource มากๆ เราสามารถจัดการด้วยการกด “k” เพื่อทำการ kill process ได้ ซึ่งถ้าเป็น top จะใช้งานยากและต้องศึกษาวิธีใช้เยอะ

แนะนำวิธีใช้งานเบื้องต้น

Screen Shot 2558-04-29 at 10.39.58 PM

กด F1 เพื่อใช้ข้อแนะนำการใช้งานเบื้องต้นของโปรแกรม

Screen Shot 2558-04-29 at 10.40.14 PM

กด F2 เพื่อทำการปรับแต่งหน้าจอที่เราอยากได้และสามารถเพิ่มเติมข้อมูลต่างที่อยากโชว์ด้านบน

Screen Shot 2558-04-29 at 10.41.07 PM

ตัวอย่างการปรับแต่งหน้าจอ

Screen Shot 2558-04-29 at 10.42.08 PM

กดปุ่ม F3 เพื่อใช้ในการค้นหา keyword ที่ต้องการ ใช้ในกรณีที่เราหาโปรแกรมนั้นๆ ไม่เจอ ก็สามารถค้นหาได้เลย และจะมี highlight ในบรรทัดที่ตรงกับ keyword ที่เราค้นหา

Screen Shot 2558-04-29 at 10.42.28 PM

กด F4 เพื่อใช้ในการกรองข้อมูลที่เราอยากรู้เช่น htop ดังรูป

Screen Shot 2558-04-29 at 10.42.46 PM

กด F5 เพื่อใช้ในการดูว่า process นั้นๆ เป็น process ลูกของใครและ process นั้นๆ ใครเป็น parent เป็นต้น

Screen Shot 2558-04-29 at 10.50.39 PM

กด F6 เพื่อใช้ในการเรียงข้อมูล เช่น process ที่ใช้ Ram มากที่สุดไปหาน้อย เป็นตัน

Screen Shot 2558-04-29 at 10.51.11 PM

 กด F9 เพื่อใช้ในการ kill process ให้เลือก process ที่เราต้องการและกด F9 process นั้นๆ ก็จะหยุดการทำงานทันที

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

นิยามของผม “Top is GOD of performance monitoring”

สามารถ download และติดตั้ง ได้ที่
htop: https://github.com/hishamhm/htop/archive/master.zip
vtop: https://github.com/MrRio/vtop/archive/master.zip
top: มีติดมากับ linux ทุกตัวไม่ต้องลงเพิ่มครับ

Arnon Hongklay
Arnon Hongklay

View all posts

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.