Embora o Zabbix ofereça uma multiplicidade de recursos, sempre há espaço para funcionalidades adicionais. As extensões são uma maneira conveniente de modificar e aprimorar as capacidades de monitoramento do Zabbix sem alterar seu código-fonte.
Você pode estender a funcionalidade do Zabbix usando opções de extensão integradas (itens trapper, parâmetros de usuário, etc.) ou usando ou criando extensões personalizadas (módulos carregáveis, plugins, etc.).
Esta seção fornece uma visão geral com referências a todas as opções para estender o Zabbix.
Itens trapper são itens que aceitam dados recebidos em vez de consultá-los. Itens trapper são úteis para enviar dados específicos para o servidor ou proxy Zabbix, por exemplo, dados periódicos de disponibilidade e desempenho no caso de scripts de usuário de longa execução. O envio de dados para o servidor ou proxy Zabbix é possível usando a utilidade Zabbix sender ou o protocolo do Zabbix sender. O envio de dados para o servidor Zabbix também é possível usando o método de API history.push.
Uma verificação externa é um item para executar verificações executando um executável, por exemplo, um script shell ou um binário.
As verificações externas são executadas pelo Zabbix server ou proxy (quando o host é monitorado por proxy), e não requerem um agent em execução no host monitorado.
Um parâmetro de usuário é um comando definido pelo usuário (associado a uma chave definida pelo usuário) que, quando executado, pode recuperar os dados necessários do host onde o agent Zabbix está em execução. Os parâmetros de usuário são úteis para configurar items do agent ou agent 2 que não são predefinidos no Zabbix.
system.run[] itens do agent ZabbixO item do agent Zabbix system.run[] é um item para um comando definido pelo usuário (associado a uma chave predefinida system.run[], por exemplo, system.run[myscript.sh]) que pode ser executado no host onde o agent Zabbix está em execução.
Nota: Os itens system.run[] estão desabilitados por padrão e, se usados, devem ser habilitados (permitidos) e definidos no arquivo de configuração do agent Zabbix ou agent 2 (parâmetro de configuração AllowKey).
Comandos definidos pelo usuário em items, como verificações externas, parâmetros de usuário e items do agent Zabbix system.run[] são executados a partir do usuário do SO que é usado para executar os componentes do Zabbix. Para executar esses comandos, esse usuário deve ter as permissões necessárias.
O item agente HTTP é um item para executar solicitações de dados via HTTP/HTTPS. Itens de agente HTTP são úteis para enviar solicitações para endpoints HTTP para recuperar dados de serviços como Elasticsearch e OpenWeatherMap, para verificar o status da API do Zabbix ou o status do servidor web Apache ou Nginx, etc. Itens de agente HTTP (com trapping habilitado) também podem funcionar como itens trapper.
Um item de script é um item para executar código JavaScript definido pelo usuário que recupera dados via HTTP/HTTPS. Itens de script são úteis quando a funcionalidade fornecida por itens de agente HTTP não é suficiente. Por exemplo, em cenários exigentes de coleta de dados que requerem múltiplas etapas ou lógica complexa, um item de script pode ser configurado para fazer uma chamada HTTP, processar os dados recebidos e, em seguida, passar o valor transformado para uma segunda chamada HTTP.
Itens de agente HTTP e itens de script são suportados pelo Zabbix server e proxy, e não requerem um agent em execução no host monitorado.
Módulos carregáveis, escritos em C, são uma opção versátil e orientada para desempenho para estender a funcionalidade dos componentes do Zabbix (server, proxy, agent) em plataformas UNIX. Um módulo carregável é basicamente uma biblioteca compartilhada usada pelo daemon do Zabbix e carregada na inicialização. A biblioteca deve conter certas funções, para que um processo do Zabbix possa detectar que o arquivo é realmente um módulo que pode carregar e trabalhar.
Os módulos carregáveis têm vários benefícios, incluindo a capacidade de adicionar novas métricas ou implementar qualquer outra lógica (por exemplo, exportação de dados históricos do Zabbix), ótimo desempenho e a opção de desenvolver, usar e compartilhar a funcionalidade que eles fornecem. Isso contribui para uma manutenção sem problemas e ajuda a entregar novas funcionalidades de forma mais fácil e independente do código-fonte principal do Zabbix.
Módulos carregáveis são especialmente úteis em uma configuração de monitoramento complexa. Ao monitorar sistemas embarcados, ter um grande número de parâmetros monitorados ou scripts pesados com lógica complexa ou longo tempo de inicialização, extensões como parâmetros de usuário, itens do agent system.run[] e verificações externas terão impacto no desempenho. Módulos carregáveis oferecem uma maneira de estender a funcionalidade do Zabbix sem sacrificar o desempenho.
Plugins fornecem uma alternativa aos módulos carregáveis (escritos em C). No entanto, plugins são uma forma de estender apenas o agent Zabbix 2.
Um plugin é um pacote Go que define a estrutura e implementa uma ou várias interfaces de plugin (Exporter, Collector, Configurator, Runner, Watcher). Dois tipos de plugins do agent Zabbix 2 são suportados:
Veja a lista de plugins embutidos.
Para instruções e tutoriais sobre como escrever seus próprios plugins, veja o Centro de desenvolvedores.
Um webhook é um tipo de mídia do Zabbix que oferece uma opção para estender as capacidades de alerta do Zabbix para softwares externos, como sistemas de helpdesk, chats ou mensageiros. Semelhante aos itens de script, os webhooks são úteis para fazer chamadas HTTP usando código JavaScript personalizado, por exemplo, para enviar notificações para diferentes plataformas, como Microsoft Teams, Discord e Jira. Também é possível retornar alguns dados (por exemplo, sobre tickets de helpdesk criados) que são então exibidos no Zabbix.
Webhooks existentes estão disponíveis no repositório Git do Zabbix. Para desenvolvimento de webhooks personalizados, consulte as Diretrizes de desenvolvimento de webhooks.
Um script de alerta é um tipo de mídia do Zabbix que oferece uma opção para criar uma maneira alternativa (script) de lidar com alertas do Zabbix. Scripts de alerta são úteis se você não estiver satisfeito com os tipos de mídia existentes para envio de alertas no Zabbix.
É possível alterar a aparência visual do frontend do Zabbix usando temas personalizados. Veja as instruções para criar e aplicar seus próprios temas.
Módulos do frontend fornecem uma opção para estender a funcionalidade do frontend do Zabbix adicionando módulos de terceiros ou desenvolvendo os seus próprios. Com os módulos do frontend, você pode adicionar novos itens de menu, suas respectivas visualizações, ações, etc.
Um script global é um conjunto de comandos definidos pelo usuário que podem ser executados em um alvo de monitoramento (pelo interpretador shell (/bin/sh)), dependendo do escopo configurado e das permissões do usuário. Os scripts globais podem ser configurados para as seguintes ações:
Os scripts globais são úteis em muitos casos. Por exemplo, se configurados para operações de ação ou ações manuais de host, você pode usar scripts globais para executar automaticamente ou manualmente comandos remotos como reiniciar um aplicativo (servidor web, middleware, CRM, etc.) ou liberar espaço em disco (removendo arquivos antigos, limpando /tmp, etc). Ou, outro exemplo, se configurados para ações manuais de eventos, você pode usar scripts globais para gerenciar tickets de problemas em sistemas externos.
Os scripts globais podem ser executados pelo Zabbix server, proxy ou agent.
Os comandos definidos pelo usuário são executados a partir do usuário do SO que é usado para executar os componentes do Zabbix. Para executar esses comandos, esse usuário deve ter as permissões necessárias.
Zabbix API é uma API baseada em HTTP que faz parte do frontend do Zabbix. Com a Zabbix API, você pode realizar qualquer uma das seguintes operações:
A Zabbix API consiste em uma multiplicidade de métodos que são agrupados nominalmente em APIs separadas. Cada método executa uma tarefa específica. Para os métodos disponíveis, bem como uma visão geral das funções fornecidas pela Zabbix API, consulte a Referência de métodos da Zabbix API.