Primeiros passos com API do Zabbix

Bom galera,

Faz tempo que não posto nada sobre Zabbix. Então, quis presentear vocês com um conteúdo mais avançado. Espero que ao menos 1 vez por mês coloco mais assuntos como esse no blog.

Vou mostrar para vocês como utilizar a API do Zabbix.

Antes vou explicar de forma básica o que API para os que não sabem do que se trata. Programadores tem a obrigação de saber.  :P

- API - Application Programming Interface - é um conjunto de rotinas e padrões estabelecidos por um software. Isso permite que aplicações de terceiros utilizem as funcionalidades oferecidas pelo software.


A API do Zabbix permite recuperar e modificar a configuração do Zabbix via programação e fornece acesso a dados históricos. É amplamente utilizado para:

  • Criar novas aplicações para trabalhar com Zabbix
  • Integrar Zabbix com softwar de terceiros
  • Automatizar tarefas de rotina

Obs.: Não é o meu objetivo detalhar como funciona a estrutura da API do Zabbix. Isso é assunto para quem deseja desenvolver uma biblioteca para trabalhar com a API do Zabbix. Para uma explicação mais detalhada, sugiro a leitura do próprio manual do Zabbix que aborda esse conteúdo. https://www.zabbix.com/documentation/2.4/manual/api]https://www.zabbix.com/documentation/2.4/manual/api

Esse conteúdo aqui está focado em quem deseja ter o mínimo de esforço para utilizar uma biblioteca já pronta e usufruir dos métodos disponibilizados pela API do Zabbix.

A própria documentação do Zabbix sugera que você use bibliotecas que trabalham com a API do Zabbix para desenvolvimento de Aplicações. Este é o meu caso e vou demonstrar para vocês como utilizar a API do Zabbix com uma biblioteca escrita em Python. Para outras linguagens, acesse http://zabbix.org/wiki/Docs/api/libraries]http://zabbix.org/wiki/Docs/api/libraries


Vamos começar.

Instale o pacote python-pip

Debian e derivados


apt-get install python-pip

ou

Red Hat e derivados


yum install python-pip

Instale a biblioteca zabbix-api (mesmo comando para qualquer distribuição)

pip install zabbix-api


O código abaixo vai montar a parte do código essencial para você se conectar a interface Web do Zabbix, que é o canal por onde a API do Zabbix disponibiliza as informações.

# -*- coding: utf-8 -*-
"""
Created on Fri Mar 27 12:50:18 2015

@author: Janssen dos Reis Lima
"""
from zabbix_api import ZabbixAPI

zabbix_server = "http://xxx.xxx.xxx.xxx/zabbix" #Endereço ou IP ou FQDN do servidor do Zabbix.
username = "admin" #Informe usuário para acessar. Usuário com perfil de administrador do Zabbix, não necessáriamente o 'admin' padrão.
password = "zabbix" #Senha

#Instanciando a API
conexao = ZabbixAPI(server = zabbix_server, log_level=6)
conexao.login(username, password)

Obs. 1: Essa é a vantagem do uso da API, pois não precisamos fazer scripts mirabolantes para pegar a informação diretamente na base de dados (o que também não é muito seguro  :-X).
Obs. 2: Experimente retirar o parâmetro log_level=6, removendo também a ',' antes do mesmo. O retorno será apenas dos valores que serão consultados, e não no formato JSON.

Agora vamos incrementar o código para  uma consulta simples da versão da API do Zabbix. Copie o código abaixo e salve como consulta_api_zabbix.py (use o nome que quiser  ;))

versao = conexao.api_version()
print "Versão do Zabbix Server: ", versao

Para finalizar, vou demonstrar como pegar a lista dos hosts cadastrados no Zabbix informando a disponibilidade do Zabbix Agent, o ID do host e seu nome. Adicione o seguinte código ao arquivo criado:

hosts = conexao.host.get({"output": "extend", "sortfield": "name"})
for x in hosts:
    print x['available'], "-", x['hostid'], "-", x['name']

Para executar o script executa no Shell do Linux:

python consulta_api_zabbix.py

O Resultado da execução do script será o seguinte:

Versão do Zabbix Server:  2.4.1
0 - 10112 - JBoss
1 - 10105 - AmaxonEC2
0 - 10113 - Tomcat
2 - 10108 - Windows
1 - 10084 - Zabbix server

É isso aí galerinha do Zabbix. Aproveitem a imaginação para que possam tirar todo o proveito que a API do Zabbix disponibiliza. Na próxima semana vou mostrar para vocês como damos um ACK em um evento do Zabbix através do uso da API.

Share this:

,

COMENTÁRIOS

7 comentários:

  1. Janssen, estou com problemas para instalar o pacote "zabbix-api" usando o pip. O comando retorna um erro que copio abaixo.

    "Cannot fetch index base URL https://pypi.python.org/pypi/
    Could not find any downloads that satisfy the requirement zabbix-api
    Cleaning up...
    No distributions at all found for zabbix-api"

    Já viu algo parecido?

    ResponderExcluir
    Respostas
    1. Qual distribuição e versão do Python instaladas?

      Excluir
  2. Janssen, existe alguma diferença na programação para a versão 3 do Zabbix ?
    Fiz o teste como no tutorial e apareceu algumas mensagens de json.

    ResponderExcluir
    Respostas
    1. Em geral não. Alguns métodos que foram adicionados. Mostra as mensagens que retornaram.

      Excluir
    2. Vi aqui que é por causa do log_level, qual o caminho do arquivo para fazer a alteração que vc propõe ?

      Excluir
  3. Estou com o seguinte erro ao instalar api do zabbix:

    [root@ap-zabbix-des tmp]# pip install zabbix-api
    Collecting zabbix-api
    Could not fetch URL https://pypi.python.org/simple/zabbix-api/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:765) - skipping
    Could not find a version that satisfies the requirement zabbix-api (from versions: )
    No matching distribution found for zabbix-api

    Versão do python:

    [root@ap-zabbix-des tmp]# python --version
    Python 2.7.5

    Versão do zabbix:

    [root@ap-zabbix-des tmp]# zabbix_server --version
    zabbix_server (Zabbix) 3.2.1
    Revision 62890 30 September 2016, compilation time: Oct 3 2016 04:57:19

    Copyright (C) 2016 Zabbix SIA
    License GPLv2+: GNU GPL version 2 or later .
    This is free software: you are free to change and redistribute it according to
    the license. There is NO WARRANTY, to the extent permitted by law.

    ResponderExcluir
  4. Janssen, esse erro parece que é corriqueiro né,

    Cannot fetch index base URL https://pypi.python.org/simple/
    Could not find any downloads that satisfy the requirement zabbix-api
    Cleaning up...
    No distributions at all found for zabbix-api
    Storing debug log for failure in /root/.pip/pip.log

    dados: pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

    ResponderExcluir