rsyslog imfile로 Apache 파일 로그 원격 전달하기

목차

Apache가 파일에 기록한 로그를 rsyslog imfile 입력으로 읽어 중앙 로그 서버에 전달하는 방법입니다. 원노트의 local5 분류 예제를 기준으로 입력 태그와 전달 조건을 나눴습니다. 기존 rsyslog 설정에 imfile이 이미 로드되어 있는지 확인합니다.

파일 입력 설정

/etc/rsyslog.d/apache.conf에 작성합니다. File 패턴은 실제 로그명과 일치시킵니다. 지나치게 넓은 패턴으로 압축·백업 로그까지 다시 읽지 않도록 확인합니다.

TERMINAL / CONFIG
module(load="imfile")
input(type="imfile"
      File="/var/log/httpd/*access.log"
      Tag="apache-access:"
      Severity="info"
      Facility="local5"
      PersistStateInterval="200"
      addMetadata="on")
if ($syslogfacility-text == "local5") then {
    action(type="omfwd" target="192.0.2.10" port="514" protocol="udp")
    stop
}

Severity와 Facility는 읽어 들인 행을 Syslog 메시지로 만들 때 붙이는 값입니다. Apache 원본 로그의 모든 이벤트가 같은 심각도라는 의미는 아닙니다. 오류 로그는 다른 태그와 severity의 입력을 추가할 수 있습니다.

상태 파일과 순환

PersistStateInterval은 읽기 진행 상태 저장 간격에 영향을 줍니다. 비정상 종료 뒤 재처리·중복 가능성과 디스크 기록 비용을 함께 고려합니다. rsyslog의 작업 디렉터리와 상태 파일 쓰기 권한이 정상인지 확인합니다.
로그 순환 후 새 파일을 계속 읽는지, 예전 파일이 중복 수집되는지 확인합니다. addMetadata로 생성된 정보가 실제 전달 포맷에 포함되는지도 수집 서버에서 검증합니다.

구문과 도착 확인

TERMINAL / CONFIG
sudo rsyslogd -N1
sudo systemctl restart rsyslog
sudo journalctl -u rsyslog -n 50 --no-pager

사이트에 시험 요청을 보내 원본 파일에 기록되는지부터 확인하고 수집 서버의 도착 메시지와 비교합니다. UDP 예제는 전달 확인과 암호화가 없으므로 중요한 로그에는 TCP·TLS·큐 설정 등 요구사항에 맞는 신뢰성 구성을 검토합니다.

리눅스 › OS 운영
OS 운영 목록