[Linux] rsyslog 서버를 5분만에 구축하는 방법

rsyslog server 구축

rsyslog server 구축


성격이 급하신 분들은 설명을 건너뛰고 바로 진행하셔도 됩니다. rsyslog 서버에 UDP와 TCP를 이용해서 로그를 전송받을 수 있는데, 아래와 같은 차이점이 있습니다.

항목 UDP(514/udp) TCP(514/tcp)
전송 방식 비연결형 (Connectionless) 연결형 (Connection-oriented)
속도 빠름 (오버헤드 작음) 상대적으로 느림 (3-way handshake 등)
신뢰성 패킷 유실 가능성 있음 (재전송 없음) 전송 보장 (재전송, 흐름제어, 순서 보장)
사용 환경 네트워크가 안정적일 때, 대량 로그 수집 시 중요한 로그, 보안 로그, 외부망 등
지원 기능 단순 전송 TLS 암호화, 인증, 큐잉 등 고급 기능 지원
적합한 경우
  • 내부망 등 신뢰할 수 있는 네트워크에서 빠른 로그 처리 원할 때
  • 로그 유실이 일부 발생해도 큰 문제 없는 경우
  • 성능(속도)을 우선시하는 환경
  • 예: IoT 장비, 단순 시스템 로그 수집 등
  • 보안 로그, 개인정보, 거래내역 등 중요한 로그 전송
  • 네트워크 불안정 환경 또는 원격지 수집
  • 로그 유실이 치명적인 경우 (감사 로그, 외부망 수집 등)
  • 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=”514″)
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 서버를 설정해 보겠습니다. 만일 NAS서버를 보유하고 계시다면 syslog를 저장할 디렉토리(/var/log/remote)를 nfs로 마운팅하여 사용할 것을 추천드립니다.

1. rsyslog server 설정하기(log receiver)

  1. 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
  2. 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
  3. rsyslog 환경 설정 파일 유효성 테스트
    # rsyslogd -N1
  4. rsyslog 데몬을 재시작합니다.
    # systemctl restart rsyslog

2. remote host 설정하기(log sender)

  1. 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
  2. rsyslog 환경 설정 파일 유효성 테스트
    # rsyslogd -N1
  3. rsyslog 데몬을 재시작합니다.
    # systemctl restart rsyslog

3. rsyslog 서버 로그 수신 결과 확인하기

  1. remote host로부터 전송된 로그 확인
    # tree /var/log/remote/
    /var/log/remote/ └── remote.host.ip.address └── yyyy-mm-dd.log

다음 글에서는 로그 레벨 3 이하(emerg, crit, alert, error) 발생 시 rsyslog가 slack webhook 메세지를 전송하도록 설정하는 방법을 알아보겠습니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다