SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES

CREATE AN ACCOUNT FORGOT YOUR PASSWORD?

FORGOT YOUR DETAILS?

AAH, WAIT, I REMEMBER NOW!

CREATE ACCOUNT

ALREADY HAVE AN ACCOUNT?

Brainwork

  • LOGIN
  • BLOG
  • CONTATO
 16/04/2021

Monitorando o Home Office

Monitorando o Home Office

by André Ortega / quinta-feira, 08 abril 2021 / Published in Configuração, Dicas, Uteis

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:

  • Telegraf
  • Prometheus
  • Grafana

Até a próxima.

  • Tweet
Tagged under: CiscoChampion, Grafana, HomeOffice, Monitoração, Prometheus, Telegraf

About André Ortega

Formando em Processamento de Dados e Ciência da Computação. Especialista Cisco (CCNP Enterprise e CCNP Security). Quinze anos de experiência na área.

What you can read next

Updrade cEdge (SD-WAN)
Como filtrar usuários no CUCM: LDAP Custom Filters
Acessando o ASA através da VPN

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Tags

Vulnerabilidades policy-map CiscoChampion Configuração Login class-map Cisco Firewall Certification Vulnerabilidade Brainwork Backup evento IPS Anyconnect Roteador LAB Acesso Meraki PING VMware Catalyst EEM autenticação ASA CCIE FMC Segurança Access-point Access-list aniversário FTD WIFI Remote Access Wireless ACL PIX DNS licença DHCP senha ISE Nexus FirePower Windows WLC SDWAN switch Switches IOS VoIP IPv6 VPN certificação QoS Upgrade Script WLAN Controller CCNA IPSec

Arquivo

Login

  • Cadastre-se
  • Acessar
  • Feed de posts
  • Feed de comentários
  • WordPress.org

Acesse Também

  • Blog LabCisco
  • Café com Redes
  • Cisco IOS hints and tricks
  • Cisco Redes
  • Cisco Support Community
  • Coruja de TI
  • Estude CCNA
  • Homelaber Brasil
  • Internetwork Expert´s
  • Netfinders Brasil
  • Rota Default
  • TechRebels
  • The Cisco Learning Network

Comentários

  • André Ortega em Script Python para backup e configuração de switches e roteadores
  • Alessandro Lopes em Script Python para backup e configuração de switches e roteadores
  • Lucas Melo em Tipos de LSAs e áreas OSPF
  • André Ortega em Configurando MPLS L3VPN (OSPF + LDP + VRF + BGP)
  • Bruno Leal em Configurando MPLS L3VPN (OSPF + LDP + VRF + BGP)

Tweets

Blog: Instalando FTD no Firepower 4100 #4100 #CISCOCHAMPION #FIREPOWER #FIREWALL #FTD brainwork.com.br/2018/12/05/i…

Cerca 2 dias atrás from Brainwork's Twitter via Twitter Lite

Alo blogueiros brasileiros, bora virar Cisco Champion!! @BlogCiscoRedes @netfinders @RotaDefault @estudeccna twitter.com/CiscoChampion/…

Mês passado from Brainwork's Twitter via Twitter Lite

Blog: Cisco Champion 2019 brainwork.com.br/2018/11/07/c… #Cisco_Champion

Cerca de um mês atrás from Brainwork's Twitter via brainworkblog

Atenção blogueiros brasileiros, estão abertas as inscrições para ser Cisco Champion 2019. twitter.com/CiscoChampion/…

Cerca de um mês atrás from Brainwork's Twitter via Twitter for Android

It is here!! Thank you so much @hfpreston #DevNet #CiscoChampion pic.twitter.com/6BVKRWz2vC

Cerca 2 meses atraz from Brainwork's Twitter via Twitter for Android

Seguir @brainworkblog

Facebook

  • GET SOCIAL
Brainwork

© 2017 Brainwork. Todos os direitos reservados.
Customização e hospedagem da página por Brainwork.

TOP