클라우드 아키텍트 양성과정

리눅스(CentOS) 로그관리(rsyslog,journal)

종바깅 2021. 4. 26. 11:13

로그관리

  • 로그 (Log) - 시스템에서 발생한 이벤트에 대한 기록

  • 감사(Autid) - 관리자가 설정한 특정 대상에 대한 기록

  • 로그의 필요성

    • 보안적 측면 : 침입 등에 대한 감사, 대응
    • 운영적 측면 : 시스템 장애 대응
  • systemd 이전의 로그 - syslog(rsyslog)

  • systemd 이후의 로그

    • syslog(rsyslog)
    • journal

systemd-journald

  • journal을 담당하는 데몬
  • 메모리에 저장
  • Binary data 형태로 저장 : /run/log/journal

syslog(rsyslog)

  • 로그 데이터를 파일로 저장, 사용자에게 전달
  • 네트워크의 다른 시스템으로 로그 전달
  • systemd-journald에서 발생한 로그 중 선택적으로 분류하여 처리
  • 선택/분류 조건 : 기능(Facility), 우선순위(Priority)

로그의 우선순위

숫자 우선순위 심각도
0 emerg 시스템 구동 여부에 영향을 줄 수 있는 레벨
1 alert 즉시 조치가 필요함
2 crit 심각한 오류
3 err 중요도가 낮은 오류
4 warning 경고
5 notice 정상상태에서 발생하는 메시지 중 중요도 높음
6 info 일상적인 내용
7 debug 디버깅 메시지 (일상적인 내용보다 자세한 내용)
  • rsyslog 관련 파일

      /var/log/
    • messsages : 일반적인 시스템의 로그인 데이터 저장 (아래 항목 제외)
    • secure : 인증 관련 로그
    • maillog : 메일 관련 로그
    • cron : 예약작업 관련 로그
    • boot.log : 부팅 관련 로그
  • /etc/rsyslog.conf : rsyslog 설정파일

    • /etc/rsyslog.conf 내 RULE 설정
```
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
.
.
.
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*
-------------------------------------------------------------------------------------
cron : 기능(Facility, 출처), 어디에서 나온 로그인가?
    - 주요 Facility: https://en.wikipedia.org/wiki/Syslog#Facility
    - * : 모든 facility
* : 우선순위. 지정된 우선순위에 해당하는 로그를 저장
    - *: 모든 우선순위의 로그를 모두 지정
    - 0~7, emerg~debug : 지정된 우선순위 해당 로그 및 그보다 높은 우선순위의 로그를 모두 지정
    - none: 해당 기능은 로그 저장하지 않음
/var/log/cron: 기록 대상
    - -<파일명> : 비동기화 저장설정
    - /dev/… : 특정 장치로 로그 전송
    - :omusrmsg:* : 특정 사용자에게 로그 전송

```

journal

  • 명령어 : journalctl

    • -n [숫자] : 최근 n개의 저널 출력
    • -p [우선순위] : priority - 저널 메세지의 우선순의 지정
    • -f : 발생하는 저널 메시지 실시간 확인
    • -r : 역순으로 출력 (최근 로그부터)
    • --since [시작지점] : 특정 날짜부터 출력
    • --until [종료시점] : 특정 시점까지 출력
    • _COMM= : 명령이름
    • _EXE= : 실행파일 경로
    • _PID= : 특정 PID관련 로그 확인
  • 메모리에 저장 : 재부팅 후 초기화 됨

    • 저널 영구저장 설정

      1. 기존 저널 저장위치 정보를 확인한다 (기존 저널 저장위치인 /run/log/journal 경로와 같은 정보를 가지는 디렉토리를 생성해야 함)

        • #ls -ld /run/log/journal

          • 소유자 : root
          • 소유그룹 : systemd-journal
          • 권한 : 2755

          ![저널 영구저장1](/Users/jonghyeon/Desktop/무제 폴더/저널 영구저장1.JPG)

      2. /var/log/journal 디렉토리 생성

        • 소유자/소유그룹/권한 설정 통일

        • #mkdir /var/log/journal

        • #chown root:systemd-journal /var/log/journal/

        • #chmod 2755 /var/log/journal/

        • #ls -ld /var/log/journal

          ![저널 영구저장2](/Users/jonghyeon/Desktop/무제 폴더/저널 영구저장2.JPG)

logrotate

  • 로그를 순환시키는 명령어
  • 로그파일이 과도하게 커지거나, 과도하게 장기간의 데이터를 저장하거나 하는 상태를 방지
  • 백업생성 : 규칙에 따라 일정 갯수 만큼의 백업만 보관
  • cron에 의해 주기적으로 실행