OS Log를 한 곳에서 볼 수 있도록 Log Server 구성에 대해 알아보겠습니다.
페이지 정보
작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 952회 좋아요 1회 작성일 24-05-25 22:32본문
안녕하세요.
오늘은 로그 서버를 만들어 보려합니다.
현재 로그서버 구성을 rsyslog로 사용하고 계신분도 있고, 다른 opensource 로 구성하신 분도 있겠지만 오늘은
RHEL 에 있는 rsyslog로 구성해보도록하겠습니다.
> 구성도
centos79(centos7.9) ------------ UDP 514
192.168.100.101
================> Log-Server(RHEL8.6) /var/log/rsyslog 밑에 로그 쌓이게합니다.
192.168.100.100
rhel86-client(RHEL8.6) ------------ UDP 514
192.168.100.102
1. 설정
- OS 설치 시 기본적으로 rsyslog가 설치되어있으니 설치 부분은 패스 하겠습니다.
> Log-Server 설정
# vim /etc/rsyslog.conf
----------------------------------------------------------------------------------
module(load="imudp") // UDP 로 통신하기 위함
input(type="imudp" port="514") // UDP 514로 통신
----------------------------------------------------------------------------------
. 추가설명
==================================
만약 TCP로 통신하기를 원하신다면 아래내용을 주석을 제거 해주시면 됩니다.
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")
==================================
- rsyslog 재 시작 하여 설정 적용
# systemctl restart rsyslog.service
이렇게 하면 Log-Server 에서 로그를 받을수있는 상태가 됩니다.
(단, selinux 나 Firewall 을 사용하신다면 당연히 방화벽 여는 작업을 해주셔야합니다.)
> Client Server (centos79,rhel86-client)
- centos79, rhel86-client 모두 아래와 같이 동일하게 설정해주시면 됩니다.
# vim /etc/rsyslog.conf
----------------------------------------------------------------------------------
*.* @192.168.100.100:514 // 설정 파일 맨밑에 이와 같이 넣어주시면 됩니다.
----------------------------------------------------------------------------------
.추가설명
====================================================================
1) rsyslog.conf UDP 설정
*.* @192.168.100.100:514
- UDP 전송: 단일 @는 UDP 프로토콜을 사용하여 로그 메시지를 전송함을 의미합니다.
- 비연결성: UDP는 비연결성 프로토콜로, 데이터그램을 독립적으로 전송합니다. 이 때문에 데이터 전송 시 연결 설정이 필요하지 않으며, 오버헤드가 적고 속도가 빠릅니다.
- 신뢰성 낮음: UDP는 신뢰성이 낮아 패킷이 손실될 수 있으며, 패킷의 순서를 보장하지 않습니다. 중요한 로그 전송에는 적합하지 않을 수 있습니다.
2) rsyslog.conf TCP
*.* @@192.168.100.100:514
- TCP 전송: 이중 @@는 TCP 프로토콜을 사용하여 로그 메시지를 전송함을 의미합니다.
- 연결성: TCP는 연결지향 프로토콜로, 송신자와 수신자 간에 연결을 설정하고 데이터를 전송합니다.
- 신뢰성 높음: TCP는 패킷의 손실을 감지하고 재전송을 요청하며, 데이터의 순서를 보장합니다. 따라서 중요한 로그 전송에 더 적합합니다.
====================================================================
- rsyslog 재 시작 하여 설정 적용
# systemctl restart rsyslog.service
2. Log 확인
> Log-Server
- 아래와 같이 log-server에서 /var/log/messages를 보면 'centos79'서버와 'rhel86-client' 가 모두 실시간으로 쌓이는것을 확인 할수있습니다.
# less /var/log/messages
.......................
..........................
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3013] dhcp4 (eth0): address 192.168.100.101
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): plen 24 (255.255.255.0)
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): gateway 192.168.100.1
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): lease time 3600
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): hostname 'centos79'
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): nameserver '192.168.100.1'
May 22 07:11:22 centos79 NetworkManager[853]: <info> [1716376282.3014] dhcp4 (eth0): state changed bound -> bound
......................
..........................
May 22 19:52:33 log-server systemd[1]: Stopping System Logging Service...
May 22 19:52:33 log-server rsyslogd[2924]: [origin software="rsyslogd" swVersion="8.2102.0-7.el8" x-pid="2924" x-info="https://www.rsyslog.com"] exiting on signal 15.
May 22 19:52:33 log-server systemd[1]: rsyslog.service: Succeeded.
May 22 19:52:33 log-server systemd[1]: Stopped System Logging Service.
May 22 19:52:33 log-server systemd[1]: Starting System Logging Service...
......................
.......................
May 22 21:10:05 rhel86-client systemd[1]: Starting system activity accounting tool...
May 22 21:10:05 rhel86-client systemd[1]: sysstat-collect.service: Succeeded.
May 22 21:10:05 rhel86-client systemd[1]: Started system activity accounting tool.
..........................
.......................
..........................
3. 서버별 로그저장 설정
하지만, 이렇게 하면 messages파일이 너무 커지고 한 파일에서 여러 서버 로그를 보는것이 매우 힘들어 집니다. 그래서 지금부터 보기편하게
서버별 폴더에 저장을 하고 로그레벨을 정해서 모든 로그를 저장 안하게 설정해보겠습니다.
> Client Server 설정 (centos79,rhel86-client)
- centos79, rhel86-client 모두 아래와 같이 동일하게 설정해주시면 됩니다.
# vim /etc/rsyslog.conf
#*.* @192.168.100.100:514
*.err @192.168.100.00:514 // err 로그 이상의 로그만 남기게 설정
- rsyslog 재 시작 하여 설정 적용
# systemctl restart rsyslog.service
#### 설명 ####
debug (7) 애플리케이션이 발생시킨 디버깅에 유용한 정보
info(6) 관리자의 간섭이 전혀 필요 없는 단순한 정보 전달용 메시지
notice(5) 에러는 아니지만 평소와 다른 현상이 발생해 주의가 필요한 경우의 메시지
warning(4) 조치가 없는 경우 에러가 발생할 수 있는 경고 메시지
err(3) 에러가 발생한 경우 메시지 <<<<<<<<<<<<< 설정한 Level
crit(2) 매우 위험한 상황인 경우의 메시지
alert(1) 즉각적인 관리자의 조치가 필요한 상황인 경우의 메시지
emerg(0) 시스템을 사용할 수 없을 정도로 비상 상황인 경우 메시지
*.* 으로 하면 info 부터 받게 됩니다.
> log-server 설정
# vim /etc/rsyslog.conf
#### RULES ####
# syslog 수신 시 저장할 위치 및 파일 설정 템플릿
$template Remote,"/var/log/rsyslog/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log"
# syslog 수신 시 fromhost-ip가 127.0.0.1이 아닌 경우 템플릿 Remote 정책을 적용
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
# 템플릿 Remote로 수신한 경우 로그 처리 중지
# 중지하지 않을 경우, OS에서 수집하는 syslog나 message에도 로그가 수집 됨 (중복 수집 됨)
& stop
- rsyslog 재 시작 하여 설정 적용
# systemctl restart rsyslog.service
- 폴더 확인
# ls -l /var/log/rsyslog/
192.168.100.101 192.168.100.102
# less 192.168.100.102/2024-05-22.log
May 22 21:10:05 rhel86-client systemd[1]: Starting system activity accounting tool...
May 22 21:10:05 rhel86-client systemd[1]: sysstat-collect.service: Succeeded.
May 22 21:10:05 rhel86-client systemd[1]: Started system activity accounting tool.
...........
.......... // 이제부터는 err 로그이상의 로그만 생성되므로 현재는 설정 변경 후 로그가 없었습니다.
이렇게 각 서버별 폴더를 생성하여, 로그를 저장 할수있습니다. 이렇게 되면 각 운영서버에서 로그를 확인 하지 않고,
로그서버에서 각 서버들 로그를 확인할수있습니다.
긴글 봐주셔서 감사합니다.
참고 링크
https://access.redhat.com/solutions/5953021
https://access.redhat.com/solutions/7021090
https://dirt-spoon.tistory.com/56
댓글목록
등록된 댓글이 없습니다.