From 3114e511e1d452225306fcfa798a693a26941b7a Mon Sep 17 00:00:00 2001 From: mvrp21 <mvrp21@inf.ufpr.br> Date: Sat, 27 Apr 2024 22:01:33 -0300 Subject: [PATCH] feat(services): add forsyn zabbix server info Signed-off-by: mvrp21 <mvrp21@inf.ufpr.br> --- .../services/forsyn-monitoramento-zabbix.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 source/pages/services/forsyn-monitoramento-zabbix.md diff --git a/source/pages/services/forsyn-monitoramento-zabbix.md b/source/pages/services/forsyn-monitoramento-zabbix.md new file mode 100644 index 0000000..103b48b --- /dev/null +++ b/source/pages/services/forsyn-monitoramento-zabbix.md @@ -0,0 +1,112 @@ +# forsyn/Monitoramento Zabbix + +A [](/pages/machines/base/forsyn) é a máquina que executa o servidor de +monitoramento Zabbix, responsável por coletar dados importantes das máquinas do +C3SL (tanto físicas quanto virtuais), bem como enviar alertas relacionados a elas. + +## Zabbix Server +Há um servidor rodando nessa máquina, que recebe as informações dos *agents* +executados nas máquinas monitoradas e armazena essa informações em um banco de +dados PostgreSQL local. Há uma interface web para interagir com esse servidor, +sua configuração está no `/etc/nginx/`. + +### Coleta de dados +Zabbix utiliza *agents* que são serviços executados nos hosts **monitorados** +para que eles enviem dados sobre as máquinas, como uso de CPU, memória, espaço +de disco, etc. + +Além disso utilizamos ele também para monitorar aparelhos SNMP, dos quais +destacamos o **gerador** e o **ar condicionado**, e também há algumas entradas +de monitoramento de agentes IPMI (principalmente para verificar se eles estão +acessíveis na rede). + +### Integração com o Telegram +Além de enviar emails, o servidor Zabbix está configurado para enviar avisos no +grupo de monitoramento dos roots em casos especiais, como quedas de energia ou +máquinas críticas. + +Para isso existe o script +[`zbxtg.py`](https://github.com/ableev/Zabbix-in-Telegram), localizado em +`/usr/lib/zabbix/alertscripts/`. Além disso é importante que uma conversa seja +iniciada com o bot, para isso basta mandar a seguinte mensagem nos grupos em +que o bot está: `/start@c3sl_monitoramento_bot`. Dificilmente será necessário +mandar essa mensagem, mas caso algum alerta não seja enviado pelo Zabbix essa +pode ser a causa (é possível ver isso na interface web do servidor). + +## Rede +Essa máquina tem conexão direta de 10Gb com o switch +[](/pages/switches/dc/malbec). + +Nomes que apontam para essa máquina: +- `forsyn.c3sl.ufpr.br`, `forsyn.dfs`, `forsyn.arcond`: Nome da forsyn + nas subredes; +- `monitoramento.c3sl.ufpr.br`, `monitoramento.dfs`, + `monitoramento.arcond`: CNAMEs utilizados pelos *agents* para identificar o + servidor de monitoramento; +- `zabbix.c3sl.ufpr.br`: nome para o frontend do servidor zabbix; + +Essa máquina está nas seguintes VLANs: +- `DFS`: para monitoramento das torneiras e barris. +- `ARCOND`: para monitoramento SNMP do ar condicionado. +- `C3SL`: para o resto. + +:::{admonition} `CNAME monitoramento.*` +:class: important +É importante ressaltar que utilizar os CNAMEs `monitoramento.*` é preferível a +utilizar `forsyn.*`, pois caso o monitoramento seja migrado novamente para +outra máquina a mudança de diversos arquivos (como firewall, DNS, etc.) não +seja necessária, basta apenas fazer 'monitoramento.*' apontar para o novo +servidor (e esperar as máquinas atualizarem suas tabelas de DNS). +::: + +Há também algumas regras definidas no *firewall* para abrir portas de +monitoramento (ressalta-se a 10050). Ele utiliza o nome `monitoramento`, então +não deve ser necessário se preocupar em mexer no firewall caso o monitoramento +seja movido da forsyn. + +## Detalhes importantes + +### Binários SNMP +Ao que parece os binários para monitoramento SNMP não existem mais na internet, +e portanto uma cópia deles é mantida no diretório `/root/zabbix/snmp/`. É +importante não perder esses arquivos (há cópias deles no *backup* também, +claro) se não a maior parte do monitoramento por SNMP ficará indisponível. + +### `micro.arcond` +O monitoramento do ar de precisão do datacenter é feito por meio de um micrinho +proprietário dele que 'não temos acesso'. + +No momento da escrita desse texto, o monitoramento foi recém migrado da +[](/pages/machines/base/urquell) para a [](/pages/machines/base/forsyn), mas +aparentemente há alguma regra de *firewall* **interna** do micrinho que permite +apenas a urquell fazer as requisições SNMP. + +Não foi feita nenhuma gambiarra para contornar isso, logo o monitoramento do ar +de precisão pela forsyn não ocorre atualmente. + +:::{note} +Uma possível solução envolveria mexer no *firewall* da urquell e fazer a forsyn +fazer as requisições através dela. Não foi feito por ser bizarro isso ser +necessário. +::: + +## Planos para o futuro +* Sincronizar o Zabbix com uma base de dados que seja 'fonte da verdade': O que + evitaria problemas com rotação de IPs de VMs e também facilita o + monitoramento de algumas coisas. Uma proposta para isso é utilizar o + [NetBox](https://github.com/netbox-community/netbox). +* Alertas destinados aos responsáveis pelos ativos: Por exemplo, se o disco de + uma virtual utilizada pelo PET ficar cheio eles devem receber o aviso, + provavelmente por email, não os roots. +* Monitoramento de serviços: Atualmente apenas se fazem verificações sobre o + estado da máquina virtual em si (se está ligada ou desligada, porcentagem de + uso de disco, etc.), mas seria ideal verificar se os serviços web estão + rodando por exemplo, principalmente para alguns projetos do C3SL. +* Utilizar a máquina de monitoramento para inventariar a rede do DInf: + hardwares, serviços, imagens, etc. com o intuito de gerenciar + vulnerabilidades. +* Idealmente, por mais que não necessário, o monitoramento deveria ser + redundante, afinal se a única máquina de monitoramento cair nós ficaremos no + escuro, sem saber se há problemas com as demais máquinas ou não. +* Dar um jeito de monitorar o ar de precisão, idealmente por meio de algo que + tenhamos controle, não pelo micrinho esquisito. -- GitLab