É possível descobrir unidades systemd (serviços, por padrão) com o Zabbix.
O item a ser usado na regra de descoberta é
Esta chave de item é suportada apenas no Zabbix agent 2.
Este item retorna um JSON com informações sobre as unidades do systemd, por exemplo:
[{
"{#UNIT.NAME}": "mysqld.service",
"{#UNIT.DESCRIPTION}": "MySQL Server",
"{#UNIT.LOADSTATE}": "loaded",
"{#UNIT.ACTIVESTATE}": "active",
"{#UNIT.SUBSTATE}": "running",
"{#UNIT.FOLLOWED}": "",
"{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/mysqld_2eservice",
"{#UNIT.JOBID}": 0,
"{#UNIT.JOBTYPE}": "",
"{#UNIT.JOBPATH}": "/",
"{#UNIT.UNITFILESTATE}": "enabled"
"{#UNIT.SERVICETYPE}": "simple"
}, {
"{#UNIT.NAME}": "systemd-journald.socket",
"{#UNIT.DESCRIPTION}": "Journal Socket",
"{#UNIT.LOADSTATE}": "loaded",
"{#UNIT.ACTIVESTATE}": "active",
"{#UNIT.SUBSTATE}": "running",
"{#UNIT.FOLLOWED}": "",
"{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket",
"{#UNIT.JOBID}": 0,
"{#UNIT.JOBTYPE}": "",
"{#UNIT.JOBPATH}": "/",
"{#UNIT.UNITFILESTATE}": "enabled"
}]Também é possível descobrir unidades systemd desabilitadas. Neste caso, três macros são retornadas no JSON resultante:
Para que items e triggers sejam criados a partir de protótipos para unidades systemd desabilitadas, certifique-se de ajustar (ou remover) os filtros LLD proibitivos para {#UNIT.ACTIVESTATE} e {#UNIT.UNITFILESTATE}.
As seguintes macros são suportadas para uso na regra de descoberta (filtro) e protótipos de items, triggers e gráficos:
| Macro | Descrição |
|---|---|
| {#UNIT.NAME} | Nome da unidade primária. |
| {#UNIT.DESCRIPTION} | Descrição legível por humanos. |
| {#UNIT.LOADSTATE} | Estado de carregamento (ou seja, se o arquivo da unidade foi carregado com sucesso) |
| {#UNIT.ACTIVESTATE} | Estado ativo (ou seja, se a unidade está atualmente iniciada ou não) |
| {#UNIT.SUBSTATE} | Subestado (uma versão mais detalhada do estado ativo que é específica para o tipo de unidade, o que o estado ativo não é) |
| {#UNIT.FOLLOWED} | Unidade que está sendo seguida em seu estado por esta unidade, se houver; caso contrário, uma string vazia. |
| {#UNIT.PATH} | Caminho do objeto da unidade. |
| {#UNIT.JOBID} | ID numérico do job se houver um job na fila para a unidade; 0 caso contrário. |
| {#UNIT.JOBTYPE} | Tipo do job. |
| {#UNIT.JOBPATH} | Caminho do objeto do job. |
| {#UNIT.UNITFILESTATE} | O estado de instalação do arquivo da unidade. |
| {#UNIT.SERVICETYPE} | Tipo da unidade de serviço (por exemplo, simple, forking, oneshot, idle, etc.). Esta macro é retornada apenas se a unidade for um serviço. |
Protótipos de item que podem ser criados com base na descoberta de serviços systemd incluem, por exemplo:
{#UNIT.DESCRIPTION} active state info; chave do item: systemd.unit.info["{#UNIT.NAME}"]{#UNIT.DESCRIPTION} load state info; chave do item: systemd.unit.info["{#UNIT.NAME}",LoadState]