Published 2022. 8. 2. 21:40

(Week 4 - Day 2) - (2/2)

로그(Log)

- 이벤트에 대한 기록

- 시스템에 특정 이벤트에 대한 기록이 있으면 문제가 발생한 시기와 이유를 확인할 수 있다.

Syslog(rsyslogd)

- Unix/Linux 시스템에서 사용하는 기본 로그(init)

  • 로그 저장 경로 : /var/log/
  • 로그 저장 포맷 : 텍스트
  • 로그 설정 파일 : /etc/rsyslog.conf

필터(Facility)

kern 커널 레벨 메시지 news 네트워크 뉴스 관련 메시지
user 유저 레벨 메시지 uucp UUCP 서비스 관련 메시지
mail mail 서비스 관련 메시지 cron cron 서비스 관련 메시지
daemon 시스템 데몬 메시지 authpriv 보안 및 인가 메시지
auth 보안 및 인가 메시지 ftp ftp 서비스 메시지
syslog syslog의 내부적으로 생성된 메시지 local0~local7 사용자 정의
lpr 라인프린터 메시지 local7 부팅관련 로그 기록

코드

Code Priority  
0 emerg 시스템 사용 불가 상태
1 alert 즉시 조치를 취해야 하는 상태
2 crit 치명적인 상태의 로그
3 error, err 에러 발생 로그
4 warning, warn 경고 로그
5 notice 일반적인 내용이지만 중요한 로그
6 info 간단한 정보
7 debug 디버깅 메시지

 

Logrotate

- 로그 파일 저장시 사용 빈도가 높은 시스템일 수록 로그의 양도 늘어남.

- 로그 파일의 크기가 너무 커지면 로그 파일을 읽고 쓰는데 부하가 많이 발생함.

- 로그를 일정 주기/용량을 기준으로 분할하고 시스템에서 유지할 로그의 갯수를 제한함.

- 설정 파일 :  /etc/logrotate.conf

실습

# vim /etc/logrotate.d/testlog
/var/log/testlog/testlog.log {
	size=3k
	create 600 root sys
	rotate 3
	nodateext
}
# mkdir /var/log/testlog
# touch /var/log/testlog/testlog.log

파일 사이즈 증가
# dd if=/dev/zero of=/var/log/testlog/testlog.log bs=512 count=10 
# ls -l /var/log/testlog/

수동
# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
# ls -l /var/log/testlog/

Systemd-journalctl

- Systemd에서 새롭게 추가된 로그 관리 방식

- 로그 저장 경로 :  /run/log/journal/

- 로그 저장 포맷 : 데이터 바이너리

- 부팅 시 부터 모든 이벤트를 기록

- 기본적으로는 재부팅 시 로그가 사라짐.

journalctl [option] [argument]

OPTION

journalctl -p PRIORITY 우선순위 지정 (~ 이상)
journalctl -r 최근 로그부터 역순으로 로그 확인
journalctl -n N 최근 로그부터 로그 N줄 확인(N없으면 10줄)
journalctl -f 저널 로그 모니터링(계속 추가 생성되는 로그를 확인)
journalctl --since 특정 시점 이후의 로그 확인
journalctl --until 특정 시점 이전의 로그 확인
journalctl -o FORMAT 출력 옵션 지정하여 로그 확인

출력 옵션

short      :  기본 출력 형태로 syslog과 동일한 형식의 출력 형태

verbose  :   short 형식에서 출력되지 않는 정보를 자세히 출력

json           :  JSON 포맷으로 출력

json-pretty  :  JSON 포맷이 정렬된 형태로 출력

Journal Log

Message 로그 메시지 필드 값 예시
_PID 프로세스 PID journalctl _PID=1
_UID 사용자 UID journalctl _UID=1000
_GID 사용자 GID journalctl _GID=1000
_COMM 명령어 이름 journalctl _COMM="crond"
_EXE 실행파일 경로  
_CMDLINE Shell에서 실행되는 명령어  
_SYSTEMD_UNIT Systemd Unit 이름 journalctl _SYSTEM_UNIT="crond.service

Journal Log 영구 저장

logger -p user.alert "Test Msg - 1"

ls -ld /run/log/journal/

mkdir /var/log/journal/
chown root:systemd-journal /var/log/journal/
chmod 2755 /var/log/journal/

systemctl restart systemd-journald

logger -p user.alert "Test Msg - 2"

Journal Log 목록 확인

journalctl --list-boots
     0  : 현재 부팅
  음수 : 이전 부팅시의 로그
  * Journal Log 영구 저장시 이전 부팅시점의 Journal 로그 확인 가능함.

Journal Log 영구 저장 해제

rm -rf /var/log/journal/
systemctl restart systemd-journald

ls -ld /run/log/journal/

'Linux' 카테고리의 다른 글

[Linux] 19. 소프트웨어 패키지  (0) 2022.08.03
[Linux] 18. 리눅스 부트 프로세스  (0) 2022.08.03
[Linux] 16. Systemd  (0) 2022.08.02
[Linux] 15. 논리 볼륨(LVM)  (0) 2022.08.01
[Linux] 14. 작업 스케줄링  (0) 2022.07.27
복사했습니다!