Назад | Перейти на главную страницу

Оповещение о неисправном статусе марионетки

Я могу просматривать узлы «Отказ в настоящий момент» в веб-интерфейсе марионеточной информационной панели и даже углубляться в него, чтобы увидеть, какая политика пошла не так. Я также могу видеть, не отчитываются ли узлы.

Могу ли я получать уведомления об этих сбоях по электронной почте?

Отчет Puppet "tagmail" может делать то, что вы хотите. Видеть официальная документация tagmail Чтобы получить больше информации.

Электронная почта мастера возможно, лучший способ получить такие отчеты. Вы можете запустить его на боковой панели инструментов.

У меня была та же проблема, и вместо того, чтобы пытаться установить Foreman, я закончил тем, что написал быстрый и грязный сценарий shell / cron для панели инструментов curl и grep puppet и отправил результаты по электронной почте. Думал, может быть полезно опубликовать. Конечно можно расчистить, но у меня работает на данный момент.

#!/bin/bash

UNRESPURL="http://puppet/nodes/unresponsive"
ERRORURL="http://puppet/nodes/failed"
EMAIL=my@email.address.com

NUMUNRESPNODES=`curl ${UNRESPURL} 2> /dev/null | grep -Po '(?<=<a href="/nodes/unresponsive">)([^</a>]*)' | grep -v "Unresponsive"`
NUMERRORNODES=`curl ${ERRORURL} 2> /dev/null | grep -Po '(?<=<a href="/nodes/failed">)([^</\a>]*)' | grep -v "Failed"`

# Check if there are any unresponsive nodes, before emailing
if [ ${NUMUNRESPNODES} -gt 0 ]; then
        # Email an alert
        echo "There are ${NUMUNRESPNODES} puppet nodes that haven't reported back to the puppetmaster. Please check ${UNRESPURL} for more info." | mail -s "ALERT: ${NUMUNRESPNODES} puppet nodes are unresponsive" ${EMAIL}
fi

# Check if there are any nodes with errors, before emailing
if [ ${NUMERRORNODES} -gt 0 ]; then
    # Email an alert
    echo "There are ${NUMERRORNODES} puppet nodes that are reporting errors. Please check ${ERRORURL} for more info." | mail -s "ALERT: ${NUMERRORNODES} puppet nodes are reporting errors" ${EMAIL}
fi

exit 0

Чем мы сейчас занимаемся в Stack Exchange (видел несколько голосов по этому вопросу, поэтому решил, что добавлю обновленный ответ):

Наш агент мониторинга сколлектор читает файл сводки выполнения в /var/lib/puppet/state/last_run_summary.yaml. При преобразовании в структуру соответствующая часть этого файла выглядит следующим образом:

Resources struct {
    Changed         float64 `yaml:"changed"`
    Failed          float64 `yaml:"failed"`
    FailedToRestart float64 `yaml:"failed_to_restart"`
    OutOfSync       float64 `yaml:"out_of_sync"`
    Restarted       float64 `yaml:"restarted"`
    Scheduled       float64 `yaml:"scheduled"`
    Skipped         float64 `yaml:"skipped"`
    Total           float64 `yaml:"total"`
} `yaml:"resources"`

Затем агент отправляет счетчик ресурсов «Неудачный», который действует как индикатор. Тогда я могу иметь правило в нашей системе мониторинга боцман который предупреждает, если были отказавшие ресурсы постоянно в течение сбойного периода времени:

$t = 2h
$notes = This alert will trigger when a host has consistently had failed resources for longer than $t
$q = min(q("sum:1h-min:puppet.run.resources{resource=failed,host=*}", "$t", ""))
warn = $q

Этот метод получения статистики из last_run_summary.yaml действительно должно быть применимо к любой системе мониторинга.

Я хочу получить сообщение Log> Level> err, которое также может создать сообщение об ошибке при успешном запуске. Это генерируется файлом журнала, и его можно увидеть на панели инструментов:

err Не удалось вызвать обновление: не удалось перезапустить службу [haproxy]: выполнение '/ sbin / service haproxy restart' вернуло 1: