솔직히 이쪽은 써본 적이 거의 없어서..... ㅎㅎㅎ 외워야지
시스템에서 일어나는 모든 사건이나 이벤트는 각 서비스 별로 기록되는데 이러한 기록들을 로그(log)라고 부른다.
리눅스 초기의 syslog가 발전된 버전. rsyslogd 데몬이 동작하면서 로그를 기록하고, 관련 환경 설정은 /etc/rsyslog.conf 파일을 통해 제어한다.
파일명 | 설명 |
---|---|
/etc/rsyslog.conf | rsyslogd 데몬의 환경설정 파일 |
/etc/sysconfig/rsyslog | rsyslogd 데몬 실행과 관련된 옵션 설정되는 파일 |
/usr/sbin/rsyslogd | 실제 rsyslogd 실행 명령 |
/usr/lib/systemd/system/rsyslog.service | systemctl 명령에 의해 제어되는 유닛 파일 |
주요 동작 명령어
systemctl stop rsyslog
systemctl start rsyslog
systemctl -l status rsyslog
systemctl enable rsyslog
/etc/rsyslog.conf
파일
로그파일이 계속 쌓이면서 크기가 커질 때 이를 방지하기위해 로그 파일을 여러개로 분할해주는 프로그램. 로그 파일의 자동 로에티션, 압축, 제거를 지원한다.
logrotate [option] config_file
예) logrotate -f /etc/logrotate.conf
/etc/logrotate.conf의 주요 설정
1) weekly : 1주일 단위로 로테이트 (weekly/daily/monthly/yearly)
2) rotate 4 : 최대 4번 로테이트 (5개의 파일)
3) create : 로테이트 한 후 비어있는 로그파일을 생성
4) dateext : 로테이션 로그 파일에 해당 날짜를 덧붙여 생성
5) compress : 로테이트 한 후에 생성된 로그 파일에 대해 압축
6) include /etc/logrotate.d : 설정된 파일에 대해서도 로테이트를 적용
7) nomissingok : 로그 파ㅣㅇㄹ이 조재하지 않으면 에러메시지 출력 (default)
8) missingok : 존재하지 않는 경우에 에러메시지 미출력
예) 크기가 100k 일때, mail 항목은 로그 파일이 없을 때 지정된 곳으로 메일을 보낸다. postrotate~endscript는 로그 파일이 로테이트 된 후 실행할 명령어이다.
/var/log/httpd/access.log {
rotate 5
mail posein@gmail.com
size 100k
missingok
dateext
postrotate
/usr/bin/killall -HUP httpd
endscript
}
시스템에서 발생하는 표준 메시지가 기록되는 파일. 대부분이 여기 쌓이고 root만이 읽을 수 있도록 설정되어 있다.
인증을 기반으로 접속과 관련된 로그가 기록. 보통 login(telnet, ssh), tcp_wrappers, xinetd 관련 로그가 쌓인다.
시스템이 부팅할 때 출력되었던 로그가 기록되는데, 보통 커널 부트 메시지 로그
sendmail, dovecot 등과 같이 메일 관련 작업이 기록되는 로그파일.
FTP 접속과 관련된 작업이 기록되는 파일
cron 관련 정보가 기록
부팅 시 발생되는 메시지가 기록되는 파일. 보통 데몬 관련 정보가 기록된다.
telnet이나 ssh를 이용해서 접속한 사용자의 마지막 정보가 기록 (바이너리 파일) lastlog
로 확인.
콘솔, telnet, ftp 이용하여 접속한 사용자 기록. 시스템 재부팅 기록이 쌓이는 파일. (바이너리 파일) lastlog
로 확인가능.
접속이 실패한 경우를 기록 (바이너리 파일) lastb
로 확인가능.
사용자의 로그인 정보, 재부팅 정보는 /var/log/wtmp 파일에 저장하는데 바이너리 파일이다. 이 파일의 내용을 last로 출력할 수 있다.
last [option] [사용자명] [tty number]
예) last
/var/log/wtmp 가 만들어진 관련 정보를 출력한다.
last posein
posein 사용자의 로그인 정보를 출력한다.
last reboot
시스템 재부팅 된 정보를 출력한다.
last -1 reboot
최근에 리부팅한 정보 하나만 출력한다.
last -f /var/log/wtmp.1
/var/log/wtmp.1 파일의 정보를 출력한다.
last 2
last tty2와 ㄱ동일한 명령으로 /dev/tty2로 로그인한 정보를 출력한다.
각각의 사용자가 마지막으로 로그인한 정보를 출력해준다. /var/log/lastlog의 내용을 출력한다.
lastlog [option]
예) lastlog
모든 사용자의 최종 로그 기록을 출력한다.
lastlog -u posein
posein 사용자의 최종 로그 기록을 출력
lastlog -t 3
최근 3일 내에 로그인한 사용자의 기록을 출력
lastlog -b 3
최근 3일 이전에 로그인한 사용자의 기록을 출력
last와 반대되는 개념으로, 로그인 실패 정보를 /var/log/btmp에 기록한다. root만 사용가능하다.
lastb [option] [사용자명]
예) lastb
로그인 실패 정보를 출력한다.
lastb posein
posein 사용자의 로그인 실패 정보를 출력한다.
lastb -3
가장 최근에 로그인에 실패한 3개 항목을 출력한다.
lastb -f /var/log/btmp.1
/var/log/btmp.1의 로그 기록을 출력한다.
lastb 3
lastb tty3와 같은 명령어로 /dev/tty3에서 로그인 실패한 기록을 출력한다.
커널링 버퍼의 내용을 출력하고 제어하는 명령이다.
dmesg [option]
예) dmesg
커널 링 버퍼에 저장된 메시지를 출력한다.
dmesg -c
커널 링 버퍼에 저장된 메시지를 전부 지운다.
명령행에서 로그 시스템에 메시지를 전송할 때 사용하는 명령으로 기본적으로 /var/log/message
파일에 기록된다.
logger [option] [message]
예)logger CentOS 7
/var/log/messages 파일에 'CentOS7'이라는 메시지가 저장된다.
logger -i -f /var/log/messages 'Hello Linux'
/var/log/messages 파일에 'Hello Linux'라는 메시지가 저장되며 PID가 기록된다.
logger -i -t hack 'Success!'
/var/log/messages 파일에 메시지가 저장되는데 PID와 hack이라는 태그가 덧붙여진다.