SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Zabbix - Gerenciando
relatórios personalizados
com JasperReports
Através da API do Zabbix
Por Thiago Murilo Diniz (LinkedIn)
fev/2018
1
Índice
● Introdução (slide 3)
● Criando o projeto no Jaspersoft Studio (slide 6)
● Criando o relatório no Jaspersoft Studio (slide 10)
● Scriptlets (slide 27)
● Publicando o relatório no JasperReports Server (slide 44)
● Subreports (slide 63)
● Conclusão (slide 85)
2
Introdução
O presente documento tem como objetivo descrever uma maneira de criar e
gerenciar relatórios personalizados para o Zabbix, acessando as informações
através da API JSON-RPC disponibilizada pelo mesmo.
O Jaspersoft Studio é utilizado para criação dos relatórios. Uma vez prontos, os
relatórios podem ser publicados e gerenciados no JasperReports Server.
3
Versões utilizadas na criação deste documento
Zabbix 3.4
Download: https://www.zabbix.com/download
JasperReports Server 6.4.2
Download: https://community.jaspersoft.com/project/jasperreports-server/releases
Manual de instalação disponível na área de downloads.
Jaspersoft Studio 6.4.3
Download: https://community.jaspersoft.com/project/jaspersoft-studio/releases
4
Importante!
Para que o Jaspersoft Studio e o JasperReports Server possam consumir os
dados do Zabbix através da API JSON-RPC é necessário habilitar o “Web
Service Data Source”:
Download: https://community.jaspersoft.com/project/web-service-data-source/releases
Instalação: https://community.jaspersoft.com/wiki/installing-webservice-datasource
5
Criando o projeto no Jaspersoft Studio
6
7
8
Projeto criado!
9
Criando o relatório no Jaspersoft Studio
10
11
12
Vamos configurar um novo Data Source,
ou seja, a origem dos dados que serão
utilizados no relatório.
13
Web Service Data Source
14
Endereço do Zabbix
15
Requisição JSON que será feita à API
Zabbix.
Uso do método host.get da API Zabbix.
Como solicitar à API Zabbix um token de autenticação via CURL:
curl -i -X POST -H 'Content-type:application/json' -d
'{"jsonrpc":"2.0","method":"user.login","params":{
"user":"Admin","password":"zabbix"},"auth":null,"id":0}'
http://192.168.100.1/api_jsonrpc.php
Uso do método user.login.
16
Clique neste botão para que o
Jaspersoft Studio receba o retorno da
API do Zabbix, permitindo assim o
mapeamento dos campos disponíveis
para uso no relatório.
17
Clique com o botão direito no
nó “result” e o adicione como
root path.
18
Clique com o botão direito nos
nós que deseja utilizar no relatório
e os adicione como campo.
19
Esta tela de mapeamento do
campo aparece quando se clica
em “Add node as field”.
20
21
Arraste para a caixa da direita os
campos que deverão estar
disponíveis para uso no relatório.
22
Relatório criado e com os campos
disponíveis para uso!
23
Adição do título no relatório
24
Arraste um elemento “Static Text”
para a seção “Title” do relatório.
Arraste os campos para a seção “Detail”.
Automaticamente será criado o cabeçalho da
coluna para o respectivo campo.
A seção “Detail” faz o loop nos resultados
retornados pela API do Zabbix, exibindo uma
linha por Host encontrado.
25
Clicando em “Preview” o relatório será
executado e exibido. No caso foram
listados os dois hosts existentes na
minha instalação do Zabbix.
26
Melhorando as coisas...
Durante a configuração do Data Source (slide 16), para fazer a requisição JSON à API do Zabbix, o token
de autenticação foi adquirido utilizando o comando CURL. Mas seria muito chato ter que autenticar
manualmente na API do Zabbix toda vez que for executar o relatório.
Para resolver esta questão e fazer com que o relatório faça automaticamente o login e o logout na API do
Zabbix foi utilizado o recurso “Scriptlets” do Jaspersoft Studio. Os Scriptlets são basicamente uma
interface entre o relatório e um código Java, provendo muita flexibilidade por permitir o uso de funções
criadas pelo usuário.
Sobre Scriptlets:
https://community.jaspersoft.com/blog/all-you-want-know-about-scriptlets
https://community.jaspersoft.com/blog/scriptlet-example-jaspersoft-6x-begineers-hello-world-sample-example
27
Scriptlets
Criei um código Java para ser utilizado como Scriptlet e que permite fazer login e
logout na API do Zabbix. Tanto o arquivo “.jar” quanto o código fonte estão no
GitHub:
https://github.com/thiagomdiniz/zabbix
28
Vamos adicionar o arquivo “.jar” nas
bibliotecas no projeto.
Clique com o botão direito no projeto -> Build
Path -> Configure Build Path...
29
30
Selecione o arquivo “.jar” disponibilizado no
GitHub.
31
Com a biblioteca configurada, clique com o
botão direito em Scriptlets -> Create Scriptlet.
32
Dê um nome ao Scriptlet e clique neste botão
para selecionarmos a classe Java.
33
34
Com o Scriptlet criado vamos criar um parâmetro que usará o
Scriptlet e armazenará o token de autenticação. Clique com o
botão direito em Parameters -> Create Parameter.
35
Dê um nome ao parâmetro e clique neste
botão para definirmos a expressão de valor
padrão do parâmetro.
36
$P{ZabbixAuth_SCRIPTLET}.getAuthToken("http://192.168.
100.1/api_jsonrpc.php","Admin","zabbix")
Este parâmetro com sufixo “_SCRIPTLET” é criado
automaticamente pelo Jaspersoft Studio quando se cria um
Scriptlet e é utilizado para chamar os métodos da classe
Java. No caso chamamos o método “getAuthToken” e
passamos como parâmetros a URL da API Zabbix, o
usuário e a senha de acesso. Com isso o método retornará
o token de autenticação que ficará armazenado no
parâmetro “$P{auth}” e poderá ser utilizado em outros
locais do relatório.
37
Clique neste botão para editar o DataSet do relatório.
38
Agora, no lugar do token que havíamos colocado na
requisição JSON, vamos colocar o parâmetro “$P{auth}”.
No momento em que o relatório for executado este
parâmetro será substituído pelo token de autenticação
pego através da classe Java (Scriptlet).
39
Mas...
Conforme recomendado na documentação da API Zabbix, também é necessário realizar o logout para
prevenir a geração de um grande número de sessões de usuário abertas.
Mediante esta informação vamos configurar também o logout.
40
Clique neste botão para editarmos a expressão que
executará o logout do token de autenticação.
A seção “Summary” é a última a ser executada no
relatório. Por isso colocaremos a ação de logout nela.
Arraste um campo de texto para a seção “Summary”.
41
$P{ZabbixAuth_SCRIPTLET}.tokenLogout("http://192.168.10
0.1/api_jsonrpc.php",$P{auth})
No caso chamamos o método “tokenLogout” e passamos
como parâmetros a URL da API Zabbix e o parâmetro que
contém o token de autenticação. Com isso o token de
autenticação terá o logout efetuado.
42
Seção “Summary” com a ação de logout configurada.
43
Publicando o relatório no JasperReports Server
No Repository Explorer, clique com o botão direito em
“Servers -> Create JasperReports Server Connection”
para criarmos uma conexão com nosso servidor
JasperReports. Isso permitirá publicarmos o relatório
diretamente do Jaspersoft Studio.
44
Credenciais de acesso ao JasperReports Server.
Endereço do JasperReports Server.
45
Clique com o botão direito na
conexão criada, “New -> Folder” e
crie um diretório de nome “Zabbix”.
Enviaremos nossos relatórios para
esse diretório no JasperReports
Server.
46
Antes de prosseguir é necessário
criar o Data Source também no
JasperReports Server.
Acesse o JasperReports Server,
clique com o botão direito no
diretório Zabbix (criado
anteriormente) -> Adicionar recurso
-> Fonte de dados. 47
Preencha com os mesmos
dados utilizados na criação do
Data Source no Jaspersoft
Studio.
48
49
Agora podemos prosseguir com a
publicação do relatório.
Voltando ao Jaspersoft Studio, clique
neste botão para iniciar o processo de
publicação do relatório no JasperReports
Server.
*caso o botão esteja desabilitado, selecione o projeto do relatório no Project Explorer. 50
Selecione o diretório no qual o relatório
será publicado no JasperReports Server.
51
Vamos selecionar o Data Source criado
no JasperReports Server...
52
53
Após selecionar o Data Source, clique
em Finish para concluir a publicação:
54
Para concluir resta apenas enviar o
arquivo “.jar”, utilizado pelo Scriptlet de
login/logout, como recurso para o
relatório publicado.
Para isso clique com o botão direito no
relatório -> New.
55
56
57
Selecione o arquivo “.jar”.
58
Agora no JasperReports Server podemos
abrir/executar o relatório publicado...
59
...e o relatório será executado!
Assim os relatórios criados ficam acessíveis através de uma
interface web com vários recursos de controle/gerenciamento à
disposição! 60
O JasperReports
Server permite
exportar o relatório
para diversos
formatos.
61
Além disso também é possível
agendar a execução do relatório
(clique com botão direito).
O relatório executado poderá ser
salvo em local determinado ou
até enviado por e-mail.
Sobre envio de relatórios por e-mail:
https://community.jaspersoft.com/wiki/configuring-report-scheduler#Setting_Up_the_Connection_to_your_Outbound_Email_Server
https://community.jaspersoft.com/wiki/how-configure-jasperreports-server-send-e-mails-gmail-mail-account 62
Indo mais além - Subreports
Para aumentar as possibilidades e criar relatórios mais complexos podemos
utilizar subreports (sub-relatórios).
Criamos até aqui um relatório que lista os hosts existentes em nosso Zabbix.
Agora demonstrarei como adicionar um subreport que listará os itens monitorados
para cada host listado no relatório principal.
63
64
Aumente o tamanho da seção
“Detail” e arraste um elemento
“Subreport” para dentro da seção.
65
66
67
Subreport criado!
68
No subreport clique neste botão
para configurarmos o DataSet, pois
a requisição do relatório principal
busca por hosts e a requisição do
subreport buscará por itens.
69
Para a configuração e validação
inicial do DataSet fiz igual ao
processo do slide 16, informando
um token de autenticação e desta
vez informando também o ID do
host “Zabbix server” para consulta
dos itens.
Requisição JSON que será feita à API
Zabbix.
Uso do método item.get da API Zabbix.
70
Aqui é feito o mesmo processo
descrito nos slides 17 ao 21, mas
após escolher os nós a serem
utilizados como campos no
subreport é necessário clicar em
“Read Fields” para mapeamento
dos campos. No meu caso deixei
todos os campos como String.
71
No subreport deixei ativas apenas
as seções “Column Header” e
“Detail” e arrastei os campos para a
seção Detail.
72
Ao clicar em “Preview” o subreport é
executado e deverá listar os itens
monitorados do host informado no
DataSet.
Comunicação entre relatório principal e subreport
Como o subreport foi adicionado na seção “Detail” do relatório principal, ele será
executado no loop para cada host listado.
Agora iremos informar ao subreport o token de autenticação gerado pelo Scriptlet,
para que também possa consumir a API do Zabbix, e o ID do host no qual os
itens deverão ser listados.
73
74
No relatório principal, selecione o
subreport e clique em “Edit
Parameters”.
75
Adicione dois parâmetros: um será o
token de autenticação e o outro será
o campo hostid de cada linha do
relatório principal.
76
Os parâmetros repassados pelo
relatório principal ao subreport
devem existir no subreport para que
possamos utilizá-los.
No subreport, clique com o botão
direito em Parameters -> Create
Parameter.
77
Parâmetros criados no subreport.
78
No Jasper Reports o único tipo de
Data Adapter que permite
compartilhar a conexão de um
relatório principal com outros
subreports é o JDBC. Como no
nosso caso o Data Adapter utilizado
é do tipo Web Service, o subreport
fará uma nova requisição à API do
Zabbix e não terá como reutilizar a
requisição feita no relatório principal
(mais detalhes aqui).
Por isso, para não gerar erros no
relatório com subreport,
exportaremos o Data Adapter criado
(ZabbixAPI) para um arquivo...
79
80
Nas propriedades do subreport
defina como “Default Data Adapter” o
arquivo exportado.
81
Edite o DataSet do subreport e
substitua o host ID e o token de
autenticação pelos parâmetros que
serão repassados pelo relatório
principal.
82
Publique novamente o relatório no
JasperReports Server, mas com
outro nome. O processo será
idêntico à publicação anterior,
porém agora deverão ser exibidos
os arquivos adicionados ao projeto.
(não esqueça de enviar também o
arquivo “.jar”)
83
Dica: caso algum comportamento estranho ou
inesperado ocorra com o relatório, tente fazer o build
do projeto para que os fontes sejam compilados.
84
Host...
Itens do host
(subreport).
Executando o relatório
com subreport no
JasperReports
Server...
Conclusão
A maioria dos casos de uso que encontrei para criação de relatórios do Zabbix com Jasper Reports
consultavam os dados do Zabbix diretamente do banco de dados. A vantagem de consumir os dados
através da API do Zabbix é que se abstrai a modelagem do banco de dados, utilizando o recurso ideal
para integração entre aplicações (API).
O Jasper Reports possui muitos recursos não citados neste documento, como gráficos e autenticação de
usuários em base externa (LDAP)
Espero que o exemplo demonstrado tenha agregado algum conhecimento ao leitor e que possa ser
adaptado para atender possíveis necessidades.
85

Mais conteúdo relacionado

Mais procurados

옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...
옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...
옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...Amazon Web Services Korea
 
Eland: A Python client for data analysis and exploration
Eland: A Python client for data analysis and explorationEland: A Python client for data analysis and exploration
Eland: A Python client for data analysis and explorationElasticsearch
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningGuido Schmutz
 
Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014Toni de la Fuente
 
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDB
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDBHow azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDB
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDBInfluxData
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)YoungHeon (Roy) Kim
 
Data Obfuscation in Splunk Enterprise
Data Obfuscation in Splunk EnterpriseData Obfuscation in Splunk Enterprise
Data Obfuscation in Splunk EnterpriseSplunk
 
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...confluent
 
Data and AI summit: data pipelines observability with open lineage
Data and AI summit: data pipelines observability with open lineageData and AI summit: data pipelines observability with open lineage
Data and AI summit: data pipelines observability with open lineageJulien Le Dem
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015DevOpsDays Tel Aviv
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineInfluxData
 
Data persistency (draco, cygnus, sth comet, quantum leap)
Data persistency (draco, cygnus, sth comet, quantum leap)Data persistency (draco, cygnus, sth comet, quantum leap)
Data persistency (draco, cygnus, sth comet, quantum leap)Fernando Lopez Aguilar
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFSC4Media
 
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPFCilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPFDocker, Inc.
 

Mais procurados (20)

옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...
옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...
옵저버빌러티(Observability) 확보로 서버리스 마이크로서비스 들여다보기 - 김형일 AWS 솔루션즈 아키텍트 :: AWS Summi...
 
Eland: A Python client for data analysis and exploration
Eland: A Python client for data analysis and explorationEland: A Python client for data analysis and exploration
Eland: A Python client for data analysis and exploration
 
Logstash
LogstashLogstash
Logstash
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
 
Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014Alfresco Security Best Practices 2014
Alfresco Security Best Practices 2014
 
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDB
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDBHow azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDB
How azeti Monitors PLC and SCADA Systems Using MQTT and InfluxDB
 
Zabbix Performance Tuning
Zabbix Performance TuningZabbix Performance Tuning
Zabbix Performance Tuning
 
Drive into calico architecture
Drive into calico architectureDrive into calico architecture
Drive into calico architecture
 
ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)ProxySQL & PXC(Query routing and Failover Test)
ProxySQL & PXC(Query routing and Failover Test)
 
