Syslog란 무엇인가? | rsyslog.conf 설정

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

Syslog는 원래 Sendmail의 일부로 개발되었으며, 이후 로그 관리의 편리함이 인식되면서 독립적인 표준으로 발전하게 되었습니다. System Logging의 약자로, 로그를 기록하고 관리하는 표준 서비스 또는 프로토콜을 의미합니다. 메일 서버, FTP 서버 등 다양한 프로그램이 생성하는 메시지를 중앙에서 수집하여 로그 파일로 저장하고, 이를 분석할 수 있도록 지원합니다.

시스템을 효율적으로 모니터링하고, 잠재적인 문제를 신속하게 식별 및 해결하며, 시스템이 최적의 상태를 유지하도록 지원합니다.

✅ Syslog 정의

Syslog는 소프트웨어 애플리케이션과 시스템이 중앙 로그 관리 시스템이나 로그 파일로 로그 메시지를 전송할 수 있도록 하는 컴퓨터 데이터 로깅 표준입니다. 이러한 로그 메시지에는 시스템 활동, 보안 이벤트, 애플리케이션 오류 등이 포함될 수 있습니다. 로그의 생성과 관리를 하는 데몬이라 정의할 수 있습니다.

Syslog 시스템은 다음과 같은 주요 구성 요소로 이루어져 있습니다.

  1. Syslog 발신자(클라이언트): 로그 메시지를 생성하여 Syslog 서버로 전송하는 애플리케이션이나 시스템 구성 요소입니다.
  2. Syslog 수신자(서버): 여러 발신자로부터 로그 메시지를 수신하고 저장하는 중앙 집중식 로그 관리 시스템입니다.
  3. Syslog 프로토콜: 발신자와 수신자 간에 전송되는 로그 메시지의 형식과 구조를 정의하는 규약입니다.

Syslog는 컴퓨터 시스템의 관리, 보안 알림은 물론, 일반 정보, 분석, 디버깅 메시지 등을 제공합니다. 또한 프린터, 라우터와 같은 다양한 장비 뿐만 아니라 여러 플랫폼을 지원합니다. 이러한 특성 덕분에 Syslog는 다양한 시스템에서 생성된 로그 데이터를 중앙 저장소에 수집하고 관리하는 데 널리 사용됩니다.

✅ Syslog 기본 기능과 데몬

Syslog의 기본 기능 중 첫 번쨰는 로그를 쓰고 출력하는 기능입니다. Syslog의 기본 기능 중 첫 번째는 로그를 쓰고 출력하는 기능입니다. 샌드 메일이나 FTP 서버의 로그 정보를 로그 파일로 쓰는 흐름을 단순하게 다음과 같은 순서로 생각할 수 있습니다.

syslog 흐름도 예시(Rsyslog.conf에서 관리)

두 번째로 로그 수집 및 관리 기능이 있습니다. 여러 서버의 로그를 하나의 서버로 로그를 수집하여 관리하는 것입니다. 애플리케이션 서버에서 만들어진 Syslog가 로그 서버로 전송되어 Syslog로 변경되어 로그 파일로 저장되는 것입니다.

애플리케이션 서버: Syslog 생성 
로그 정보 전송  
로그 서버: Syslog를 로그 파일로 저장

현재는 syslog 앱을 사용하지 않고 Syslog-ng(syslog New Generation) 또는 Rsyslog(Rocket Fast System for Log processing) 데몬을 사용하고 있습니다. Syslog-ng는 고급 기능을 제공하고, 복잡한 필터링이나 로그 포워딩이 필요한 환경에서 유리하며, Rsyslog는 기본적인 설정으로도 충분히 강력한 성능을 제공하며, 간단하고 빠른 설정을 원할 때 유리합니다.

Syslog-ng 및 Rsyslog 데몬의 특징은

  1. 로그 분류 기능
    • 로그를 다양한 기준으로 분류하고 필터링하여 효율적으로 관리합니다.
  2. TCP 기반 로그 송수신
    • TCP를 이용해 로그 정보를 송수신하여 로그 정보 손실을 방지합니다.
  3. SSL/TLS 암호화 지원
    • 네트워크를 통한 로그 전송 시 SSL/TLS를 사용하여 안전한 로그 전송을 보장합니다.
  4. 데이터베이스 로그 출력
    • 로그를 데이터베이스로 출력하여 장기적인 보관 및 분석을 용이하게 합니다.

