Cloudwatch vs zabbix (phần 1)

1 Giới thiệu Cloudwatch

1.1 Cloudwatch là gì

Cloudwatch là một dịch vụ giám sát các nguồn tài nguyên cloud và ứng dụng chạy trên AWS (amazon web service). Bạn có thể sử dụng Cloudwatch để thu thập và theo dõi các số liệu thống kê, giám sát log file, và cài đặt cảnh báo (Giả sử giám sát lượng ram của máy chủ đang sử dụng, nếu quá 1 lượng nào đó, ví dụ là lượng ram sử dụng quá 90% thì sẽ thông báo đến 1 email cụ thể nào đó, để người đó có thể nắm bắt và có phương án để cứu chữa tình hình). Cloudwatch có thể giám sát Amazon EC2 instances, Amazon DynamoDB tables, and Amazon RDS DB instances.

1.2 Các metric của cloudwatch

Metric ở đây chỉ là 1 biểu đồ thể hiện lượng sử dụng của 1 nguồn tài nguyên nào đó trong máy chủ (ví dụ nguồn tài nguyên ram, tài nguyên disk, tài nguyên mạng, CPU …). EBS_Free_Monitoring.png

1.2.1 Các metric mặc định của cloudwatch

CloudWatch-Console-for-EC2.png Đây là các metric đã có sẵn khi cài máy chủ EC2. Chỉ cần vào https://console.aws.amazon.com/cloudwatch chọn máy chủ EC2 là xem được các metric. Chúng bao gồm:

  • CPUCreditBalance
  • CPUCreditUsage
  • CPUUtilization
  • DiskReadBytes
  • DiskReadOps
  • DiskWriteBytes
  • DiskWriteOps
  • NetworkIn
  • NetworkOut
  • StatusCheckFailed
  • StatusCheckFailed_Instance
  • StatusCheckFailed_System

1.2.2 Các metric có thể add thêm

Ngoài 12 metric mặc định của Cloudwatch, ta có thể add thêm 8 metric khác:

  • DiskSpaceAvailable
  • DiskSpaceUsed
  • DiskSpaceUtilization
  • MemoryAvailable
  • MemoryUsed
  • MemoryUtilization
  • SwapUsed
  • SwapUtilization

2. Cài đặt

Để cài đặt 8 metric, cần ssh vào máy chủ EC2 rồi thực hiện câu lệnh:

sudo yum install perl-Switch perl-Sys-Syslog perl-LWP-Protocol-https

Để download và install Amazon CloudWatch Monitoring Scripts trong EC2 Linux instance:

wget http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip

unzip CloudWatchMonitoringScripts-1.2.1.zip

rm CloudWatchMonitoringScripts-1.2.1.zip

cd aws-scripts-mon

sudo nano awscreds

Để tìm được access key ID và secret access key, bạn cần vào: https://console.aws.amazon.com/iam để tạo access key mới nếu chưa có sẵn và phải chắc chắn IAM có quyền:

  • cloudwatch:PutMetricData
  • cloudwatch:GetMetricStatistics
  • cloudwatch:ListMetrics
  • ec2:DescribeTags sau đó save vào file theo format:

AWSAccessKeyId=YourAccessKeyID AWSSecretKey=YourSecretAccessKey

Gói CloudWatchMonitoringScripts-1.2.1.zip bao gồm những file:

  • CloudWatchClient.pm - module Shared Perl đơn giản hoá việc gọi Amazon CloudWatch từ các script khác.
  • mon-put-instance-data.pl - thu thập số liệu hệ thống trên Amazon EC2 instance (bộ nhớ, swap, không gian đĩa) và gửi chúng tới Amazon CloudWatch.
  • mon-get-dụ-stats.pl - Queries Amazon CloudWatch và hiển thị thống kê sử dụng gần đây nhất cho EC2 trên mà script này được thực thi.
  • awscreds.template - File mẫu cho AWS lưu trữ access key ID và secret access key.
  • license.txt - Text chứa license Apache 2.0.
  • NOTICE.txt - bản quyền thông báo.

Để tiếp tục sử dụng script, ta dùng câu lệnh: ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --swap-util --swap-used --disk-space-used --disk-space-avail --disk-space-util --disk-path=/ --verify --verbose --aws-credential-file=./awscreds

Nếu có lỗi thì thử lại với câu lệnh không verify và verbose: ./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --swap-util --swap-used --disk-space-used --disk-space-avail --disk-space-util --disk-path=/ --aws-credential-file=./awscreds

Lưu ý: cần phái set crontab để gửi metric tới cloudwatch (thông thường thì để 5 phút cho 1 lần gọi crontab): crontab -e

*/5 * * * * /aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --swap-util --swap-used --disk-space-used --disk-space-avail --disk-space-util --disk-path=/ --from-cron --aws-credential-file=/aws-scripts-mon/awscreds

Để kiểm tra metric vừa cài, vào https://console.aws.amazon.com/cloudwatch/ -> chọn View Metrics > mục System/Linux metric.png

3. Tạo alarm cảnh báo

  • Tích vào metric mà mình muốn tạo alarm
  • Click vào Create Alarm create alarm 1.png
  • Điền tên và mô tả của alarm
  • Chọn một mức để nếu nó vượt qua mức này sẽ tự động gửi cảnh báo. Gọi mức này là hạn mức
  • Chọn số chu kì (consecutive periods) mà nó vượt qua mức hạn định này. Ở đây mỗi chu kì định nghĩa là 5 phút. Do lúc cài đặt mình cài 5 phút gửi metric một lần.
  • Tạo danh sách email, để khi mà nó vượt qua hạn mức, chu kì thì nó sẽ gửi thông báo đến danh sách email này. Khi tạo danh sách email thì nó sẽ gửi 1 email xác nhận đến list email trên. Cần vào confirm mới nhận được email cảnh báo của Cloudwatch
  • Ấn nút create alarm create alarm 2.png

Nguồn tham khảo: http://docs.aws.amazon.com/AmazonCloudWatch

Ở bài tiếp theo ta sẽ tìm hiểu template để kết hợp zabbix và cloudwatch - monitor được tổng thể cả service lẫn thông số trên server.