Data Obfuscation in Splunk Enterprise
Data Obfuscation in Splunk EnterpriseData Obfuscation in Splunk Enterprise
Data Obfuscation in Splunk Enterprise
 
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
KSQL Performance Tuning for Fun and Profit ( Nick Dearden, Confluent) Kafka S...
 
Data and AI summit: data pipelines observability with open lineage
Data and AI summit: data pipelines observability with open lineageData and AI summit: data pipelines observability with open lineage
Data and AI summit: data pipelines observability with open lineage
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
 
Alfresco Certificates
Alfresco Certificates Alfresco Certificates
Alfresco Certificates
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage Engine
 
Data persistency (draco, cygnus, sth comet, quantum leap)
Data persistency (draco, cygnus, sth comet, quantum leap)Data persistency (draco, cygnus, sth comet, quantum leap)
Data persistency (draco, cygnus, sth comet, quantum leap)
 
Data Structures in and on IPFS
Data Structures in and on IPFSData Structures in and on IPFS
Data Structures in and on IPFS
 
Vector database
Vector databaseVector database
Vector database
 
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPFCilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
 

Semelhante a Zabbix - Gerenciando relatórios personalizados com Jasper Reports

JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cactiIsraelCunha
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidAdriano Rocha
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Instalando o Apache no Windows
Instalando o Apache no WindowsInstalando o Apache no Windows
Instalando o Apache no WindowsSilvio Clecio
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processosMauricio Bonetti
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedoresJardel Weyrich
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkJeison Barros
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português BrLuiz Ladeira
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
 

