Syslog de Dispositivos de Rede
Roteadores, switches e outros aparelhos de rede não podem executar o agente Grafana Alloy. Esses dispositivos enviam syslog em vez disso. Cada host de monitoramento executa um listener de syslog dentro do Alloy. O listener grava as mensagens no Loki local. Os logs dos dispositivos ficam ao lado dos logs de rede principais e compartilham a mesma pesquisa, intervalo de tempo e retenção.
Índice
- Arquitetura
- Como os Dispositivos São Identificados
- Configuração do Coletor
- Inventário de Dispositivos
- Rótulos de Log
- MikroTik RouterOS
- Outros Enviadores de Syslog
- Firewall
- Dashboard
- Consultando os Logs
- Solução de Problemas
- Referências
Arquitetura
O coletor é parte da construção padrão de monitoramento. Cada host de monitoramento abre o listener. Um site não define uma flag para receber syslog de dispositivos.
O listener aceita BSD syslog, que é o formato definido pela RFC 3164. O Alloy analisa a prioridade, o timestamp e a mensagem. O Alloy então adiciona os rótulos que as próximas seções descrevem.
Como os Dispositivos São Identificados
O Alloy nomeia cada dispositivo a partir do endereço de origem do datagrama. O Alloy compara esse endereço com os mapas devices: no inventário do site. Uma correspondência define os rótulos device e vendor.
Dois resultados seguem desse design:
- O rótulo do dispositivo está correto mesmo quando o dispositivo envia uma identidade errada, uma identidade vazia ou uma identidade duplicada no cabeçalho da mensagem.
- Um dispositivo que envia de um endereço que o inventário não lista mantém apenas o rótulo
device_ip. Adicione o endereço ao inventário para dar um nome a esse dispositivo.
Se um dispositivo tiver mais de uma interface, certifique-se de que ele envie do endereço que o inventário lista. Defina o endereço de origem no dispositivo.
Configuração do Coletor
Os parâmetros do coletor estão em roles/common/defaults/main.yml. Substitua um parâmetro no inventário do site sob all.vars.
all:
vars:
network_syslog_port: 514 # porta do listener
network_syslog_protocol: udp # transporte
network_syslog_vendors: # blocos de fornecedores que nomeiam um remetente
- mikrotik
| Parâmetro | Tipo | Requerido | Padrão | Descrição |
|---|---|---|---|---|
network_syslog_port | Inteiro | Não | 514 | Porta que o listener vincula no host de monitoramento. Uma porta abaixo de 1024 é privilegiada. Veja a nota abaixo. |
network_syslog_protocol | String | Não | udp | Transporte para o listener. Use udp ou tcp. A maioria dos dispositivos de rede envia UDP. |
network_syslog_vendors | Lista | Não | [mikrotik] | Blocos de fornecedores do inventário cujo mapa devices: nomeia um remetente de syslog. Cada fornecedor listado contribui com os rótulos de nome do dispositivo. |
O Alloy é executado como o usuário não privilegiado alloy. Portanto, uma porta abaixo de 1024 precisa de uma capacidade. A unidade Alloy em um host de monitoramento recebe CAP_NET_BIND_SERVICE automaticamente quando network_syslog_port está abaixo de 1024. Uma porta acima de 1024 não recebe a capacidade.
Aplique uma alteração a esses parâmetros com o papel common:
ansible-playbook -i hosts/<Customer>/host_files/<Site>.yml services/common.yml \
--limit <monitoring-host> --tags alloy
Os hosts de monitoramento executam o Alloy para este listener. Portanto, um host de monitoramento também envia seu próprio journal, logs de SSH e de auditoria para seu Loki local.
Inventário de Dispositivos
O coletor lê os mesmos mapas de fornecedores que o exportador SNMP usa. Adicione cada dispositivo uma vez. A entrada então dá ao dispositivo um rótulo de log, um alvo SNMP e uma regra de firewall.
all:
vars:
mikrotik:
devices:
nf-nids-rtr-core01: 10.64.10.1
nf-flgstf-rtr01: 10.64.50.22
snmp_community: <community-string>
| Parâmetro | Tipo | Requerido | Padrão | Descrição |
|---|---|---|---|---|
devices | Mapa | Sim | - | Nome do dispositivo para endereço IP. O nome se torna o rótulo device. O endereço identifica o remetente e abre o firewall. |
snmp_community | String | Não | public | Comunidade SNMP para o exportador SNMP do Prometheus. O coletor de syslog não a utiliza. |
Rótulos de Log
O syslog de dispositivos chega sob job="network_syslog". Os seguintes rótulos se aplicam.
| Rótulo | Descrição | Exemplo |
|---|---|---|
job | Valor fixo para syslog de dispositivos. | network_syslog |
component | Valor fixo para syslog de dispositivos. | network_device |
device | Nome do dispositivo do inventário. O Alloy combina o endereço do remetente. | nf-nids-rtr-core01 |
device_ip | Endereço de origem do datagrama. | 10.64.10.1 |
vendor | Bloco de fornecedor do inventário que contém o dispositivo. | mikrotik |
level | Severidade do syslog. | informational, warning, err, crit |
facility | Instância do syslog. | daemon |
topics | Lista completa de tópicos do RouterOS do cabeçalho da mensagem. | system,info,account |
topic | Primeiro tópico nessa lista. Use-o para o filtro comum. | system, firewall, dhcp |
syslog_host | Campo host do cabeçalho do syslog, como o remetente escreveu. | system,info,account |
O RouterOS não envia identidade própria. Ele escreve sua lista de tópicos onde o nome do host pertence, então o parser armazena essa lista como o host do syslog. O coletor lê topics e topic desse campo. Um remetente que escreve um nome de host real lá define apenas syslog_host e não cria rótulos de tópico.
MikroTik RouterOS
Configure cada dispositivo a partir do terminal do RouterOS. O dispositivo aponta sua ação de registro remote integrada para o host de monitoramento. O dispositivo então precisa de uma regra de registro para cada tópico.
/system logging action set [find name=remote] target=remote remote=<monitoring-host> remote-port=514 remote-log-format=bsd-syslog
/system logging add topics=error action=remote
/system logging add topics=warning action=remote
/system logging add topics=critical action=remote
/system logging add topics=info action=remote
| Propriedade | Valor | Descrição |
|---|---|---|
target | remote | Envia o log para um servidor syslog remoto em vez de memória ou disco. |
remote | Endereço do host de monitoramento | Destino do fluxo de syslog. |
remote-port | 514 | Porta de destino. Combine com network_syslog_port. |
remote-log-format | bsd-syslog | Apenas RouterOS 7. Envia RFC 3164. Veja a tabela de versões abaixo. |
src-address | Endereço do dispositivo no inventário | Opcional. Defina-o quando o dispositivo tiver mais de uma interface, para que o endereço de origem corresponda à entrada do inventário. |
Formato da Mensagem por Versão do RouterOS
O coletor analisa RFC 3164, então o dispositivo deve enviar esse formato. A propriedade que controla o formato mudou entre as versões principais. Verifique a versão com /system resource print.
| Versão | Propriedade | Padrão | Ação |
|---|---|---|---|
| RouterOS 7 | remote-log-format | default | Defina remote-log-format=bsd-syslog. O valor default envia uma estrutura MikroTik sem cabeçalho de prioridade syslog, que o coletor não pode analisar. A propriedade bsd-syslog do RouterOS 6 não existe aqui, e esse comando falha com bad parameter bsd-syslog. |
| RouterOS 6 | bsd-syslog | no | Defina bsd-syslog=yes. O valor padrão envia uma mensagem simples, que o coletor não pode analisar. |
# RouterOS 7
/system logging action set [find name=remote] remote-log-format=bsd-syslog
# RouterOS 6
/system logging action set [find name=remote] bsd-syslog=yes
Uma captura de pacotes mostra a diferença. O formato errado decodifica como (invalid) no tcpdump, e o payload começa com bytes binários antes do texto da mensagem. O formato correto decodifica como SYSLOG, Facility local0, Severity info.
Tópicos do RouterOS
| Tópico | Descrição |
|---|---|
critical | Falhas que interrompem um serviço no dispositivo. |
error | Operações falhadas, por exemplo, um lease DHCP falhado ou um túnel falhado. |
warning | Condições que precisam de atenção, mas não interrompem um serviço. |
info | Eventos normais. Este tópico carrega os eventos de account, que são os logins de usuários, os logins falhados e as mudanças de configuração. |
Comece com error, warning e critical para um volume baixo. Adicione info quando quiser auditoria de login e mudanças de configuração.
Verifique o resultado no dispositivo:
system logging print
/system logging action print
Outros Enviadores de Syslog
Qualquer dispositivo que fale BSD syslog pode usar o coletor. Três condições se aplicam:
- O dispositivo envia BSD syslog, conforme definido na RFC 3164. O coletor não analisa a RFC 5424.
- O dispositivo envia UDP para a porta 514 no host de monitoramento, a menos que o site tenha alterado
network_syslog_protocolounetwork_syslog_port. - O dispositivo envia de um endereço que um mapa
devices:lista. O firewall permite esse endereço, e o endereço dá ao dispositivo seu nome.
Adicione um novo fornecedor a network_syslog_vendors para rotular seus dispositivos. O firewall já aceita os dispositivos de cada fornecedor.
Cisco IOS
logging host <monitoring-host>
logging trap informational
logging source-interface <management-interface>
Linux rsyslog
*.* @<monitoring-host>:514
O template padrão do rsyslog é RFC 3164. Mantenha esse template. Não selecione RSYSLOG_SyslogProtocol23Format, porque esse template envia RFC 5424.
Aparelhos com uma interface web
Defina o servidor syslog remoto e a porta. Se o dispositivo oferecer uma escolha de formato, selecione BSD ou legado.
Firewall
O modelo de fluxo carrega a regra. O fluxo 4b permite 514/udp para o grupo monitoring. As fontes vêm do token { net_devices: true }, que resolve cada endereço em cada mapa all.vars.<vendor>.devices.
Um dispositivo que não está listado no inventário é descartado quando o site executa o firewall em modo enforce. Adicione o dispositivo ao inventário e, em seguida, aplique o firewall:
ansible-playbook -i hosts/<Customer>/host_files/<Site>.yml services/firewall.yml \
--limit <monitoring-host>
Veja o guia Firewall por Papel para o modelo de fluxo e os modos.
Dashboard
O Grafana contém o dashboard Syslog de Dispositivos de Rede na pasta Logs.
| Painel | Descrição |
|---|---|
| Pesquisa de Log de Dispositivo de Rede | Pesquisa de texto livre em todos os dispositivos. |
| Taxa de Log por Dispositivo | Volume para cada dispositivo ao longo do tempo. Uma linha plana em zero mostra um dispositivo que parou de enviar. |
| Taxa de Log por Severidade | Volume para cada severidade ao longo do tempo. |
| Logs de Dispositivos de Rede | Todos os logs de dispositivos para o dispositivo e string de pesquisa selecionados. |
| Erros, Avisos e Críticos | Severidade warning e acima. |
| Logins, Falhas de Autenticação e Mudanças de Configuração | Eventos de conta e sistema para auditoria. |
| Eventos de Link, OSPF/BGP e DHCP | Eventos de interface, roteamento e lease. |
| Variável | Descrição |
|---|---|
Site (logs) | Fonte de dados Loki. Selecione o site. |
Device | Dropdown de Dispositivo. A lista vem dos valores de rótulo device no Loki. Selecione um dispositivo, vários dispositivos ou Todos. |
Search | Filtro de texto livre para os painéis de log. |
Consultando os Logs
# Cada mensagem de um dispositivo
{job="network_syslog", device="nf-nids-rtr-core01"}
# Severidade warning e acima, em toda a propriedade
{job="network_syslog", level=~"emerg|alert|crit|err|warning"}
# Logins e mudanças de configuração
{job="network_syslog"} |~ `(?i)(logged in|login failure|changed by)`
# Um tópico do RouterOS
{job="network_syslog", topic="firewall"}
# Taxa de mensagens para cada dispositivo
sum by (device) (rate({job="network_syslog"} [5m]))
# Dispositivos que pararam de enviar na última hora
sum by (device) (count_over_time({job="network_syslog"} [1h]))
Solução de Problemas
Sem Logs de Dispositivos no Loki
Sintomas: Uma consulta para {job="network_syslog"} não retorna resultados.
Possíveis causas:
- O Alloy não está em execução no host de monitoramento.
- O listener não vinculou a porta.
- O dispositivo não envia.
- O firewall descarta os datagramas.
Resolução:
- Verifique o estado do agente no host de monitoramento com
systemctl status alloy. - Verifique se o Alloy possui a porta com
ss -lunp | grep 514. - Capture o tráfego com
tcpdump -n -i any udp port 514. O tráfego prova que o dispositivo envia e que o firewall permite o datagrama. - Se não houver tráfego, verifique a ação de registro no dispositivo.
Alloy Não Inicia
Sintomas: O serviço alloy reinicia em um loop. O journal mostra um erro de vinculação ou um erro de permissão para a porta 514.
Possíveis causas:
- A unidade não possui
CAP_NET_BIND_SERVICE. - Outro processo ocupa a porta, por exemplo, um
rsyslogdlocal com um listener UDP.
Resolução:
- Leia o erro com
journalctl -u alloy -n 50. - Confirme a capacidade com
systemctl cat alloy. - Encontre o outro listener com
ss -lunp | grep 514. Pare esse listener ou definanetwork_syslog_portpara uma porta livre e configure os dispositivos para corresponder.
Datagramas Chegam, mas o Loki Não Armazena Nada
Sintomas: tcpdump mostra tráfego na porta 514. O Loki não possui fluxo network_syslog.
Possíveis causas:
- O dispositivo não envia BSD syslog. Um dispositivo RouterOS 7 precisa de
remote-log-format=bsd-syslog. Um dispositivo RouterOS 6 precisa debsd-syslog=yes. - O dispositivo envia RFC 5424.
Resolução:
- Capture o tráfego com
tcpdump -n -i any -A udp port 514. Uma mensagem que otcpdumpmarca como(invalid)não possui cabeçalho de prioridade syslog, então o formato está errado. - Defina a propriedade de formato para a versão do dispositivo. Veja Formato da Mensagem por Versão do RouterOS.
- Em outro dispositivo, selecione o formato de syslog BSD ou legado.
- Verifique o log do Alloy para erros de análise com
journalctl -u alloy | grep -i syslog.
O Rótulo do Dispositivo Está Vazio
Sintomas: As linhas de log carregam device_ip, mas nenhum rótulo device.
Possíveis causas:
- O endereço do remetente não está em um mapa
devices:. - O dispositivo envia de uma segunda interface, então o endereço de origem difere do endereço do inventário.
Resolução:
- Leia o endereço de origem do rótulo
device_ip. - Adicione esse endereço ao mapa
devices:do fornecedor ou defina o endereço de origem no dispositivo. - Aplique a alteração com o papel
commone com o play do firewall se o site aplicar o firewall.
Um Dispositivo Parou de Enviar
Sintomas: O painel Taxa de Log por Dispositivo não mostra dados para um dispositivo. Outros dispositivos continuam.
Possíveis causas:
- Um operador removeu ou desativou a regra de registro no dispositivo.
- O dispositivo perdeu a rota para o host de monitoramento.
- O endereço do inventário mudou, então o firewall descarta o novo endereço de origem.
Resolução:
- Verifique as regras no dispositivo com
/system logging print. - Faça um ping no host de monitoramento a partir do dispositivo.
- Confirme que o endereço atual do dispositivo corresponde à entrada do inventário.
Referências
| Referência | Título |
|---|---|
| RFC 3164 | O Protocolo BSD syslog |
| RFC 5424 | O Protocolo Syslog. O coletor não analisa esse formato. |
| Registro Centralizado | Pipeline de logs do host, retenção e dashboards |
| Firewall por Papel | Modelo de fluxo, tokens de origem e modos |
| Monitoramento & Observabilidade | Prometheus, Grafana e métricas |