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
Другие вопросы по тегам