Coletar eventos do Syslog com o Agente do Azure Monitor

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planejamento adequadamente. Para obter mais informações, veja a orientação CentOS End Of Life.

O Syslog é um protocolo de registro de eventos em log comum para o Linux. Você pode usar o daemon do Syslog incorporado aos dispositivos Linux para coletar eventos locais dos tipos que você especificar. Em seguida, você pode fazer com que ele envie esses eventos para um workspace do Log Analytics. Os aplicativos enviam mensagens que podem ser armazenadas no computador local ou entregues a um coletor de Syslog.

Quando o agente do Azure Monitor para Linux é instalado, ele configura o daemon do Syslog local para encaminhar mensagens para o agente quando a coleção Syslog estiver habilitada na DCR (regra de coleta de dados). Em seguida, o Agente do Azure Monitor envia as mensagens para um workspace do Azure Monitor ou Log Analytics em que um registro de Syslog correspondente é criado em uma tabela Syslog.

Diagrama que mostra a coleta de Syslog.

Diagrama que mostra a comunicação do daemon do Syslog e do Agente do Azure Monitor.

Observação

O Agente do Azure Monitor usa uma porta TCP para receber mensagens enviadas por rsyslog ou syslog-ng. No entanto, caso o SELinux esteja habilitado e não possamos usar o semanage para adicionar regras para a porta TCP, usaremos soquetes Unix.

As seguintes instalações têm suporte com o coletor do Syslog:

  • Nenhum
  • Kern
  • usuário
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • notícias
  • uucp
  • ftp
  • ntp
  • auditoria
  • alerta
  • marca
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

Para alguns tipos de dispositivos que não permitem a instalação local do Agente do Azure Monitor, o agente pode ser instalado em substituição a um encaminhador de log baseado em Linux dedicado. O dispositivo de origem deve ser configurado para enviar eventos de Syslog para o daemon do Syslog nesse encaminhador em vez do daemon local. Para obter mais informações, consulte o tutorial do Sentinel.

Configurar Syslog

O Agente do Azure Monitor para Linux coleta apenas eventos com as instalações e as severidades especificadas na configuração. Você pode configurar o Syslog por meio do Portal do Azure ou gerenciando arquivos de configuração em seus agentes do Linux.

Configurar o Syslog no Portal do Azure

Configure o Syslog no menu Regras de Coleta de Dados do Azure Monitor. Essa configuração é entregue ao arquivo de configuração em cada agente do Linux.

  1. Clique em Adicionar fonte de dados.
  2. Em Tipo de fonte de dados, selecione Syslog do Linux.

Você pode coletar eventos de Syslog com um nível de log diferente para cada instalação. Por padrão, todos os tipos de instalação do Syslog são coletados. Se você não quiser coletar, por exemplo, eventos do tipo auth, selecione NONE na caixa de listagem Nível de log mínimo para recurso auth e salve as alterações. Se você precisar alterar o nível de log padrão para eventos de Syslog e coletar apenas eventos com um nível de log iniciando em AVISO ou uma prioridade mais alta, selecione LOG_NOTICE na caixa de listagem Nível de log mínimo.

Por padrão, todas as alterações de configuração são enviadas automaticamente por push para todos os agentes configurados no DCR.

Criar uma regra de coleta de dados

Criar uma regra de coleta de dados na mesma região do workspace do Log Analytics. Uma DCR é um recurso do Azure que permite definir a maneira como os dados devem ser tratados conforme eles são ingeridos no workspace.

  1. Entre no portal do Azure.

  2. Pesquise e abra o Monitor.

  3. Em Configurações, selecione Regras de Coleta de Dados.

  4. Selecione Criar.

    Captura de tela que mostra o painel Regras de Coleta de Dados com a opção Criar selecionada.

Adicionar recursos

  1. Selecione Adicionar Recursos.

  2. Use os filtros para localizar a máquina virtual que você quer usar para coletar logs.

    Captura de tela que mostra a página para selecionar o escopo para a regra de coleta de dados.

  3. Selecione a máquina virtual.

  4. Selecione Aplicar.

  5. Selecione Avançar: Coletar e entregar.

Adicionar uma fonte de dados

  1. Clique em Adicionar fonte de dados.

  2. Em Tipo de fonte de dados, selecione Syslog do Linux.

    Captura de tela que mostra a página para selecionar o tipo de fonte de dados e o nível de log mínimo.

  3. Em Nível mínimo de log, deixe os valores padrão LOG_DEBUG.

  4. Selecione Avançar: Destino.

Adicionar um destino

  1. Selecione Adicionar Destino.

    Captura de tela que mostra a guia Destino com a opção Adicionar destino selecionada.

  2. Insira os valores a seguir:

    Campo Valor
    Tipo de destino Logs do Azure Monitor
    Subscription Selecione a assinatura apropriada
    Conta ou namespace Selecione o workspace do Log Analytics apropriado
  3. Clique em Adicionar fonte de dados.

  4. Selecione Avançar: Revisar + criar.

Criar uma regra

  1. Selecione Criar.
  2. Aguarde 20 minutos antes de passar para a próxima seção.

Se a VM não tiver o Agente do Azure Monitor instalado, a implantação da DCR disparará a instalação do agente na VM.

Configurar o Syslog no agente do Linux

Quando o Agente do Azure Monitor é instalado em um computador Linux, ele instala um arquivo de configuração do Syslog padrão que define o recurso e a gravidade das mensagens coletadas se o Syslog estiver habilitado em uma DCR. O arquivo de configuração é diferente, dependendo do daemon do Syslog que o cliente tem instalado.

Rsyslog

