Ubuntu 22.04|20.04|18.04에서 Rsyslog 중앙 집중식 로그 서버 구성
모든 Linux 시스템의 로그는 시스템 및 애플리케이션과 관련된 문제를 분석하고 해결하는 데 중요합니다. Graylog와 같은 도구를 사용하면 이러한 로그를 중앙 집중식 플랫폼으로 쉽게 전송하여 쉽게 시각화할 수 있습니다. 이 가이드에서는 Ubuntu 22.04|20.04|18.04LTS에서 Rsyslog 중앙 집중식 로그 서버를 구성하는 방법을 살펴보겠습니다.
Linux에서는 기본적으로 모든 로그 파일이 /var/log 디렉터리에 있습니다. cron, 커널, 보안, 이벤트, 사용자 등 다양한 메시지를 저장하는 여러 유형의 로그 파일이 있습니다. 대부분 이러한 로그 파일은 rsyslog 서비스에 의해 제어됩니다.
systemd를 사용하는 최신 시스템에서 일부 로그는 저널 데몬에 의해 관리되며 바이너리 형식으로 작성됩니다. 이러한 로그는 RAM에 기록되므로 휘발성이며 시스템 재부팅을 견딜 수 없습니다. 종종 /run/log/journal/에서 발견됩니다. 그러나 저널은 파일에 기록하여 로그 메시지를 영구적으로 저장하도록 구성할 수도 있습니다.
Ubuntu 22.04|20.04|18.04에서 Rsyslog 로그 서버 구성
rsyslog 서버를 중앙 로그 관리 시스템으로 구성하겠습니다. 이는 rsyslog 서비스가 udp/tcp 포트에서 수신 대기하는 클라이언트-서버 모델을 따릅니다. rsyslog에서 사용되는 기본 포트는 514입니다. 클라이언트 시스템에서 rsyslog는 UDP 또는 TCP 포트를 통해 네트워크를 통해 로그를 수집하고 중앙 rsyslog 서버로 전달합니다.
syslog 메시지 작업 시 로그 파일을 특징짓는 우선순위/심각도 수준이 있습니다. 즉:
- 긴급, 패닉 (긴급): 수준 0 – 가장 낮은 로그 수준입니다. 시스템을 사용할 수 없습니다
- 경고 (경고): 수준 1 – 즉시 조치를 취해야 함
- 오류(오류): 레벨 3 – 중요한 조건
- 경고 (경고): 레벨 4 – 경고 조건
- 통지(통지): 레벨 5 – 정상이지만 중요한 상태
- 정보 (정보): 레벨 6 – 정보 메시지
- 디버그 (디버깅): 수준 7 – 가장 높은 수준 – 디버그 수준 메시지
Rsyslog는 새로 설치된 Ubuntu 시스템에 기본적으로 설치됩니다. 어떤 이유로든 패키지가 설치되지 않은 경우 다음을 실행하여 설치할 수 있습니다.
sudo apt-get update
sudo apt-get install rsyslog설치되면 서비스가 실행 중인지 확인하세요.
$ systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-07-18 11:30:10 UTC; 4 days ago
Main PID: 903 (rsyslogd)
Tasks: 4 (limit: 4704)
CGroup: /system.slice/rsyslog.service
└─903 /usr/sbin/rsyslogd -n서버 모드에서 실행되도록 rsyslog 구성
이제 서버 모드에서 실행되도록 rsyslog 서비스를 구성합니다.
sudo vim /etc/rsyslog.confudp 및 tcp 포트 바인딩 줄의 주석 처리를 제거합니다.
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")특정 서브넷, IP 또는 도메인에 대한 액세스를 제한하려면 아래와 같이 추가하십시오.
$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.cominput(type="imtcp" port="514") 줄 뒤에 위 줄을 추가할 수 있습니다. 주어진 값을 올바른 값으로 대체하는 것을 잊지 마세요
원격 메시지 수신을 위한 새 템플릿 만들기
rsyslog 서버에 들어오는 syslog 메시지를 저장하는 방법을 지시하는 템플릿을 만들어 보겠습니다. GLOBAL DIRECTIVES 섹션 바로 앞에 템플릿을 추가합니다.
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~수신된 로그는 위의 템플릿을 사용하여 구문 분석되고 /var/log/ 디렉터리에 저장됩니다. 파일 이름 지정은 %HOSTNAME% 및 %PROGRAMNAME% 변수(예: 클라이언트 호스트 이름 및 로그 메시지를 생성한 클라이언트 시설)라는 규칙을 따릅니다.
& ~는 rsyslog 데몬에게 지정된 파일에만 로그 메시지를 저장하도록 지시합니다.
사용할 수 있는 다른 변수는 다음과 같습니다.
%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%변경 사항을 적용하려면 rsyslog 서비스를 다시 시작하십시오.
sudo systemctl restart rsyslog서비스가 구성된 포트에서 수신 대기하는지 확인합니다.
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=15220,fd=5)) ino:441816 sk:2 <->
udp UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=15220,fd=6)) ino:441817 sk:5 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=15220,fd=7)) ino:441820 sk:a <->
tcp LISTEN 0 25 [::]:514 [::]:* users:(("rsyslogd",pid=15220,fd=8)) ino:441821 sk:11 v6only:1 <->Rsyslog 방화벽 구성
ufw 방화벽 서비스가 실행 중인 경우 rsyslog 방화벽 포트를 허용합니다.
sudo ufw allow 514/tcp
sudo ufw allow 514/udpRsyslog를 클라이언트로 구성
rsyslog 서버 구성이 완료되면 rsyslog 클라이언트 시스템으로 이동하여 로그를 원격 rsyslog 서버로 보내도록 구성하십시오.
sudo vim /etc/rsyslog.confFQDN 보존 허용:
$PreserveFQDN on끝에 원격 rsyslog 서버를 추가하십시오.
*.* @ip-address-of-rsysog-server:514서버 IP 주소 대신 FQDN을 사용할 수도 있습니다.
*.* @fqdn-of-rsysog-server:514위 줄은 UDP를 통한 로그 전송을 활성화합니다. TCP의 경우 단일 @ 대신 @@를 사용합니다.
*.* @@ip-address-of-rsysog-server:514
#OR
*.* @@fqdn-of-rsysog-server:514또한 rsyslog 서버가 다운될 경우에 대해 다음을 추가하십시오.
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
그런 다음 rsyslog 서비스를 다시 시작하십시오.
sudo systemctl restart rsyslog또한 확인하십시오:
Ubuntu 18.04에서 Graylog 서버로 로그 관리
CentOS 7에서 Elasticsearch와 함께 Graylog 2.4를 설치하는 방법.
