Pessoal,
O OpenMediaVault, pelo menos a versão 5, contem uma apresentação das métricas de funcionamento bem simples e feias, pelo menos para o meu gosto.
Para acessá-las, vá em Diagnostics -> System Information -> Performance statistics e escolha a métrica desejada: uso da CPU, dos discos, médias de trabalho, uso da memória e da rede e tempo de funcionamento.
Vejam alguns exemplos:
Não que sejam imprestáveis as métricas, mas eu acho que poderiam ser mais completas e com uma apresentação melhor. O OMV6 parece que terá uma melhora significativa (e necessária) na parte visual. Os betas mostram que será algo como a figura abaixo:
Bem melhor, né? Mas ainda vai demorar um tempo pra versão estável do OMV6 sair. Então, até lá, vamos ter que melhorar isso no OMV5.
Bom, dando uma pesquisada, encontrei uma solução interessante: são 3 conteineres do Docker que juntos coletam dados e produzem uma apresentação das métricas bem configurável e bem apresentável. A sequência é essa aqui:
2 - Instalar o
Prometheus. Ele coleta as métricas de alvos configurados (no caso, pelo Node Exporter) em determinados intervalos e exibe os resultados;
3 - Instalar o
Grafana, que utilizará os dados do Prometheus e produzirá apresentações mais completas e bonitas.
Para realizar estas instalações, segui algumas dicas desse vídeo aqui. Caso precise dele no futuro, vou deixar ele disponibilizado aqui no blog, logo abaixo:
O autor do vídeo também tem um blog onde coloca algumas instruções para a instalação (veja aqui). Tentei fazer como ele orientou, mas tive que dar algumas adaptadas. Diga-se de passagem, os conteúdos dele no YT são muito bons! Vale a pena assistir e seguir o canal dele (aqui).
A primeira coisa a se fazer é criar um arquivo de configuração para o Prometheus (prometheus.yml). Primeira coisa a ser dita: esse arquivo deve estar no disco onde está armazenado o OMV (ou seja, no meu caso, o /sda). Assim, criei o arquivo dentro desta pasta:
# /srv/Configs/Prometheus/prometheus.yml
Para criar o arquivo, criei todo o caminho até o arquivo (/srv/Config/Prometheus) e lá dentro criei um arquivo vazio chamado "prometheus.yml" com o nano:
# /srv/Configs/Prometheus# nano prometheus.yml
Dentro do arquivo coloquei o seguinte texto:
global:
scrape_interval: 5s
external_labels:
monitor: 'node'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.1.3:9090'] ## IP Address do localhost. Direcione a porta para o seu contêiner
- job_name: 'node-exporter'
static_configs:
- targets: ['192.168.1.3:9100'] ## IP Address do localhost
Interessante observar que os alvos (targets) devem ser o IP do seu servidor e você deve certificar-se que as portas escolhidas não estão sendo utilizadas por nenhum contêiner do Docker.
Agora vamos instalar o Prometheus Node Exporter.
Eu até tentei criar um arquivo para o Docker Compose, mas só foi funcionar mesmo com a boa e velha linha de comando:
# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter:latest --path.rootfs=/host
Esta linha é, de um modo mais apresentável, isso aqui embaixo:
docker run -d \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host
Enfim, em poucos segundos ele instala e tudo está pronto. Um detalhe: se você for ao Portainer, verá que surgiu um contêiner com um nome estranho (o meu apareceu "unruffled_boyd", mas logo na frente do nome já aparece o nome da imagem (quay.io/prometheus/node-exporter:latest). Como tenho TOC, parei o contêiner e acrescentei o nome "node_exporter" e mandei funcionar novamente.
Para certificar-se que tudo está certo, ao você ir na página que configurou para o Node Exporter lá no prometheus.yml, você deve encontrar isso aqui:
Ao clicar ali no Metrics, deve aparecer isso aqui:
Se apareceu uma extensa lista de coisas, então você está no caminho certo.
Agora vamos instalar o Prometheus. Pra isso, criei esse arquivo aqui no Docker Compose:
---
version: "2.1"
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- '9090:9090' #modifique as portas caso necessário
volumes:
-'/srv/Configs/Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml' #coloque o caminho da sua instalação
restart: unless-stopped
Bom, se tudo deu certo aí, você conseguirá ver isso aqui acessando o endereço do seu servidor pela porta que configuramos aqui neste contêiner (no meu caso, 9090):
Pronto, essa é a página para configuração do Prometheus. Outra verificação importante é ir em Status -> Service Discovery:
E agora deveremos ver isso aqui:
Ou seja, nossos dois serviços instalados (o Node Exporter e o Prometheus) estão ativos e foram detectados.
Caso você seja masoquista e goste de usar a linha de comandos ao invés do Docker Compose, o comando para instalar o Prometheus é esse aqui (não tem que saltar linha, ok? é apenas a quebra automática do texto):
# docker run -d --name prometheus -p 9090:9090 -v /srv/Configs/Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest
O Prometheus, até onde percebi, não é nada simples para configurar. Para isso, usaremos o Grafana!
O Grafana é bem fácil também de instalar. O você usa a linha de comando com:
# docker run -d --name=grafana -p 3000:3000 grafana/grafana
Ou usa o Docker Compose com:
---
version: "2.1"
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- 3000:3000 #modifique o 'primeiro' 3000 de acordo com sua necessidade
restart: unless-stopped
Vá no endereço do seu servidor e digite a porta que você configurou (no meu caso: 192.168.1.3:3000) e você deverá encontrar isso:
Parabéns! Deu tudo certo!
Para configurar o Grafana, use admin como username e senha (e troque por uma senha forte depois). Na tela principal, clique em "Data Sources" e escolha "Prometheus". Em URL, digite o endereço do Prometheus com a porta escolhida (no meu caso: http://192.168.1.3:9090) e, no final da página, clique em "Save and Test".
Agora vá para
aqui e escolha o dashboard que você quer usar. São milhares de opções, mas lembre-se de usar o filtro: Prometheus em
Data Sources e Node Exporter em
Collector Types. Após escolher o
layout, anote o número que aparece à direita da tela ("G
et This Dashboard"), volte ao Grafana, clique no "+" que está à esquerda da tela ("
Create") e depois em "
Import" e digite o número do dashboard que você escolheu.
Pronto, agora você tem um dashboard apresentável!
Mais um detalhe. Eu tenho 4 servidores rodando: um com Proxmox, um com um Ubuntu Server para diversas coisas (rodando em VM), um com o OMV (rodando também em VM) e o Raspberry Pi. Neste Dashboard, consigo ver as métricas dos 4 ao mesmo tempo. Para isso, faça o seguinte:
1 - instale o Node Exporter em cada um dos servidores usando o mesmo comando já comentado acima:
# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter:latest --path.rootfs=/host
2 - no servidor onde ficará o Prometheus (no meu caso, o 192.168.1.3), naquele arquivo que criamos (prometheus.yml), vamos acrescentar os endereços dos servidores com Node Exporter instalado. Ficará assim:
global:
scrape_interval: 5s
external_labels:
monitor: 'node'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.1.3:9090'] ## IP Address do localhost. Direcione a porta para o seu contêiner
- job_name: 'node-exporter'
static_configs:
- targets: ['192.168.1.3:9100','192.168.1.44:9100','192.18.1.2:9100','192.168.1.22:9100'] ## IP Address do localhost
3 - Reinicie todos os conteineres (Prometheus e Grafana). Talvez seja necessário apagar o Dashboard anterior e refazê-lo (ao refazer, citaremos apenas o ip de onde está instalado o Prometheus, ou seja, 192.168.1.3:9090). Pronto!
Talvez seja necessário instalar o Docker em algum dos seus servidores. Para instalar, siga as instruções do site do Docker.
Depois de tudo pronto, ficou assim:
Pronto!