로그는 시스템을 분석하는데 필수 자료
- 다양한 소스의 로그를 수집
-> 시스템 데몬, 커널, 어플리케이션 로그 등 수집해서 충분한 가시성 확보가 필요
- 메시지를 조회하기 위한 환경 구성
-> 로그를 검색하기 위한 다양한 방법이 필요
- 메시지 유지 및 만료 관리
->적절한 로그 사이즈 및 삭제 관리 (예, 로그 파일 크기 증가로 Disk full 발생)
로그 관리 정책 필요
- 한달 후 일괄 폐기??
-> 로그 종류별 유용한 수명이 한정되어 있음
폐기전에 요약, 필터링, 검색, 분석, 압축, 저장 해야 할 필요 있음
- 접근 및 회계 감사(audit) 기록들은 데이터 유지 규정이나 사이트 보안 정책에 따라 관리되야 함
전통적인 리눅스 로그 관리 -> syslog
- 유닉스/리눅스는 syslog 시스템을 통해 로그를 관리해 옴
- 로그 메시지를 제출하기 위한 표준화된 인터페이스를 앱에 제공
- 메시지를 분류해 파일에 저장하거나 네트워크를 통해 다른 호스트에 전달
- 하지만.. 이상과 현실의 차이
-> 어플리케이션, 네트워크 데몬, 시동 스크립트 등 자신의 로그파일에 로그를 저장
리눅스 로그 통합을 위한 또 다른 시도 -> systemd의 journal
- journal을 사용해서 로그통합을 위해 좀 더 개선된 방법으로 로그 관리 방식을 제공
-> 메시지를 효율적으로 저장 및 검색을 지원
. 압축된 바이너리 형태로 로그 메시지를 저장
. 메시지 속성을 자동으로 인덱싱 à 검색 용이
. 로그를 보거나 필터링 하기 위한 커맨드라인 인터페이스(journalctl) 제공
journalctl 명령
. -u 플래그를 써서 특정 서비스 유닛에 해당 하는 로그만 확인
$ journalctl -u ssh
. -f (--follow)는 메시지를 실시간으로 출력
$ journalctl -f
. 디스크에서 저널 크기 확인
$ journalctl --disk-usage
. 특정 바이너리에서 최근 100개의 항목 확인
$ journalctl -n 100 /usr/sbin/sshd
. 부팅 목록 확인
$ journalctl --list-boots
. 로그를 특정 부트 세션에 제한 (바로 이전 세션의 ssh 로그 확인)
$ journalctl -b -1 -u ssh
systemd 저널 환경설정
- /etc/systemd/journal.conf
-> Storage 옵션
. auto :
- 기본값. 데이터는 디스크에 저장 (재시작해도 로그 유지).
- /var/log/journal/ 디렉토리에 로그 저장. 디렉토리 생성은 하지 않음
. volatile :
- 저널을 메모리에만 저장.
. persistent :
- 저널을 /var/log/journal/ 디렉토리에 로그 저장.
- 디렉토리가 없는 경우 새로 생성
. none : 저널링 진행하지 않음
- 최대 저널 파일 사이즈는 동적으로 조정되지만, 정적으로 구성할 수도 있음
- 로그가 유실되지 않도록 속도 제한 설정
. 기본) RateLimitIntervalSec=30s, RateLimitBurst = 10000
-> 서비스별 30초당 10,000 메시지
'리눅스 > Part3. Ch06. 로깅' 카테고리의 다른 글
05. (실습) systemd 등록 어플리케이션의 로그 저장 (0) | 2022.12.15 |
---|---|
04. 대규모 로그 관리 (0) | 2022.12.14 |
03. 로그파일 관리 (0) | 2022.12.14 |
02. syslog의 이해 (0) | 2022.12.14 |