Monitorando o Home Office

Depois de um ano trabalhando de casa e aproveitando o último fim de semana prolongado, resolvi monitorar a conectividade do home office.

Temos muitas opções disponíveis (MUITAS) para esse tipo de monitoramento, mas como o objetivo era usar um Raspberry Pi, um dos requisitos era que os softwares fossem leves. Além disso as métricas seriam baseadas em ICMP e DNS (posteriormente acabei adicionando verificação HTTP e dados sobre o WiFi, pois o Telegraf tinha esses plugins prontos) então não tinha porque usar soluções mais elaboradas/pesadas.

Com isso em mente, escolhi o combo Telegraf (para coletar as métricas), Prometheus (banco de dados) e Grafana (dashboard com os gráficos).

Instalando as aplicações

Vou descrever de forma geral pois a) muda a sintaxe de acordo com a distribuição Linux b) é possível encontrar tutoriais detalhados para cada aplicação. Espero que sirva de roteiro, ao menos.

Estou usando Raspberry Pi OS, que é baseado no Debian, mas funciona em outras plataformar (a primeira versão montei em uma máquina virtual com CentOs).

1) Instale o Telegraf.

sudo apt-get update && sudo apt-get install apt-transport-https
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -source /etc/os-release
test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install telegraf
sudo systemctl start telegraf

2) Instale o Prometheus (baixe a versão adequada para seu sistema, e opcionalmente mude o nome do diretório).

sudo wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-arm64.tar.gz
tar xvfz prometheus-2.26.0.linux-arm64.tar.gz
cd prometheus-*

Pode transformar o Prometheus em serviço (recomendado), ou executar com o comando  ./prometheus.

3) Temos opção de instalar o Grafana localmente ou usar o Grafana Cloud (preferi usar na nuvem). Se for usar local, instale a aplicação.

apt install gnupg2 apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list
apt update
apt install grafana
systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server

4) Libere o Prometheus e o Grafana no firewall, caso esteja usando. O Grafana usa a porta 3000 e o Prometheus a porta 9090.

sudo ufw allow ssh
sudo ufw allow 3000/tcp
sudo ufw allow 9090/tcp

Configurando Telegraf

O Telegraf funciona baseado em plugins de input e output. Para input (coleta dos dados) usei os plugins Ping, DNS, HTTP e Wireless (não funciona no CentOS). Para output o plugin Prometheus (para onde os dados serão enviados).

As configurações são feitas no arquivo telegraf.conf.

## Input plugins
#Ping plugin
[[inputs.ping]]
urls = ["192.168.15.1", "1.1.1.1", "8.8.8.8", "208.67.222.222", "201.10.207.83", "186.230.16.42", "189.86.140.98", "google.com", "twitter.com", "amazon.in", "facebook.com"]
count = 4
ping_interval = 5.0
timeout = 2.0

#DNS plugin
[[inputs.dns_query]]
servers = ["208.67.222.222"]
domains = ["www.uol.com.br", "google.com", "twitter.com", "amazon.in", "facebook.com"]

#HTTP request
[[inputs.http_response]]
urls = ["https://site.desk.ms/?Login","https://cisco.com","https://outlook.live.com/owa/","https://site.pipedrive.com/auth/login?return"]
response_timeout = "3s"
method = "GET"
follow_redirects = true
insecure_skip_verify = false

#Wifi signal
[[inputs.wireless]]
## Sets 'proc' directory path
## If not specified, then default is /proc
## host_proc = "/proc"

## Output format plugins
#Prometheus
[[outputs.prometheus_client]]
listen = ":9283"
metric_version = 2

Depois de configurar reinicie o telegraf (service telegraf restart) e verifique o status.

pi@raspy:/etc/telegraf $ service telegraf status
* telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-04-07 17:03:34 -03; 29min ago
Docs: https://github.com/influxdata/telegraf
Main PID: 9375 (telegraf)
Tasks: 35 (limit: 4915)
CGroup: /system.slice/telegraf.service
|- 9375 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Configurando o Prometheus

