
솔직히 이쪽은 써본 적이 거의 없어서..... ㅎㅎㅎ 외워야지
시스템에서 일어나는 모든 사건이나 이벤트는 각 서비스 별로 기록되는데 이러한 기록들을 로그(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이라는 태그가 덧붙여진다.