Em muitas distribuições do Linux, o daemon do rsyslogd é responsável por consumir, armazenar e rotear mensagens de log enviadas usando a API de Syslog do Linux. O Agente do Azure Monitor usa o módulo de saída de encaminhamento TCP (omfwd) no rsyslog para encaminhar mensagens de log para o Agente do Azure Monitor.

A instalação do Agente do Azure Monitor inclui arquivos de configuração padrão que são colocados no seguinte diretório: /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/

Quando o Syslog for adicionado a uma DCR, esses arquivos de configuração são instalados no diretório do sistema etc/rsyslog.d e o rsyslog é reiniciado automaticamente para que as alterações entrem em vigor. Esses arquivos são usados pelo rsyslog para carregar o módulo de saída e encaminhar os eventos para o daemon do Agente do Azure Monitor usando regras definidas.

Seu conteúdo padrão é mostrado no exemplo a seguir. Esse exemplo coleta mensagens do Syslog enviadas do agente local para todos os recursos com todos os níveis de log.

$ cat /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent

template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
# queue.workerThreads sets the maximum worker threads, it will scale back to 0 if there is no activity
# Forwarding all events through TCP port
*.* action(type="omfwd"
template="AMA_RSYSLOG_TraditionalForwardFormat"
queue.type="LinkedList"
queue.filename="omfwd-azuremonitoragent"
queue.maxFileSize="32m"
action.resumeRetryCount="-1"
action.resumeInterval="5"
action.reportSuspension="on"
action.reportSuspensionContinuation="on"
queue.size="25000"
queue.workerThreads="100"
queue.dequeueBatchSize="2048"
queue.saveonshutdown="on"
target="127.0.0.1" Port="28330" Protocol="tcp")

A configuração a seguir é usada quando você usa SELinux e decidimos usar soquetes Unix.

$ cat /etc/rsyslog.d/10-azuremonitoragent.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
$OMUxSockSocket /run/azuremonitoragent/default_syslog.socket
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%") 
$OMUxSockDefaultTemplate AMA_RSYSLOG_TraditionalForwardFormat
# Forwarding all events through Unix Domain Socket
*.* :omuxsock: 
$ cat /etc/rsyslog.d/05-azuremonitoragent-loadomuxsock.conf
# Azure Monitor Agent configuration: load rsyslog forwarding module. 
$ModLoad omuxsock

Em alguns sistemas herdados, como o CentOS 7.3, vimos problemas de formatação de log rsyslog quando um formato de encaminhamento tradicional é usado para enviar eventos do Syslog para o Agente do Azure Monitor. Para esses sistemas, o Agente do Azure Monitor coloca automaticamente um modelo de encaminhador herdado:

template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n")

Syslog-ng

O arquivo de configuração de syslog-ng fica instalado em /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf. Quando a coleção Syslog for adicionada a uma DCR, esse arquivo de configuração é colocado no diretório do sistema /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf e o syslog-ng é reiniciado automaticamente para que as alterações entrem em vigor.

O conteúdo padrão é mostrado no exemplo a seguir. Esse exemplo coleta mensagens do Syslog enviadas do agente local para todos os recursos e todas as severidades.

$ cat /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf 
# Azure MDSD configuration: syslog forwarding config for mdsd agent
options {};

# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using tcp
destination d_azure_mdsd {
	network("127.0.0.1" 
	port(28330)
	log-fifo-size(25000));			
};

log {
	source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
	destination(d_azure_mdsd);
	flags(flow-control);
};

A configuração a seguir é usada quando você usa SELinux e decidimos usar soquetes Unix.

$ cat /etc/syslog-ng/conf.d/azuremonitoragent.conf 
# Azure MDSD configuration: syslog forwarding config for mdsd agent options {}; 
# during install time, we detect if s_src exist, if it does then we 
# replace it by appropriate source name like in redhat 's_sys' 
# Forwrding using unix domain socket 
destination d_azure_mdsd { 
	unix-dgram("/run/azuremonitoragent/default_syslog.socket" 
	flags(no_multi_line) ); 
};
 
log {
	source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf 
	destination(d_azure_mdsd);
}; 

Observação

O Azure Monitor dá suporte à coleta de mensagens enviadas pelo rsyslog ou syslog-ng, em que o rsyslog é o daemon padrão. O daemon Syslog padrão na versão 5 do Red Hat Enterprise Linux, CentOS e na versão Oracle Linux (sysklog) não tem suporte para a coleta de eventos de Syslog. Para coletar dados de Syslog nessa versão das distribuições, o daemon rsyslog deverá ser instalado e configurado para substituir sysklog.

Se você editar a configuração de Syslog, deverá reiniciar o daemon Syslog para que as alterações entrem em vigor.

Pré-requisitos

Você precisa de:

Propriedades de registro do syslog

Os registros do syslog têm um tipo de Syslog e têm as propriedades mostradas na tabela a seguir.

Propriedade Descrição
Computador Computador do qual o evento foi coletado.
Recurso Define a parte do sistema que gerou a mensagem.
HostIP Endereço IP do sistema que envia a mensagem.
HostName Nome do sistema enviando a mensagem.
SeverityLevel Nível de severidade do evento.
SyslogMessage Texto da mensagem.
ProcessID A ID do processo que gerou a mensagem.
EventTime Data e hora em que o alerta foi gerado.

Consultas do log com registros do Syslog

A tabela a seguir fornece diferentes exemplos de consultas de log que recuperam registros do Syslog.

Consulta Descrição
syslog Todos os Syslogs
Syslog | where SeverityLevel == "error" Todos os registros do Syslog com a severidade de erro
Syslog | where Facility == "auth" Todos os registros do Syslog com o tipo de instalação de autenticação
Syslog | summarize AggregatedValue = count() by Facility Contagem de registros do Syslog por recurso

Próximas etapas

Saiba mais sobre: