Condividi tramite


Raccogliere eventi Syslog con l'agente di Monitoraggio di Azure

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Valutare le proprie esigenze e pianificare di conseguenza. Per ulteriori informazioni, consultare la Guida alla fine del ciclo di vita di CentOS.

Syslog è un protocollo di registrazione di eventi comunemente usato in Linux. È possibile usare il daemon Syslog integrato in dispositivi e appliance Linux per raccogliere gli eventi locali dei tipi specificati. È quindi possibile inviarli a un'area di lavoro Log Analytics. Le applicazioni inviano messaggi che possono essere archiviati nel computer locale o recapitati a un agente di raccolta di Syslog.

Quando l'agente di Monitoraggio di Azure per Linux è installato, configura il daemon Syslog locale per inoltrare i messaggi all'agente quando la raccolta Syslog è abilitata nelle regole di raccolta dati (DCR). L'agente di Monitoraggio di Azure invia quindi i messaggi a un'area di lavoro Monitoraggio di Azure o Log Analytics in cui viene creato un record Syslog corrispondente in una tabella Syslog.

Diagramma che mostra la raccolta Syslog.

Diagramma che mostra il daemon Syslog e la comunicazione dell'agente di Monitoraggio di Azure.

Nota

L'agente di Monitoraggio di Azure usa una porta TCP per ricevere messaggi inviati da rsyslog o syslog-ng, tuttavia, nel caso in cui SELinux sia abilitato e non è possibile usare semanage per aggiungere regole per la porta TCP, verranno usati socket Unix.

Con l'agente di raccolta Syslog sono supportate le funzionalità seguenti:

  • None
  • Kern
  • utente
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • ftp
  • ntp
  • controllo
  • avviso
  • mark
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

Di seguito sono riportati i livelli di gravità degli eventi:

  • info
  • avviso
  • Errore
  • warning
  • critical

Per alcuni tipi di dispositivo che non consentono l'installazione locale dell'agente di Monitoraggio di Azure, l'agente può essere installato invece in un server d'inoltro dei log basato su Linux dedicato. Il dispositivo di origine deve essere configurato per inviare eventi Syslog al daemon Syslog in questo server d'inoltro anziché al daemon locale. Per altre informazioni, vedere l'esercitazione su Sentinel.

Configurare Syslog

L'agente di Monitoraggio di Azure per Linux raccoglie solo gli eventi con le funzionalità e i livelli di gravità specificati nella configurazione. È possibile configurare Syslog tramite il portale di Azure o mediante la gestione dei file di configurazione negli agenti Linux.

Configurare Syslog nel portale di Azure

Configurare Syslog dal menu Regole di raccolta dati di Monitoraggio di Azure. Questa configurazione viene distribuita al file di configurazione su ogni agente Linux.

  1. Seleziona Aggiungi origine dati.
  2. Per Tipo di origine dati selezionare Syslog Linux.

È possibile raccogliere eventi Syslog con un livello di log diverso per ogni funzionalità. Per impostazione predefinita, vengono raccolti tutti i tipi di funzionalità Syslog. Se non si desidera raccogliere, ad esempio eventi di auth tipo , selezionare NONE nella casella di riepilogo Livello di log minimo per auth la funzionalità e salvare le modifiche. Se è necessario modificare il livello di log predefinito per gli eventi Syslog e raccogliere solo gli eventi con un livello di log a partire da NOTICE o una priorità superiore, selezionare LOG_NOTICE nella casella di riepilogo Livello di log minimo.

Per impostazione predefinita, tutte le modifiche di configurazione vengono automaticamente inoltrate a tutti gli agenti configurati nel Registro Azure Container.

Creare una regola di raccolta dati

Creare una regola di raccolta dati nella stessa area dell'area di lavoro Log Analytics. Un registro di dominio è una risorsa di Azure che consente di definire il modo in cui i dati devono essere gestiti durante l'inserimento nell'area di lavoro.

  1. Accedere al portale di Azure.

  2. Cercare e aprire Monitoraggio.

  3. In Impostazioni selezionare Regole di raccolta dati.

  4. Seleziona Crea.

    Screenshot che mostra il riquadro Regole raccolta dati con l'opzione Crea selezionata.

Aggiungere le risorse

  1. Selezionare Aggiungi risorse.

  2. Usare i filtri per trovare la macchina virtuale da usare per raccogliere i log.

    Screenshot che mostra la pagina per selezionare l'ambito per la regola di raccolta dati.

  3. Selezionare la macchina virtuale.

  4. Selezionare Applica.

  5. Selezionare Avanti: Raccogliere e recapitare.

Aggiungere un'origine dati

  1. Seleziona Aggiungi origine dati.

  2. Per Tipo di origine dati selezionare Syslog Linux.

    Screenshot che mostra la pagina per selezionare il tipo di origine dati e il livello di log minimo.

  3. Per Livello di log minimo lasciare i valori predefiniti LOG_DEBUG.

  4. Selezionare Avanti: Destinazione.

Aggiungere una destinazione

  1. Seleziona Aggiungi destinazione.

    Screenshot che mostra la scheda Destinazione con l'opzione Aggiungi destinazione selezionata.

  2. Immettere i valori seguenti:

    Campo valore
    Tipo destinazione Log di Monitoraggio di Azure
    Subscription Selezionare la sottoscrizione appropriata
    Account o spazio dei nomi Selezionare l'area di lavoro Log Analytics appropriata
  3. Seleziona Aggiungi origine dati.

  4. Selezionare Avanti: Rivedi e crea.

Crea una regola

  1. Seleziona Crea.
  2. Attendere 20 minuti prima di passare alla sezione successiva.

Se la macchina virtuale non ha installato l'agente di Monitoraggio di Azure, la distribuzione del Registro Azure Container attiva l'installazione dell'agente nella macchina virtuale.

Configurare Syslog nell'agente Linux

Quando l'agente di Monitoraggio di Azure viene installato in un computer Linux, installa un file di configurazione Syslog predefinito che definisce la funzionalità e la gravità dei messaggi raccolti se Syslog è abilitato in un registro di dominio. Il file di configurazione è diverso a seconda del daemon Syslog installato nel client.

Rsyslog

In molte distribuzioni Linux, il daemon rsyslogd è responsabile dell'utilizzo, dell'archiviazione e del routing dei messaggi di log inviati tramite l'API Syslog Linux. L'agente di Monitoraggio di Azure usa il modulo di output di inoltro TCP (omfwd) in rsyslog per inoltrare i messaggi di log all'agente di Monitoraggio di Azure.

L'installazione dell'agente di Monitoraggio di Azure include i file di configurazione predefiniti che vengono inseriti nella directory seguente: /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/

Quando Syslog viene aggiunto a un DCR, questi file di configurazione vengono installati nella directory di etc/rsyslog.d sistema e rsyslog viene riavviato automaticamente per rendere effettive le modifiche. Questi file vengono usati da rsyslog per caricare il modulo di output e inoltrare gli eventi al daemon dell'agente di Monitoraggio di Azure usando le regole definite.

Il contenuto predefinito è illustrato nell'esempio seguente. Questo esempio raccoglie i messaggi Syslog inviati dall'agente locale per tutte le strutture con tutti i livelli di 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")

La configurazione seguente viene usata quando si usa SELinux e si decide di usare socket 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

In alcuni sistemi legacy, ad esempio CentOS 7.3, sono stati riscontrati problemi di formattazione dei log rsyslog quando viene usato un formato di inoltro tradizionale per inviare eventi Syslog all'agente di Monitoraggio di Azure. Per questi sistemi, l'agente di Monitoraggio di Azure inserisce automaticamente un modello di server d'inoltro legacy:

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

Syslog-ng

Il file di configurazione per syslog-ng viene installato in /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf. Quando la raccolta Syslog viene aggiunta a un registro di dominio, questo file di configurazione viene inserito nella directory di /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf sistema e syslog-ng viene riavviato automaticamente per rendere effettive le modifiche.

Il contenuto predefinito è illustrato nell'esempio seguente. Questo esempio raccoglie i messaggi Syslog inviati dall'agente locale per tutte le strutture e tutti i livelli di gravità.

$ 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);
};

La configurazione seguente viene usata quando si usa SELinux e si decide di usare socket 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);
}; 

Nota

Monitoraggio di Azure supporta la raccolta di messaggi inviati da rsyslog o syslog-ng, dove rsyslog rappresenta il daemon predefinito. Il daemon Syslog predefinito nella versione 5 di Red Hat Enterprise Linux, CentOS e Oracle Linux (sysklog) non è supportato per la raccolta di eventi Syslog. Per raccogliere dati Syslog da questa versione di queste distribuzioni, il daemon rsyslog deve essere installato e configurato per sostituire sysklog.

Se si modifica la configurazione di Syslog, è necessario riavviare il daemon Syslog per rendere effettive le modifiche.

Prerequisiti

È necessario:

Proprietà dei record Syslog

I record Syslog hanno un tipo di Syslog e hanno le proprietà illustrate nella tabella seguente.

Proprietà Descrizione
Computer Computer da cui è stato raccolto l'evento.
Struttura Parte del sistema che ha generato il messaggio.
HostIP Indirizzo IP del sistema che ha inviato il messaggio.
HostName Nome del sistema che ha inviato il messaggio.
SeverityLevel Livello di sicurezza dell'evento.
SyslogMessage Testo del messaggio.
ProcessID ID del processo che ha generato il messaggio.
EventTime Data e ora in cui è stato generato l'evento.

Query di log con record Syslog

La tabella seguente mostra alcuni esempi di query di log che recuperano i record Syslog.

Query Descrizione
Syslog Tutti i syslog
Syslog | dove SeverityLevel == "error" Tutti i record Syslog con gravità dell'errore
Syslog | where Facility == "auth" Tutti i record Syslog con tipo di funzionalità di autenticazione
Syslog | summarize AggregatedValue = count() by Facility Numero di record Syslog per struttura

Passaggi successivi

Altre informazioni su: