Existe uma maneira de adicionar programaticamente um serviço ao Nagios?

1

Esta questão é apenas sobre a criação de serviços, ou seja, nós já sabemos como escrever plugins Nagios e configurá-los como serviços.

Eu gostaria de escrever um script Python para ler cada linha de uma tabela de banco de dados MySQL e para cada linha criar um serviço. Preferimos ver uma luz verde / vermelha para cada linha, em vez de ter um único serviço que verifica a tabela inteira. O número de linhas nesta tabela de banco de dados significa que levaria muito tempo para inserir cada serviço manualmente.

Eu examinei scripts como radar . No entanto, isso funciona com verificações passivas, que não precisamos. Nós simplesmente temos uma lista de serviços que gostaríamos de criar como verificações ativas.

    
por Brynn Mahsman 17.06.2013 / 20:54

3 respostas

2

Basta iterar sobre a tabela, escrever as informações necessárias em um arquivo cfg, colocar isso em um local que é carregado pelo arquivo de configuração principal do nagios e recarregar a configuração do nagios. Dependendo do que você precisa / deseja verificar, escreva um plugin apropriado. Feito. Pode ser feito bem rápido.

    
por 17.06.2013 / 21:24
2

Pode ser feito no bash, mesmo. Em geral:

mysql -Ne 'SELECT service_name,'#',IFNULL(check_command,"-"),'#',hostname FROM table_of_wanted_nagios_monitors' |
  while IFS='#' read sn cc hn; do
    # strip extra spaces (due to IFS) from $cc for testing only
    scc=$(echo "$cc" | sed 's/ //g')
    if [ "x$scc" == "x-" -o "x$scc" == "x" ]; then
      cc="";
    else
      cc="    check_command $cc";
    fi;
    cat > /path/to/nagios/configs/${hn}-${sn}.cfg <<EOF
define service {
    use $sn
    host_name $hn
$cc
}
EOF
done

Usamos algo assim (embora escrito em um idioma diferente e com um pouco mais de complexidade) que consulta algumas APIs internas para preencher nossos Nagios. Funciona como um campeão.

    
por 17.06.2013 / 21:43
1

Existem muitos complementos de configuração que fazem exatamente o que você descreve.

Você pode usar um "pronto para uso", adaptar-se às suas necessidades ou apenas roubar algum código de um deles.

    
por 18.06.2013 / 18:08

Tags