Estou tentando transformar nosso espaguete de Icinga em algo mais gerenciável e menos repetitivo. Até agora, recursos como modelos, herança de objetos, herança múltipla, grupos de hosts, grupos de serviço, etc têm atendido às minhas necessidades, mas estou preso a um aspecto.
TL; DR: Como eu digo ao Icinga que, se esse host é um membro de um determinado grupo de hosts, eu quero adicionar um novo grupo de contatos a todos os hosts membros e serviços , mesmo serviços definidos grupo de host diferente do qual o host também é membro?
Eu tenho dois conjuntos ortogonais de grupos de host - um para o tipo de host, que está associado a serviços e dependências de serviço associados ao tipo de host, por exemplo, "Servidores PostgreSQL". Outro conjunto de grupos identifica as áreas de responsabilidade dos nós e quem precisa se preocupar com cada nó.
Eu preciso aplicar especificações de contato aos serviços de acordo com os grupos de host que identificam áreas de responsabilidade - e querem fazê-lo sem ter que substituir cada serviço para cada (tipo de host, área de responsabilidade ) par de grupos de acolhimento.
Então, digamos que eu defina um grupo de host "postgresql_servers" e serviço associado "postgresql_connection":
define hostgroup {
hostgroup_name postgres_servers
alias All PostgreSQL servers
}
define service {
use some_service_template
hostgroup_name postgres_servers
contact_groups support_engineers_notifications
service_description POSTGRES_CONNECTION
check_command check_dummy!2!"Passive check failed"
}
e depois tenho um hostgroup "servers_for_bob" e um contato "bob", que ainda não estão associados:
define hostgroup {
hostgroup_name servers_for_bob,
alias These are for Bob
}
define contact {
contact_name bob
alias bob: Bob B.
use some_contact_template
}
define contactgroup {
contactgroup_name team_bob
members bob
}
Agora, é fácil tornar um host um membro de ambos os grupos de host:
define host {
use some_host_template
host_name buildingthings.example.com
hostgroups servers_for_bob, postgres_servers
alias The first thing bob built
}
... e no processo, ele obterá todos os serviços definidos em relação a postgres_servers
, como POSTGRES_CONNECTION
. Mas as notificações de serviço só irão para support_engineers_notifications
, conforme definido no serviço de base POSTGRES_CONNECTION
.
Agora quero notificar team_bob
quando o host tiver problemas ou qualquer um de seus serviços tiver um problema . Sem redeclarar todos esses serviços.
Para o próprio host, posso usar regras de mesclagem na herança de objetos em contact_groups
, por exemplo,
define host {
use some_host_template
host_name buildingthings.example.com
hostgroups servers_for_bob, postgres_servers
alias The first thing bob built
contact_groups +team_bob
}
e para mais hosts, pode usar herança de vários modelos de host para reduzir a repetição.
No entanto, o AFAIK que não causará os serviços que foram implicitamente definidos, tornando o host membro de postgres_servers
, enviará notificações para team_bob
também.
Aqui está a topologia:
+--------------------------------------+ +-----------+
| | | Contact: |
| Hostgroup: | | Team Bob |
| postgresql_servers <--????--+ |
| | ^^^^ | |
| | how? +-----------+
| |
| +----------------------------------------+
| | | |
| | | |
| | +-------------------------+ | |
| | |-------------------------| | |
| | || || | |
| | || Host buildingthings || | |
| | || hostgroups: || | |
| | || postgres_servers, || | |
| | || servers_for_bob || | |
| | || || | |
| | || || | |
| | || || | |
| | || || | |
| | || || | |
| | |-------------------------| | |
| | +-------------------------+ | |
| | | |
+--------------------------------------+ | +----------------------+
| | | |
| | | Service: |
| <-------+ POSTGRES_CONNECTION |
| | | |
| Hostgroup | | |
| servers_for_bob | +----------------------+
| ^ |
+----------------------------------------+ +---------+------------+
| | More services... |
+----------+ |
+----------------------+
(obrigado link )
Como eu digo ao Icinga que se esse host for um membro do hostgroup servers_for_bob
eu quero adicionar o contato bob
a todos os hosts e serviços membros, mesmo aqueles definidos implicitamente via herança do grupo de host?
Já vi menções vagas sobre o uso de encaminhamentos de host e serviço para contornar isso , mas não foi capaz de descobrir como.
Parece que isso seria um requisito comum, mas não tenho certeza de onde ir a partir daqui. Ajuda?