Demonstrar que com os recursos nativos da ferramenta, atrelados à desenvolvedores integrados com a equipe de operações (DevOps) é possível monitorar aplicações web modernas, que utilizam recursos como APIs, REST e JSON.
2. Quem sou eu
André (Luis Boni) Déo
Fundador da Comunidade Zabbix Brasil
Co-Autor do Livro de A a Zabbix
Administrador de Redes, Professor Universitário, Membro da Comunidade OpenSource.
@deoandre andredeo@gmail.com
http://andredeo.blogspot.com
3. Quem é ele
Thales Reis
Graduando em Ciência da Computação
8 anos como desenvolvedor de software com foco em rotinas de ERP
Entusiasta da filosofia OpenSource
“Linguagens de programação são ferramentas, o importante é resolver o problema do cliente”
@reisthales thales.areis@gmail.com
http://thalesreis.com
5. URL, URN e URI
URL – Uniform Resource Locator
Em português: Localizador de Recursos Universal, e como o próprio nome diz, se refere ao
local, o Host que você quer acessar determinado recurso.
https://conference.zabbix.com.br/programacao/
6. URL, URN e URI
URN – Uniform Resource Name
Em português: Nome de Recursos Universal é o nome do recurso que será acessado e
também fará parte da URI.
É comum associarmos URN a página que estamos acessando, por exemplo home.html.
https://conference.zabbix.com.br/programacao/
7. URL, URN e URI
URI – Uniform Resource Identifier
Em português: Identificador de Recursos Universal, como diz o próprio nome, é o
identificador do recurso.
Pode ser uma imagem, uma página, etc, pois tudo o que está disponível na internet precisa
de um identificador único para que não seja confundido.
A URI une o Protocolo (https://) a localização do recurso (URL) e o nome do recurso (URN -
/minha-pagina/) para que você acesse as coisas na Web.
https://conference.zabbix.com.br/programacao/
8. Métodos HTTP
GET*
Essa é a requisição mais comum de todas. Através dessa requisição nós pedimos a
representação de um recurso: que pode ser um arquivo html, xml, json, etc.
9. Métodos HTTP
Um exemplo de requisição GET seria:
$ curl --location --request GET
"http://localhost:8080/api/zabbix/"
[{"id":1,"title":"O Conde de Monte
Cristo","author":"Alexandre
Dumas","pages":1664},{"id":2,"title":"Os
Miseráveis","author":"Victor
Hugo","pages":1511},{"id":3,"title":"Dom
Quixote","author":"Miguel de Cervantes","pages":1248}]
10. Métodos HTTP
POST*
O método POST é utilizado quando queremos criar um recurso. Quando usamos POST, os
dados vão no corpo da requisição e não na URI.
11. Métodos HTTP
Um exemplo de requisição POST seria:
$ curl --location --request POST
"http://localhost:8080/api/zabbix/"
> --header "Content-Type: application/json"
> --data "{"id": 4,"title": "Redes de
Computadores","author": "Andrew S. Tanenbaum, David
Wetherall","pages": 600}"
{"id":4,"title":"Redes de Computadores","author":"Andrew S.
Tanenbaum, David Wetherall","pages":600}
12. Métodos HTTP
PUT*
Requisita que um recurso seja "guardado" na URI fornecida. Se o recurso já existir, ele deve
ser atualizado. Se não existir, pode ser criado.
13. Métodos HTTP
Um exemplo de requisição PUT seria:
$ curl --location --request PUT
"http://localhost:8080/api/zabbix/"
> --header "Content-Type: application/json"
> --data "{"id": 2,"title": "De A a
Zabbix","author": "Déo, André Luis Boni; Horst, Adail
Spínola; Pires, Aécio Dos Santos","pages": 416}"
{"id":2,"changed":true,"book":{"id":2,"title":"De A A
Zabbix","author":"Déo, André Luis Boni; Horst, Adail Spínola;
Pires, Aécio Dos Santos","pages":416}}
14. Métodos HTTP
HEAD*
Retorna somente os cabeçalhos de uma resposta.
Um exemplo de requisição HEAD seria:
$ curl -I "http://localhost:8080/api/zabbix/"
HTTP/1.1 200 OK
Date: Thu, 25 Apr 2019 04:54:12 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel – Sim estamos usando ASP.NET!!!
15. Métodos HTTP
DELETE
Exclui o recurso especificado.
Um exemplo de requisição DELETE seria:
$ curl --location --request DELETE
"http://localhost:8080/api/zabbix/4" --data ""
{"id":4,"deleted":true}
16. Métodos HTTP
TRACE
Devolve a mesma requisição que for enviada, verifica se houve mudança e/ou adições feitas
por servidores intermediários.
19. Métodos HTTP
CONNECT
Converte a requisição de conexão para um túnel TCP/IP transparente, geralmente para
facilitar a comunicação criptografada com SSL (HTTPS) através de um proxy HTTP não
criptografado.
22. Mercado Atual
API - Application Programming Interface
Conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas
funcionalidades por aplicativos que não pretendem envolver-se em detalhes da
implementação do software, mas apenas usar seus serviços.
De modo geral, a API é composta por uma série de funções acessíveis somente por
programação, e que permitem utilizar características do software menos evidentes ao
utilizador tradicional.
23. Mercado Atual
REST - Representational State Transfer
É um estilo de arquitetura que define um conjunto de restrições e propriedades baseados em
HTTP.
Web Services que obedecem ao estilo arquitetural REST, ou web services RESTful, fornecem
interoperabilidade entre sistemas de computadores na Internet.
Em um web service RESTful, requisições feitas a um URI de recurso extrairá uma resposta
que pode estar em XML, HTML, JSON ou algum outro formato.
24. Mercado Atual
JSON - JavaScript Object Notation
Formato compacto, de padrão aberto independente, de troca de dados simples e rápida
(parsing) entre sistemas, que utiliza texto legível a humanos, no formato atributo-valor
(natureza auto-descritiva).
Isto é, um modelo de transmissão de informações no formato texto, muito usado em web
services que usa transferência de estado representacional (REST) e aplicações AJAX,
substituindo o uso do XML.
25. JSON
JSON - JavaScript Object Notation
Basicamente são duas estruturas:
Uma coleção de chave/valor
Uma lista ordenada de valores (array), separados por “,”
38. Zabbix 4.2 – JSON Nativo
Requisitar corpo (Request Body Type)
Dados JSON - Corpo da solicitação HTTP no formato JSON.
As macros podem ser usadas como string, number, true e false; As macros usadas como
strings devem ser colocadas entre aspas duplas.
Valores de macros são resolvidos e, em seguida, escapados automaticamente.
Se "Content-Type" não for especificado nos cabeçalhos, então será padronizado como
"Content-Type: application / json"
39. Zabbix 4.2 – JSON Nativo
Converter para JSON
Os cabeçalhos são salvos como pares de atributo e valor sob a chave "header".
Se 'Content-Type: application / json' for encontrado, o corpo será salvo como um objeto,
caso contrário, será armazenado como string, por exemplo:
{
“header”: {
“<key>”: “<value>”,
“<key2>”: “<value>”
},
“body”: <body>
}