Consultando API BGP View através do Zabbix HTTP Agent e Proxy

Matheus Andrade
Zabbix Brasil
Published in
4 min readMay 19, 2021

Fala pessoal, tudo beleza? Hoje vamos falar de HTTP Agent e Proxy no zabbix.
Em grande empresas por questões de seguranças para evitar ataques DDOS entre outros motivos os servidores do Zabbix acabam sendo restritos a conexão com a internet, por conter varias informações de toda topologia de uma rede e também por ser um ferramenta essencial para ter um monitoramento de toda a rede.
Quando você se depara com uma situação semelhante a essa e muitas das vezes precisa trabalhar para obter alguma informação através de API consultando na internet, como faria ?
A função Type: HTTP Agent e HTTP Proxy, veio para resolver esse tipo de “problema”.
Na verdade o type: HTTP Agent serve para você monitorar diversos cenários via HTTP, mas vou citar um exemplo bem simples e auto-explicativa abaixo onde iremos fazer uma consulta via API no Bgp View, trazendo informação do ASN que fecham peer com um roteador de borda (BGP).
O agente HTTP oferece suporte a HTTP e HTTPS.

Para realizar uma consulta via api HTTP ou HTTPS no exemplo que vamos usar, iremos consultar através do link https://api.bgpview.io/asn/AS6507, a baixo teremos o resultado dessa requisição em formato json :

{
“Status”: ”ok”,
“status_message”: ”Consulta bem-sucedida”,
“dados”: {
“asn”: 6507,
“nome”: ”RIOT-NA1",
“description_short”: ”Riot Games, Inc” ,
“Description_full”: [
“Riot Games, Inc”
],
“country_code”: ”US”,
“website”: ”http: \ / \ / www.riotgames.com ”,
“email_contacts”: [
noc @ riotgames. com ",
abuse-report@riotgames.com ”,
peering@riotgames.com
],
“ abuse_contacts ”: [
abuse-report@riotgames.com
],
“ looking_glass ”: null,
“Traffic_estimation”: ”500–1000Gbps”,
“traffic_ratio”: ”Principalmente de saída”,
“owner_address”: [
“12333 West Olympic Blvd”,
“Los Angeles”,
“CA”,
“90025”,
“US”
],
“ rir_allocation ”: {
“ rir_name ”:” ARIN ”,
“ country_code ”:” US ”,
“ date_allocated ”:” 2012–11–27 00:00:00 ",
“ alocação_status ”:” atribuído ”
},
“ iana_assignment ”: {
“Atribuição_status”: ”atribuído”,
“descrição”: ”Atribuído por ARIN”,
“whois_server”: ”whois.arin.net”,
“data_atribuída”: nulo
},
“data_atualizada”: ”2021–05–03 08: 15:23 "
},
@meta ”: {
“ fuso horário ”:” UTC ”,
“Versão_api”: 1, “tempo_de_execução”:
”24,85 ms”
}
}
….

Agora que validamos o resultado que estamos recebendo vamos criar um item no Zabbix, para isso iremos seguir os seguintes passos:

> Vá para: Configuração → Hosts
> Clique em Discovery Rules
> Clique em Create Discovery Rule
> Insira os parâmetros no formulário

Na imagem acima adicionamos uma descoberta via snmp dos números dos ASN, onde o resultado será armazenado na variável {#ASNUM}.

Feito isso vamos seguir os seguintes passos;

> Clique em Item prototype
> Clique em Creat Item prototype
> Insira os parâmetros do item no formulário

No campo URL, vamos inserir a API que iremos realizar a consulta em seguida da vamos adicionar ao final da url a variável {#ASNUM} que será substituídas por todos ASN que existem no roteador de borda(BGP).
Em seguida você ira preencher o endereço do HTTP proxy que tem a conexão com a internet que recebera a requisição do zabbix server.

Feito isso precisamos alterar o Type Information para Text pois os valores que estamos recebendo são textos em JSON.

Agora que temos nosso formulário preenchido vamos criar um Preprocessing JSONPath, onde iremos passar o parâmetro para coletar somente a tag “name” que se encontra dentro do “data”.

Para isso vamos adicionar $.data.[“name”] ..

(Para saber mais sobre JSONPath acesse o link da documentação oficial do zabbix https://www.zabbix.com/documentation/4.0/manual/appendix/items/jsonpath).
Agora já podemos salvar nosso item prototype e realizar nossas coletas, depois disso iremos em Monitoring no canto esquerdo do navegador, e iremos conferir o resultado no Latest data…

Pronto temos nosso resultado da consulta via api HTTP.

Espero que tenham gostado do conteúdo, qualquer duvida fique a vontade para me mandar um email admin@andradesolutions.com.br

--

--