✅ Rsyslog 설정 파일

514번 포트를 사용하며 TCP와 UDT로 전송이 가능하며, /etc/rsyslog.conf 파일에서 설정을 담당합니다.

어느 서비스상황에 따라 어디로 로그를 보내는지를 설정할 수 있습니다.

rsyslog.conf 설정 방법

1. facility: 서비스 유형

facility는 로그 메시지를 발생시키는 프로그램 또는 서비스의 유형을 나타냅니다. 즉, 로그가 어떤 소스에서 발생했는지, 예를 들어 시스템, 애플리케이션, 데몬 등의 종류를 구분하는 역할을 합니다. *를 설정해서 메시지가 오는 경로를 설정할 수 있습니다.

Facility 코드

설명

auth

인증 시스템 (login, su 등)

authpriv

프라이빗 인증 시스템

cron

크론 작업 관리 시스템

daemon

각종 데몬

kern

커널

lpr

프린터

mail

메일 시스템

syslog

syslog 기능

local0 ~ local7

사용자 정의 설정

2. priority: 메시지의 우선 순위

로그 메시지의 위험 상황에 따른 위험도우선 순위로 지정합니다. *를 사용해서 모든 우선순위를 선택할 수도 있습니다.

구분

설명

emerg

위급적인 상태

alert

급한 대응이 필요함

crit

위험한 상태

err

일반적인 에러

warning

시스템으로부터의 경고

notice

시스템으로부터의 중요한 통지

info

시스템으로부터의 정보

debug

디버그 정보

none

priority를 무시(제외)

3. action: 로그 저장 위치

로그 발생 프로그램과 우선순위에 대해 어떻게 처리할지에 대한 액션을 설정합니다. *를 사용해서 모든 유저가 확인할 수 있게 설정할 수 있습니다.

action

설명

*

현재 로그인한 모든 사용자에게 메시지를 보냅니다.

host

지정된 호스트(서버)로 메시지를 보냅니다.

user

지정된 사용자에게 메시지를 보냅니다.

file

특정 파일에 메시지를 기록합니다.

4. rsyslog.conf 설정 예시

/etc/rsyslog.conf
#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.

# 설정 후 # 
systemctl restart rsyslog

예를 들어 /var/log/messages 설정은 모든 info 레벨의 메시지를 저장하고 그중에 mail, authpriv, cron은 제외한다는 내용입니다.

facility.priority;  action
설명

facility.priority; action
*.info;
mail.none;
mail이 facility, none이 priority임을 알 수 있습니다.
당연히 /var/log/messages가 action에 해당합니다.

◻️ 수신 활성화

각각의 UDP와 TCP의 주석 해제를 통해 수신 활성화를 할 수 있습니다.

# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")

◻️ 발신 활성화

# ### sample forwarding rule ###
#action(type="omfwd"
# # An on-disk queue is created for this action. If the remote host is
# # down, messages are spooled to disk and sent when it is up again.
#queue.filename="fwdRule1"       # unique name prefix for spool files
#queue.maxdiskspace="1g"         # 1gb space limit (use as much as possible)
#queue.saveonshutdown="on"       # save messages to disk on shutdown
#queue.type="LinkedList"         # run asynchronously
#action.resumeRetryCount="-1"    # infinite retries if host is down
# # Remote Logging (we use TCP for reliable delivery)
# # remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514
#Target="remote_host" Port="XXX" Protocol="tcp")

*.*     @@192.168.1.100:514  # TCP 프로토콜을 사용하여 192.168.1.100의 514 포트로 로그 전송
  • *.* facility.severity 을 의미함
  • @ 한 개: UDP 프로토콜 사용
  • @@ 두 개: TCP 프로토콜 사용

✅ Syslog의 Facility, Severity 코드

FacilitySeverity 코드는 로그 메시지 안에 출력되는 결과로 포함됩니다. 이 두 코드는 로그 메시지를 효과적으로 분류하고 관리할 수 있도록 도와주는 중요한 요소입니다.

Facility는 로그가 발생한 프로그램이나 서비스를 나타내며, 예를 들어, 시스템 로그, 메일 시스템, 인증 시스템 등의 출처를 구분합니다.

Severity는 해당 로그 메시지의 중요도나 긴급성을 나타내며, 예를 들어, 경고, 오류, 정보 등으로 메시지의 중요도를 구별합니다.

