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

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

[ Hits: 10.308 ]

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

Fazendo o seu Asterisk contar até 100...

Instalando PortSentry 1.2 no CentOS 7

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

Leitura recomendada

Como configurar proxy no Google Chrome para Linux

Acertando o relógio do sistema via http e DNS

Protocolo de gateway redundante VRRP, a escolha certa para interoperabilidade da sua rede Cisco

SSH pelo gerenciador Dolphin

Verificar se determinada porta está aberta com o comando echo (funciona remoto)

  

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