웹사이트 검색

CentOS/RHEL 8에서 Rsyslog를 사용하여 중앙 집중식 로그 서버 설정


시스템 관리자가 CentOS 8 또는 RHEL 8 서버의 문제를 인식하거나 분석하려면 서버에서 발생한 이벤트를 실시간으로 알고 보는 것이 중요합니다. 시스템의 디렉터리 /var/log에 있는 로그 파일의 특정 기간입니다.

서버의 Syslog(시스템 로깅 프로토콜) 시스템은 모든 서버, 네트워크 장치, 스위치, 라우터 및 내부 서비스가 있는 네트워크에서 중앙 로그 모니터링 지점 역할을 할 수 있습니다. 특정 내부 문제와 관련된 로그를 생성하거나 정보 제공 메시지만 로그를 보낼 수 있습니다.

CentOS/RHEL 8 서버에서 Rsyslog 데몬은 기본적으로 사전 설치되어 제공되는 가장 중요한 로그 서버이며, Systemd Journal Daemon(< Strong>저널).

Rsyslog는 클라이언트/서버 아키텍처 서비스로 개발된 오픈 소스 유틸리티이며 두 역할을 독립적으로 수행할 수 있습니다. 서버로 실행되어 네트워크를 통해 다른 장치에서 전송된 모든 로그를 수집하거나 원격 Syslog 서버에 기록된 모든 내부 시스템 이벤트를 전송하여 클라이언트로 실행될 수 있습니다.

요구사항

  1. 스크린샷과 함께 “CentOS 8.0” 설치
  2. 스크린샷을 사용하여 RHEL 8 설치

CentOS/RHEL 8 서버에 중앙 집중식 로그 서버를 설정하려면 /var 파티션에 충분한 공간(최소 몇 GB)이 있는지 확인해야 합니다. ) 네트워크의 다른 장치에서 보내는 시스템에 기록된 모든 로그 파일을 저장합니다. /var/log/ 디렉터리를 마운트하려면 별도의 드라이브(LVM 또는 RAID)를 사용하는 것이 좋습니다.

CentOS/RHEL 8에서 Rsyslog 서버를 구성하는 방법

1. 앞서 말했듯 Rsyslog 서비스는 CentOS/RHEL 8 서버에 자동으로 설치되어 실행됩니다. 데몬이 시스템에서 실행되고 있는지 확인하려면 다음 명령을 실행하십시오.

systemctl status rsyslog.service

서비스가 기본적으로 실행되지 않는 경우 다음 명령을 실행하여 rsyslog 데몬을 시작합니다.

systemctl start rsyslog.service

2. 중앙 로깅 서버로 사용하려는 시스템에 Rsyslog 유틸리티가 기본적으로 설치되어 있지 않은 경우 다음 dnf 명령을 실행하여 rsyslog 패키지를 설치하고 데몬을 시작하십시오.


dnf install rsyslog
systemctl start rsyslog.service

3. Rsyslog 유틸리티가 설치되면 이제 기본 구성 파일 /etc/rsyslog.conf를 열어 rsyslog를 중앙 집중식 로깅 서버로 구성할 수 있습니다. , 외부 클라이언트에 대한 로그 메시지를 수신하기 위해.

vi /etc/rsyslog.conf

/etc/rsyslog.conf 구성 파일에서 다음 줄을 찾아 주석 처리를 제거하여 514 포트를 통해 Rsyslog 서버에 UDP 전송 수신을 허용합니다. . Rsyslog는 로그 전송을 위해 표준 UDP 프로토콜을 사용합니다.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. UDP 프로토콜은 TCP 오버헤드가 없으며 TCP 프로토콜보다 데이터 전송 속도가 빠릅니다. 반면, UDP 프로토콜은 전송된 데이터의 신뢰성을 보장하지 않습니다.

그러나 로그 수신을 위해 TCP 프로토콜을 사용하려면 Rsyslog를 구성하기 위해 구성 파일의 /etc/rsyslog.conf에서 다음 줄을 찾아 주석 처리를 제거해야 합니다. 514 포트에서 TCP 소켓을 바인딩하고 수신하는 데몬입니다.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. 이제 원격 메시지 수신을 위한 새 템플릿을 만듭니다. 이 템플릿은 Syslog 네트워크 클라이언트에서 보낸 수신 메시지를 저장할 위치를 로컬 Rsyslog 서버에 안내합니다.


$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

$template RemoteLogs 지시문은 Rsyslog 데몬이 클라이언트 이름과 추가된 개요 속성을 기반으로 메시지를 생성한 원격 클라이언트 응용 프로그램을 기반으로 전송된 모든 로그 메시지를 수집하여 고유한 파일에 쓰도록 안내합니다. 템플릿 구성: %HOSTNAME% 및 %PROGRAMNAME%.

수신된 모든 로그 파일은 클라이언트 시스템의 호스트 이름을 따라 명명된 할당된 파일의 로컬 파일 시스템에 기록되고 /var/log/ 디렉토리에 보관됩니다.

& ~ 리디렉션 규칙은 로컬 Rsyslog 서버에 수신된 로그 메시지 처리를 더 이상 중지하고 메시지를 제거하도록 지시합니다(내부 로그 파일에 쓰지 않음).

RemoteLogs는 이 템플릿 지시문에 지정된 임의의 이름입니다. 템플릿에 가장 적합한 이름을 사용할 수 있습니다.

더 복잡한 Rsyslog 템플릿을 구성하려면 man rsyslog.conf 명령을 실행하여 Rsyslog 구성 파일 매뉴얼을 읽거나 Rsyslog 온라인 설명서를 참조하세요.

man rsyslog.conf

6. 위의 구성을 변경한 후 다음 명령을 실행하여 Rsyslog 데몬을 다시 시작하여 최근 변경 사항을 적용할 수 있습니다.

service rsyslog restart

7. Rsyslog 서버를 다시 시작하면 이제 중앙 로그 서버 역할을 하며 Syslog 클라이언트의 메시지를 기록해야 합니다. Rsyslog 네트워크 소켓을 확인하려면 netstat 명령을 실행하고 grep 유틸리티를 사용하여 rsyslog 문자열을 필터링하십시오.

netstat -tulpn | grep rsyslog 

CentOS 8netstat 명령이 설치되어 있지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.


dnf whatprovides netstat
dnf install net-tools

8. CentOS/RHEL 8에서 SELinux가 활성화된 경우 다음 명령을 실행하여 네트워크 소켓 유형에 따라 rsyslog 트래픽을 허용합니다.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

semanage 명령CentOS 8에 설치되지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. 시스템에 방화벽이 활성화되어 있는 경우 Firewalld의 포트에서 rsyslog 트래픽을 허용하는 데 필요한 규칙을 추가하려면 다음 명령을 실행하십시오.


firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

표시된 대로 허용된 IP 범위에서 포트 514로 들어오는 연결을 제한할 수도 있습니다.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

그게 다야! Rsyslog는 이제 중앙 로그 서버로 구성되어 원격 클라이언트로부터 로그를 수집할 수 있습니다. 다음 글에서는 CentOS/RHEL 8 서버에서 Rsyslog 클라이언트를 구성하는 방법을 살펴보겠습니다.