다음을 통해 공유


Azure Monitor 에이전트를 사용하여 Syslog 이벤트 수집

Syslog 이벤트DCR(데이터 수집 규칙)에 사용되는 데이터 원본 중 하나입니다. DCR 만들기에 대한 세부 정보는 Azure Monitor 에이전트를 사용하여 데이터 수집에 제공됩니다. 이 문서에서는 Syslog 이벤트 데이터 원본 유형에 대한 추가 세부 정보를 제공합니다.

Syslog는 Linux에 공통되는 이벤트 로깅 프로토콜입니다. Linux 어플라이언스 및 어플라이언스에 기본 제공된 Syslog 디먼을 사용하여 지정한 형식의 로컬 이벤트를 수집할 수 있습니다. 애플리케이션은 로컬 컴퓨터에 저장되거나 Syslog 수집기로 제공되는 메시지를 보냅니다.

Azure Monitor 에이전트의 로컬 설치를 허용하지 않는 디바이스에서 데이터를 수집하려면 전용 Linux 기반 로그 전달자를 구성합니다.

필수 조건

Syslog 데이터 컬렉션 구성

DCR의 수집 및 제공 단계의 데이터 원본 유형 드롭다운에서 Linux Syslog를 선택합니다.

Syslog 수집기에서 지원되는 기능은 다음과 같습니다.

우선 순위 인덱스 번호 우선 순위 이름
{없음} Pri 없음
0 Kern
1 user
2 mail
3 daemon
4 auth
5 syslog
6 lpr
7 news
8 uucp
9 cron
10 authpriv
11 ftp
12 ntp
13 감사
14 경고
15 clock
16 local0
17 local1
18 local2
19 local3
20 local4
21 local5
22 local6
23 local7

데이터 원본 형식과 최소 로그 수준을 선택하는 페이지를 보여 주는 스크린샷.

기본적으로 에이전트는 Syslog 구성에서 전송된 모든 이벤트를 수집합니다. 데이터 수집을 제한하려면 각 시설의 최소 로그 수준을 변경합니다. 특정 시설에 대한 이벤트를 수집하지 않으려면 없음을 선택합니다.

도착지

Syslog 데이터는 다음 위치로 전송될 수 있습니다.

대상 테이블/네임스페이스
Log Analytics 작업 영역 Syslog

참고 항목

Azure Monitor Linux Agent 버전 1.15.2 이상은 Cisco Meraki, Cisco ASA, Cisco FTD, Sophos XG, Juniper Networks, Corelight Zeek, CipherTrust, NXLog, McAfee 및 CEF(Common Event Format)을 포함한 syslog RFC 형식을 지원합니다.

데이터 수집 규칙의 Azure Monitor 로그 대상 구성을 보여 주는 스크린샷.

Linux 에이전트에서 Syslog 구성

Azure Monitor 에이전트가 Linux 머신에 설치되어 있으면 Syslog가 DCR에서 사용하도록 설정된 경우 수집되는 메시지의 기능 및 심각도를 정의하는 기본 Syslog 구성 파일을 설치합니다. 구성 파일은 클라이언트가 설치한 Syslog 디먼에 따라 다릅니다.

Rsyslog

많은 Linux 배포판에서 rsyslogd 디먼은 Linux Syslog API를 사용하여 보낸 로그 메시지를 사용, 저장 및 라우팅합니다. Azure Monitor 에이전트는 rsyslog의 TCP 전달 출력 모듈(omfwd)을 사용하여 로그 메시지를 전달합니다.

Azure Monitor 에이전트 설치에는 /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/에 있는 기본 구성 파일이 포함되어 있습니다. Syslog가 DCR에 추가되면 이 구성은 etc/rsyslog.d 시스템 디렉터리에 설치되고 변경 내용이 적용되도록 rsyslog가 자동으로 다시 시작됩니다.

참고 항목

rsyslog 기반 시스템에서 Azure Monitor Linux 에이전트는 rsyslog 구성에 정의된 기본 규칙 집합에 전달 규칙을 추가합니다. 여러 규칙 집합이 사용되는 경우 기본이 아닌 규칙 집합에 바인딩된 입력은 Azure Monitor 에이전트로 전달되지 않습니다. rsyslog의 여러 규칙 집합에 대한 자세한 내용은 공식 설명서를 참조하세요.

다음은 모든 로그 수준의 모든 시설에 대해 로컬 에이전트에서 전송된 Syslog 메시지를 수집하는 기본 구성입니다.

$ 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"
queue.maxDiskSpace="1g"
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")

SELinux를 사용하고 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

일부 레거시 시스템에서는 Syslog 이벤트를 Azure Monitor 에이전트로 보내는 데 레거시 전달 서식을 사용할 때 rsyslog 로그 서식 문제가 나타날 수 있습니다. 이러한 시스템의 경우 Azure Monitor 에이전트는 레거시 전달자 템플릿을 자동으로 배치합니다.

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

Syslog-ng

Azure Monitor 에이전트 설치에는 /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf에 있는 기본 구성 파일이 포함되어 있습니다. Syslog가 DCR에 추가되면 이 구성은 /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf 시스템 디렉터리에 설치되고 변경 내용이 적용되도록 syslog-ng가 자동으로 다시 시작됩니다.

기본 내용은 다음 예제에 나와 있습니다. 이 예제는 모든 기능 및 모든 심각도에 대해 로컬 에이전트에서 전송된 Syslog 메시지를 수집합니다.

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

SELinux를 사용하고 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);
}; 

참고 항목

Azure Monitor는 rsyslog 또는 syslog-ng에서 보낸 메시지의 컬렉션을 지원합니다. 여기서 rsyslog는 기본 디먼입니다. Red Hat Enterprise Linux 버전 5 및 Oracle Linux 버전(sysklog)에서는 Syslog 이벤트 수집을 위한 기본 Syslog 디먼이 지원되지 않습니다. 이 배포의 해당 버전에서 Syslog 데이터를 수집하려면 rsyslog 디먼을 설치하고 sysklog를 대체하도록 구성해야 합니다.

Syslog 구성을 편집하는 경우, 변경 내용을 적용하려면 Syslog 디먼을 다시 시작해야 합니다.

지원 시설

Syslog 수집기에서 지원되는 기능은 다음과 같습니다.

Pri 인덱스 Pri 이름
0 없음
1 Kern
2 user
3 mail
4 daemon
4 auth
5 syslog
6 lpr
7 news
8 uucp
9 ftp
10 ntp
11 audit
12 경고
13 mark
14 local0
15 local1
16 local2
17 local3
18 local4
19 local5
20 local6
21 local7

Syslog 레코드 속성

Syslog 레코드는 Syslog 형식이며, 다음 표의 속성이 있습니다.

속성 설명
컴퓨터 이벤트가 수집된 컴퓨터입니다.
시설 메시지를 생성한 시스템의 부분을 정의합니다.
HostIP 메시지를 보내는 시스템의 IP 주소입니다.
HostName 메시지를 보내는 시스템의 이름입니다.
SeverityLevel 이벤트의 심각도 수준입니다.
SyslogMessage 메시지의 텍스트입니다.
ProcessID 메시지를 생성한 프로세스의 ID입니다.
EventTime 이벤트가 생성된 날짜 및 시간입니다.

샘플 Syslog 로그 쿼리

다음 표에는 Syslog 레코드를 검색하는 로그 쿼리의 여러 예제가 나와 있습니다.

  • 모든 Syslog

      Syslog
    
  • 심각도가 오류인 모든 Syslog 레코드

      Syslog
      | where SeverityLevel == "error"
    
  • 인증 기능 유형이 있는 모든 Syslog 레코드

      Syslog
      | where facility == "auth"
    
  • 기능별 Syslog 레코드 수

      Syslog
      | summarize AggregatedValue = count() by facility
    

문제 해결

예상한 JSON 로그에서 데이터를 수집하지 않는 경우 다음 단계를 수행합니다.

  • 데이터가 Syslog에 기록되고 있는지 확인합니다.
  • 에이전트가 작동 중이고 데이터가 수신되고 있는지 확인하려면 작동 확인을 참조하세요.

다음 단계

자세히 알아보기: