[Linux]

[Linux] 리눅스 log

UtakerS 2022. 6. 16. 11:06
반응형

리눅스 로그의 특징은 일반적인 텍스트 형식의 로그와 바이너리 형식의 로그 2가지의 형태의 로그가 존재한다.

텍스트 형식의 로그 분석 명령어 : [ "vi , cat , tail , head" 등]
바이너리 형식의 로그 분석 명령어 : [ "last , w , who" 등]

 

who

/var/log/utmp

현재 로그인한 사용자의 정보를 담고 있는 로그파일

 

last [root]

/var/log/wtmp

사용자의 성공한 로그인/로그아웃 정보를 담고 있는 로그파일

 

lastb

/var/log/btmp

실패한 로그인 정보를 담고있는 로그파일

lastlog -t 5

lastlog -u [root]

/var/log/lastlog

가장 최근에 성공한 로그인 정보를 담고 있는 로그파일

tail /var/log/secure

/var/log/secure

원격 로그인 정보를 담고있는 로그파일

 

tail /var/log/messages

/var/log/message

시스템 운영에 대한 전반적인 정보를 담고있는 로그파일

 

Psacct

사용자가 얼마나 오랜시간 동안활성 상태인지를 확인

 

lastcomm ls

lastcomm root

/var/account/pacct

특정 명령어의 사용기록을 확인 할 수 있으며, 사용자별 명령어 사용내역도 확인이 가능


[Linux Log 관리]

리눅스 운영체제에서는 로그관리를 "logrotate"로 관리한다.
logrotate는 로그관리를 자동으로 진행해주는 도구이며, 각종 설정에따라 관리방법을 다르게 설정 할 수 있다.

 

"logrotate" 동작과정

1. "/etc/cron.daily/logrotate" 에서 "/usr/sbin/logrotate" 호출 
2. 호출된 logrotate를 실행시 "/etc/logrotate.conf"설정파일을 참조하여 logrotate 설정값을 Load
  - "/etc/logrotate.conf" 설정파일에 정의된 "Include /etc/logrotate.d" 설정에의해 "/etc/logroate.d/" 디렉터리를 호출
  - "/etc/logroate.d/" 디렉터리 속 정의되어있는 각 서비스 별 logrotate 설정 정보도 함께 Load

 

vi /etc/anacrontab

시스템 활성화 후 "nice run-parts /etc/cron.daily" 명령어가 1일이상 실행되지 않았을 경우 ("Random Delay(0~45) + 5분") 후에 해당 명령어의 프로세스 우선순위를 확인 후 실행

 

"/etc/cron.daily" 디렉터리는 anacrontab에 의해 실행되는 Shell Script 파일이 정의되어있다.
이러한 설정들에 의해 "logrotate"는 주기적으로 실행된다.

 

vi /etc/cron.daily/logrotate

"logrotate"의 스크립트 내용을 확인하면, "/usr/sbin/logrotate /var/lib/logrotate/logrotate.status /etc/logrotate.conf"에 의해logrotate를 실행하게 된다.
나머지부분의 스크립트 내용은 "Cron" 실행 시 오류가 발생하게 될 경우 화면에 오류메시지를 띄어주기 위한 코드이다.

 

which logrotate

logrotate 데몬의 경로

 

vi /etc/logrotate.conf

Logrotate 옵션

rotate("N") : Rotate File이 "N"개 이상일 경우 삭제
maxage ("N") : Rotate File의"N"일 이상 경과되었을 경우 삭제
size ("N{K,M}") : Log File의 용량이 지정한 크기만큼 채워졌을 경우 Rotate를 진행[ "EX : 10M, 100M, 20K" ]
create("권한") : Rotate시 새로 만들어지는 파일의 권한을 허가권 소유권 순으로 정의[ "EX : 0600 root : root" ]
copytruncate : 임시파일을 생성하여, 기존의 Log 내용을 복사한 뒤 해당 임시파일의 이름을 Rotate 설정에 맞게 변경
notifempty : LogFile의 내용이 비어있을 경우 Rotate를 진행하지 않는다.
ifempty : LogFile의 내용이 비어있을 경우에도 Rotate를 진행.
missingok : 오류가 발생하더라도 다음 작업을 이어서 수행
daily, weekly, monthly : "일, 주, 월" 단위로 Rotate를 진행한다.
compress : Rotate 된 Log File을 gzip 압축하여 저장
delaycompress : compress와 같이 사용되며, 즉시 압축하지 않고 일정기간이 지난 뒤 압축을 진행
prerotate-endscript : 해당 범위 안에 포함되어있는 명령어를 rotate 전에 수행
postrotate-endscript : 해당 범위 안에 포함되어 있는 명령어를 rotate 이후에 수행
extension : Rotate 후 생성되는 새로운 파일에 대한 확장자를 지정
mail admin@mail : Rotate설정에 의해 보관주기가 끝난 파일을 지정핚메일로 발송.
mailfirst admin@mail : Rotate 진행 시 새로 만들어진 신규파일 이전의 Log File을 지정한 메일로 발송
errors admin@mail : Rotate 진행 시 에러가 발생하면 지정한 메일로 통보
sharedscripts : 하나의 서비스에 로그의 종류가 여러 개 일때 logrotate의 스크립트를 공유하도록한다.
[ "Apache의경우Error, Access 로그를따로관리, EX : /var/log/httpd/*log" ]

 

vi /var/lib/logrotate/logrotate.status

# logroate 작업 내역을저장

 

ls -l /etc/logrotate.d

특정 데몬에 의해 관리되는 로그에 관한 logrotate 설정값을 저장하고 있는 파일목록

 

vi /etc/logrotate.d/psacct

위에서 작업한 Psacct Tool의 logrotate 설정 값 분석

반응형