Guia de solução de problemas do Syslog para o Azure Monitor Agent for Linux
Atenção
Este artigo faz referência ao CentOS, uma distribuição Linux com status de Fim de Vida (EOL). Por favor, considere o seu uso e planejamento de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.
Visão geral da coleção Syslog do Azure Monitor Agent for Linux e dos padrões RFC suportados:
- O Azure Monitor Agent instala uma configuração de saída para o daemon Syslog do sistema durante o processo de instalação. O arquivo de configuração especifica a maneira como os eventos fluem entre o daemon Syslog e o Azure Monitor Agent.
- Para
rsyslog
(a maioria das distribuições 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 Azure Monitor Agent escuta uma porta TCP para receber eventos do
rsyslog
/syslog-ng
. A porta para esta comunicação é registada em/etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port
.Nota
Antes do Azure Monitor Agent versão 1.28, ele usava um soquete de domínio Unix em vez da porta TCP para receber eventos do rsyslog.
omfwd
O módulo de saída emrsyslog
oferece mecanismos de spooling e repetição para maior confiabilidade. - O daemon Syslog usa filas quando a ingestão do Azure Monitor Agent está atrasada ou quando o Azure Monitor Agent não está acessível.
- O Azure Monitor Agent ingere eventos do Syslog por meio do soquete mencionado anteriormente e os filtra com base na combinação de recursos ou gravidade da configuração da regra de coleta de dados (DCR) no
/etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/
. Qualquerfacility
um ouseverity
não presente no DCR é descartado. - O Azure Monitor Agent tenta analisar eventos de acordo com RFC3164 e RFC5424. Ele também sabe como analisar os formatos de mensagem listados neste site.
- O Azure Monitor Agent identifica o ponto de extremidade de destino para eventos Syslog da configuração DCR e tenta carregar os eventos.
Nota
O Azure Monitor Agent usa persistência local por padrão. Todos os eventos recebidos ou
rsyslog
syslog-ng
enfileirados se/var/opt/microsoft/azuremonitoragent/events
não forem carregados.
Problemas
Você pode encontrar os seguintes problemas.
Os dados Rsyslog não são carregados devido a um problema de espaço total em disco no Azure Monitor Agent for 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 no /var/opt/microsoft/azuremonitoragent/log/mdsd.err
, você vê entradas sobre Erro ao inserir o item no armazenamento persistente local... Nenhum espaço deixado 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
Motivo
O Azure Monitor Agent for Linux armazena eventos em buffer antes /var/opt/microsoft/azuremonitoragent/events
da ingestão. Em uma instalação padrão do Azure Monitor Agent for Linux, esse diretório ocupa ~650 MB de espaço em disco ocioso. O tamanho no disco aumenta quando ele está sob carga de registro sustentada. Ele é limpo a cada 60 segundos e reduz de volta para ~ 650 MB quando a carga retorna à ociosidade.
Confirme o problema de um disco cheio
O df
comando mostra quase nenhum espaço disponível no /dev/sda1
, como 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
ou /
/var
).
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 du
comando para inspecionar o disco para determinar quais arquivos estão fazendo com que o disco fique 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 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 lsof
comando para verificar esses 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 PID 1484 ainda tem 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 distros 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 no disco em /var/log/syslog
. Os eventos Syslog da família RedHat/CentOS são armazenados em /var/log/
, mas em um arquivo diferente: /var/log/messages
.
O Azure Monitor Agent não depende de eventos Syslog sendo registrados no /var/log/
. Em vez disso, ele configura o serviço rsyslog para encaminhar eventos por uma porta TCP diretamente para o azuremonitoragent
processo de serviço (mdsd).
Correção: Remova recursos de alto volume de /etc/rsyslog.d/50-default.conf
Se você estiver enviando um alto volume de log por meio do rsyslog e seu sistema estiver configurado para registrar eventos para esses recursos, considere modificar a configuração padrão do rsyslog para evitar registrar e armazená-los em /var/log/
. Os eventos desse recurso ainda seriam encaminhados para o Azure Monitor Agent porque o rsyslog usa uma configuração diferente para encaminhamento colocado no /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
.
Por exemplo, para remover
local4
eventos de serem registrados em/var/log/syslog
ou , altere/var/log/messages
esta linha deste/etc/rsyslog.d/50-default.conf
trecho:*.*;auth,authpriv.none -/var/log/syslog
A este trecho (adicionar
local4.none;
):*.*;local4.none;auth,authpriv.none -/var/log/syslog
sudo systemctl restart rsyslog