como programar a api do zabbix

41
Como programar a API do Zabbix? Hangout – 06/10/2015 conectsys.com.br

Upload: janssen-lima

Post on 13-Apr-2017

1.479 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Como programar a API do Zabbix

Como programar a API do Zabbix?

Hangout – 06/10/2015

conectsys.com.br

Page 2: Como programar a API do Zabbix

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

Page 3: Como programar a API do Zabbix

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

Page 4: Como programar a API do Zabbix

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.

Page 5: Como programar a API do Zabbix

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.

Page 6: Como programar a API do Zabbix

Visão geral da API

Consigo fazer isso com API?

Page 7: Como programar a API do Zabbix

Você sabe a diferença entre back-end e front-end?

Page 8: Como programar a API do Zabbix

Você sabe a diferença entre back-end e front-end?

Page 9: Como programar a API do Zabbix

server-side | client-side

Page 10: Como programar a API do Zabbix

Agora você já tem embasamento para responder a essa pergunta: A API do Zabbix faz dashboards?

Page 11: Como programar a API do Zabbix

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.

Page 12: Como programar a API do Zabbix

Dashboard OctoZab comprova isso

http://demo.quadrata.it/octozab/

Page 14: Como programar a API do Zabbix

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

Page 15: Como programar a API do Zabbix

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.

Page 16: Como programar a API do Zabbix

Requisição JSON

{ "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix“ }, "id": 1, "auth": null }

Page 17: Como programar a API do Zabbix

Resposta JSON

{

"jsonrpc": "2.0", "result": "0424bd59b807674191e7d77572075f33",

"id": 1

}

Page 18: Como programar a API do Zabbix

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.

Page 19: Como programar a API do Zabbix

Onde encontrar a documentação?

• https://www.zabbix.com/documentation/2.4/manual/api

Page 20: Como programar a API do Zabbix

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":{}}

Page 21: Como programar a API do Zabbix

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

Page 22: Como programar a API do Zabbix

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

Page 23: Como programar a API do Zabbix

Resposta da requisição

{"jsonrpc":"2.0","result":"1d8fa00b50f7c0be93938c98a9d4d713 ","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

Page 24: Como programar a API do Zabbix

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":"10107"},{"hostid":"10106"},{"hostid":"10109"},{"hostid":"10142"},{"hostid":"10159"},{"hostid":"10160"}],"id":1}

Page 25: Como programar a API do Zabbix

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

Page 26: Como programar a API do Zabbix

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/zabbix

Page 27: Como programar a API do Zabbix

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

Page 28: Como programar a API do Zabbix

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>")

Page 29: Como programar a API do Zabbix

Exemplo

• Consultar a versão da API do Zabbix instalada

print "Versão da API do Zabbix: ", zapi.api_version()

Page 30: Como programar a API do Zabbix

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"]

Page 31: Como programar a API do Zabbix

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']

Page 32: Como programar a API do Zabbix

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']

Page 33: Como programar a API do Zabbix

Relatórios

• Listagem básica de hosts e id’s.

Page 34: Como programar a API do Zabbix

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.

Page 35: Como programar a API do Zabbix

Integração com outros sistemas

- Sistemas de pagamento - Redes sociais

Page 36: Como programar a API do Zabbix

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

Page 37: Como programar a API do Zabbix

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/

Page 38: Como programar a API do Zabbix

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

Page 39: Como programar a API do Zabbix

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.

Page 40: Como programar a API do Zabbix

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