Sấu Gấu Blog


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:

Các thành phần chính của CloudWatch

1. CloudWatch Metrics

Ví dụ về Basic Metrics:

2. CloudWatch Logs

3. CloudWatch Alarms

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

2. Logging Best Practices

3. Alarm Configuration

CloudWatch vs các giải pháp khác

Ưu điểm của CloudWatch:

Nhược điểm:

Alternatives:

Cost Optimization

1. Metrics

2. Logs

3. Alarms

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...