Ответ
AWS CloudWatch — это основной сервис мониторинга и observability в экосистеме AWS. Ключевые сценарии его использования включают:
-
Мониторинг метрик ресурсов (CloudWatch Metrics).
- Что это: Сбор и отслеживание стандартных и кастомных метрик производительности. Например,
CPUUtilizationдля EC2,InvocationCountиErrorsдля Lambda,QueueSizeдля SQS. - Зачем: Позволяет понимать нагрузку на инфраструктуру и выявлять узкие места.
- Что это: Сбор и отслеживание стандартных и кастомных метрик производительности. Например,
-
Централизованный сбор и анализ логов (CloudWatch Logs).
- Что это: Агрегация логов от различных сервисов (EC2, Lambda, ECS, Route 53) в одном месте. Позволяет выполнять поиск и фильтрацию по логам с помощью CloudWatch Logs Insights.
- Зачем: Упрощает отладку, аудит безопасности и анализ поведения приложений.
-
Создание оповещений (CloudWatch Alarms).
- Что это: Настройка автоматических оповещений при превышении пороговых значений метрик. Например, если загрузка CPU держится выше 80% в течение 5 минут.
- Зачем: Позволяет проактивно реагировать на проблемы. Алармы могут отправлять уведомления в SNS, запускать действия Auto Scaling или останавливать инстансы.
-
Визуализация (CloudWatch Dashboards).
- Что это: Создание кастомизируемых дашбордов для наглядного отображения ключевых метрик и графиков логов в одном месте.
- Зачем: Обеспечивает единую точку обзора состояния системы для всей команды.
Пример: создание Alarms с помощью Boto3
import boto3
cloudwatch = boto3.client('cloudwatch')
# Создать оповещение, которое сработает,
# если средняя загрузка CPU на инстансе будет > 75%
# в течение двух последовательных 5-минутных периодов.
cloudwatch.put_metric_alarm(
AlarmName='EC2_High_CPU_Utilization',
MetricName='CPUUtilization',
Namespace='AWS/EC2',
Statistic='Average',
ComparisonOperator='GreaterThanThreshold',
Threshold=75.0,
Period=300, # 5 минут
EvaluationPeriods=2,
Dimensions=[{'Name': 'InstanceId', 'Value': 'i-1234567890abcdef0'}],
AlarmActions=['arn:aws:sns:us-east-1:111222333444:MyAlertsTopic']
)