Ubuntu 18.04 LTS에서 Rsyslog 서버를 설정하는 방법


이 페이지에서

  1. 전제 조건
  2. Rsyslog 설치
  3. Rsyslog 서버 구성
  4. Rsyslog 클라이언트 구성
  5. 클라이언트 로그 보기
  6. 결론

로그는 Linux의 시스템 및 애플리케이션과 관련된 문제를 분석하고 해결하는 데 매우 유용합니다. 기본적으로 모든 로그 파일은 Linux 기반 운영 체제의 /var/log 디렉토리에 있습니다. cron, kernel, users, security 등 여러 유형의 로그 파일이 있으며 이러한 파일의 대부분은 Rsyslog 서비스에서 제어합니다.

기본적으로 Rsyslog는 Ubuntu 18.04 서버에 설치됩니다. 설치되어 있지 않은 경우 다음 명령을 실행하여 설치할 수 있습니다.

apt-get install rsyslog -y

Rsyslog를 설치한 후 다음 명령을 사용하여 Rsyslog의 버전을 확인할 수 있습니다.

rsyslogd -v

다음 출력이 표시되어야 합니다.

rsyslogd 8.32.0, compiled with:
	PLATFORM:				x86_64-pc-linux-gnu
	PLATFORM (lsb_release -d):		
	FEATURE_REGEXP:				Yes
	GSSAPI Kerberos 5 support:		Yes
	FEATURE_DEBUG (debug build, slow code):	No
	32bit Atomic operations supported:	Yes
	64bit Atomic operations supported:	Yes
	memory allocator:			system default
	Runtime Instrumentation (slow code):	No
	uuid support:				Yes
	systemd support:			Yes
	Number of Bits in RainerScript integers: 64

See http://www.rsyslog.com for more information.

다음 명령을 사용하여 Rsyslog의 상태를 확인할 수도 있습니다.

systemctl status rsyslog

다음 출력이 표시되어야 합니다.

? rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-22 04:28:55 UTC; 1min 31s ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 724 (rsyslogd)
    Tasks: 4 (limit: 1114)
   CGroup: /system.slice/rsyslog.service
           ??724 /usr/sbin/rsyslogd -n

Oct 22 04:28:53 ubuntu1804 systemd[1]: Starting System Logging Service...
Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.32.0]
Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: rsyslogd's groupid changed to 106
Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: rsyslogd's userid changed to 102
Oct 22 04:28:54 ubuntu1804 rsyslogd[724]:  [origin software="rsyslogd" swVersion="8.32.0" x-pid="724" x-info="http://www.rsyslog.com"] start
Oct 22 04:28:55 ubuntu1804 systemd[1]: Started System Logging Service.

Rsyslog 서버 구성

이제 Rsyslog가 설치되어 실행 중입니다. 다음으로 서버 모드에서 실행되도록 구성해야 합니다. /etc/rsyslog.conf 파일을 편집하여 이를 수행할 수 있습니다.

nano /etc/rsyslog.conf

먼저 프로토콜을 UDP나 TCP 또는 둘 다로 정의해야 합니다.

UDP와 TCP 연결을 동시에 사용하려면 아래 행을 검색하고 주석 처리를 제거하십시오.

$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

그런 다음 아래와 같이 특정 서브넷, IP 또는 도메인을 정의하여 액세스를 제한합니다.

$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.example.com
$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.example.com

다음으로 수신 syslog 메시지를 저장하는 방법을 Rsyslog 서버에 알려주는 템플릿을 만들어야 합니다. GLOBAL DIRECTIVES 섹션 바로 앞에 다음 줄을 추가합니다.

$template remote-incoming-logs, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?remote-incoming-logs

완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 구문 오류에 대한 Rsyslog 구성을 확인합니다.

rsyslogd -f /etc/rsyslog.conf -N1

다음 출력이 표시되어야 합니다.

rsyslogd: version 8.32.0, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

마지막으로 다음 명령을 사용하여 Rsyslog 서비스를 다시 시작합니다.

systemctl restart rsyslog

이제 다음 명령을 사용하여 Rsyslog가 TCP/UDP에서 수신 대기하는지 확인합니다.

netstat -4altunp | grep 514

다음 출력이 표시되어야 합니다.

tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      1332/rsyslogd       
udp        0      0 0.0.0.0:514             0.0.0.0:*                           1332/rsyslogd       

Rsyslog 클라이언트 구성

Rsyslog 서버는 원격 호스트에서 로그를 수신하도록 설치 및 구성됩니다.

이제 syslog 메시지를 원격 Rsyslog 서버로 보내도록 Rsyslog 클라이언트를 구성해야 합니다.

클라이언트 시스템에 로그인하고 아래와 같이 Rsyslog 구성 파일을 엽니다.

nano /etc/rsyslog.conf

파일 끝에 다음 줄을 추가합니다.

##Enable sending of logs over UDP add the following line:

*.* @192.168.0.101:514


##Enable sending of logs over TCP add the following line:

*.* @@192.168.0.101:514

##Set disk queue when rsyslog server will be down:

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

파일을 저장하고 닫습니다. 그런 다음 Rsyslog 서버를 다시 시작하여 구성 변경 사항을 적용합니다.

systemtcl restart rsyslog

클라이언트 로그 보기

이 시점에서 Rsyslog 클라이언트는 로그를 Rsyslog 서버로 보내도록 구성됩니다.

이제 Rsyslog 서버에 로그인하고 /var/log 디렉토리를 확인하십시오. 여러 로그 파일을 포함하여 클라이언트 시스템의 호스트 이름이 포함된 항목이 표시되어야 합니다.

ls /var/log/rsyslog-client/

산출:

CRON.log  kernel.log  rsyslogd-2039.log  rsyslogd.log  sudo.log  wpa_supplicant.log

결론

위 글에서는 우분투 18.04 서버에 Rsyslog 서버를 설치하고 설정하는 방법을 알아보았습니다. 또한 로그를 Rsyslog 서버로 보내도록 Rsyslog 클라이언트를 구성하는 방법도 배웠습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.