Atualmente, estou experimentando definir um conjunto de serviços para todos os hosts em um host, isso está funcionando bem.
O meu problema é que, em seguida, quero ser capaz de substituir essas definições de serviço que foram incluídas no host, do grupo de host. Para situações, por exemplo, onde um determinado servidor Linux precisa ter seu limite de verificação de PING elevado do padrão.
Por exemplo, eu gostaria de ter um host no grupo de hosts linux-server
, que herda vários serviços (SSH, Disco, PING, etc), mas para serviços específicos que desejo substituir com seus próprios valores exclusivos , defina um serviço específico para esse host, com valores personalizados.
Defina um host em linux-server
com uma definição de serviço personalizada PING
:
define host {
use n1-host
host_name server-01
hostgroups linux-server
alias Test Linux Server
parents my-gateway,upstream-gateway
address server01.test.com
}
define service {
use generic-service
host_name server-01
service_description PING
check_command check_ping!100.0,5%!400.0,15%
}
Infelizmente, mesmo que o nome do host e a descrição do serviço correspondam aos da verificação PING no nível do grupo, somente um serviço PING está listado para server-01
e essa é a verificação PING no nível do grupo, não o nível um do host .
Parece estar registrando em algum nível como em meus registros do Nagios eu posso ver:
Jul 16 19:12:27 localhost nagios: Aviso: definição duplicada encontrada para o serviço 'PING' no host 'server-01'
Mas, em última análise, não funciona como se eu verificasse os "dados de desempenho" dos resultados da verificação de serviço, vejo que o limite incluído nos dados é o da verificação de grupo, não da verificação de host.
-
No entanto, meu entendimento é que uma mudança foi feita em torno da versão 3.2.0
para permitir que os serviços no nível do host tenham precedência sobre os serviços no nível do grupo de host. No momento, estou executando 3.4.1
, então acho que isso deve estar funcionando.
-
Alguns links que me levam a acreditar que esse recurso já deve ser implementado:
-
Além disso, verifiquei minha cópia do arquivo xdata/xodtemplate.c
do código-fonte 3.4.1 e, de relance, parece que na "lista ignorada", as verificações no nível do host destinam-se a ter precedência sobre as verificações do grupo de Apesar de admitir, minha análise é primitiva.
-
Eu sei que pode ser possível excluir determinados hosts de um grupo, mas isso não funcionará para mim, já que um grupo de host pode ter vários serviços nele, e não quero ter todos eles serviços removidos do host.
-
Eu também acho não intuitivo ter que manter uma lista de exclusões separadas para onde o próprio host está realmente definido. Por exemplo, o conselho foi dado em um dos links acima (segundo) para fazer o seguinte:
In the service definition add a line under "hostgroup_name":
"host_name !zlinux_hostname"
This will exclude the zlinux host from the service check.
Para mim, esta não é uma solução ideal, pois podemos acabar tendo que fazer muitas exceções e isso parece ser difícil de manter.
Se alguém tiver algum conselho sobre insights sobre como fazer isso funcionar, eu aprecio muito isso!
bits adicionais
Atualmente, estou definindo meu serviço PING no nível do grupo da seguinte forma:
define hostgroup {
hostgroup_name linux-server
name Linux Servers
}
define service {
use generic-service
hostgroup_name linux-server
service_description PING
check_command check_ping!100.0,2%!400.0,10%
}