Метрики CloudWatch, пространства имён и измерения
Разберитесь во встроенных метриках сервисов AWS, публикуйте пользовательские метрики из приложения и фильтруйте их по измерениям для анализа отдельных ресурсов.
«Метрики CloudWatch, пространства имён и измерения» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое Amazon CloudWatch
Amazon CloudWatch — это единый сервис наблюдаемости AWS, который собирает метрики, журналы и трассировки из ресурсов и приложений AWS. Он дает полное представление о состоянии инфраструктуры, позволяя обнаруживать аномалии, настраивать оповещения и автоматически реагировать на изменения в работе. CloudWatch глубоко интегрирован почти со всеми сервисами AWS и является основным инструментом мониторинга, проверяемым на экзамене SAA-C03.
Знакомство с метриками CloudWatch
Метрика CloudWatch — это упорядоченный по времени набор точек данных, представляющих значение измеряемого параметра ресурса за определенный период, например CPUUtilization экземпляра EC2, измеряемое каждую минуту. Метрики определяются их пространством имен, именем и измерениями. AWS автоматически публикует сотни встроенных метрик, а Вы можете публиковать собственные пользовательские метрики из кода приложения или сценариев.
Пространства имен: организация метрик
Пространство имен — это контейнер для метрик CloudWatch, предотвращающий совпадение имен метрик из разных источников. Сервисы AWS используют такие пространства имен, как AWS/EC2, AWS/RDS, AWS/Lambda и AWS/S3. При публикации пользовательских метрик Вы выбираете собственное пространство имен, например MyApp/OrderService. Метрики в разных пространствах имен полностью изолированы друг от друга, даже если у них одинаковые имена.
# List all namespaces in your account
aws cloudwatch list-metrics \
--query 'Metrics[].Namespace' \
--output text | tr '\t' '\n' | sort -u
# List metrics in the AWS/EC2 namespace
aws cloudwatch list-metrics \
--namespace AWS/EC2 \
--query 'Metrics[].MetricName' \
--output text | tr '\t' '\n' | sort -uИзмерения: фильтрация метрик
Измерения — это пары ключ-значение, однозначно идентифицирующие метрику в пространстве имен. Например, в пространстве имен AWS/EC2 метрику CPUUtilization можно отфильтровать по измерению InstanceId=i-0123456789abcdef0, чтобы увидеть данные конкретного экземпляра, или по AutoScalingGroupName=my-asg, чтобы увидеть агрегированную метрику для всей группы. Одна метрика может иметь до 30 измерений, причем AWS заранее определяет доступные измерения для каждой метрики сервиса.
# Get CPU utilization for a specific EC2 instance
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-0123456789abcdef0 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 300 \
--statistics AverageСтандартный и подробный мониторинг
По умолчанию сервисы AWS публикуют метрики в CloudWatch с интервалом 5 минут (стандартный мониторинг) без дополнительной платы. Для рабочих нагрузок, чувствительных ко времени, можно включить detailed мониторинг, чтобы получать данные с шагом в 1 минуту. Подробный мониторинг доступен для EC2, Auto Scaling, ELB, RDS и других сервисов и оплачивается дополнительно в CloudWatch. Для экзамена SAA-C03 запомните: политики Auto Scaling, использующие ступенчатое масштабирование, опираются на оповещения CloudWatch, которые эффективнее работают с метриками с интервалом 1 минута.
# Enable detailed (1-minute) monitoring for an EC2 instance
aws ec2 monitor-instances \
--instance-ids i-0123456789abcdef0
# Verify monitoring state
aws ec2 describe-instance-status \
--instance-ids i-0123456789abcdef0 \
--query 'InstanceStatuses[].Monitoring'Публикация пользовательских метрик
Вы можете отправлять пользовательские метрики в CloudWatch из любого приложения с помощью API put-metric-data или CloudWatch Agent. К распространенным пользовательским метрикам относятся бизнес-показатели (число заказов в минуту), задержка на уровне приложения, глубина очереди и частота ошибок. Пользовательские метрики хранятся 15 месяцев с переменной точностью и оплачиваются отдельно за каждую метрику в месяц. Также поддерживаются пользовательские метрики с высокой точностью (шагом в 1 секунду), но их стоимость выше.
# Publish a custom metric from the CLI
aws cloudwatch put-metric-data \
--namespace 'MyApp/OrderService' \
--metric-name 'OrdersProcessedPerMinute' \
--value 47 \
--unit Count \
--dimensions Environment=Production,Region=us-east-1
# Publish from application code (Python boto3)
# cloudwatch.put_metric_data(
# Namespace='MyApp/OrderService',
# MetricData=[{'MetricName': 'ErrorRate', 'Value': 0.5, 'Unit': 'Percent'}]
# )CloudWatch Agent для метрик EC2
CloudWatch Agent — это программный агент, который устанавливается на экземпляры EC2 и локальные серверы для сбора метрик, недоступных через встроенный гипервизор EC2, например использования памяти, свободного места на диске и сетевых соединений. Агент также собирает журналы и отправляет их в CloudWatch Logs. Использование памяти — распространенный сценарий на экзамене: это НЕ метрика EC2 по умолчанию, и ее НЕОБХОДИМО собирать с помощью CloudWatch Agent.
# Install and start the CloudWatch Agent on Amazon Linux 2
sudo yum install -y amazon-cloudwatch-agent
# Use the wizard to generate a config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
# Start the agent with the generated config
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-s \
-c ssm:/AmazonCloudWatch-linuxМатематика метрик и обнаружение аномалий
Математика метрик позволяет создавать новые временные ряды, выполняя арифметические операции над существующими метриками без сохранения результата как отдельной метрики. Например, можно вычислить частоту ошибок по формуле Errors / Requests * 100 непосредственно в выражении панели CloudWatch. Обнаружение аномалий применяет машинное обучение к историческим данным метрик для создания диапазонов ожидаемых значений. Можно создавать оповещения, срабатывающие при выходе метрики за эти диапазоны, даже если фиксированный порог не задан.
# Get metric data using metric math
aws cloudwatch get-metric-data \
--metric-data-queries '[
{"Id":"e1","Expression":"m1/m2*100","Label":"ErrorRate%"},
{"Id":"m1","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Errors"},"Period":60,"Stat":"Sum"}},
{"Id":"m2","MetricStat":{"Metric":{"Namespace":"MyApp","MetricName":"Requests"},"Period":60,"Stat":"Sum"}}
]' \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00ZПериоды хранения метрик
CloudWatch хранит метрики в течение разных сроков в зависимости от их точности: точки данных с разрешением 1 секунда хранятся 3 часа, данные с интервалом 1 минута — 15 дней, с интервалом 5 минут — 63 дня, а с интервалом 1 час — 15 месяцев. CloudWatch автоматически агрегирует данные высокой точности в данные с более низкой точностью по мере истечения времени. Поэтому при анализе долгосрочных тенденций Вы увидите средние значения за 1 час, а не исходные показания с интервалом 1 минута, полученные несколько месяцев назад.
Просмотр метрик в консоли CloudWatch
Консоль CloudWatch предоставляет обозреватель Metrics и браузер Metrics, где можно выбрать любую комбинацию пространства имен, метрики и измерения и визуализировать данные за определенный период. Вы можете наложить несколько метрик на один график, изменить периоды агрегации и добавить метрики на панели мониторинга. Для программного доступа API GetMetricStatistics и GetMetricData возвращают исходные точки данных или агрегированную статистику (Average, Sum, Minimum, Maximum, SampleCount).
# Get average CPU for all instances in an ASG over the last hour
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=AutoScalingGroupName,Value=my-asg \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
--period 300 \
--statistics Average MaximumКлючевые метрики EC2 и RDS
Для экзамена SAA-C03 необходимо знать следующие критически важные метрики: EC2 — CPUUtilization, NetworkIn/Out, DiskReadOps/WriteOps (только для хранилища экземпляра); по умолчанию в EC2 отсутствуют: память и место на диске (используйте CloudWatch Agent). RDS — DatabaseConnections, FreeStorageSpace, ReadLatency, WriteLatency, ReplicaLag. ELB — RequestCount, TargetResponseTime, UnHealthyHostCount. Lambda — Invocations, Errors, Duration, Throttles, ConcurrentExecutions.
Быстрая проверка
Проверьте, насколько хорошо Вы усвоили рассмотренные на этом уроке концепции AWS Solutions Architect (SAA-C03).
Итоги урока
На этом уроке Вы узнали, что пространства имен организуют метрики по сервисам и предотвращают совпадение имен, измерения позволяют фильтровать метрики для конкретных ресурсов, например отдельного экземпляра EC2 или ASG, а использование памяти не является метрикой EC2 по умолчанию — для ее сбора нужен CloudWatch Agent. Далее мы рассмотрим оповещения CloudWatch и составные оповещения для автоматической отправки уведомлений.
Часто задаваемые вопросы
Урок «Метрики CloudWatch, пространства имён и измерения» бесплатный?
Да — полный текст урока «Метрики CloudWatch, пространства имён и измерения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Метрики CloudWatch, пространства имён и измерения»?
Разберитесь во встроенных метриках сервисов AWS, публикуйте пользовательские метрики из приложения и фильтруйте их по измерениям для анализа отдельных ресурсов. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Метрики CloudWatch, пространства имён и измерения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Метрики CloudWatch, пространства имён и измерения
- Оповещения CloudWatch и составные оповещения
- Журналы CloudWatch и Log Insights
- Панели CloudWatch и Container Insights