Pular para o conteúdo principal

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​

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âmetroTipoRequeridoPadrãoDescrição
network_syslog_portInteiroNão514Porta que o listener vincula no host de monitoramento. Uma porta abaixo de 1024 é privilegiada. Veja a nota abaixo.
network_syslog_protocolStringNãoudpTransporte para o listener. Use udp ou tcp. A maioria dos dispositivos de rede envia UDP.
network_syslog_vendorsListaNã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âmetroTipoRequeridoPadrãoDescrição
devicesMapaSim-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_communityStringNãopublicComunidade 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ótuloDescriçãoExemplo
jobValor fixo para syslog de dispositivos.network_syslog
componentValor fixo para syslog de dispositivos.network_device
deviceNome do dispositivo do inventário. O Alloy combina o endereço do remetente.nf-nids-rtr-core01
device_ipEndereço de origem do datagrama.10.64.10.1
vendorBloco de fornecedor do inventário que contém o dispositivo.mikrotik
levelSeveridade do syslog.informational, warning, err, crit
facilityInstância do syslog.daemon
topicsLista completa de tópicos do RouterOS do cabeçalho da mensagem.system,info,account
topicPrimeiro tópico nessa lista. Use-o para o filtro comum.system, firewall, dhcp
syslog_hostCampo 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
PropriedadeValorDescrição
targetremoteEnvia o log para um servidor syslog remoto em vez de memória ou disco.
remoteEndereço do host de monitoramentoDestino do fluxo de syslog.
remote-port514Porta de destino. Combine com network_syslog_port.
remote-log-formatbsd-syslogApenas RouterOS 7. Envia RFC 3164. Veja a tabela de versões abaixo.
src-addressEndereço do dispositivo no inventárioOpcional. 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ãoPropriedadePadrãoAção
RouterOS 7remote-log-formatdefaultDefina 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 6bsd-syslognoDefina 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ópicoDescrição
criticalFalhas que interrompem um serviço no dispositivo.
errorOperações falhadas, por exemplo, um lease DHCP falhado ou um túnel falhado.
warningCondições que precisam de atenção, mas não interrompem um serviço.
infoEventos 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:

  1. O dispositivo envia BSD syslog, conforme definido na RFC 3164. O coletor não analisa a RFC 5424.
  2. O dispositivo envia UDP para a porta 514 no host de monitoramento, a menos que o site tenha alterado network_syslog_protocol ou network_syslog_port.
  3. 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.

PainelDescrição
Pesquisa de Log de Dispositivo de RedePesquisa de texto livre em todos os dispositivos.
Taxa de Log por DispositivoVolume para cada dispositivo ao longo do tempo. Uma linha plana em zero mostra um dispositivo que parou de enviar.
Taxa de Log por SeveridadeVolume para cada severidade ao longo do tempo.
Logs de Dispositivos de RedeTodos os logs de dispositivos para o dispositivo e string de pesquisa selecionados.
Erros, Avisos e CríticosSeveridade warning e acima.
Logins, Falhas de Autenticação e Mudanças de ConfiguraçãoEventos de conta e sistema para auditoria.
Eventos de Link, OSPF/BGP e DHCPEventos de interface, roteamento e lease.
VariávelDescrição
Site (logs)Fonte de dados Loki. Selecione o site.
DeviceDropdown de Dispositivo. A lista vem dos valores de rótulo device no Loki. Selecione um dispositivo, vários dispositivos ou Todos.
SearchFiltro 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:

  1. Verifique o estado do agente no host de monitoramento com systemctl status alloy.
  2. Verifique se o Alloy possui a porta com ss -lunp | grep 514.
  3. 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.
  4. 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 rsyslogd local com um listener UDP.

Resolução:

  1. Leia o erro com journalctl -u alloy -n 50.
  2. Confirme a capacidade com systemctl cat alloy.
  3. Encontre o outro listener com ss -lunp | grep 514. Pare esse listener ou defina network_syslog_port para 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 de bsd-syslog=yes.
  • O dispositivo envia RFC 5424.

Resolução:

  1. Capture o tráfego com tcpdump -n -i any -A udp port 514. Uma mensagem que o tcpdump marca como (invalid) não possui cabeçalho de prioridade syslog, então o formato está errado.
  2. Defina a propriedade de formato para a versão do dispositivo. Veja Formato da Mensagem por Versão do RouterOS.
  3. Em outro dispositivo, selecione o formato de syslog BSD ou legado.
  4. 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:

  1. Leia o endereço de origem do rótulo device_ip.
  2. Adicione esse endereço ao mapa devices: do fornecedor ou defina o endereço de origem no dispositivo.
  3. Aplique a alteração com o papel common e 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:

  1. Verifique as regras no dispositivo com /system logging print.
  2. Faça um ping no host de monitoramento a partir do dispositivo.
  3. Confirme que o endereço atual do dispositivo corresponde à entrada do inventário.

Referências​

ReferênciaTítulo
RFC 3164O Protocolo BSD syslog
RFC 5424O Protocolo Syslog. O coletor não analisa esse formato.
Registro CentralizadoPipeline de logs do host, retenção e dashboards
Firewall por PapelModelo de fluxo, tokens de origem e modos
Monitoramento & ObservabilidadePrometheus, Grafana e métricas