Como monitorar os “https” remotos com a versão 2 do Icinga?

6

Eu tenho o icinga 2.3.11 no Ubuntu 14.04.3 dentro do VirtualBox. Estou tentando monitorar a porta "https" 443 por exemplo " link " aqui.A seguir está meu trecho do arquivo host.conf padrão

object Host "mailserver-01" {
    import "generic-host"
    address = "74.125.136.17"    /* ip for mail.google.com */ 
    vars.os = "Linux"
    vars.http_vhosts["http"] = {
        http_uri = "/"
    }
    vars.http_ssl = "1"
    vars.http_warn_time = "5"
    vars.http_critical_time = "10"

    vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
    }
}

Abaixo está o trecho do arquivo services.conf padrão

apply Service "httpS" {
    import "generic-service"
    check_command = "http"
    assign where host.name == "mailserver-01"
}

Embora o painel icingaweb2 mostre OK / verde, não tenho certeza se está correto

    
por satch_boogie 02.11.2015 / 11:33

2 respostas

8

Seu host define o atributo personalizado "http_vhosts" como dicionário, mas ele nunca é usado (não há nenhuma aplicação para a regra definida para iterar esse dicionário e para gerar objetos de serviço de compartilhamento).

Em vez disso, a regra de aplicação do serviço (sem um loop for) apenas aplica o serviço "httpS". Por acidente, o atributo personalizado do host "http_ssl" é definido - ele deve ler verdadeiro como booleano em vez de um número como string (sempre verdadeiro).

Você provavelmente deseja verificar vários URIs, não apenas /.

Minha proposta (2 soluções):

1) Corrija a regra de aplicação do serviço e remova os atributos customizados http_ * da definição do objeto host. Em vez disso, adicione-os à regra de aplicação do serviço:

apply Service "httpS" {
  import "generic-service"
  check_command = "http"
  vars.http_uri = "/"
  vars.http_ssl = true
  assign where host.name == "mailserver-01"
}

Você pode encontrar todos os atributos personalizados usados como parâmetros de comando para o link CheckCommand na documentação: link

2) Use um serviço que se aplique à regra e faça um loop pelo dicionário http_vhosts definido no host.

vars.http_vhosts["https /"] = {
  http_ssl = true
  http_uri = "/"
}

Observe a nomeação aqui: "https /" será o nome do serviço gerado. http_ssl e http_uri são exatamente os mesmos nomes que os atributos customizados requeridos pelo http CheckCommand.

A mágica acontece dentro da regra de aplicar: A chave do dicionário será o nome do serviço. O valor do dicionário é um dicionário aninhado e contém http_uri e http_ssl como chaves. No exemplo, isso é chamado de "config". Esse dicionário de configuração tem exatamente a mesma estrutura que o atributo "vars", e é por isso que podemos apenas adicioná-lo dentro do serviço para a definição.

apply Service for (servicename => config in host.vars.http_vhosts) {
  import "generic-service"
  check_command = "http"
  vars += config
}

Verifique a configuração usando icinga2 daemon -C e, em seguida, examine os objetos de serviço gerados para ver quais atributos customizados são gerados (lista de objetos icinga2).

Uma coisa boa - todos os hosts que possuem o atributo customizado http_vhosts definido irão gerar esses objetos de serviço, não há necessidade de uma expressão "assign where" extea (talvez prefira ignorar where para exceções). Com a estratégia certa, você escreverá para aplicar regras apenas uma vez e apenas adicionará novos hosts com o dicionário de atributos personalizados correspondentes no futuro: -)

link

Apesar da solução 2) requer conhecimento avançado sobre a linguagem de configuração icinga 2 e suas palavras-chave, tipos de valor e truques de mágica. No entanto, achamos que esses métodos e práticas recomendadas ajudam a reduzir a manutenção de longo prazo com a adoção e a alteração de arquivos.

Você também pode ir além e usar condições if-else para threshokds diferentes com base no nome do host. Ou use funções para definir limites dinâmicos com base em períodos de tempo, por exemplo.

    
por 13.11.2015 / 21:09
1

Eu pesquisei e encontrei o comando http em

/usr/share/icinga2/include/command-plugins.conf

Neste exemplo, tentei monitorar o link Abaixo está o /etc/icinga2/conf.d/hosts.conf

object Host "www.google.com" {
address = "74.125.136.84"
check_command = "http"
vars.http_vhost = "mail.google.com"
vars.http_ssl = "1"
}

Aqui o que parece no painel icingaweb2

Exemplo2

objectHost"secure.example.com" {
    address = "14.28.83.22"
    check_command = "http"
    vars.http_vhosts["secure.example.com"] = {
    http_uri = "/merchant/login.aspx"    
    }
        vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
        }
    vars.http_ssl="1"
}
    
por 08.11.2015 / 11:23