본문 바로가기

리눅스

우분투에서 rsyslog를 사용하여 로그를 원격으로 전송하는 방법

728x90

우분투에서 rsyslog를 사용하여 로그를 원격으로 전송하는 방법

rsyslog 패키지 설치

sudo apt-get update
sudo apt-get install -y rsyslog

원격 rsyslog 서버 구성(받는 서버)

원격 rsyslog 서버를 설정해야 합니다. 이 서버는 원격 로그를 수신하고 저장할 것입니다.

 

1. 원격 rsyslog 서버에서 rsyslog 설정

  • /etc/rsyslog.conf 파일을 열고 다음 줄을 추가하여 UDP 또는 TCP 포트를 설정합니다. 로그를 수신할 포트를 지정합니다.
vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

# Forward all messages to remote syslog server
*.* @remote_syslog_server_ip_address:port
*.* @@remote_syslog_server_ip_address:port
  • @(Single @) : UDP(사용자 데이터그램 프로토콜)를 사용하여 로그를 전송
  • @@(Double @@) : TCP(전송 제어 프로토콜)를 사용하여 로그를 안정적으로 전송

2. rsyslog 서비스 재시작

sudo systemctl restart rsyslog

3. rsyslog 서비스 포트 확인

$ netstat -an | grep 0.0.0.0:514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:514             0.0.0.0:*

로컬 시스템 rsyslog 설정(보내는 서버)

로컬 시스템에서 rsyslog를 구성하여 로그를 원격 rsyslog 서버로 전송합니다.

 

1-1. 로컬 시스템에서 rsyslog 설정

  • /etc/rsyslog.conf 파일을 열고 원격 rsyslog 서버의 IP 주소와 포트 번호를 설정합니다.
sudo vim /etc/rsyslog.conf
*.* @원격_rsyslog_서버_IP:514

1-2. rsyslog 서비스 재시작

sudo systemctl restart rsyslog

 

2-1. logger 명령어를 사용하여 간단한 로그를 생성하고 로깅 시스템에 메시지를 전송합니다.

logger -t rsyslogd rsyslog-test-message

원격 rsyslog 서버에서 syslog 로그 확인

  • 원격 rsyslog 서버에서 로그 메시지를 확인합니다.
tail -f /var/log/syslog
$ tail -f /var/log/syslog
Feb 18 22:00:55 rsyslog-01 rsyslogd: rsyslog-test-message
728x90

logger 사용법

logger 명령어는 리눅스 및 Unix 기반 시스템에서 로그 메시지를 생성하여 시스템 로그 파일에 기록하는 데 사용되는 유틸리티입니다. 이 도구를 사용하여 사용자, 스크립트 또는 명령어로 로그 메시지를 생성하고 로그 파일에 기록할 수 있습니다.

 

기본 구문

logger [옵션] [메시지]
  • 옵션 : logger 명령어의 옵션을 설정할 수 있으며, 아래에서 설명하겠습니다.
  • 메시지 : 로그에 기록할 텍스트 메시지입니다.

주요 옵션

  • -p <priority> : 로그 메시지의 우선순위를 지정합니다. 가능한 값은 emerg, alert, crit, err, warning, notice, info, debug입니다. 우선순위는 syslog 데몬 설정에 따라 처리됩니다.
  • -t <tag> : 로그 메시지에 추가될 태그를 지정합니다.
  • -f <file> : 로그 메시지를 파일에서 읽어옵니다.
  • -i: 메시지가 표준 입력에서 읽어오는 경우 사용합니다.
  • -s: 메시지가 로그에 기록되었을 때 성공적으로 기록되었다는 메시지를 출력합니다.
  • -u: UDP를 사용하여 로그 메시지를 원격 호스트로 전송합니다. -h 옵션으로 원격 호스트를 지정하고 -P 옵션으로 포트 번호를 지정합니다.

사용 예시

1. 간단한 메시지 로깅

  • 기본 로그 레벨은 user.notice이며 로컬 시스템의 기본 로그로 기록됩니다.
logger "이것은 로그 메시지입니다."

 

2. 태그와 우선순위 설정

  • "myscript" 태그가 붙은 로그 메시지를 user.info 로그 레벨로 로깅합니다.
logger -t myscript -p user.info "스크립트 실행이 시작되었습니다."
  • 원격 서버의 IP 주소로 TCP 포트 514를 사용하여 로그 메시지를 전송합니다. "rsyslogd" 태그가 붙은 메시지를 로깅합니다.
logger -n remote_server_ip -P 514 -t rsyslogd "rsyslog-test-message"

 

3. 파일에서 로그 메시지 읽기

  • 지정된 파일(/path/to/logfile.txt)에서 로그 메시지를 읽어 로깅합니다. 파일에는 로그 메시지가 포함되어야 합니다.
logger -f /path/to/logfile.txt

 

4. "Hello World"라는 메시지를 info 우선순위로 로그에 기록

  • "info" 로그 레벨로 "Hello World"라는 메시지를 로깅합니다. 로컬 시스템의 기본 로그로 기록됩니다.
logger -p info "Hello World"

 

5. 스크립트에서 logger 사용

  • 이 스크립트는 지정된 메시지를 logger를 사용하여 로그 파일에 기록합니다.
#!/bin/bash
MESSAGE="스크립트가 실행되었습니다."
logger -t myscript -p user.info "$MESSAGE"

 

logger 명령어는 시스템 로깅 및 디버깅 작업에 유용하며, 사용자 지정 스크립트 및 작업에서 로그 메시지를 생성하고 기록하는 데 활용할 수 있습니다.

 

728x90