Sintaxe de configuração do Nagios: várias diretivas por linha?

1

Uma grande parte volátil da minha configuração do Nagios 3 (Icinga 1, na verdade) se parece com isso:

...
define host{
    host_name   bla0037
    use         template-bla
}

define host{
    host_name   bla0042
    use         template-bla
}
...

O gerenciamento de scripts seria muito mais fácil se eu pudesse agrupar as definições do host em linhas simples, como esta:

...
define host{ host_name bla0037;  use template-bla }
define host{ host_name bla0042;  use template-bla }
...

Mas ainda não descobri como. (por exemplo, ponto-e-vírgula faz o resto de uma linha um comentário). Idéias?

(Gerar muitos arquivos host-bla0XYZ.cfg também ajudaria na automação, mas prefiro não confundir os diretórios conf).

    
por Nils Toedtmann 18.11.2015 / 12:59

2 respostas

2

Não, você não pode fazer isso. O analisador de arquivos de configuração lê uma linha por vez e espera uma única diretiva por linha. Você teria que modificar strongmente o analisador em xodtemplate.c para fazer isso.

As únicas exceções especiais no analisador são ; ou # (comentários) e \ (dividir uma linha longa em várias linhas).

A única maneira que posso pensar em fazer o que você quer seria usar alguns diferentes delimitados como um substituto para \n em sua saída do sistema de gerenciamento e, em seguida, pós-processar (por exemplo, sed -e ) arquivos no Nagios / Icinga terminam em arquivos de configuração.

Por exemplo, você pode modificar o script de inicialização para executar sua tarefa de pós-processamento antes de cada recarregamento / HUP. Isso seria um hack feio, mas poderia funcionar.

    
por 18.11.2015 / 23:10
2

Você mencionou que está usando Icinga. Se você estiver no último Icinga2, o formato de configuração suporta definições de linha única via ponto-e-vírgula. Eu faço isso na minha própria configuração, a fim de adicionar novos serviços ao provisionar com ansible. por exemplo,

apply Service "freshness_etl_vendor_import_6am" to Host { import "etl-freshness-service" ; vars.dependens_on_job = "etl_vendor_import_6am" ; assign where "etl_host" in host.groups }

Veja aqui para mais detalhes nos documentos. Se você está no icinga2 e não está funcionando para você, pode haver alguns outros problemas de formatação em jogo.

    
por 19.11.2015 / 03:22