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