AWS CloudWatch оповещает о сбое метрики дискового пространства после перезагрузки
Я заметил, что при создании тревоги для мониторинга использования диска тома ebs, смонтированного с помощью nvme на более новых типах экземпляров ec2, "устройство" отправляется как метрическое измерение. Проблема заключается в том, что имя устройства nvme может измениться при перезагрузке экземпляра ec2, поэтому ранее установленный аварийный сигнал больше не отслеживает данные из правильной метрики.
Я использую агент CloudWatch для отправки метрик из экземпляра ec2 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html на сервер Ubuntu 16.04, размеры которого прикреплены к метрика для disk_used_percent:
"path", "/home", "host", "ip-xxx-xxx-xxx-xxx", "device", "nvme1n1", "fstype", "ext4"
Я обнаружил, что исключение любого из этих измерений из аварийного сигнала не может связать аварийный сигнал с метрикой, поэтому я предполагаю, что все они необходимы для того, чтобы аварийный сигнал был связан с правильной метрикой.
Когда я перезагружаю сервер, размеры могут измениться на:
"path", "/home", "host", "ip-xxx-xxx-xxx-xxx", "device", "nvme3n1", "fstype", "ext4"
Устройство изменилось, и сигнал тревоги для этой метрики больше не связан ни с одной метрикой, поскольку размеры больше не совпадают.
Я посмотрел в конфигурации агента, чтобы увидеть, есть ли способ изменить размеры отправляемых, но не могу найти способ сделать это https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html
Это действительно нужно только path
а также host
размеры для отправки, чтобы быть уникальным, чтобы я мог опустить device
а также fstype
Размеры, если это возможно.
Как получить сигнал тревоги, который может сохраняться при перезагрузке экземпляра ec2 без необходимости перенастройки?
1 ответ
JamieD,
Я смог выполнить цель с помощью bash-скрипта.
#!/usr/bin/env bash
function push_disk_used {
aws cloudwatch put-metric-data \
--metric-name "$1" \
--namespace Test \
--unit Percent \
--value "$2" \
--dimensions ClusterName=TestInstance \
--region "$REGION"
}
# MongoDB Root Disk Space
HOME_DISK_USED=$(df -H /home | awk 'NR ==2 {print $5}' | sed -r 's/%//')
echo 'MongoDB Home Disk Used Percent:' "$HOME_DISK_USED";
push_disk_used Home_DISK_USED "$HOME_DISK_USED"
Настройте задание cron для отправки метрик disk_used_percent, а также настройте аварийные сигналы со следующими свойствами в облачной информации.
Namespace: Test
MetricName: HOME_DISK_USED
Dimensions:
- Name: ClusterName
Value: TestInstance