(Week 4 - Day 2) - (2/2)
로그(Log)
- 이벤트에 대한 기록
- 시스템에 특정 이벤트에 대한 기록이 있으면 문제가 발생한 시기와 이유를 확인할 수 있다.
Syslog(rsyslogd)
- Unix/Linux 시스템에서 사용하는 기본 로그(init)
- 로그 저장 경로 : /var/log/
- 로그 저장 포맷 : 텍스트
- 로그 설정 파일 : /etc/rsyslog.conf
필터(Facility)
kern | 커널 레벨 메시지 | news | 네트워크 뉴스 관련 메시지 |
user | 유저 레벨 메시지 | uucp | UUCP 서비스 관련 메시지 |
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 |