Когда оповещения основаны на метрических данных, таких как использование ЦП или памяти, Prometheus является очевидным инструментом для отправки оповещений в Alertmanager. Есть и другие примеры, когда требуемое оповещение основано на логических условиях, таких как «работает ли DNS». В таких случаях существует ли метод «наилучшей практики» для создания этих предупреждений?
Используя приведенный выше пример DNS, я мог бы использовать скрипт:
#!/usr/bin/env bash
оповещение о функции {
/usr/local/bin/amtool оповещение добавить \
alertname=resolveFail \
экземпляр = $ (имя хоста -s) \
серьезность = предупреждение \
--annotation=summary='Ошибка разрешения DNS'
}
если ! /usr/bin/host $HOSTNAME 127.0.0.1 &> /dev/null
тогда
тревога
фи
Небольшой альтернативой было бы использование завиток
вместо амтул
и нажмите на API Alertmanager. Третьим вариантом может быть изменение приведенного выше сценария для создания метрики для сборщика текстовых файлов Node Exporter:
#!/usr/bin/env bash
TEXTFILE_COLLECTOR_DIR=/var/lib/node_exporter/textfile_collector/
если /usr/bin/host $HOSTNAME 127.0.0.1 &> /dev/null
тогда
СОСТОЯНИЕ=1
еще
СОСТОЯНИЕ=0
фи
echo "node_dns_resolving $STATE" > $TEXTFILE_COLLECTOR_DIR/dns.prom.$$
mv "$TEXTFILE_COLLECTOR_DIR/dns.prom.$$" "$TEXTFILE_COLLECTOR_DIR/dns.prom"
Мне было бы интересно услышать рекомендации по этим (или, может быть, другим) методам.