Parece que algumas macros foram descartadas entre Icinga1 e Icinga2 ?
Por exemplo, só posso adicionar "HOSTDURATIONSEC" = "$host.duration_sec$",
ao meu modelo para usá-lo no mail-host-notification
script como: State: $HOSTSTATE for $HOSTDURATIONSEC
que me diz há quanto tempo o host está naquele estado. Mas isso me dá apenas alguns segundos e isso não é muito útil à primeira vista ao receber alertas.
Como HOSTDURATION
não está mais disponível ou ainda não foi implementado, tentei converter os segundos para algo mais legível usando funções e outras tentativas de bash dentro disso mail-host-notification
, mas não parece funcionar.
Eu gostaria de poder criar uma nova variável nesse script, talvez usando um comando de um pacote linux timetrans como este:
#!/bin/sh
SECS=$HOSTDURATIONSEC
CONVERTSECONDS=`timetrans -c $SECS`
eval $CONVERTSECONDS
$HRTIME=`eval $CONVERTSECONDS`
template=`cat <<TEMPLATE
Date/Time: $SHORTDATETIME (EST)
Notification Type: $NOTIFICATIONTYPE
Host: $HOSTALIAS
Address: $HOSTADDRESS
State: $HOSTSTATE for $HRTIME
------------------------------------------
New Jersey DC Icinga Monitoring
Additional Info: $HOSTOUTPUT
Notes on this device:
$HOSTNOTES
Comments: $NOTIFICATIONAUTHORNAME $NOTIFICATIONCOMMENT
TEMPLATE
`
... mas como nas tentativas que tentei usar funções para converter a variável seconds $HOSTDURATIONSEC
, não está funcionando. Já tentei de várias formas, mas me parece que o Icinga não está passando pelos que env
estão definidos no template.
env = {
"NOTIFICATIONTYPE" = "$notification.type$"
"HOSTALIAS" = "$host.display_name$",
"HOSTADDRESS" = "$address$",
"HOSTSTATE" = "$host.state$",
"HOSTNOTES" = "$host.notes$",
"HOSTDURATIONSEC" = "$host.duration_sec$",
"LONGDATETIME" = "$icinga.long_date_time$",
"SHORTDATETIME" = "$icinga.short_date_time$",
"HOSTOUTPUT" = "$host.output$",
"NOTIFICATIONAUTHORNAME" = "$notification.author$",
"NOTIFICATIONCOMMENT" = "$notification.comment$",
"HOSTDISPLAYNAME" = "$host.display_name$",
"USEREMAIL" = "$user.email$"
}
Claro, qualquer coisa que eu adicionei a esta lista como "SHORTDATETIME" = "$icinga.short_date_time$",
, "HOSTNOTES" = "$host.notes$",
, etc. está funcionando, mas estou tendo problemas para tentar executar comandos linux nessas variáveis no script. Estou esquecendo de algo? Alguém sabe onde estou errando? Qualquer/toda a ajuda é apreciada.
Eu deixaria esses truques de cálculo dentro dos scripts de notificação. Como você não está trabalhando com os internos do Icinga 2, não faz sentido mexer em uma função.
O que notei no seu script é:
Corrente seria:
Por falar nisso. se você estiver usando
timetrans
pelo pacotednssec-tools
, ele está em/usr/sbin
, portanto não no caminho do usuário icinga/nagios.Exemplo de trabalho modificado:
Para ser chamado através de:
PS(1) Caso esteja faltando alguma macro no Icinga 2, abra uma issue para sugeri-la
PS(2) Não chame outros usuários de covarde, isso não é legal!