Tiếp tục chuỗi bài viết về TIG stack, hôm nay Cloud365 sẽ hướng dẫn các bạn sử dụng plugin [inputs.procstat] để giám sát hệ thống.

Plugin [inputs.procstat] là một phần có sẵn của Telegraf. Sử dụng plugin này, ta có thể giám sát các tiến trình trên hệ thống một cách dễ dàng. Để sử dụng chúng ta chỉ cần sửa một chút trong file cấu hình telegraf.

Ví dụ ở trong bài này tôi sẽ giám sát một host cài wordpress với IP là 10.10.34.174.

Imgur

Sửa file /etc/telegraf/telegraf.conf trên hệ thống bạn đang giám sát.

nano /etc/telegraf/telegraf.conf

Tìm đến mục [[inputs.procstat]], uncomment và sửa thành như sau:

[[inputs.procstat]]
        exe = "."
        pid_tag = true

Khởi động lại dịch vụ telegraf

systemctl restart telegraf

Sau đó truy cập vào trang grafana của bạn, thêm một số biến trong dashboard của bạn như sau cho dễ quản lý. Phần này bạn có thể không làm cũng được.

Imgur

Tiếp theo, tạo một đồ thị, và truy vấn các thông tin mà bạn cần giám sát trên host này.

Ví dụ ở đây tôi muốn truy vấn mức độ sử dụng CPU của các tiến trình trên host này. Tôi thực hiện như sau:

SELECT last("cpu_usage") FROM "procstat" WHERE ("host" = 'wp') AND $timeFilter GROUP BY time($__interval), "pid", "process_name", "user" fill(none)

Nếu bạn không rành cách truy vấn với InfluxDB thì có thể xem hình minh họa dưới đây. Hình dưới đây chọn một host cụ thể là host wp.

Imgur

Và chỉnh sửa cách hiển thị của đồ thị này như sau:

Imgur
Đơn vị sử dụng ở đây là phần trăm (percent)
Imgur
Hiển thị thêm một bảng thông số các tiến trình bên tay phải

Hoặc nếu bạn chọn dùng biến thì thực hiện theo hình dưới đây. Lưu ý nếu chọn theo biến sẽ không cấu hình cảnh báo được.

SELECT last("cpu_usage") FROM "procstat" WHERE ("host" =~ /^$host$/) AND $timeFilter GROUP BY time($__interval), "pid", "/^$process$/", "/^$user$/" fill(none)

Tương tự, tôi sẽ tạo thêm một đồ thị thể hiện mức độ sử dụng RAM của các tiến trình trên host này như sau:

SELECT last("cpu_usage") FROM "procstat" WHERE ("host" = 'wp') AND $timeFilter GROUP BY time($__interval), "pid", "/^$process$/", "/^$user$/" fill(none)

Nếu muốn hiển thị theo đơn vị byte thì chọn field memory_rss thay cho memory_usage

Imgur

Bây giờ tôi sẽ thử đẩy lượng truy cập lên trang wordpress này với công cụ siege.

siege 10.10.34.174

Hướng dẫn sử dụng siege

Lưu ý: Bạn hãy sử dụng công cụ này với mục đích hợp pháp.

Kết quả:

Có thể thấy xuất hiện rất nhiều tiến trình httpd do công cụ siege sinh ra, tiến trình mysqld cũng sử dụng CPU nhiều vì mysql đang phải truy vấn liên tục cho dịch vụ web.

Imgur
Mức sử dung CPU tăng vọt

2 core CPU đã bị sử dụng hết (từ 2% lên 100%)

Imgur

Các tiến trình httpd và mysqld sử dụng RAM không nhiều lắm

Imgur

RAM sử dụng tăng từ 26% lên 33%

Imgur

Sử dụng biến

Nếu bạn đã thêm biến như phần trên tôi đã hướng dẫn thì bạn có thể sử dụng các biến để theo dõi các tiến trình cụ thể, bởi các user cụ thể.

Đầu tiên, hãy chắc chắn rằng bạn đã chọ các biến sau trong query

Sau đó bạn có thể chọn hiển thị theo biến tùy ý.

Click chuột vào các biến và lựa chọn tùy ý

Ví dụ: Tôi chỉ muốn theo dõi các tiến trình httpd và mysqld. Bỏ qua tất cả các tiến trình khác. Tôi sẽ chọn biến như sau:

  • Tôi muốn theo dõi trên host wordpress có tên wp
  • Databases tôi sử dụng là InfluxDB
  • Mỗi 1 giây sẽ làm mới kết quả một lần
  • Tôi theo dõi tiến trình httpd và mysqld bới user apache và mysql

Kết quả:

Bạn có thể thấy bây giờ đồ thị của tôi chỉ hiển thị các tiến trình httpd và mysqld

Kết luận

Như vậy chúng tôi đã hướng dẫn cơ bản cho bạn cách sử dụng plugin [inputs.procstat] để bạn giám sát hệ thống với TIG stack.

Chúc các bạn thành công!!

Xem thêm hướng dẫn cài đặt TIG stack tại đây: https://news.cloud365.vn/huong-dan-cai-dat-tig-stack-telegraf-influxdb-grafana/