Semelhante a Zabbix - Gerenciando relatórios personalizados com Jasper Reports (20)

JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Manual dsg tools_3.2
Manual dsg tools_3.2Manual dsg tools_3.2
Manual dsg tools_3.2
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento Android
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Getstart
GetstartGetstart
Getstart
 
Tcc anexo i
Tcc   anexo iTcc   anexo i
Tcc anexo i
 
Instalando o Apache no Windows
Instalando o Apache no WindowsInstalando o Apache no Windows
Instalando o Apache no Windows
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processos
 
Grails
GrailsGrails
Grails
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores
 
Relatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunkRelatório analytics de mula tempo de execução usando splunk
Relatório analytics de mula tempo de execução usando splunk
 
Relatório
RelatórioRelatório
Relatório
 
Documentação CakePHP - Português Br
Documentação CakePHP -  Português BrDocumentação CakePHP -  Português Br
Documentação CakePHP - Português Br
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Gsp007
Gsp007Gsp007
Gsp007
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
 
IReport.pdf
IReport.pdfIReport.pdf
IReport.pdf
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 

Mais de Zabbix BR

Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...
Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...
Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...Zabbix BR
 
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix BR
 
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)Zabbix BR
 
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBCZabbix BR
 
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...Zabbix BR
 
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParametersZabbix BR
 
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimentoZabbix BR
 
