Linux(CentOS) 로그관리

박종현·2022년 5월 16일
0

리눅스(CentOS)

목록 보기
7/13

로그관리

  • 로그 (Log) - 시스템에서 발생한 이벤트에 대한 기록
  • 감사(Autid) - 관리자가 설정한 특정 대상에 대한 기록
  • 로그의 필요성
    • 보안적 측면 : 침입 등에 대한 감사, 대응
    • 운영적 측면 : 시스템 장애 대응
  • systemd 이전의 로그 - syslog(rsyslog)
  • systemd 이후의 로그
    • syslog(rsyslog)
    • journal

systemd-journald

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

syslog(rsyslog)

유닉스 시스템은 (r)syslog 표준 인터페이스를 통해 커널 및 응용 프로그램에 의해 발생하는 로그를 체계적으로 생성하고 관리한다.

커널 및 응용 프로그램이 (r)syslog API를 통해 로그를 생성하면 (r)syslogd 데몬 프로세스가 (r)syslog.conf 설정 파일을 참조하여 지정한 로그 파일, 콘솔 또는 외부 서버 등에 로그를 기록한다.

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

로그의 우선순위

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

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

    • 포맷

    • A 서비스(데몬)에 대하여 B로그 레벨 이상의 상황이 발생한 경우 C의 형식(파일, 콘솔, 외부서버 등)으로 로그를 남기라는 의미

    • /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:*
       
      ```

      facility : 로그 생성 서비스

      ㆍ * :  모든 서비스
      
      ㆍauthpriv : 인증 및 보안 관련 메시지
      
      ㆍcron : cron 데몬과 atd데몬에 의해 발생되는 메시지
      
      ㆍdaemon : telnet, ftp 등과 같은 데몬에 의한 메시지
      
      ㆍkern : kernel에 의한 메시지
      
      ㆍlpr : 프린터 데몬인 lpd에 의해 발생되는 메시지
      
      ㆍmail : sendmail, pop, qmail 등의 메일 시스템에서 발생되는 메시지
      
      ㆍnews : USENET 등과 같은 뉴스시스템에 의해 발생되는 메시지
      
      ㆍuser : 사용자에 의해 생성된 프로세스
      
      ㆍsyslog : syslogd에 의해 발생되는 메시지
      
      ㆍlocal0 ~ local7 : 시스템 부팅 메시지 기록, 기타 여분 서비스에 사용하기 위함

      priority : 로그 수준(Level)

      높음
      
      ㆍ           emerg : 시스템이 전면 중단되는 패닉상태, 전체 공지가 필요한 상황 (system is unusable)
      
      ㆍ           alert : 즉각적인 조치가 필요한 상황 (action must be taken immediately)
      
      ㆍ           crit : 하드웨어 등의 심각한 오류가 발생한 상황 (critical condition)
      
      중간          err : 일반적인 에러/오류가 발생한 상황
      
      ㆍ           warning : 경고 메시지
      
      ㆍ           notice : 에러/오류는 아니지만 관리자의 조치가 필요한 상황
      
      ㆍ           info : 의미 있는 정보 관련 메시지
      
      ㆍ           debug : 디버깅용 메시지
      
      낮음
    • facility에 로그 수준을 지정하게 되면 해당 수준이상의 상황이 발생했을 때 로그가 남게 된다.

    • (r)syslog.conf에 로그 수준을 " * " 로 지정하면 모든 로그 수준의 로그를 남기겠다는 의미이며, "none"으로 설정하면 어떠한 경우라도 로그를 남기지 않겠다는 의미이다.

      action

      로그를 어디에 남길 것인지를 결정한다. 로그 파일, 콘솔, 원격 로그 서버, 특정 사용자 등에 로그를 남길 수 있다.

      ㆍ로그 파일 : 파일명(경로) 지정 ex) /var/log/messages
      
      ㆍ콘솔 : /dev/console로 지정 시 콘솔 출력
      
      ㆍ원격 로그 서버 : "@호스트 주소"를 통해 지정한 호스트로 로그를 보낸다 ex) @192.168.56.3
      
      ㆍuser : 지정된 사용자의 스크린으로 메시지를 보낸다
      
      ㆍ* : 현재 로그인 되어있는 모든 사용자의 스크린으로 메시지를 보낸다

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
      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

logrotate

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

0개의 댓글