Guia de solução de problemas do Syslog para o Agente do Azure Monitor para Linux
Cuidado
Este artigo faz referência ao CentOS, uma distribuição Linux que está em status de fim do serviço (EOL). Considere seu uso e planejamento adequadamente. Para obter mais informações, confira as Diretrizes de Fim do Suporte do CentOS.
Visão geral da coleta de Syslog do Agente do Azure Monitor para Linux e dos padrões RFC com suporte:
- O Agente do Azure Monitor instala uma configuração de saída para o daemon do Syslog do sistema durante o processo de instalação. O arquivo de configuração especifica a maneira como os eventos fluem entre o daemon do Syslog e o Agente do Azure Monitor.
- Para
rsyslog
(a maioria das distribuições do Linux), o arquivo de configuração é/etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
. Parasyslog-ng
, o arquivo de configuração é/etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
. - O Agente do Azure Monitor escuta uma porta TCP para receber eventos de
rsyslog
/syslog-ng
. A porta dessa comunicação é registrada em log em/etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port
.Observação
Antes do Agente do Azure Monitor versão 1.28, ele usava um soquete de domínio Unix em vez de porta TCP para receber eventos do rsyslog.
omfwd
módulo de saída norsyslog
oferece mecanismos de spooling e repetição para melhorar a confiabilidade. - O daemon do Syslog usa filas quando a ingestão do Agente do Azure Monitor está atrasada ou quando o Agente do Azure Monitor não está acessível.
- O Agente do Azure Monitor ingere eventos do Syslog por meio do soquete mencionado anteriormente e os filtra com base na combinação de instalação ou severidade da configuração da DCR (regra de coleta de dados) no
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
. Qualquerfacility
ouseverity
não presente na DCR é removido. - O Agente do Azure Monitor tenta analisar eventos de acordo com RFC3164 e RFC5424. Ele também sabe como analisar os formatos de mensagem listados neste site.
- O Agente do Azure Monitor identifica o ponto de extremidade de destino para eventos do Syslog da configuração da DCR e tenta carregar os eventos.
Observação
O Agente do Azure Monitor usa a persistência local por padrão. Todos os eventos recebidos de
rsyslog
ousyslog-ng
são enfileirados em/var/opt/microsoft/azuremonitoragent/events
se houver falha no carregamento.
Problemas
Você pode encontrar os seguintes problemas.
Os dados do Rsyslog não são carregados devido a um problema de espaço em disco completo no Agente do Azure Monitor para Linux
As próximas seções descrevem o problema.
Sintoma
Os dados do Syslog não estão sendo carregados: Quando você inspeciona os logs de erro em /var/opt/microsoft/azuremonitoragent/log/mdsd.err
, você vê entradas sobre Erro ao inserir item no repositório persistente local... Não há espaço no dispositivo semelhante ao seguinte trecho:
2021-11-23T18:15:10.9712760Z: Error while inserting item to Local persistent store syslog.error: IO error: No space left on device: While appending to file: /var/opt/microsoft/azuremonitoragent/events/syslog.error/000555.log: No space left on device
Causa
O Agente do Azure Monitor para Linux faz buffer de eventos para /var/opt/microsoft/azuremonitoragent/events
antes da ingestão. Em uma instalação padrão do Agente do Azure Monitor para Linux, esse diretório leva cerca de 650 MB de espaço em disco em ociosidade. O tamanho no disco aumenta quando ele está sob carga de registro sustentada. Ele é limpo a cada 60 segundos e reduz de volta para cerca de 650 MB quando a carga voltar a ficar ociosa.
Confirmar o problema de disco cheio
O comando df
mostra quase nenhum espaço disponível em /dev/sda1
, conforme mostrado na saída a seguir. Observe que você deve examinar o item de linha que se correlaciona ao diretório de log (por exemplo, /var/log
, /var
ou /
).
df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 0 63G 0% /dev
tmpfs 13G 720K 13G 1% /run
/dev/sda1 29G 29G 481M 99% /
tmpfs 63G 0 63G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda15 105M 4.4M 100M 5% /boot/efi
/dev/sdb1 251G 61M 239G 1% /mnt
tmpfs 13G 0 13G 0% /run/user/1000
Você pode usar o comando du
para inspecionar o disco para determinar quais arquivos estão fazendo com que o disco esteja cheio. Por exemplo:
cd /var/log
du -h syslog*
6.7G syslog
18G syslog.1
Em alguns casos, du
pode não relatar arquivos ou diretórios grandes. Pode ser possível que um arquivo marcado como (excluído) esteja ocupando o espaço. Esse problema pode acontecer quando algum outro processo tentou excluir um arquivo, mas um processo com o arquivo ainda está aberto. Você pode usar o comando lsof
para verificar tais arquivos. No exemplo a seguir, vemos que /var/log/syslog
está marcado como excluído, mas ocupa 3,6 GB de espaço em disco. Ele não foi excluído porque um processo com o PID 1484 ainda mantém o arquivo aberto.
sudo lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
none 849 root txt REG 0,1 8632 0 16764 / (deleted)
rsyslogd 1484 syslog 14w REG 8,1 3601566564 0 35280 /var/log/syslog (deleted)
A configuração padrão do rsyslog registra todas as instalações em /var/log/
Em algumas distribuições populares (por exemplo, Ubuntu 18.04 LTS), o rsyslog é fornecido com um arquivo de configuração padrão (/etc/rsyslog.d/50-default.conf
) que registra eventos de quase todas as instalações para o disco em /var/log/syslog
. Eventos de Syslog da família RedHat/CentOS são armazenados em /var/log/
, mas em um arquivo diferente: /var/log/messages
.
O Agente do Azure Monitor não depende de eventos do Syslog serem registrados no /var/log/
. Em vez disso, ele configura o serviço rsyslog para encaminhar eventos em uma porta TCP diretamente no processo de serviço de azuremonitoragent
(mdsd).
Correção: remover recursos de volume alto de /etc/rsyslog.d/50-default.conf
Se você estiver enviando um volume do log alto por meio do rsyslog e seu sistema estiver configurado para registrar eventos para essas instalações, considere modificar a configuração padrão do rsyslog para evitar o registro em log e armazená-lo em /var/log/
. Os eventos dessa instalação ainda seriam encaminhados para o Agente do Azure Monitor porque o rsyslog usa uma configuração diferente para o encaminhamento colocado em /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
.
Por exemplo, para impedir que eventos
local4
sejam registrados em log em/var/log/syslog
ou/var/log/messages
, altere esta linha em/etc/rsyslog.d/50-default.conf
desse trecho de código:*.*;auth,authpriv.none -/var/log/syslog
Para este trecho (adicione
local4.none;
):*.*;local4.none;auth,authpriv.none -/var/log/syslog
sudo systemctl restart rsyslog