AWS CloudWatch - Giám sát và Quản lý Tài nguyên Cloud
Hướng dẫn chi tiết về AWS CloudWatch, cách sử dụng và best practices
AWS CloudWatch là dịch vụ giám sát và quan sát được xây dựng cho các ứng dụng và tài nguyên chạy trên AWS. Trong bài viết này, mình sẽ chia sẻ những kiến thức cơ bản và nâng cao về CloudWatch.
CloudWatch là gì?
AWS CloudWatch là dịch vụ giám sát và quan sát toàn diện cho:
- Monitoring: Thu thập và theo dõi metrics, logs, events
- Logging: Thu thập, lưu trữ và phân tích log files
- Alerting: Thiết lập cảnh báo dựa trên metrics
- Dashboard: Tạo dashboard để visualize dữ liệu
Các thành phần chính của CloudWatch
1. CloudWatch Metrics
- Basic Monitoring: Metrics được thu thập tự động mỗi 5 phút
- Detailed Monitoring: Metrics được thu thập mỗi 1 phút (có phí)
- Custom Metrics: Metrics do bạn tự định nghĩa
Ví dụ về Basic Metrics:
- EC2: CPU Utilization, Network In/Out, Disk Read/Write
- RDS: DatabaseConnections, CPUUtilization, FreeableMemory
- ELB: RequestCount, TargetResponseTime, HealthyHostCount
2. CloudWatch Logs
- Log Groups: Nhóm các log streams liên quan
- Log Streams: Chuỗi log events từ một nguồn cụ thể
- Log Events: Các bản ghi log riêng lẻ
3. CloudWatch Alarms
- Threshold-based: Cảnh báo khi metric vượt ngưỡng
- Anomaly Detection: Phát hiện bất thường trong dữ liệu
- Actions: SNS, Auto Scaling, EC2 actions
Thiết lập CloudWatch cơ bản
1. Tạo CloudWatch Dashboard
# Ví dụ tạo dashboard cho EC2 instance
{
"widgets": [
{
"type": "metric",
"properties": {
"metrics": [
["AWS/EC2", "CPUUtilization", "InstanceId", "i-1234567890abcdef0"]
],
"period": 300,
"stat": "Average",
"region": "us-east-1",
"title": "EC2 CPU Utilization"
}
}
]
}
2. Thiết lập CloudWatch Agent
# Cài đặt CloudWatch Agent trên EC2
sudo yum install -y amazon-cloudwatch-agent
# Cấu hình agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# Khởi động agent
sudo systemctl start amazon-cloudwatch-agent
sudo systemctl enable amazon-cloudwatch-agent
3. Tạo CloudWatch Alarm
# Ví dụ tạo alarm cho CPU > 80%
aws cloudwatch put-metric-alarm \
--alarm-name "HighCPUAlarm" \
--alarm-description "Alarm when CPU exceeds 80%" \
--metric-name "CPUUtilization" \
--namespace "AWS/EC2" \
--statistic "Average" \
--period 300 \
--threshold 80 \
--comparison-operator "GreaterThanThreshold" \
--evaluation-periods 2 \
--alarm-actions "arn:aws:sns:region:account:topic-name"
CloudWatch Logs với ứng dụng
1. Cấu hình CloudWatch Logs cho ứng dụng
# Ví dụ cấu hình cho ứng dụng Python
import logging
import boto3
from botocore.exceptions import ClientError
# Thiết lập CloudWatch Logs
def setup_cloudwatch_logging():
client = boto3.client('logs')
try:
# Tạo log group
client.create_log_group(logGroupName='/myapp/application')
# Tạo log stream
client.create_log_stream(
logGroupName='/myapp/application',
logStreamName='app-logs'
)
return True
except ClientError as e:
print(f"Error setting up CloudWatch: {e}")
return False
# Gửi log events
def send_log_event(message, level='INFO'):
client = boto3.client('logs')
try:
client.put_log_events(
logGroupName='/myapp/application',
logStreamName='app-logs',
logEvents=[
{
'timestamp': int(time.time() * 1000),
'message': f"[{level}] {message}"
}
]
)
except ClientError as e:
print(f"Error sending log: {e}")
2. CloudWatch Logs Insights
# Ví dụ query để phân tích logs
fields @timestamp, @message
| filter @message like /ERROR/
| stats count() by bin(5m)
| sort @timestamp desc
| limit 20
# Query để tìm requests chậm
fields @timestamp, @message, @duration
| filter @duration > 1000
| sort @duration desc
| limit 10
Best Practices
1. Monitoring Strategy
- Golden Signals: Monitor latency, traffic, errors, saturation
- Business Metrics: Kết hợp technical metrics với business KPIs
- Cost Optimization: Sử dụng custom metrics thay vì detailed monitoring khi có thể
2. Logging Best Practices
- Structured Logging: Sử dụng JSON format cho logs
- Log Levels: Phân biệt rõ ERROR, WARN, INFO, DEBUG
- Retention Policy: Thiết lập thời gian lưu trữ phù hợp
3. Alarm Configuration
- Avoid Alert Fatigue: Không tạo quá nhiều alarms
- Use Composite Alarms: Kết hợp nhiều conditions
- Test Alarms: Định kỳ test để đảm bảo hoạt động
CloudWatch vs các giải pháp khác
Ưu điểm của CloudWatch:
- Tích hợp sẵn với AWS services
- Không cần setup infrastructure
- Scalable và reliable
- Cost-effective cho workloads nhỏ
Nhược điểm:
- Giới hạn về query capabilities
- Retention period có giới hạn
- Không hỗ trợ một số advanced features
Alternatives:
- Datadog: Advanced monitoring và APM
- New Relic: Application performance monitoring
- Prometheus + Grafana: Self-hosted solution
Cost Optimization
1. Metrics
- Sử dụng basic monitoring thay vì detailed monitoring
- Xóa custom metrics không sử dụng
- Giảm frequency của custom metrics
2. Logs
- Thiết lập retention policy phù hợp
- Filter logs trước khi gửi đến CloudWatch
- Sử dụng CloudWatch Logs Insights thay vì export
3. Alarms
- Giảm số lượng alarms không cần thiết
- Sử dụng composite alarms
- Disable alarms khi không cần thiết
Kết luận
AWS CloudWatch là công cụ mạnh mẽ để giám sát và quản lý ứng dụng trên AWS. Việc hiểu rõ các thành phần và best practices sẽ giúp bạn xây dựng hệ thống monitoring hiệu quả và tiết kiệm chi phí.
Tài liệu tham khảo:
Ngày đăng: June 21, 2025

26 total views
Comment
Hiện tại chưa có comment nào...