Alertas Nagios usando twitter (com twurl) não disparando

4

Estamos usando nagios há algum tempo e decidimos recentemente alterar a forma como recebemos alertas. Para esse fim, instalamos o twurl ( link ) e o estamos usando para enviar alertas. Infelizmente isso registra alertas como tendo sido enviados, mas nenhum acessa a conta do Twitter do monitor. O twurl usa um CLI padrão que se parece com isso (nagios macros deixados intactos):

/usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml

Aqui está o comando de notificação:

define command {
    command_name    notify-service-by-twurl
    command_line    PATH="/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/nagios/bin"; HOME="/home/nagios"; /usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml &>/tmp/lastcheck
#   command_line    /bin/echo '/usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml' > /tmp/foo
}

A sintaxe funciona bem, etc., sem problemas. A primeira linha dispara da segunda linha de linha de comando para gerar o conteúdo dos usos de nagios das macros e retorna o que seria esperado em todos os casos.

acertaremos as armadilhas que definitivamente evitamos:

  • autenticamos o twitter para o usuário do nagios (su'd in e checked, works bem quando feito manualmente).
  • as credenciais do aplicativo estão corretas (mais uma vez, funciona bem ao usar twurl manualmente)
  • as configurações do aplicativo do Twitter (no link ) são correto (definido para ler / escrever mensagens diretas etc)

Eu posso fornecer qualquer informação específica que alguém possa precisar para um contexto extra, mas por enquanto é só isso. Edit: Eu estou começando a suspeitar que isso é devido a uma falta de um .profile quando o nagios em si chama de twurl, mas eu não tenho 100% de certeza e ainda não consigo "ir".

Atualização: verifiquei que o script não está usando o .twurlrc do diretório inicial do nagios quando o nagios o executa. Este é um problema que ainda não consigo resolver, qualquer outra ajuda seria muito apreciada.

    
por jhackett 09.01.2012 / 12:47

2 respostas

4

O Nagios executa comandos externos sem qualquer ENV. Para simular isso, você pode tentar executar seu teste manual via "env -i". Você parece já saber disso, porque você está definindo explicitamente PATH e HOME. Você deve tentar evitar isso, e apenas usar caminhos completos em qualquer script / comando / etc.

Você também pode precisar escapar de alguns dos caracteres não-alfanuméricos em sua linha de comando, porque o shell pode comê-los. Para testar isso, você pode ativar a saída de depuração em nagios.cfg (consulte 'debug_level' link ) ou altere o comando para "echo ... > /tmp/whatisnagiosrunning.txt" ou similar.

    
por 11.01.2012 / 18:22
1

Encontrou uma solução que conserta as coisas (e também pode contribuir para twurl, então isso não quebra outras coisas!).

No rcfile.rb (o meu está em /usr/local/lib/ruby/gems/1.8/gems/twurl-0.6.5/lib/twurl/rcfile.rb) faça a seguinte alteração. Abaixo está o original:

    module Twurl
      class RCFile
        FILE = '.tqurlrc'
        @directory ||= ENV['HOME']
        class << self
          attr_accessor :directory

E abaixo está a modificação:

    module Twurl
      class RCFile
        FILE = '.twurlrc'
        @directory ||= '/home/nagios/'
        class << self
          attr_accessor :directory

Isso provavelmente deve aceitar a entrada do usuário - algo que eu possa contribuir para me contorcer em algum momento no futuro próximo.

Obrigado a todos que ajudaram:)

    
por 10.02.2012 / 12:29