Como determinar qual comando é executado em um serviço Nagios?

1

Estou tentando depurar porque um serviço do Nagios está falhando; AFAIK, começou a falhar de repente, sem qualquer alteração que tenhamos conhecimento. Eu estou tentando encontrar uma maneira de ir de serviço para "comando que isso é executado, que falha" para depurar isso.

O serviço é chamado de "NTP"; no meu /etc/nagios3/conf.d , eu tenho,

define service {
    use                         service-passive-critical
    hostgroup_name              web-internal
    service_description         NTP
}

Não há check_command . Olhando então para serivce-passive-critical ,

define service {
    name                        service-passive-critical
    use                         service-passive
    notification_interval       1 ; always re-send alerts, PagerDuty will dedup
    contact_groups              contact-group-24x7
    freshness_threshold         900 ; treat service as stale if no updates for 15 min
    check_command               return-critical ; alert CRITICAL if service is stale
}

A check_command ! Mas, por mais que eu saiba, isso deve sempre retornar CRITICAL, como o nome sugere. Meu serviço está falhando com UNKNOWN e a mensagem "não é possível criar conexão de soquete". Os logs,

[1439835980] PASSIVE SERVICE CHECK: my-thing.example.com;NTP;3;can't create socket connection

Para completar, service-passive :

# passive services
define service {
    use                         foo-service
    name                        service-passive
    active_checks_enabled       0
    passive_checks_enabled      1
    parallelize_check           1
    obsess_over_service         0
    check_freshness             1
    freshness_threshold         900 ; treat service as stale if no updates for 15 min
    check_command               return-unknown ; alert UNKNOWN if service is stale
}

# for all our services we attach a graph link
define service {
    name                        foo-service
    use                         generic-service
    action_url                  /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
    register                    0
}

Agora, meu palpite mais comum é que isso acaba rodando check_ntp ; isto faz mostrar o erro "não consigo criar conexão de socket" Eu vejo dependendo dos argumentos que eu passo (é por isso que seria tão bom saber o que o Nagios está fazendo aqui ...); Eu ainda não tenho ideia do porque começou a falhar de repente.

Além disso, há uma maneira de saber se isso está sendo executado localmente, no próprio host do Nagios, ou remotamente, através do NRPE?

    
por Thanatos 17.08.2015 / 21:09

1 resposta

3

Este é um serviço passivo , certo? Se você não alterou a configuração, então seu NAGIOS nunca executou nenhum comando em todos os para este serviço em particular - era o registro de dados sendo alimentado de fora, via (por exemplo) NSCA.

Na verdade, suspeito que ainda seja: o sistema externo está alimentando um nome de host, um serviço, um código de status ( 3 ) e uma mensagem de erro ( can't create socket connection ).

O uso de um comando ativo de stub que retorna, e. CRITICAL é usual com tais serviços, porque ele funciona junto com a verificação de atualização para fazer com que o serviço seja CRITICAL se nenhum dado for recebido do remetente externo por um determinado período (aqui, 900s). Isso impede que os serviços PASSIVOS falhem silenciosamente quando o remetente ficar em silêncio, o que é uma boa prática.

    
por 17.08.2015 / 21:11

Tags