O relatório "tagmail" do Puppet pode fazer o que você quiser. Consulte o link para obter mais informações.
Eu posso ver os nós "No momento, com falha" na GUI da Web do painel de fantoches, e até mesmo analisá-los para ver qual política deu errado. Eu também posso ver se os nós não estão relatando.
Existe alguma maneira de obter essas falhas como alertas por email?
O relatório "tagmail" do Puppet pode fazer o que você quiser. Consulte o link para obter mais informações.
Eu tive o mesmo problema, e em vez de passar pelo esforço de instalar o Foreman, acabei escrevendo um script shell / cron rápido e sujo para enrolar o grep e enviar os resultados por e-mail. Pensei que poderia ser útil postar. Certamente pode ser tratado, mas funciona para mim no momento.
#!/bin/bash
UNRESPURL="http://puppet/nodes/unresponsive"
ERRORURL="http://puppet/nodes/failed"
[email protected]
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
O que fazemos atualmente no Stack Exchange (Vimos alguns comentários positivos sobre essa pergunta, então imaginei adicionar uma resposta atualizada):
Nosso agente de monitoramento scollector lê o arquivo de resumo de execução em /var/lib/puppet/state/last_run_summary.yaml
. Quando convertida em uma estrutura, a porção relevante desse arquivo é a seguinte:
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"'
O agente envia a contagem de recursos "Falha", que atua como um medidor. Posso então ter uma regra em nosso sistema de monitoramento bosun que alerta se houve falhas nos recursos de forma consistente por um período de tempo com falha:
$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
Este método de obter as estatísticas de last_run_summary.yaml
deve ser aplicável a qualquer sistema de monitoramento.
Estou procurando a mensagem Log > Level > err, que também pode criar uma mensagem errada em uma execução bem-sucedida. Isso é gerado pelo arquivo de log e pode ser visto no painel:
err Failed to call refresh: Could not restart Service[haproxy]: Execution of '/sbin/service haproxy restart' returned 1: