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

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 계획을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

Syslog는 Linux에 공통되는 이벤트 로깅 프로토콜입니다. Linux 디바이스 및 어플라이언스에 기본 제공되는 Syslog 디먼을 사용하여 지정한 형식의 로컬 이벤트를 수집할 수 있습니다. 그런 다음, 해당 이벤트를 Log Analytics 작업 영역으로 보내도록 할 수 있습니다. 애플리케이션은 로컬 컴퓨터에 저장되거나 Syslog 수집기에 배달될 수 있는 메시지를 전송합니다.

Linux용 Azure Monitor 에이전트가 설치되면 DCR(데이터 수집 규칙)에서 Syslog 컬렉션이 사용하도록 설정된 경우 에이전트에 메시지를 전달하도록 로컬 Syslog 디먼을 구성합니다. 그런 다음, Azure Monitor 에이전트는 해당 Syslog 레코드가 Syslog 테이블에 만들어지는 Azure Monitor 또는 Log Analytics 작업 영역으로 메시지를 보냅니다.

Syslog 컬렉션을 보여 주는 다이어그램

Syslog 디먼과 Azure Monitor 에이전트 통신을 보여 주는 다이어그램.

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

  • None
  • Kern
  • 사용자
  • mail
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • ftp
  • ntp
  • audit
  • 경고
  • mark
  • local0
  • local1
  • local2
  • local3
  • local4
  • local5
  • local6
  • local7

Azure Monitor 에이전트의 로컬 설치를 허용하지 않는 디바이스 유형의 경우 에이전트를 전용 Linux 기반 로그 전달자에 설치할 수 있습니다. 원래 디바이스는 Syslog 이벤트를 로컬 디먼이 아닌 이 전달자의 Syslog 디먼으로 전송하도록 구성되어야 합니다. 자세한 내용은 Sentinel 자습서를 참조하세요.

Syslog 구성

Linux용 Azure Monitor 에이전트는 해당 구성에 지정된 기능 및 심각도를 사용하여 이벤트만 수집합니다. Azure Portal을 통해 또는 Linux 에이전트의 구성 파일을 관리하여 Syslog를 구성할 수 있습니다.

Azure Portal에서 Syslog 구성

Azure Monitor의 데이터 수집 규칙 메뉴에서 Syslog를 구성합니다. 이 구성은 각 Linux 에이전트의 구성 파일에 전달됩니다.

  1. 데이터 원본 추가를 선택합니다.
  2. 데이터 원본 유형으로 Linux syslog를 선택합니다.

각 시설에 대해 서로 다른 로그 수준으로 Syslog 이벤트를 수집할 수 있습니다. 기본적으로 모든 Syslog 시설 형식이 수집됩니다. 예를 들어 auth 형식의 이벤트를 수집하지 않으려면 auth 기능에 대한 최소 로그 수준 목록 상자에서 NONE을 선택하고 변경 내용을 저장합니다. Syslog 이벤트에 대한 기본 로그 수준을 변경하고 로그 수준이 NOTICE 또는 더 높은 우선 순위로 시작하는 이벤트만 수집해야 하는 경우 최소 로그 수준 목록 상자에서 LOG_NOTICE를 선택합니다.

기본적으로 모든 구성 변경 내용은 DCR에 구성된 모든 에이전트에 자동 푸시됩니다.

데이터 수집 규칙을 만듭니다.

Log Analytics 작업 영역과 동일한 지역에서 데이터 수집 규칙을 만듭니다. DCR은 작업 영역에 수집될 때 데이터를 처리하는 방법을 정의할 수 있는 Azure 리소스입니다.

  1. Azure Portal에 로그인합니다.

  2. 모니터를 검색하여 엽니다.

  3. 설정에서 데이터 수집 규칙을 선택합니다.

  4. 만들기를 선택합니다.

    만들기 옵션이 선택된 데이터 수집 규칙 창을 보여 주는 스크린샷.

리소스 추가

  1. 리소스 추가를 선택합니다.

  2. 필터를 사용하여 로그를 수집하는 데 사용할 가상 머신을 찾습니다.

    데이터 수집 규칙의 범위를 선택하는 페이지를 보여 주는 스크린샷.

  3. 가상 머신을 선택합니다.

  4. 적용을 선택합니다.

  5. 다음: 수집 및 제공을 선택합니다.

‘데이터 원본 추가’

  1. 데이터 원본 추가를 선택합니다.

  2. 데이터 원본 유형으로 Linux syslog를 선택합니다.

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

  3. 최소 로그 수준의 경우 기본값인 LOG_DEBUG를 그대로 둡니다.

  4. 다음: 대상을 선택합니다.

대상 추가

  1. 대상 추가를 선택합니다.

    대상 추가 옵션이 선택된 대상 탭을 보여 주는 스크린샷.

  2. 다음 값을 입력합니다.

    필드
    대상 형식 Azure Monitor 로그
    구독 적절한 구독을 선택합니다.
    계정 또는 네임스페이스 적절한 Log Analytics 작업 영역 선택
  3. 데이터 원본 추가를 선택합니다.

  4. 완료되면 다음: 리뷰 + 만들기를 클릭합니다.

규칙 생성

  1. 만들기를 실행합니다.
  2. 다음 섹션으로 넘어가기 전에 20분 정도 기다립니다.

VM에 Azure Monitor 에이전트가 설치되어 있지 않으면 DCR 배포는 VM에 에이전트 설치를 트리거합니다.

Linux 에이전트에서 Syslog 구성

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

Rsyslog

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

Azure Monitor 에이전트 설치에는 /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/ 디렉터리 아래에 배치되는 기본 구성 파일이 포함됩니다.

Syslog가 DCR에 추가되면 이러한 구성 파일이 etc/rsyslog.d 시스템 디렉터리 아래에 설치되고 변경 내용이 적용되도록 rsyslog가 자동으로 다시 시작됩니다. 이러한 파일은 rsyslog에서 출력 모듈을 로드하고 정의된 규칙을 사용하여 이벤트를 Azure Monitor 에이전트 디먼으로 전달하는 데 사용됩니다.

기본 내용은 다음 예제에 나와 있습니다. 이 예제는 모든 로그 수준의 모든 기능에 대해 로컬 에이전트에서 전송된 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"
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")

CentOS 7.3과 같은 일부 레거시 시스템에서는 기존 전달 형식을 사용하여 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

syslog-ng의 구성 파일은 /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);
};

참고 항목

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

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

필수 조건

다음 작업을 수행해야 합니다.

Syslog 레코드 속성

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

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

Syslog 레코드를 포함하는 로그 쿼리

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

쿼리 설명
syslog 모든 Syslog
Syslog | where SeverityLevel == "error" 심각도가 오류인 모든 Syslog 레코드
Syslog | where Facility == "auth" 인증 기능 유형이 있는 모든 Syslog 레코드
Syslog | summarize AggregatedValue = count() by Facility 기능별 Syslog 레코드 수

다음 단계

자세히 알아보기: