Coletando dados utilizando a API do Zabbix com PHP e JSON

Documentos relacionados
Desenvolvimento Web II

Integração REST Text2Speech Versão 1.1

API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

MANUAL DE INTEGRAÇÃO API DE PAGAMENTOS PRIXPAY v.003

Tutorial - WP-API Tainacan

API olx.com.br. Utilizando o protocolo OAuth 2.0

API. Lista de métodos da API do Funil de Vendas. Criação de Atividade. POST /v2/activities. Authorization: Basic { ACTIVITY } Exemplo:

Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP.

Manual de implementação da API SISeCommerce V Manual de implementação da API SISeCommerce V /21

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Manual Direct100 API V2 RICCARDO BARANA

PHP (PHP Hypertext Preprocessor)

API icontrato. Versão 1.0. Para ajuda e informações, abra um chamado pelo

API - Webservices. Grupo Cortez de Lima

Introdução. Documento revisão 2.1

Programação para Internet

Autoria Web. Formulários Aula 5. Cleverton Hentz

API Documentation. Release Igor Morse

globo.com Gerenciamento de Senhas

Programação para Internet

Desenvolvimento Web II

Integração Fidelimax. Versão Atual

Paradigmas de Programação React Native

Zabbix 3 Instalação INSTALAÇÃO

Admin Docs Documentation

PUSH WEB SERVER HTTP GATEWAY. Versão 1.0

Manual de uso da API de Avaliação e Acompanhamento. servicos.gov.br

Desenvolvimento Web II

Manual de Integração DOCUMENTAÇÃO TÉCNICA. Especificação para integração via API, Webservices e SMPP.

API - Lista de Compras

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

TRATAMENTO DE EXCEÇÕES

Integração HTTP REST. Versão 2.0

4. Constantes. Constantes pré-definidas

SQL/HTML Injection e Criptografia Professor Fábio Luís da Silva Santos

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017

Exercício Programa Mini Web Server

EA975 - Laboratório de Engenharia de Software

Redes de Computadores

Telefone IP TIP 235G/ TIP 435G/ TIP 638V

Professor Jefferson Chaves Jefferson de Oliveira Chaves

CONTEÚDO PROGRAMÁTICO

1. Sintaxe Básica O interpretador reconhece automaticamente scripts php delimitados da seguinte maneira: <? // código em php?> OU <?

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22

1 handshake 2 consulta 3 alterausuario

BAND PAULISTA. Guia de Utilização do Sistema de Envio de Arquivos. Data: 18/09/2018 S.E.A v2.2 Autor: Tecnologia da Informação

Manual de Integração SMS

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Histórico de Revisões

AJAX. Prof. Marcos Alexandruk

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Estácio-FIC Graduação em Redes de Computadores

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A BIS. Versão 1.0

Transferência de Arquivo: Protocolo FTP

Tratando exceções em Java

A função get_class() retorna uma string contendo o nome da classe do objeto passado como parâmetro:

Instrumentação do NEON via WebSocket Especificação dos serviços de instrumentação do NEON através de conexões WebSocket.

Conexão com Banco de Dados, Inserção, exclusão e atualização de registros

Como usar as funções de SuperBINA2 Server

TRABALHO FINAL 20 Pontos

Verifique a Conectividade do servidor Radius com comando dos radius AAA do teste

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Linguagem de Programação III - PHP

API PAGAMENTOS. Todas requisições devem ser feitas para o endpoint

Desenvolvimento de Aplicações para Internet Aula 6

Este documento descreve como configurar a autenticação da Web a fim trabalhar com uma instalação do proxy.

Release Notes. A seguir são apresentadas as funções implementadas na linha de produto Microsiga Protheus expedidas neste pacote de atualização.

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner

MANUAL DE INTEGRAÇÃO. Plataforma Simplus

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Criando Relatórios com PHP Pablo Dall Oglio

Fintecc SDK Documentation

Programação para Internet

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

PHP e MySQL Autenticação de Usuários

Instalacao do Zabbix 2.x em Ambiente CentOS

Sumário. Rua República Argentina, 176 Blumenau Santa Catarina Brasil

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Tratamento de Exceções. Julio Cesar Nardi

C A P I T U L O 4 F O R M U L Á R I O S E V A R I Á V E I S P R É D E F I N I D A S $ _ P O S T E $ _ G E T

Informática Parte 23 Prof. Márcio Hunecke

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior

Programação para Internet

Administração de sistemas Linux. Estrutura de diretórios Linux O diretório /etc

REST RESTfulWeb Services JAX-RS

Linguagem Algorítmica OO. Linguagem Algorítmica

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Aula 13 Tratamento de Exceções. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

PROGRAMAÇÃO EM AMBIENTE WEB I

Programação Orientada a Objetos II

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Programação para web HTML: Formulários

Transcrição:

Coletando dados utilizando a API do Zabbix com PHP e JSON INTRODUÇÃO: O Zabbix possui uma limitação quanto à montagem de painéis a serem utilizados por pessoas que não estão acostumadas a utilizar a sua interface, como operadores de monitoramento e gerentes. Pensando nisso, comecei a montar painéis de monitoramento utilizando a API do Zabbix com PHP e JSON, como o exemplo abaixo. Neste artigo irei demonstrar como coletar o último valor de um determinado item. UTILIZAÇÃO DA API PARA COLETA DOS DADOS: De acordo com o manual do Zabbix, para pegar a última informação coletada para o item 123456, deveríamos fazer uma chamada JSON para a API, como o exemplo abaixo: { "jsonrpc": "2.0", "method": "history.get", "params": { "output": "extend", // Obrigatório. A saída só pode ser alterada para host e // trigger, para os demais tem que ser 'extend'. "history": 0, // Tipo de valor a ser retornado. O padrão é 3 inteiro. "itemids": "123456", // Itemid do item desejado. "sortfield": "clock", // Campo de ordenação, neste caso a data da coleta. "sortorder": "DESC", // Tipo de ordenação. "limit": 1 // Limite na quantidade dos valores coletados.

, // Campos referentes à autenticação da API "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1 A saída para esta chamada seria algo como: { "jsonrpc": "2.0", "result": [ { "itemid": "123456", "clock": "~~#00f:1351090996~~", "value": "0.0850", "ns": "563157632" ], "id": 1

O exemplo acima não pode ser aplicado diretamente porque a API necessita que a requisição seja feita por POST. Assim, necessitamos de alguma linguagem de programação, como o PHP, que passe o post no formato JSON para fazer a requisição desejada. UTILIZANDO PHP PARA FAZER A REQUISIÇÃO ACIMA. Em primeiro lugar, devemos ter um usuário no Zabbix para ser utilizado pela API. Este usuário deve ter permissão para utilizar o frontend e poderes suficientes para fazer as consultas/alterações desejadas. A seguir, temos o código comentado para fazer a chamada à API do Zabbix, que deverá ser colocado em um arquivo à parte, por exemplo "coleta_ultimo_valor.php". <?php /* Função para executar o JSON no Zabbix Ela espera três parâmetros: $query: Parte do post a ser enviado para o Zabbix que contém os Parâmetros de execução da API. $method: Qual é a requisição que será utilizada. Neste exemplo utilizamos user.login para a autenticaã e history.get para recuperar o valor do item. $auth: Token de autenticação. */ function execjson($query,$method,$auth) { try { // URL do Zabbix Esse campo precisa ser alterado

$url = "http://seu_servidor/zabbix/api_jsonrpc.php"; /* Monta o post para a API do Zabbix Para utilizar o JSON com PHP, substituímos { por array associativo. Este array será posteriormente convertido para o formato JSON por uma função interna do PHP (a partir da versão 5.2). Desta forma não corremos o risco de passar caracteres incorretos durante a utilização do JSON. */ $post = array('jsonrpc' => '2.0', 'method' => $method, 'params' => $query, 'auth' => $auth, 'id' => 1 ); // Utiliza a função json_encode() para converter o post para o padrão JSON. $data = json_encode($post); // Pega o caminho do CURL $curl = exec("which curl"); /* Monta a string para execução do CURL, onde: $curl = caminho do curl; X POST = define o método de requisição a ser passado para o servidor.

Neste caso, o POST H 'Content Type: application/json' = Define o cabeçalho (header) da requisição. Neste caso, estamos informando que o tipo de informação é do tipo JSON. d '$data' = define quais dados serão enviados para a API. $url = Endereço da API do Zabbix. */ $curlstr = "$curl X POST d '$data' H 'Content Type: application/json' '$url'"; // Executa o CURL $execcurl = exec($curlstr); /* Pega a saída da execução do CURL e decodifica de JSON para o padrã do PHP, ex.: JSON: {"jsonrpc":"2.0","result":"5b97745abb3274383719ea854f176b77","id":1 PHP: stdclass Object ( [jsonrpc] => 2.0 [result] => 5b97745abb3274383719ea854f176b77 [id] => 1) */ $curloutput = json_decode($execcurl); // Retorna o resultado do CURL, apresentando apenas o campo 'result'. return $curloutput >result; catch (Exception $e) { echo "Exceção pega: ", $e >getmessage(), "\n";

/* PRINCIPAL */ /* Monta o post com o usuário e senha para autenticação no Zabbix Esses campo precisam ser alterados */ $queryauth = array('user' => 'admin', 'password' => 'ZABBIX' ); /* Executa a Query para efetuar o login no Zabbix o retorno é uma string de 32 caracteres. Padrão para token de autenticação do Zabbix. */ $auth = execjson($queryauth,'user.login',''); // Verifica se a autenticação retornou uma string de 32 caracteres. if (strlen($auth) === 32) { /* Hora local menos 10 minutos no formato EPOCH A utilização de um período de tempo definido melhora o desempenho da busca no banco de dados. */

$horainicial = time() 600; /* Item a ser pesquisado normalmente utilizo get: $_GET["item"] Esse campo precisa ser alterado */ $item = 123456; // Monta o post para a busca de host. $querygethistory = array('output' => 'extend', 'itemids' => $item, 'history' => 0, 'sortfield' => 'clock', 'sortorder' => 'DESC', 'time_from' => $horainicial, 'limit' => 1 ); // Executa a query de busca de host $outputgethistory = execjson($querygethistory,'history.get',$auth); /* Executa uma sequência de comandos para cada item encontrado. No caso, exibe o valor coletado.

Tratamos como array porque o resultado de uma consulta dessas é um array com cada item retornado.*/ foreach($outputgethistory as $history){ echo "<br>valor: $history >value";?> Criado por: Roberto Flavio Rezende