Como programar a API do Zabbix

1.138 visualizações

Publicada em

O objetivo é apresentar a API do Zabbix e mostrar o que é possível desenvolver com ela. Vamos falar das características e recursos da API, e quais linguagens e bibliotecas utilizamos para programá-la. Assista ao vídeo da apresentação - https://www.youtube.com/watch?v=0RjPhk1YU30

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.138
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
46
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Como programar a API do Zabbix

  1. 1. Como programar a API do Zabbix? Hangout – 06/10/2015 conectsys.com.br
  2. 2. Apresentação do instrutor Janssen dos Reis Lima • Bacharel em Sistemas de Informação pela FeMASS/UFF • Especialista em Administração em Redes Linux pela UFLA • Mestrando em Sistemas Computacionais pela UFF • Atualmente ocupa o cargo de Analista de Sistemas no Grupo de Inferência de Reservatório, no LENEP/UENF • Sócio da Conectsys Soluções Corporativas • 16 anos de experiência na área de TI • Trabalha com projetos de implementação de Zabbix desde 2010 • Autor do Livro “Monitoramento de Redes com Zabbix” • Desenvolvedor de integrações de Zabbix com outros sistemas
  3. 3. Agenda • Apresentação da API do Zabbix • Estrutura da API do Zabbix • Classes e métodos da API do Zabbix • O que é possível fazer? • Exemplos de relatórios • Integração entre sistemas • Alguns projetos que utilizam a API do Zabbix
  4. 4. Visão geral da API A API do Zabbix permite recuperar e modificar configurações via programação, além de fornecer acesso a dados históricos.
  5. 5. Visão geral da API É amplamente utilizada para: • Criar novas aplicações para trabalhar com Zabbix; • Fazer integração com software de terceiros; • Automatizar tarefas rotineiras.
  6. 6. Visão geral da API Consigo fazer isso com API?
  7. 7. Você sabe a diferença entre back-end e front-end?
  8. 8. Você sabe a diferença entre back-end e front-end?
  9. 9. server-side | client-side
  10. 10. Agora você já tem embasamento para responder a essa pergunta: A API do Zabbix faz dashboards?
  11. 11. Agora você já tem embasamento para responder a essa pergunta: A API do Zabbix faz dashboards? NÃO Programar a API do Zabbix não faz de você um desenvolvedor web apto a desenvolver dashboards. Mas sim, entregar os dados coletados via API para serem consumidos por uma dashboard.
  12. 12. Dashboard OctoZab comprova isso http://demo.quadrata.it/octozab/
  13. 13. GitHub do OctoZab https://github.com/Quadrata-it/octo-zab
  14. 14. Vamos apimentar (ou adocicar!) a discussão? Operação de rede - Necessita de visualização do ambiente monitorado - Verificar uma falha que está acontecendo Gerência e supervisão - Precisam tomar decisões - Raramente visualizam os dados em tempo real - Necessitam de relatórios gerenciais e operacionais
  15. 15. Visão geral da API A API do Zabbix é uma API baseada na web e é fornecida como parte da própria interface web do Zabbix. Ela utiliza o protocolo JSON-RPC 2.0: – Consiste de um conjunto de métodos; – Requisições e respostas entre os clientes e a API são codificados usando o formato JSON.
  16. 16. Requisição JSON { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix“ }, "id": 1, "auth": null }
  17. 17. Resposta JSON { "jsonrpc": "2.0", "result": "0424bd59b807674191e7d77572075f33", "id": 1 }
  18. 18. Antes da API Antes da implementação da API do Zabbix, não existia nenhuma ferramenta para controlar o Zabbix fora da interface Web, exceto executar consultas diretamente na base de dados, o que não é muito seguro.
  19. 19. Onde encontrar a documentação? • https://www.zabbix.com/documentation/2.4/ manual/api
  20. 20. Execução de requisições • Só precisa enviar requisição HTTP POST para o arquivo api_jsonrpc.php Exemplo para chamar o método apiinfo.version: POST http://localhost/zabbix/api_jsonrpc.php HTTP/1.1 Content-Type: application/json-rpc {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth" :null,"params":{}}
  21. 21. Como fazer uma requisição? • Interface web deve estar disponível • Ter um cliente HTTP ou uma ferramenta JSON- RPC • Ter uma biblioteca com a API implementada
  22. 22. Usando o comando curl # curl -X POST -H 'Content-Type: application/json' -d '{"params": {"password": "zabbix", "user": "Admin"}, "jsonrpc": "2.0", "method": "user.login", "auth": null, "id": 1}' http://localhost/zabbix/api_jsonrpc.php Explicando: • params: parâmetros que serão passados para o método da API • jsonrpc: versão do protocolo utilizado pela API • mehtod: o método da API que será chamado • id: identificador arbitrário do pedido • auth: um token de autenticação para o usuário
  23. 23. Resposta da requisição {"jsonrpc":"2.0","result":"1d8fa00b50f7c0be93938c 98a9d4d713 ","id":1} • O resultado é o token para autenticação • Apto para fazer as demais requisições Obs.: para formatar a saída no formato JSON, insira no final do comando: | python -mjson.tool
  24. 24. Continuando com as requisições • Consulta curl -X POST -H 'Content-Type: application/json' -d '{"params": {"output": "shorten"}, "jsonrpc": "2.0", "method": "host.get", "auth": "1d8fa00b50f7c0be93938c98a9d4d713", "id": 1}' http://localhost/zabbix/api_jsonrpc.php • Resposta {"jsonrpc":"2.0","result":[{"hostid":"10084"},{"hostid":"1 0107"},{"hostid":"10106"},{"hostid":"10109"},{"hostid":"1 0142"},{"hostid":"10159"},{"hostid":"10160"}],"id":1}
  25. 25. Ferramenta pra testar JSON • Zapix - https://bitbucket.org/Vedmak/zapix • Simples de usar • Ideal para praticar o formato de requisições JSON com os métodos da API do Zabbix
  26. 26. Por que eu preciso de uma biblioteca? • Para não precisar reinventar a roda • As bibliotecas já implementam os métodos da API do Zabbix e facilita o seu uso • Qual a melhor biblioteca? – Depende da linguagem – Eu recomento a zabbix-api (escrita em Python) – https://github.com/gescheit/scripts/tree/master/z abbix
  27. 27. E onde entra a programação? • Ao invés de você consumir isso [{u'host': u'Cable Modem', u'hostid': u'10106'}, {u'host': u'TesteJanssen', u'hostid': u'10109'}, {u'host': u'Zabbix server', u'hostid': u'10084'}, {u'host': u'Cliente', u'hostid': u'10107'}, {u'host': u'Nmap', u'hostid': u'10110'}] • Você consumirá isto 10106 - Cable Modem 10109 – TesteJanssen 10084 – Zabbix server 10107 – Cliente 10110 - Nmap
  28. 28. Primeiros passos • Definir o cabeçalho do arquivo .py #!/usr/bin/env python # -*- coding: utf-8 -*- from zabbix_api import ZabbixAPI zapi = ZabbixAPI(server="http://<ip-ou-hostname>/zabbix") zapi.login("<user>", "<password>")
  29. 29. Exemplo • Consultar a versão da API do Zabbix instalada print "Versão da API do Zabbix: ", zapi.api_version()
  30. 30. Exemplo com estrutura de controle • Imprimir apenas o ID e nome do host hosts = zapi.host.get({"output":["hostid","host"]}) for x in hosts: print x["hostid"], "- ", x["host"]
  31. 31. Listar todos os hosts de acordo com o grupo de host de acordo com o nome do grupo id_grupo = zapi.hostgroup.get({"search":{"name":"Linux servers"}, "output":["groupid","name"] }) nomes_grupo = zapi.host.get({"groupids":id_grupo[0]['groupid'], "output":["host"] }) print "Relação dos hosts associados ao grupo: ", id_grupo[0]['name'] print "=====================================================" for x in nomes_grupo: print x['hostid'], "-", x['host']
  32. 32. Listar a versão do agente dos hosts por grupo grupo_hosts = zapi.item.get({"groupids":"17", "filter":{"key_":"agent.version"}, "output":["lastvalue","hostid"] }) print "Relação dos hosts com Zabbix Agent desatualizado." print "-------------------------------------------------" for x in grupo_hosts: if x['lastvalue'] != "3.0": host = zapi.host.get({"hostids":x['hostid'], "output":["name"]}) print x['hostid'], "-", host[0]['name'], "-", x['lastvalue']
  33. 33. Relatórios • Listagem básica de hosts e id’s.
  34. 34. Relatórios • Número de vezes em que as triggers foram acionadas em um determinado período separado por host e classificação de severidade.
  35. 35. Integração com outros sistemas - Sistemas de pagamento - Redes sociais
  36. 36. Exemplo de integração ZABBIX + GLPI • http://blog.janssenlima.com/2013/11/integracao -zabbix-glpi.html Trigger PROBLEM Executa uma ação Reconhece evento informando número do ticket Trigger OK Abre ticket informando número do evento Fecha ticket informando número do evento
  37. 37. Projetos que usam a API do Zabbix Automação • Zabbix-gnomes - https://github.com/q1x/zabbix-gnomes • IT services tree - https://github.com/janssenlima/api-zabbix Dashboards • Grafana - https://github.com/alexanderzobnin/grafana-zabbix/ • OctoZab - https://github.com/Quadrata-it/octo-zab • Zabbix-Dashboard - https://github.com/incama/Zabbix-Dashboard • zabbixweb - https://github.com/velinath/zabbixweb • Phyramid Network - https://www.phyramid.com/blog/monitoring- servers-at-phyramid/
  38. 38. Sobre o curso de API da Conectsys • Por que você deve fazer o curso? – Utilizar todo o potencial que o Zabbix oferece – Criar novas ferramentas, relatórios etc. – Automatizar tarefas repetitivas – Pensar mais no core business da empresa, não somente em TI. • E por que fazer com a Conectsys? – Único curso de API do Zabbix no mercado – Experiência do instrutor com projetos de integração – Você vai se surpreender com o que pode fazer com a API
  39. 39. Como é o curso? • Você vai aprender a estrutura da API • Como relacionar as requisições fazendo uso dos métodos corretos • Conhecer e trabalhar com o formato JSON • Fazer seus próprios códigos utilizando a API na linguagem que você mais se adapta, não somente na linguagem ensinada no curso • Conhecer as bibliotecas a utilizar para plotar gráficos, gerar relatórios em PDF, HTML etc.
  40. 40. Formato do Curso • Atualmente disponível somente ao vivo – Aulas não são gravadas (aluno terá acesso ao curso gravado) – Fórum para tirar dúvidas no ambiente EAD • Em breve o curso será disponível em vídeo aula – Com fórum exclusivo para tirar dúvidas e trocar conhecimento entre os alunos – Encontros mensais para discutir ideias do uso da API – Direito a consultoria exclusiva para projetos com a API
  41. 41. Dúvidas? www.conectsys.com.br contato@conectsys.com.br www.conectsys.com.br/servicos/cursos/ programacao-com-api-do-zabbix/

×