Назовите основные сценарии использования AWS CloudWatch

«Назовите основные сценарии использования AWS CloudWatch» — вопрос из категории Devops, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AWS CloudWatch — это основной сервис мониторинга и observability в экосистеме AWS. Ключевые сценарии его использования включают:

  1. Мониторинг метрик ресурсов (CloudWatch Metrics).

    • Что это: Сбор и отслеживание стандартных и кастомных метрик производительности. Например, CPUUtilization для EC2, InvocationCount и Errors для Lambda, QueueSize для SQS.
    • Зачем: Позволяет понимать нагрузку на инфраструктуру и выявлять узкие места.
  2. Централизованный сбор и анализ логов (CloudWatch Logs).

    • Что это: Агрегация логов от различных сервисов (EC2, Lambda, ECS, Route 53) в одном месте. Позволяет выполнять поиск и фильтрацию по логам с помощью CloudWatch Logs Insights.
    • Зачем: Упрощает отладку, аудит безопасности и анализ поведения приложений.
  3. Создание оповещений (CloudWatch Alarms).

    • Что это: Настройка автоматических оповещений при превышении пороговых значений метрик. Например, если загрузка CPU держится выше 80% в течение 5 минут.
    • Зачем: Позволяет проактивно реагировать на проблемы. Алармы могут отправлять уведомления в SNS, запускать действия Auto Scaling или останавливать инстансы.
  4. Визуализация (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']
)