Introdução
Prometheus e Grafana são a dupla clássica para observabilidade. O ISP Tools pode ser usado como fonte de dados externa para medir latência, perda de pacotes e estabilidade de rotas a partir de probes distribuídas. Isso permite visualizar como a sua rede se comporta a partir de diversos pontos da internet.
Neste tutorial você vai criar um exporter em Python, configurar o Prometheus para coletar métricas e exibir tudo no Grafana.
Pré requisitos
- Python 3
- Flask
- requests
- Prometheus instalado
- Grafana instalado
- Chave da API do ISP.Tools
Instalando dependências
pip install flask requests
Criando o exporter
Crie um arquivo exporter.py.
from flask import Flask, Response
import requests
app = Flask(__name__)
API_KEY = "SUA_CHAVE_AQUI"
TARGET = "8.8.8.8"
def run_ping():
r = requests.post(
"https://api.isp.tools/v1/ping",
json={"target": TARGET},
headers={"x-rapidapi-key": API_KEY, "x-rapidapi-host": "isp-tools.p.rapidapi.com"}
)
return r.json()
@app.route("/metrics")
def metrics():
data = run_ping()
avg = data.get("avg", 0)
loss = data.get("loss", 0)
text = ""
text += f'isp_ping_latency_ms {{ target="{TARGET}" }} {avg}\n'
text += f'isp_ping_loss_percent {{ target="{TARGET}" }} {loss}\n'
return Response(text, mimetype="text/plain")
if __name__ == "__main__":
app.run(port=9105, host="0.0.0.0")
O exporter faz um ping externo por requisição. Em produção você pode fazer caching, coletar várias métricas de vários hosts e expor tudo no mesmo endpoint.
Iniciando o exporter
Rode.
python exporter.py
Acesse no navegador.
http://localhost:9105/metrics
Você deve ver algo como:
isp_ping_latency_ms { target="8.8.8.8" } 22
isp_ping_loss_percent { target="8.8.8.8" } 0
Configurando o Prometheus
Edite o prometheus.yml.
scrape_configs:
- job_name: isp_tools
static_configs:
- targets:
- "192.168.1.10:9105"
Reinicie o Prometheus.
systemctl restart prometheus
Agora ele coleta métricas automaticamente.
Criando um painel no Grafana
- Acesse o Grafana
- Adicione o Prometheus como datasource
- Crie um painel
- Use a métrica isp_ping_latency_ms
Exemplo de query.
isp_ping_latency_ms
Para perda de pacotes.
isp_ping_loss_percent
Você pode criar alertas como:
- Latência acima de 50 ms
- Perda maior que 2 porcento
- Falha de coleta
Melhorias possíveis
- Rodar múltiplos targets e expor como métricas diferentes
- Executar traceroute externo e expor latência por hop
- Salvar resultados no Prometheus para gerar gráficos de mudança de rota
- Criar dashboards de rotas e estabilidade por ASN
Conclusão
Com poucos passos você integra o ISP.Tools ao Prometheus e ganha visibilidade externa real da sua rede. A combinação com Grafana traz gráficos claros e alertas que ajudam a detectar problemas antes dos usuários.