[Linux] 리눅스 log
리눅스 로그의 특징은 일반적인 텍스트 형식의 로그와 바이너리 형식의 로그 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 설정 값 분석