A configuração do Prometheus é feita no arquivo prometheus.yml. Basicamente definimos o tempos de consulta, criamos um job e target para o telegraf (porta 9283) e definimos o Grafana Cloud como destino (para Grafana local não é necessário nenhuma configuração).

# my global config
global:
scrape_interval: 30s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 30s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
- job_name: 'ispmonitor'

# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.

static_configs:
- targets: ['localhost:9090']
- targets: ['localhost:9283'] #telegraf

# Send metrics to Grafana Cloud
remote_write:
- url: https://prometheus-blocks-prod-us-central1.grafana.net/api/prom/push
basic_auth:
username: 11111
password: eyJrIjoiN2E2NWNiZTY1ZTZjMjg5MTVjZGI4NWEyNjZlNSIsxxxxxxxxxaWQiOjQ30NX0=

Se não tiver convertido o Prometheus em serviço, pode usar o netstat e o ps para verificar o status (e ./prometheus para iniciar o serviço).

pi@raspy:/etc/telegraf $ netstat -an | grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN

pi@raspy:/etc/telegraf $ ps -ef | grep prometheus
root      3418     1  0 Apr05 ?        00:00:00 sudo ./prometheus
root      3419  3418  4 Apr05 ?        01:39:13 ./prometheus
pi        4934  2405  0 11:49 pts/1    00:00:00 grep --color=auto prometheus

Neste ponto podemos acessar a interface gráfica do Prometheus (http://ip:9090) e ver os dados sendo populados. Procure por ping ou dns para ver as opções, selecione uma e clique em Execute.

Prometheus

Se não aparecer nada, verifique se os serviços estão rodando, se as portas (9283 e 9090) estão abertas (listen) e se o Telegraf está fazendo os pings.

Configurando o Grafana

No caso de instalação local, acesse a interface gráfica (http://ip:3000) e adicione o Prometheus como Data Source. Aponte o IP e porta do Prometheus, use Access = Server e HTTP Method = Get.

Grafana e Prometheus

Caso esteja usando o Grafana Cloud, acesse a sua conta e gere um token para o Prometheus (necessário adicionar o remote_write na config do Prometheus).

Grafama Cloud Token

E então faça a integração.

Grafana Cloud e Prometheus

Dashboard no Grafana

Finalmente a parte legal. Cada um pode montar sua dashboard da forma que preferir.

A minha ficou dividida em 5 blocos, onde:

  • Web Apps: Tenho a verficação HTTP (GET) de 4 URLs.
  • WiFi: Mostra a potência e qualidade do sinal do Raspberry Pi para meu roteador.
  • Availability: Monitora a disponibilidade de alguns serviços populares, usando ICMP.
  • ICMP: Tempo de reposta para serviços populares e links/serviços da empresa que trabalho. Também tem o gráfico de perda de pacotes.
  • DNS Reponse: Gráfico com o tempo de resposta para resolução de nome para algumas URLs populares.

Dashboard Home Office Connectivity

É possível baixar essa (e outras) dashboard do repositório Grafana. Note que após baixar e adicionar ao seu Grafana é necessário editar o data source, apontando para o seu Prometheus.

Referências:

Até a próxima.

Leave a Reply

About Us

Luckily friends do ashamed to do suppose. Tried meant mr smile so. Exquisite behaviour as to middleton perfectly. Chicken no wishing waiting am. Say concerns dwelling graceful.

Services

Most Recent Posts

  • All Post
  • Branding
  • Certificação
  • Cisco
  • Cloud
  • Configuração
  • Configuração Básica
  • Development
  • Geral
  • Informação
  • Leadership
  • Linux
  • Management
  • Microsoft
  • Network
  • Security
  • UC
  • Virtualização
  • Wireless

Company Info

She wholly fat who window extent either formal. Removing welcomed.

Your Business Potential with Our Proven Strategies

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Company

About Us

Contact Us

Products

Services

Blog

Features

Analytics

Engagement

Builder

Publisher

Help

Privacy Policy

Terms

Conditions

Product

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
You have been successfully Subscribed! Ops! Something went wrong, please try again.
© 2023 Created with Royal Elementor Addons