日志管理2
1、日志服務的配置文件
? ? [loring ~]# vim /etc/rsyslog.conf
? ? ? ? ? ? # Provides UDP syslog reception? //提供接收遠程日志的服務的
? ? ? ? ? ? #$ModLoad imudp
? ? ? ? ? ? #$UDPServerRun 514
? ? ? ? ? ? #### GLOBAL DIRECTIVES ####? //全局配置部分
? ? ? ? ? ? ? # Include all config files in /etc/rsyslog.d/
? ? ? ? ? ? $IncludeConfig /etc/rsyslog.d/*.conf? ? //表示包含/etc/rsyslog.d/目錄下所有以.conf結尾的配置文件
? ? ? ? ? ? *.info;mail.none;authpriv.none;cron.none? ? ? ? ? ? ? ? /var/log/messages
? ? ? ? ? ? ? authpriv.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/secure
? ? ? ? ? ? ? mail.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -/var/log/maillog
? ? ? ? ? ? ? cron.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/cron
? ? ? ? ? ? *.emerg? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
? ? ? ? ? ? ? uucp,news.crit? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/spooler
? ? ? ? ? ? ? local7.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/boot.log
? ? ? ? ? ? 服務或者設備.日志的級別? ? ? ? ? ? ? ? ? ? ? ? ? 日志記錄到哪個文件
? ? ? ? ? ? local0~local7:自定義的服務名
2、authpriv.*?
? ? ? 服務或者設備.日志的級別
? ? ? 1)服務名稱
? ? ? ? ? ? authpriv(auth):用戶授權相關的,認證等? ssh、login、su等
? ? ? ? ? ? cron:和計劃任務相關的服務
? ? ? ? ? ? mail:和郵件相關的
? ? ? ? ? ? news:新聞相關的? uucp
? ? ? ? ? ? kern:和內核相關的
? ? ? ? ? ? lpr:打印機相關的
? ? ? ? ? ? syslog:和rsyslogd進程相關的
? ? ? ? ? ? local0~local7:自定義服務名稱
? ? 2)日志的級別:級別越高、日志越少
? ? ? ? ? ? (1)none:不記錄日志
? ? ? ? ? ? (2)debug:調試信息
? ? ? ? ? ? (3)info:一般的通知信息
? ? ? ? ? ? (4)notice:提醒信息,比info稍微重要點
? ? ? ? ? ? (5)warning(warn):警告信息,可能有問題
? ? ? ? ? ? (6)err(error):錯誤信息
? ? ? ? ? ? (7)critical(crit):比較嚴重的錯誤
? ? ? ? ? ? (8)alert:警報信息,需要立即行動
? ? ? ? ? ? (9)emerg(panic):緊急(恐慌),系統可能已經不可用了
? ? 3)服務名稱.日志等級的表示
? ? ? ? ? ? .? —— mail.warning? 表示記錄mail服務,warning及其以上級別的日志
? ? ? ? ? ? .=? —— mail.=warning? 表示記錄mail服務warning級別日志
? ? ? ? ? ? .! —— mail.!warning 表示除了warning級別以外的,其他級別的所有日志都記錄
? ? ? ? ? ? .none —— 表示不記錄
? ? ? ? ? ? * —— 表示所有
? ? ? ? ? ? *.? —— 表示所有服務
? ? ? ? ? ? .* —— 表示所有日志級別
? ? ? ? ? ? *.* —— 所有服務的所有級別的日志
小實驗
? ? [loring ~]# vim /etc/rsyslog.conf? 在第46行添加如下行:
? ? ? ? authpriv.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /usr/local/secure? ? ? //自己規定一個日志文件
? ? [loring ~]# /etc/init.d/rsyslog restart
? ? 標簽一:
? ? [loring ~]# tail -0f /usr/local/secure
? ? 標簽二:
? ? ? ? [loring ~]# su - test
? ? ? ? [test@server150 ~]$ su - root
? ? ? ? ? ? Password:
? ? ? ? ? ? su: incorrect password
? ? 看標簽一的日志變化。
? ? ? ? [loring ~]# tail -0f /usr/local/secure
? ? ? ? ? ? Aug? 3 12:41:47 server150 su: pam_unix(su-l:session): session closed for user test
? ? ? ? ? ? Aug? 3 12:41:51 server150 su: pam_unix(su-l:session): session opened for user test by root(uid=0)
? ? ? ? ? ? Aug? 3 12:41:55 server150 su: pam_unix(su-l:auth): authentication failure; logname=root uid=500 euid=0 tty=pts/5 ruser=test rhost=? user=root
? ? ? ? 注意:
? ? ? ? ? ? 1)書寫錯誤
? ? ? ? ? ? 2)selinux必須要關閉的或者是permissive模式,否則無法自動生成你配置的日志文件
為了防止別人修改我的日志,如何做?
? ? [loring ~]# chattr +a /var/log/secure
遠程日志? :可以做日志的備份,也可以做日志的集中管理
? ? 集中管理日志的軟件:splunk? ELK
? ? 環境:
? ? ? ? 172.16.12.250? 遠程服務器
? ? ? ? 172.16.254.251? 本地服務器
? ? 1、本地配置
? ? ? ? [loring ~]# vim /etc/rsyslog.conf
? ? ? ? ? ? ? ? *.*? ? @172.16.12.250? ? // 此處IP為遠程服務器IP
? ? 2、遠程服務器配置
? ? ? ? [loring ~]# vim /etc/rsyslog.conf
? ? ? ? # Provides UDP syslog reception? 開啟接收遠程日志的功能
? ? ? ? ? ? ? ? $ModLoad imudp
? ? ? ? ? ? ? ? $UDPServerRun 514
? 3、本地服務器和遠程服務器分別重啟rsyslog服務
? ? ? ? [loring ~]# /etc/init.d/rsyslog restart? ? //254.251
? ? ? ? ? ? Shutting down system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
? ? ? ? ? ? Starting system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
? ? ? ? [root@srv12 ~]# /etc/init.d/rsyslog restart? ? ? ? ? ? //12.250
? ? ? ? ? ? Shutting down system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
? ? ? ? ? ? Starting system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
? 4、驗證
? ? ? ? 在本地隨意切換幾次路徑
? ? ? ? 在遠程動態監控日志
? ? ? ? 注意:
? ? ? ? ? ? 1)服務別忘記重啟
? ? ? ? ? ? 2)本地selinux關閉
? ? ? ? ? ? 3)遠程主機的防火墻關閉
? ? ? ? ? ? 4)盡量不要互相傳日志
日志的輪替、日志的輪滾
? ? 為什么要輪滾?
? ? ? ? 1)防止日志文件過大
? ? ? ? 2)定期清除日志
日志輪滾的配置文件
? ? # vim /etc/logrotate.conf
? ? # grep -v ^# /etc/logrotate.conf | grep -v ^$
? ? ? ? weekly? ? ? //輪滾的周期,一周一輪滾,默認每一周執行一次rotate輪轉工作
? ? ? ? rotate 4? ? //保留多少個日志文件(輪轉幾次).默認保留四個.就是指定日志文件刪除之前輪轉的次數,0 指沒有備份
? ? ? ? create? ? ? //舊日志輪滾后是否創建新的空白日志
? ? ? ? dateext? ? //就是切割后的日志文件以當前日期為格式結尾,如xxx.log-20131216這樣,如果注釋掉,切割出來是按數字遞增,即 xxx.log-1這種格式
compress? ? ? //是否通過gzip壓縮轉儲以后的日志文件,如xxx.log-20131216.gz ;如果不需要壓縮,注釋掉就行
? ? ? ? include /etc/logrotate.d? ? //包含該路徑下的所有配置文件
? ? ? ? /var/log/wtmp {? ? ? ? ? ? //僅針對 /var/log/wtmp 所設定的參數
? ? ? ? ? ? monthly? ? ? ? ? ? ? ? ? ? //輪滾周期,一個月
? ? ? ? ? ? create 0664 root utmp? //創建新的日志文件? 權限664 所有者root 所屬組utmp
? ? ? ? minsize 1M? ? ? ? ? ? ? ? ? //文件大小超過 1M 后才會切割
? ? ? ? ? ? rotate 1? ? ? ? ? ? ? ? ? ? ?
? ? ? ? }
? ? ? ? /var/log/btmp {
? ? ? ? ? ? missingok? ? ? ? ? ? ? //丟了也沒關系
? ? ? ? ? ? monthly
? ? ? ? ? ? create 0600 root utmp
? ? ? ? ? ? rotate 1
? ? ? ? }
? ? ? ? 其他重要參數說明
---------------------------------------------------------------------------------------------------------
compress? ? ? ? ? ? ? ? 通過gzip 壓縮轉儲以后的日志
nocompress? ? ? ? ? ? ? 不做gzip壓縮處理
copytruncate? ? ? ? ? ? 用于還在打開中的日志文件,把當前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數據。
nocopytruncate? ? ? ? ? 備份日志文件不過不截斷
create mode owner group? 輪轉時指定創建新文件的屬性,如create 0777 nobody nobody
nocreate? ? ? ? ? ? ? ? ? 不建立新的日志文件
delaycompress? ? ? ? ? ? 和compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress? ? ? ? ? 覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok? ? ? ? ? ? ? ? 如果日志丟失,不報錯繼續滾動下一個日志
errors address? ? ? ? ? ? 轉儲時的錯誤信息發送到指定的Email 地址
ifempty? ? ? ? ? ? ? ? ? 即使日志文件為空文件也做輪轉,這個是logrotate的缺省選項。
notifempty? ? ? ? ? ? ? ? 當日志文件為空時,不進行輪轉
mail address? ? ? ? ? ? ? 把轉儲的日志文件發送到指定的E-mail 地址
nomail? ? ? ? ? ? ? ? ? ? 轉儲時不發送日志文件
olddir directory? ? ? ? ? 轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
noolddir? ? ? ? ? ? ? ? ? 轉儲后的日志文件和當前日志文件放在同一個目錄下
sharedscripts? ? ? ? ? ? 運行postrotate腳本,作用是在所有日志都輪轉后統一執行一次腳本。如果沒有配置這個,那么每個日志輪轉后都會執行一次腳本
prerotate? ? ? ? ? ? ? ? 在logrotate轉儲之前需要執行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate? ? ? ? ? ? ? ? 在logrotate轉儲之后需要執行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
daily? ? ? ? ? ? ? ? ? ? 指定轉儲周期為每天
weekly? ? ? ? ? ? ? ? ? ? 指定轉儲周期為每周
monthly? ? ? ? ? ? ? ? ? 指定轉儲周期為每月
rotate count? ? ? ? ? ? ? 指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext? ? ? ? ? ? ? ? ? 使用當期日期作為命名格式
dateformat .%s? ? ? ? ? ? 配合dateext使用,緊跟在下一行出現,定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數
size(或minsize) log-size? 當日志文件到達指定的大小時才轉儲,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
當日志文件 >= log-size 的時候就轉儲。 以下為合法格式:
size = 5 或 size 5 (>= 5 個字節就轉儲)
size = 100k 或 size 100k
size = 100M 或 size 100M
查看某個服務的日志是否輪滾
? ? [loring logrotate.d]# cat /etc/logrotate.d/syslog
? ? ? ? /var/log/cron
? ? ? ? /var/log/maillog
? ? ? ? /var/log/messages
? ? ? ? /var/log/secure
? ? ? ? /var/log/spooler
? ? ? ? {
? ? ? ? ? ? sharedscripts? ? //與endscript中間夾的是需要執行的操作? ? ? ? ?
? ? ? ? ? ? postrotate? ? ? ? ? ? ? //輪滾后執行的命令
? ? ? ? /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true? //重新加載配置
? ? ? ? ? ? endscript
? ? ? ? }
小實驗:
1、修改配置文件,添加一行自己定義的內容,重啟服務
? ? [loring log]# vim /etc/rsyslog.conf
? ? ? ? authpriv.*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /usr/local/secure
? ? [loring log]# /etc/init.d/rsyslog restart
2、自己編寫輪滾配置文件
? ? [loring log]# vim /etc/logrotate.d/secure
? ? ? ? /usr/local/secure {
? ? ? ? ? ? missingok
? ? ? ? ? ? notifempty
? ? ? ? ? ? daily
? ? ? ? ? ? create
? ? ? ? ? ? rotate 4
? ? ? ? ? ? compress
? ? ? ? }
3、手動輪滾日志文件
? ? [loring log]# logrotate -vf /etc/logrotate.d/secure
? ? [loring log]# cd /usr/local
? ? [loring local]# ls secure*
? ? ? ? secure? secure.1.gz
實驗續
[loring log]# vim /etc/logrotate.d/ secure
? ? /usr/local/secure {
? ? ? ? sharedscripts
? ? ? ? ? ? prerotate
? ? ? ? /usr/bin/chattr -a /usr/local/secure? 只能追加,不能vi編輯
? ? ? ? endscript
? ? ? ? missingok
? ? ? ? notifempty
? ? ? ? daily
? ? ? ? create
? ? ? ? rotate 4
? ? ? ? compress
? ? ? ? sharedscripts
? ? ? ? postrotate
? ? ? ? /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null? //重讀配置
? ? ? ? /usr/bin/chattr +a /usr/local/secure
? ? ? ? endscript
? ? }
[loring local]# /etc/init.d/rsyslog restart
[root@server1 local]# chattr +a /usr/local/secure
[loring local]# logrotate -vf /etc/logrotate.d/secure
[loring local]# lsattr secure
? ? -----a-------e- secure
/dev/null:空,不管你向它扔什么,都是空
2> :標準錯誤輸出重定向
? ? [root@server1 local]# ls secure
? ? ? ? secure
? ? [root@server1 local]# ls asdf
? ? ? ? ls: cannot access asdf: No such file or directory
? ? [root@server1 local]# ls asdf > /tmp/asdf
? ? ? ? ls: cannot access asdf: No such file or directory
? ? [root@server1 local]# ls asdf 2> /tmp/asdf
? ? [root@server1 local]# cat /tmp/asdf
? ? ? ? ls: cannot access asdf: No such file or directory
2>> :標準錯誤輸出追加重定向