Você está na página 1de 52

Monitoramento de Aplicações

Web Modernas com Zabbix


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
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
A pergunta que
não quer calar

#tanogithub
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/
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/
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/
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.
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}]
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.
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}
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.
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}}
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!!!
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}
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.
Métodos HTTP

OPTIONS

Retorna os métodos HTTP suportados pelo servidor para a URL especificada.


Métodos HTTP

PATCH

Serve para atualizar partes de um recurso, e não o recurso todo.


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.
Mercado Atual
Mercado Atual
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.
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.
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.
JSON

JSON - JavaScript Object Notation

Basicamente são duas estruturas:


Uma coleção de chave/valor
Uma lista ordenada de valores (array), separados por “,”
JSON

"book":
[
{
"title": "Beginning JSON",
"price": 49.99
},

{
"title": "JSON at Work",
"price": 29.99
}
]
JSON

$.book[0].title
[
"Beginning JSON"
]

$.book[1].price
[
29.99
]
JSON

$.book[:1].title
[
"Beginning JSON",
"JSON at Work"
]

$.book[0:].price
[
49.99,
29.99
]
Zabbix – Monitoramento Web

API está no ar?

Tempo de resposta é aceitável?

Qual o código de retorno?


Zabbix – Monitoramento Web
Zabbix – Monitoramento Web
Zabbix 4.0 – Agente HTTP

Suporta os verbos:
 GET
 POST
 PUT
 HEAD
Agente HTTP – GET
Agente HTTP – POST
Agente HTTP – PUT
Agente HTTP – HEAD
Agente HTTP – Resultados

PUT

POST
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"
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>
}
Item Dependente
Agente HTTP
Item Dependente (Dependent Item)
https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/http

Exemplo 4:
Recuperando informações meteorológicas conectando-se ao serviço público do
Openweathermap.
Item Dependente
Agente HTTP
Item Dependente
Agente HTTP
DevOps

Desenvolvedor já cria a API pensando no MONITORAMENTO


http://thalesreis.com/programacao/net-core-implementando-a-interface-ihealthcheck/
Interface de Checagem
Interface de Checagem
Interface de Checagem
Alertas
Alertas
Documentação
Referências

[1] - http://gabsferreira.com/os-metodos-http-e-a-diferenca-entre-eles/

[2] - https://woliveiras.com.br/posts/url-uri-qual-diferenca/

[3] - http://thalesreis.com/programacao/net-core-implementando-a-interface-ihealthcheck/

[4] -
https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5e
s

[5] - https://pt.wikipedia.org/wiki/REST

[6] - https://pt.wikipedia.org/wiki/JSON
Referências

[7] - http://www.json.org

[8] - https://www.baeldung.com/guide-to-jayway-jsonpath

[9] - https://jsonpath.curiousconcept.com

[10] - https://dotnet.microsoft.com/apps/aspnet

[11] - https://www.restapitutorial.com/lessons/httpmethods.html
Dúvidas ?

Você também pode gostar