따라서, 로그 메시지에는 FacilitySeverity 정보가 포함되어, 이를 바탕으로 로그를 분석하고 필요한 작업을 신속하게 처리할 수 있습니다.

1. syslog Facility 코드

2. Syslog Severity 코드

심각도는 7번 높은 순서부터 숫자가 낮아질수록 더 높은 우선순위와 중요한 메시지를 알리게 되어 있습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • bash: 셸 따옴표 및 셸 쌍따옴표

    bash 및 셸 프로그램에서 명령어를 치환하는데 ‘$’ 기호와 소괄호'()’를 사용하는 대신 따옴표 기호도 사용합니다. 치환은 수식의 어떤 부분에 그와 대등한 무언가로 바꿔 넣는 행위입니다. ‘셸 따옴표’와 ‘셸 쌍따옴표’의 기본 공통 사항은 확장을 제어하는데 활용된다는 것입니다. 여기에서 차이점은 셸 따옴표는 모든 확장을 제어하지만 셸 쌍따옴표는 3개의 기호를 제외하게 됩니다. 셸 쌍따옴표 제외 기호: $…

  • 리눅스 blkid 명령어 | UUID와 GUID 차이

    리눅스 blkid 명령어는 블록 디바이스의 파일 시스템 유형 or 속성을 출력하는 명령어입니다. 주 목적은 리눅스 서버를 다시 시작하는 경우 /etc/fstab 파일에 자동 마운트 정보를 설정할 때 UUID를 확인하기 위해 사용되는 명령어입니다. ✅ blkid 명령어 사용 예시 명령어만 입력했을 경우 전체 파티션의 UUID를 확인할 수 있습니다. ✅ UUID와 GUID 차이 리눅스에서 파티션 작업에 대해…

  • 리눅스와 유닉스 차이점 9가지

    리눅스를 사용하는 사람이라면 리눅스와 유닉스 차이는 무엇인지 궁금점이 한번 씩 생기게 됩니다. 간단하게 차이점을 요약하자면, 리눅스는 유닉스의 오픈 소스 구현체로, 유닉스와 유사한 운영 체제를 제공하면서도 커뮤니티 기반의 개방적인 환경을 가지고 있습니다. 둘 다 안정적이고 다목적으로 사용되는 운영 체제이지만, 유닉스는 상용 운영 체제의 역사적인 뿌리를 가지고 있고, 리눅스는 개방성과 다양성 측면에서 강점을 가지고 있습니다….

  • 리눅스 Rsync 명령어

    Rsync (Remote Sync) 는 네트워크를 통해 파일과 디렉터리를 효율적으로 동기화하는 백업 방식입니다. 전체 데이터를 매번 복사하는 대신 변경된 부분만 증분 방식으로 전송하여 빠르고 안정적인 동기화를 지원합니다. 또한 다양한 옵션을 통해 압축, 암호화, 권한 유지, 삭제 동기화 등 세밀한 제어가 가능하며, 백업과 서버 간 데이터 전송에 널리 사용됩니다. 특히 네트워크 대역폭을 절약하고, 재 전송…

  • 리눅스 killall 명령어: 설치, 사용 방법과 옵션

    리눅스 killall 명령어는 특정 프로세스를 한번에 종료 시키는 명령어입니다. kill과 killall은 단순 종료가 아닌 프로세스에 지정한 시그널(Signal)을 보내는 명령어로 시그널에서 액션이 종료일 때 프로세스가 종료됩니다. ✅ 리눅스 killall 명령어 설치 대부분의 유닉스 시스템에서는 killall 명령어가 설치되어 있지만 설치되어 있지 않은 경우 psmisc 패키지를 설치해서 사용할 수 있습니다. ✅ killall 명령어 사용 방법 보통…

  • [Linux] 쉘(Shell)과 커널&쉘 스크립트 및 프롬프트

    리눅스에 대해 공부하면서 터미널 창에서 명령어를 입력해서 관리를 하지만 시스템 자체에 대한 공부가 리눅스 서버를 운영하는데 많은 도움이 되기 때문에 기초와 개념에 대해 알아야 할 필요성을 가지게 되었습니다. 리눅스 쉘(Shell)과 쉘 스크립트(Shell Script) 그리고 프롬프트(Prompt)의 기본 개념에 대해 알아 보겠습니다. ✅ 쉘(Shell)이란? Shell은 껍데기, 주변이라는 뜻을 가지고 있으며, 키보드로 입력한 리눅스 명령어를 운영…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 5   +   7   =