Abertura 1º Meetup Zabbix Meetup do Recife
Abertura 1º Meetup Zabbix Meetup do RecifeAbertura 1º Meetup Zabbix Meetup do Recife
Abertura 1º Meetup Zabbix Meetup do RecifeZabbix BR
 
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix BR
 
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do Interior
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do InteriorOs Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do Interior
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do InteriorZabbix BR
 
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...Zabbix BR
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorZabbix BR
 
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do Interior
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do InteriorPrimeiros passos com a API do Zabbix - 3º Zabbix Meetup do Interior
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do InteriorZabbix BR
 

Mais de Zabbix BR (20)

Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...
Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...
Mapas e triggers na identificação de problemas - Felipe Belo (Assembleia Legi...
 
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
Zabbix - Sou Dev, o que eu tenho a ver com isso? - André Déo (Comunidade Zabb...
 
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)
Zabbix para IoT - André Déo (Comunidade Zabbix Brasil)
 
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)
Zabbix - Onde buscar conhecimento - André Déo (Comunidade Zabbix Brasil)
 
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
1º Meetup Zabbix Meetup do Recife: Francys Nivea - LLD ODBC
 
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...
1º Meetup Zabbix Meetup do Recife: Djarde Gonçalves - Integrando o Zabbix com...
 
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
1º Meetup Zabbix Meetup do Recife: Matheus Cabral - Monitoramento de Data Cen...
 
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
1º Meetup Zabbix Meetup do Recife: Aécio Pires - Gerenciando Zabbix com o Sal...
 
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...
1º Meetup Zabbix Meetup do Recife: André Marques - Utilizando Telegram para f...
 
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
 
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...
1º Meetup Zabbix Meetup do Recife: Hernandes Martins - Gerando relatórios via...
 
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...
1º Meetup Zabbix Meetup do Recife: Edilmar Junior - Para cima e avante do bás...
 
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParameters
 
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
1º Meetup Zabbix Meetup do Recife - André Déo: Zabbix - Onde buscar conhecimento
 
