Zabbix API com cURL e alguns exemplos de utilização

Publicado por Charles Josiah Rusch Alandt em 10/09/2020

[ Hits: 10.536 ]

Blog: https://www.linkedin.com/in/charlesjosiah/

 


Zabbix API com cURL e alguns exemplos de utilização



Não é um manual, nem um HOWTO é simples "rascunho" de como usar a API do Zabbix com o curl do Linux.

Objetivo deste documento é demostrar:
  • Se conectar ao Zabbix via API e receber um tokenID do login.
  • Solicitar uma lista de hosts, e escolher 1 host
  • Configurar e adicionar um host à uma janela de manutenção.

Lembrando tudo via API utilizando cURL.

"Bora" para a brincadeira! :D

Para iniciar eu vou iniciar algumas variáveis de ambiente.

Endereço do Zabbix Server:

export $HOST=<URLZABBIX>/api_jsonrpc.php

Usuário com permissão para utilizar API:

export $USER=zbx_api

Senha do usuário com permissão:

export $PASS=SDEDFRF

Login no Zabbix e receber o tokenID da conexão:

curl --insecure -i -X POST -H 'Content-type:application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{ "user":"$USER ,"password":"$PASS" },"auth":null,"id":0}' https://$HOST

Retorno do JSON:

HTTP/1.1 200 OK
Date: Thu, 23 Jul 2020 13:00:29 GMT
Server: Apache/2.4.29
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 1000
Content-Length: 68
Content-Type: application/json

{"jsonrpc":"2.0","result":"05d129888aff2d54563772d32c6b8e04","id":0}


Repare que "05d129888aff2d54563772d32c6b8e04" é o nosso token e ele deverá ser utilizado nos próximos comandos.

Retorna todos os hosts configurados no servidor Zabbix (lembrando de utilizar o token anterior...):

curl --insecure -i -X POST -H 'Content-type:application/json' -d '{"jsonrpc":"2.0","method":"host.get","params":{"output": ["hostid", "name"]},"auth":"05d129888aff2d54563772d32c6b8e04","id":0}' https://$HOST

HTTP/1.1 200 OK
Date: Thu, 23 Jul 2020 13:02:28 GMT
Server: Apache/2.4.29
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 1000
Transfer-Encoding: chunked
Content-Type: application/json

{"jsonrpc":"2.0","result":[{"hostid":"10084","name":"Zabbix server"}, ??..


Retorna somente 1 máquina, dentro da API eu realizo uma pesquisa com o host identificado como teste. E assim recupero o hostid do host; que será utilizado para adicionar este host na nossa janela de manutenção:

curl --insecure -i -X POST -H 'Content-type:application/json' -d '{"jsonrpc":"2.0","method":"host.get","params":{"filter": ["host", "teste"]},"auth":"05d129888aff2d54563772d32c6b8e04","id":0}' https://$HOST

HTTP/1.1 200 OK
Date: Thu, 23 Jul 2020 13:11:36
GMT Server: Apache/2.4.29
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 1000
Transfer-Encoding: chunked
Content-Type: application/json

{"jsonrpc":"2.0","result":[{"hostid":"10425","proxy_hostid":"0","host":"Zabbix server","status":"0","disable_unti


hostid recuperado, 10425 :D

Criar janela de manutenção, e ativar manutenção no host. Para data de início, é em segundo... então `date %s`:

curl --insecure -i -X POST -H 'Content-type:application/json' -d ' {"jsonrpc":"2.0", "method":"maintenance.create", "params":[{ "groupids":[], "hostids":["10425"], "name":"MANUTENCAO PROGRAMADA", "maintenance_type":"0", "description":"MANUTENCAO HOSTS XXXX", "active_since":"1595513595", "active_till":"1595517195", "timeperiods": [ { "timeperiod_type": 0, "start_date": "1595513995", "period": 600 } ] }], "auth":"05d129888aff2d54563772d32c6b8e04","id":3}' https://$HOST

HTTP/1.1 200 OK
Date: Thu, 23 Jul 2020 14:15:15 GMT
Server: Apache/2.4.29
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 1000
Content-Length: 58 Content-Type: application/json

{"jsonrpc":"2.0","result":{"maintenanceids":["1"]},"id":3}


Perfeito, agora só conferir na interface web a janela de manutenção criada e o host já incluso na mesma.

Espero ter auxiliado alguém com essa dica! A API do Zabbix é extremamente incrível.

No exemplo acima, foi utilizado para adicionar os hosts em janelas de manutenção automaticamente utilizando uma esteira de CI/CD.

Obrigado a todos, até mais.

Outras dicas deste autor

Autenticar usuário e mostrar os membros de um grupo no site PHP via LDAP no AD W2K12

Instalando PortSentry 1.2 no CentOS 7

Fazendo o seu Asterisk contar até 100...

tcpdump - Capturando senhas de serviços POP3/IMAP/SMTP ou HTTP

Leitura recomendada

Zoom - Aplicativo de Reunião

Criando um THINCLIENT de baixo custo com Raspberry

Configurando VLAN no Ubuntu Server 16.04

Verificando IPs ativos em determinada rede com fping

Compartilhando arquivos entre computadores com Woof

  

Comentários
[1] Comentário enviado por maurixnovatrento em 10/09/2020 - 20:52h


Muito bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts