Я заметил, что при создании сигнала тревоги для мониторинга использования диска тома 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 без необходимости перенастройки?
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