Abertura 1º Meetup Zabbix Meetup do Recife
Abertura 1º Meetup Zabbix Meetup do RecifeAbertura 1º Meetup Zabbix Meetup do Recife
Abertura 1º Meetup Zabbix Meetup do Recife
 
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
 
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do Interior
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do InteriorOs Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do Interior
Os Desafios do Zabbix com Alta Disponibilidade - 3º Zabbix Meetup do Interior
 
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...
Geração de Relatório Sobre Utilização de Internet com Zabbix - 3º Zabbix Meet...
 
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorDeploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do Interior
 
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do Interior
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do InteriorPrimeiros passos com a API do Zabbix - 3º Zabbix Meetup do Interior
Primeiros passos com a API do Zabbix - 3º Zabbix Meetup do Interior
 

Zabbix - Gerenciando relatórios personalizados com Jasper Reports

  • 1. Zabbix - Gerenciando relatórios personalizados com JasperReports Através da API do Zabbix Por Thiago Murilo Diniz (LinkedIn) fev/2018 1
  • 2. Índice ● Introdução (slide 3) ● Criando o projeto no Jaspersoft Studio (slide 6) ● Criando o relatório no Jaspersoft Studio (slide 10) ● Scriptlets (slide 27) ● Publicando o relatório no JasperReports Server (slide 44) ● Subreports (slide 63) ● Conclusão (slide 85) 2
  • 3. Introdução O presente documento tem como objetivo descrever uma maneira de criar e gerenciar relatórios personalizados para o Zabbix, acessando as informações através da API JSON-RPC disponibilizada pelo mesmo. O Jaspersoft Studio é utilizado para criação dos relatórios. Uma vez prontos, os relatórios podem ser publicados e gerenciados no JasperReports Server. 3
  • 4. Versões utilizadas na criação deste documento Zabbix 3.4 Download: https://www.zabbix.com/download JasperReports Server 6.4.2 Download: https://community.jaspersoft.com/project/jasperreports-server/releases Manual de instalação disponível na área de downloads. Jaspersoft Studio 6.4.3 Download: https://community.jaspersoft.com/project/jaspersoft-studio/releases 4
  • 5. Importante! Para que o Jaspersoft Studio e o JasperReports Server possam consumir os dados do Zabbix através da API JSON-RPC é necessário habilitar o “Web Service Data Source”: Download: https://community.jaspersoft.com/project/web-service-data-source/releases Instalação: https://community.jaspersoft.com/wiki/installing-webservice-datasource 5
  • 6. Criando o projeto no Jaspersoft Studio 6
  • 7. 7
  • 8. 8
  • 10. Criando o relatório no Jaspersoft Studio 10
  • 11. 11
  • 12. 12
  • 13. Vamos configurar um novo Data Source, ou seja, a origem dos dados que serão utilizados no relatório. 13
  • 14. Web Service Data Source 14
  • 16. Requisição JSON que será feita à API Zabbix. Uso do método host.get da API Zabbix. Como solicitar à API Zabbix um token de autenticação via CURL: curl -i -X POST -H 'Content-type:application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{ "user":"Admin","password":"zabbix"},"auth":null,"id":0}' http://192.168.100.1/api_jsonrpc.php Uso do método user.login. 16
  • 17. Clique neste botão para que o Jaspersoft Studio receba o retorno da API do Zabbix, permitindo assim o mapeamento dos campos disponíveis para uso no relatório. 17
  • 18. Clique com o botão direito no nó “result” e o adicione como root path. 18
  • 19. Clique com o botão direito nos nós que deseja utilizar no relatório e os adicione como campo. 19
  • 20. Esta tela de mapeamento do campo aparece quando se clica em “Add node as field”. 20
  • 21. 21
  • 22. Arraste para a caixa da direita os campos que deverão estar disponíveis para uso no relatório. 22
  • 23. Relatório criado e com os campos disponíveis para uso! 23
  • 24. Adição do título no relatório 24 Arraste um elemento “Static Text” para a seção “Title” do relatório.
  • 25. Arraste os campos para a seção “Detail”. Automaticamente será criado o cabeçalho da coluna para o respectivo campo. A seção “Detail” faz o loop nos resultados retornados pela API do Zabbix, exibindo uma linha por Host encontrado. 25
  • 26. Clicando em “Preview” o relatório será executado e exibido. No caso foram listados os dois hosts existentes na minha instalação do Zabbix. 26
  • 27. Melhorando as coisas... Durante a configuração do Data Source (slide 16), para fazer a requisição JSON à API do Zabbix, o token de autenticação foi adquirido utilizando o comando CURL. Mas seria muito chato ter que autenticar manualmente na API do Zabbix toda vez que for executar o relatório. Para resolver esta questão e fazer com que o relatório faça automaticamente o login e o logout na API do Zabbix foi utilizado o recurso “Scriptlets” do Jaspersoft Studio. Os Scriptlets são basicamente uma interface entre o relatório e um código Java, provendo muita flexibilidade por permitir o uso de funções criadas pelo usuário. Sobre Scriptlets: https://community.jaspersoft.com/blog/all-you-want-know-about-scriptlets https://community.jaspersoft.com/blog/scriptlet-example-jaspersoft-6x-begineers-hello-world-sample-example 27
  • 28. Scriptlets Criei um código Java para ser utilizado como Scriptlet e que permite fazer login e logout na API do Zabbix. Tanto o arquivo “.jar” quanto o código fonte estão no GitHub: https://github.com/thiagomdiniz/zabbix 28
  • 29. Vamos adicionar o arquivo “.jar” nas bibliotecas no projeto. Clique com o botão direito no projeto -> Build Path -> Configure Build Path... 29
  • 30. 30
  • 31. Selecione o arquivo “.jar” disponibilizado no GitHub. 31
  • 32. Com a biblioteca configurada, clique com o botão direito em Scriptlets -> Create Scriptlet. 32
  • 33. Dê um nome ao Scriptlet e clique neste botão para selecionarmos a classe Java. 33
  • 34. 34
  • 35. Com o Scriptlet criado vamos criar um parâmetro que usará o Scriptlet e armazenará o token de autenticação. Clique com o botão direito em Parameters -> Create Parameter. 35
  • 36. Dê um nome ao parâmetro e clique neste botão para definirmos a expressão de valor padrão do parâmetro. 36
  • 37. $P{ZabbixAuth_SCRIPTLET}.getAuthToken("http://192.168. 100.1/api_jsonrpc.php","Admin","zabbix") Este parâmetro com sufixo “_SCRIPTLET” é criado automaticamente pelo Jaspersoft Studio quando se cria um Scriptlet e é utilizado para chamar os métodos da classe Java. No caso chamamos o método “getAuthToken” e passamos como parâmetros a URL da API Zabbix, o usuário e a senha de acesso. Com isso o método retornará o token de autenticação que ficará armazenado no parâmetro “$P{auth}” e poderá ser utilizado em outros locais do relatório. 37
  • 38. Clique neste botão para editar o DataSet do relatório. 38
  • 39. Agora, no lugar do token que havíamos colocado na requisição JSON, vamos colocar o parâmetro “$P{auth}”. No momento em que o relatório for executado este parâmetro será substituído pelo token de autenticação pego através da classe Java (Scriptlet). 39
  • 40. Mas... Conforme recomendado na documentação da API Zabbix, também é necessário realizar o logout para prevenir a geração de um grande número de sessões de usuário abertas. Mediante esta informação vamos configurar também o logout. 40
  • 41. Clique neste botão para editarmos a expressão que executará o logout do token de autenticação. A seção “Summary” é a última a ser executada no relatório. Por isso colocaremos a ação de logout nela. Arraste um campo de texto para a seção “Summary”. 41
  • 42. $P{ZabbixAuth_SCRIPTLET}.tokenLogout("http://192.168.10 0.1/api_jsonrpc.php",$P{auth}) No caso chamamos o método “tokenLogout” e passamos como parâmetros a URL da API Zabbix e o parâmetro que contém o token de autenticação. Com isso o token de autenticação terá o logout efetuado. 42
  • 43. Seção “Summary” com a ação de logout configurada. 43
  • 44. Publicando o relatório no JasperReports Server No Repository Explorer, clique com o botão direito em “Servers -> Create JasperReports Server Connection” para criarmos uma conexão com nosso servidor JasperReports. Isso permitirá publicarmos o relatório diretamente do Jaspersoft Studio. 44
  • 45. Credenciais de acesso ao JasperReports Server. Endereço do JasperReports Server. 45
  • 46. Clique com o botão direito na conexão criada, “New -> Folder” e crie um diretório de nome “Zabbix”. Enviaremos nossos relatórios para esse diretório no JasperReports Server. 46
  • 47. Antes de prosseguir é necessário criar o Data Source também no JasperReports Server. Acesse o JasperReports Server, clique com o botão direito no diretório Zabbix (criado anteriormente) -> Adicionar recurso -> Fonte de dados. 47
  • 48. Preencha com os mesmos dados utilizados na criação do Data Source no Jaspersoft Studio. 48
  • 49. 49
  • 50. Agora podemos prosseguir com a publicação do relatório. Voltando ao Jaspersoft Studio, clique neste botão para iniciar o processo de publicação do relatório no JasperReports Server. *caso o botão esteja desabilitado, selecione o projeto do relatório no Project Explorer. 50
  • 51. Selecione o diretório no qual o relatório será publicado no JasperReports Server. 51
  • 52. Vamos selecionar o Data Source criado no JasperReports Server... 52
  • 53. 53
  • 54. Após selecionar o Data Source, clique em Finish para concluir a publicação: 54
  • 55. Para concluir resta apenas enviar o arquivo “.jar”, utilizado pelo Scriptlet de login/logout, como recurso para o relatório publicado. Para isso clique com o botão direito no relatório -> New. 55
  • 56. 56
  • 57. 57
  • 58. Selecione o arquivo “.jar”. 58
  • 59. Agora no JasperReports Server podemos abrir/executar o relatório publicado... 59
  • 60. ...e o relatório será executado! Assim os relatórios criados ficam acessíveis através de uma interface web com vários recursos de controle/gerenciamento à disposição! 60
  • 61. O JasperReports Server permite exportar o relatório para diversos formatos. 61
  • 62. Além disso também é possível agendar a execução do relatório (clique com botão direito). O relatório executado poderá ser salvo em local determinado ou até enviado por e-mail. Sobre envio de relatórios por e-mail: https://community.jaspersoft.com/wiki/configuring-report-scheduler#Setting_Up_the_Connection_to_your_Outbound_Email_Server https://community.jaspersoft.com/wiki/how-configure-jasperreports-server-send-e-mails-gmail-mail-account 62
  • 63. Indo mais além - Subreports Para aumentar as possibilidades e criar relatórios mais complexos podemos utilizar subreports (sub-relatórios). Criamos até aqui um relatório que lista os hosts existentes em nosso Zabbix. Agora demonstrarei como adicionar um subreport que listará os itens monitorados para cada host listado no relatório principal. 63
  • 64. 64 Aumente o tamanho da seção “Detail” e arraste um elemento “Subreport” para dentro da seção.
  • 65. 65
  • 66. 66
  • 68. 68 No subreport clique neste botão para configurarmos o DataSet, pois a requisição do relatório principal busca por hosts e a requisição do subreport buscará por itens.
  • 69. 69 Para a configuração e validação inicial do DataSet fiz igual ao processo do slide 16, informando um token de autenticação e desta vez informando também o ID do host “Zabbix server” para consulta dos itens. Requisição JSON que será feita à API Zabbix. Uso do método item.get da API Zabbix.
  • 70. 70 Aqui é feito o mesmo processo descrito nos slides 17 ao 21, mas após escolher os nós a serem utilizados como campos no subreport é necessário clicar em “Read Fields” para mapeamento dos campos. No meu caso deixei todos os campos como String.
  • 71. 71 No subreport deixei ativas apenas as seções “Column Header” e “Detail” e arrastei os campos para a seção Detail.
  • 72. 72 Ao clicar em “Preview” o subreport é executado e deverá listar os itens monitorados do host informado no DataSet.
  • 73. Comunicação entre relatório principal e subreport Como o subreport foi adicionado na seção “Detail” do relatório principal, ele será executado no loop para cada host listado. Agora iremos informar ao subreport o token de autenticação gerado pelo Scriptlet, para que também possa consumir a API do Zabbix, e o ID do host no qual os itens deverão ser listados. 73
  • 74. 74 No relatório principal, selecione o subreport e clique em “Edit Parameters”.
  • 75. 75 Adicione dois parâmetros: um será o token de autenticação e o outro será o campo hostid de cada linha do relatório principal.
  • 76. 76 Os parâmetros repassados pelo relatório principal ao subreport devem existir no subreport para que possamos utilizá-los. No subreport, clique com o botão direito em Parameters -> Create Parameter.
  • 78. 78 No Jasper Reports o único tipo de Data Adapter que permite compartilhar a conexão de um relatório principal com outros subreports é o JDBC. Como no nosso caso o Data Adapter utilizado é do tipo Web Service, o subreport fará uma nova requisição à API do Zabbix e não terá como reutilizar a requisição feita no relatório principal (mais detalhes aqui). Por isso, para não gerar erros no relatório com subreport, exportaremos o Data Adapter criado (ZabbixAPI) para um arquivo...
  • 79. 79
  • 80. 80 Nas propriedades do subreport defina como “Default Data Adapter” o arquivo exportado.
  • 81. 81 Edite o DataSet do subreport e substitua o host ID e o token de autenticação pelos parâmetros que serão repassados pelo relatório principal.
  • 82. 82 Publique novamente o relatório no JasperReports Server, mas com outro nome. O processo será idêntico à publicação anterior, porém agora deverão ser exibidos os arquivos adicionados ao projeto. (não esqueça de enviar também o arquivo “.jar”)
  • 83. 83 Dica: caso algum comportamento estranho ou inesperado ocorra com o relatório, tente fazer o build do projeto para que os fontes sejam compilados.
  • 84. 84 Host... Itens do host (subreport). Executando o relatório com subreport no JasperReports Server...
  • 85. Conclusão A maioria dos casos de uso que encontrei para criação de relatórios do Zabbix com Jasper Reports consultavam os dados do Zabbix diretamente do banco de dados. A vantagem de consumir os dados através da API do Zabbix é que se abstrai a modelagem do banco de dados, utilizando o recurso ideal para integração entre aplicações (API). O Jasper Reports possui muitos recursos não citados neste documento, como gráficos e autenticação de usuários em base externa (LDAP) Espero que o exemplo demonstrado tenha agregado algum conhecimento ao leitor e que possa ser adaptado para atender possíveis necessidades. 85