웹사이트 검색

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


이 페이지에서

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

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

Rsyslog는 로그 처리를 위한 강력하고 안전한 시스템입니다. Rsyslog 서버는 여러 물리적 또는 가상화 서버에서 네트워크를 통해 로그를 수신하고 다양한 서비스의 상태를 모니터링합니다. Rsyslog 서버를 사용하면 중앙 위치에서 다른 서버, 네트워크 장치 및 원격 애플리케이션에 대한 로그를 모니터링할 수 있습니다.

이 튜토리얼에서는 Ubuntu 18.04 서버에서 Rsyslog 서버를 구성하는 방법을 설명합니다.

전제 조건

  • Ubuntu 18.04를 실행하는 두 개의 서버.\n
  • 정적 IP 주소 192.168.0.101은 Rsyslog 서버 시스템에 구성되고 192.168.0.102는 Rsyslog 클라이언트 시스템에 구성됩니다.
  • 루트 암호는 두 서버 모두에서 구성됩니다.\n

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 클라이언트를 구성하는 방법도 배웠습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.