[Linux] remote host의 로그 수집을 위한 rsyslog 서버 구축을 5분만에 끝내는 방법

rsyslog server 구축
성격이 급하신 분들은 설명을 건너뛰고 바로 진행하셔도 됩니다. rsyslog 서버에 UDP와 TCP를 이용해서 로그를 전송받을 수 있는데, 아래와 같은 차이점이 있습니다.
항목 | UDP(514/udp) | TCP(514/tcp) |
---|---|---|
전송 방식 | 비연결형 (Connectionless) | 연결형 (Connection-oriented) |
속도 | 빠름 (오버헤드 작음) | 상대적으로 느림 (3-way handshake 등) |
신뢰성 | 패킷 유실 가능성 있음 (재전송 없음) | 전송 보장 (재전송, 흐름제어, 순서 보장) |
사용 환경 | 네트워크가 안정적일 때, 대량 로그 수집 시 | 중요한 로그, 보안 로그, 외부망 등 |
지원 기능 | 단순 전송 | TLS 암호화, 인증, 큐잉 등 고급 기능 지원 |
적합한 경우 |
|
|
추천 facility | ALL | auth, authpriv, daemon, cron, syslog |
rsyslog server 설정 (/etc/rsyslog.conf) |
module(load=”imudp”) input(type=”imudp” port=”514″) |
module(load=”imtcp”) input(type=”imtcp” port=”10514″) |
remote host 설정 (/etc/rsyslog.conf) |
*.* @xxx.xxx.xxx.xxx:514 | *.* @@xxx.xxx.xxx.xxx:514 |
facility 유형이 authpriv, auth, daemon, cron, syslog인 로그는 TCP로 송수신하고, 나머지는 UPD로 송수신하는 Hybrid rsyslog 서버를 설정해 보겠습니다.
1. rsyslog server 설정하기(log receiver)
- master config 파일 수정
# vi /etc/rsyslog.conf<!--more--> # provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514") <!--more--> $IncludeConfig /etc/rsyslog.d/*.conf
- log 수신 설정 파일 등록
# vi /etc/rsyslog.d/00-remote.conf# syslog 수신 시 저장할 위치 및 파일 설정 템플릿 $template Remote,"/var/log/remote/%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 환경 설정 파일 유효성 테스트
# rsyslogd -N1
- rsyslog 데몬을 재시작합니다.
# systemctl restart rsyslog
2. remote host 설정하기(log sender)
- master config 파일 수정
# vi /etc/rsyslog.conf# TCP로 전송할 Facility 등록 auth,authpriv,daemon,cron,syslog.* @@rsyslog.server.ip.address:514 # UDP로 전송할 Facility 등록 *.*;auth.none;authpriv.none;daemon.none;cron.none;syslog.none @rsyslog.server.ip.address:514
- rsyslog 환경 설정 파일 유효성 테스트
# rsyslogd -N1
- rsyslog 데몬을 재시작합니다.
# systemctl restart rsyslog
3. rsyslog 서버 로그 수신 결과 확인하기
- remote host로부터 전송된 로그 확인
# tree /var/log/remote//var/log/remote/ └── remote.host.ip.address └── yyyy-mm-dd.log