안녕하세요. 일본서버 호스팅 전문 비전 IDC 기술팀입니다.
CentOS 7에서 /var/log/messages 파일에 시스템 로그가 더 이상 기록되지 않는다면 단순히 파일 자체만 확인하기보다 rsyslog 서비스 상태, systemd-journald 전달 여부, rsyslog 설정 문법, 파일 권한과 SELinux, 디스크 상태를 순서대로 점검해야 합니다.
이 문서에서는 logger 명령으로 테스트 메시지를 발생시킨 뒤 어느 단계에서 로그가 끊기는지 확인하고, 원인별로 복구하는 방법을 설명합니다. CentOS 7은 2024년 6월 30일 지원이 종료되었으므로 운영 서버라면 로그 문제를 해결한 뒤 지원되는 운영체제로의 마이그레이션도 함께 검토하는 것이 좋습니다.
적용 환경
- 운영체제: CentOS 7
- 로그 서비스: rsyslog, systemd-journald
- 대표 로그 파일:
/var/log/messages - 주요 설정 파일:
/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
가장 먼저 확인할 항목
먼저 파일이 실제로 비어 있는지와 최근 수정 시간이 언제인지 확인합니다.
ls -lh /var/log/messages
stat /var/log/messages
tail -n 50 /var/log/messages
다음으로 systemd journal에는 로그가 들어오고 있는지 확인합니다.
journalctl -n 50 --no-pager
journal에는 정상적으로 로그가 보이는데 /var/log/messages만 갱신되지 않는다면 rsyslog 쪽 문제일 가능성이 높습니다.
rsyslog 서비스 상태 확인
CentOS 7에서는 rsyslog가 syslog 메시지를 분류해 /var/log/messages, /var/log/secure, /var/log/cron 등의 파일로 기록합니다. 서비스가 실행 중인지 확인합니다.
systemctl is-enabled rsyslog
systemctl is-active rsyslog
systemctl status rsyslog --no-pager -l
서비스가 중지되어 있다면 시작하고 부팅 시 자동 시작도 활성화합니다.
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
시작에 실패한다면 바로 재설치하지 말고 다음 명령으로 rsyslog 자체 로그를 먼저 확인합니다.
journalctl -u rsyslog -b --no-pager
logger로 기록 테스트
서비스가 실행 중이라면 logger로 테스트 메시지를 생성합니다.
logger "VISION-IDC rsyslog test"
먼저 journal에서 메시지가 수신되는지 확인합니다.
journalctl -n 20 --no-pager | grep 'VISION-IDC rsyslog test'
그다음 /var/log/messages를 확인합니다.
tail -n 20 /var/log/messages | grep 'VISION-IDC rsyslog test'
rsyslog 설정 문법과 규칙 확인
먼저 현재 설정에 문법 오류가 없는지 검사합니다.
sudo rsyslogd -N1
오류가 표시된다면 /etc/rsyslog.conf와 /etc/rsyslog.d/ 아래의 사용자 정의 설정을 확인해야 합니다.
grep -vE '^[[:space:]]*(#|$)' /etc/rsyslog.conf
sudo grep -R -n -vE '^[[:space:]]*(#|$)' /etc/rsyslog.d/ 2>/dev/null
기본 CentOS 7 구성에서는 일반 syslog 메시지를 /var/log/messages로 보내는 규칙이 존재해야 합니다. 대표적인 기본 규칙은 다음 형태입니다.
*.info;mail.none;authpriv.none;cron.none /var/log/messages
이 규칙이 삭제되었거나 앞선 사용자 정의 규칙에서 stop, ~ 등의 동작으로 메시지 처리가 종료된다면 /var/log/messages가 비어 있을 수 있습니다.
sudo cp -a /etc/rsyslog.conf /root/rsyslog.conf.backup
수정 후 다시 문법을 검사하고 오류가 없을 때만 서비스를 재시작합니다.
sudo rsyslogd -N1
sudo systemctl restart rsyslog
systemd journal 전달 상태 확인
CentOS 7에서는 systemd-journald가 수집한 메시지를 rsyslog가 받아 파일로 기록하는 구성이 일반적입니다. rsyslog 설정에서 journal 입력 모듈이 비활성화되었는지 확인합니다.
grep -nE 'imjournal|imuxsock|OmitLocalLogging|IMJournalStateFile' /etc/rsyslog.conf
기본 구성에서 imjournal을 사용하는 시스템이라면 해당 모듈과 상태 파일 설정이 임의로 제거되거나 주석 처리되지 않았는지 확인합니다. 반대로 imuxsock 방식으로 변경한 환경이라면 journald·rsyslog 양쪽 설정이 서로 맞지 않아 로컬 메시지가 누락될 수 있습니다.
journal 자체 서비스 상태도 확인합니다.
systemctl status systemd-journald --no-pager -l
journalctl -u systemd-journald -b --no-pager
journal에는 테스트 로그가 존재하지만 rsyslog 파일에는 없다면 journald 서비스를 불필요하게 재설정하기보다 rsyslog 입력 모듈과 규칙부터 복구하는 편이 안전합니다.
파일 권한과 SELinux 확인
파일 소유권이나 SELinux 컨텍스트가 비정상이라면 rsyslog가 파일에 쓰지 못할 수 있습니다.
ls -lZ /var/log/messages
ls -ldZ /var/log
기본 경로의 SELinux 컨텍스트가 잘못되었다면 정책 기본값에 맞게 복원할 수 있습니다.
sudo restorecon -v /var/log/messages
sudo restorecon -R -v /var/log
SELinux가 실제로 차단했는지 확인하려면 최근 AVC 기록을 조회합니다.
sudo ausearch -m AVC -ts recent
디스크 용량과 inode 확인
rsyslog 설정이 정상이어도 /var가 위치한 파일시스템의 여유 공간이나 inode가 없으면 새 로그를 기록할 수 없습니다.
df -hT /var/log
df -ih /var/log
사용률이 100%에 가깝다면 대용량 로그와 파일을 먼저 확인합니다.
sudo du -x -h --max-depth=1 /var/log 2>/dev/null | sort -hr
활성 로그 파일을 임의로 삭제하기보다 logrotate 설정과 해당 로그를 사용하는 프로세스를 먼저 확인하십시오.
자주 발생하는 증상과 해결 방법
| 증상 | 가능한 원인 | 확인 방법 | 해결 방법 |
|---|---|---|---|
| 파일이 전혀 갱신되지 않음 | rsyslog 중지 또는 시작 실패 | systemctl status rsyslog |
설정 오류를 수정한 뒤 rsyslog를 시작합니다. |
logger 메시지가 journal에는 보이지만 messages에는 없음 |
imjournal/imuxsock 또는 출력 규칙 문제 | rsyslogd -N1, grep imjournal /etc/rsyslog.conf |
기본 입력 모듈과 /var/log/messages 규칙을 복구합니다. |
| rsyslog가 permission denied 기록 | 파일 권한 또는 SELinux 컨텍스트 오류 | ls -lZ, ausearch -m AVC |
restorecon으로 기본 컨텍스트를 복원하고 권한을 점검합니다. |
| 로그 기록이 갑자기 중단됨 | 디스크 또는 inode 부족 | df -hT, df -ih |
불필요한 파일을 정리하고 logrotate 정책을 확인합니다. |
복구 후 정상 작동 확인
설정을 수정한 뒤 rsyslog 상태와 설정 문법을 다시 확인합니다.
sudo rsyslogd -N1
systemctl is-active rsyslog
테스트 메시지를 발생시킨 뒤 파일에 기록되는지 최종 확인합니다.
logger "VISION-IDC rsyslog verification"
tail -n 20 /var/log/messages
테스트 메시지가 /var/log/messages에 표시되고 rsyslog 서비스가 active 상태라면 기본 로그 기록 경로는 정상적으로 복구된 것입니다.
공식 참고자료
- Red Hat Enterprise Linux 7 System Administrator's Guide - Viewing and Managing Log Files — rsyslog과 주요 로그 파일 경로 확인
- Red Hat Customer Portal - /var/log/messages written by rsyslog are empty — journal에는 기록되지만 rsyslog 파일에는 기록되지 않는 증상 확인
- Red Hat Customer Portal - Configuring system logging without journald — imuxsock와 imjournal 구성 차이 확인
조회일: 2026년 9월 17일
마무리
CentOS 7에서 /var/log/messages가 기록되지 않을 때는 파일 자체를 다시 만드는 것보다 logger 테스트를 기준으로 journald와 rsyslog 사이에서 로그가 어느 단계에서 끊기는지 확인하는 것이 중요합니다. 서비스 상태, rsyslog 설정 문법, 입력 모듈, 파일 권한과 SELinux, 디스크 용량을 순서대로 확인하면 원인을 빠르게 좁힐 수 있습니다.
비전 IDC는 일본서버 호스팅 환경을 포함한 다양한 서버 운영 환경에서 안정적인 장애 대응과 유지보수에 도움이 되는 기술정보를 지속적으로 제공하겠습니다.
