一、知識整理:
1、日志服務rsyslogd新特點:
多線程;
基于SSL/TLS/UDP/TCP/RELP網絡協議傳輸日志信息;
強大的過濾器,實現過濾日志信息中任何部分的內容;
自定義的輸出格式;
日志消息的及時分析框架
存儲日志信息與MySQL、PGSQL、Oracle等RDBMS;
配置文件中可以寫簡單的邏輯判斷
與syslog配置文件相兼容
2、常見日志文件及作用
/var/log/cron 記錄了系統定時任務相關的日志;
/var/log/cups 記錄打印信息的日志;
/var/log/dmesg 記錄了系統在開機時內核自檢的信息,也可以使用dmesg命令直接查看內核自檢信息。
/var/log/btmp 記錄錯誤登錄的日志,這個文件是二進制文件,不能直接vi查看,而要使用lastb命令查看;
/var/log/lastlog 記錄系統中所有用戶最后一次的登錄時間的日志。這個文件也是二進制文件,不能直接vi,而要使用lastlog命令查看。
/var/log/mailog 記錄郵件信息;
/var/log/message 記錄系統重要信息的日志,記錄Linux系統的絕大多數重要信息,如果系統出現問題,首先要檢查的就是應該是這個日志文件;
/var/log/secure 記錄驗證和授權方面的信息,只要涉及賬戶和密碼的程序都會記錄。比如說系統的登錄,ssh的登錄,su切換用戶,sudo授權,甚至添加用戶和修改用戶密碼;
/var/log/wtmp 永久記錄所有用戶的登錄、注銷信息,同時記錄系統的啟動、重啟、關機事件。同樣這個文件也是一個二進制文件不能直接vi而需要使用last命令來查看;
/var/run/utmp 記錄當前已經登錄的用戶的信息。這個文件會隨著用戶的登錄和注銷而不斷變化,只記錄當前登錄用戶的信息,同樣這個文件不能直接vi,要使用w,who,users等命令;
除了系統默認的日志外,rpm包安裝的系統服務也默認把日志記錄在/var/log/下(源碼包在指定目錄下)。不過這些日志不是系統記錄和管理的,而是各個服務使用自己的日志管理文檔來記錄。
3、基本格式:日志基本格式:
日志產生時間;發生事件的服務器主機名;發生事件的服務名或程序名;具體信息。
日志配置文件/etc/rsyslog.conf,/etc/rsyslog.d/* ,配置文件格式簡介:
服務名稱[連接符號]日志等級 日志記錄位置
(1)服務名稱(facility):auth 安全和認證相關信息(不推薦使用authpriv替代)
authpriv 安全和認證信息(私有的)
cron 系統定時任務cront和at產生的日志
daemon 和各個守護進程相關的日志
ftp ftp守護進程產生的日志
kern 內核產生的日志(不是用戶進程產生的)
local0-7 為本地使用預留的服務
lpr 打印產生的日志
mail 郵件日志信息
syslog 有syslogd服務產生的日志信息,雖然服務名稱改為rsyslogd,但是很多配置都還是沿用了syslogd的,這里并沒有修改服務名
user 用戶等級類別的日志信息
uucp :uucp子系統的日志信息,uucp是早期Linux系統進行數據傳遞的協議,后來也常用在新聞組服務中
(2)連接符:. 只要比指定等級高的都記錄下來
.= 只記錄等于指定等級的日志
.! 代表不等于指定等級的日志都記錄
(3)日志等級(priority):debug 一般的調試信息說明
info 基本的通知信息
notice 普通信息,但是有一定的重要性
warning 警告信息,但是還不會影響到服務或系統的運行
err 錯誤信息,已經可以影響到服務或系統的運行了
crit 臨界狀況信息
alert 警告狀態信息,必須采取行動
emerg 疼痛等級信息,系統已經無法使用
(4)可使用的日志記錄位置
/var/log/
系統設備文件如/dev/lp0
轉發給遠程主機,如@192.168.0.1.210:514
用戶名,如root
模塊: 如:ommysql:
4、日志輪替
日志文件的命名規則:
如果配置文件中擁有“dateext”參數,那么日志會用日期來作為日志文件的后綴,例如secure-20150202.這樣的話日志文件名不會重疊,所有也就不需要日志文件的改名,只需要保存指定的日志個數,刪除多余的日志文件即可。
日志輪替(logrotate)配置文件/etc/logrotate.conf:
daily 日志輪替周期是每天
weekly 每周
monthly 每月
rotate # 保留日志的文件的個數,0指沒有備份
compress 日志輪替時,舊的日志進行壓縮
creat MODE OWNER GROUP
建立新日志,同時指定新日志的權限與所有者和所屬組;如creat 0600 root utmp
mail address 當日志輪替時,輸出內容通過郵件發送到指定的郵件地址
missingok 如果日志不存在,則忽略該日志的警告信息
notifempty 如果日志為空文件,則不進行日志輪替
minsize 大小 日志輪替的最小值,日志達到最小值才會輪替
size 大小
dateext 使用日期作為日志輪替文件的后綴 如secure-20155555
注意:rpm包安裝的程序默認輪替,源碼包安裝的需要自己修改配置或添加配置、指定日志目錄等:
vim /etc/logrotate.conf 打開后添加
/usr/local/apache2/logs/access_log(error_log或其他日志) {
daily
create
rotate 30
} (也可以在定義虛擬主機時定義)
日志由/sbin/init負責記錄。
二、命令詳解:
1、logrotate命令 [] 配置文件名
如果此命令沒有選項,則會按照配置文件中的條件進行日志輪替
-v 顯示日志輪替過程
-f 強制進行日志輪替
2、logger命令:
logger -a shell command interface to the syslog(3) system log module
logger [ options] [message]
logger -p local2.notice "how are you"
三、課后練習:
LogAnalyzer 是一款syslog日志和其他網絡事件數據的Web前端。它提供了對日志的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。數據可以從數據庫或一般的 syslog文本文件中獲取,所以LogAnalyzer不需要改變現有的記錄架構?;诋斍暗娜罩緮祿?,它可以處理syslog日志消 息,Windows事件日志記錄,支持故障排除,使用戶能夠快速查找日志數據中看出問題的解決方案。
LogAnalyzer 獲取客戶端日志會有兩種保存模式,一種是直接讀取客戶端/var/log/目錄下的日志并保存到服務端該目錄下,一種是讀取后保存到日志服務器數據庫中,推薦使用后者。LogAnalyzer 采用php開發,所以日志服務器需要php的運行環境,本文采用LAMP。
步驟如下:
(1)準備mysql,更改mysql配置文件my.cnf,添加如下:
skip_name_resolve=ON
innodb_file_per_table=1
(2)安裝rsyslog連接至mysql server的驅動模塊;
[root@localhost ~]# yum install rsyslog-mysql
(3)在mysql-server準備rsyslog專用的用戶賬號,授權:
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'localhost' IDENTIFIED BY 'magedu'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'127.0.0.1' IDENTIFIED BY 'magedu'; MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
生成所需要的數據庫和表;使用重定向讀入模塊的命令:
[root@localhost ~]# mysql < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
(4)啟用模塊:
[root@localhost ~]# vim /etc/rsyslog.conf
在MODULES一欄中添加:
$ModLoad ommysql
更改*.*日志生成的位置:添加
*.* :ommysql:127.0.0.1,Syslog,syslog,magedu
(5)重啟rsyslog服務
(6)檢測:啟動mysql
[root@localhost ~]# logger -p local3.notice "how are youab" [root@localhost ~]# logger -p local2.notice "how are youa" MariaDB [Syslog]> SELECT * FROM SystemEvents\G
*************************** 11. row ***************************
ID: 11
CustomerID: NULL
ReceivedAt: 2016-10-18 17:15:06
DeviceReportedTime: 2016-10-18 17:15:06
Facility: 18
Priority: 5
FromHost: localhost
Message: how are youa
NTSeverity: NULL
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL
11 rows in set (0.00 sec)
(7)配置loganalyzer
首先準備amp環境;安裝httpd、php-gd(支持畫圖形)、php、php-server
然后安裝loganalyzer:
cp -a src /html/
ln -sv
touch config.php
chmod 666 config.php
使用瀏覽器進行配置
Table type :monitorware
chmod 644(安裝完成后)
以上步驟也可以將原目錄contrib中的兩個腳本分別在安裝前后執行。
安裝步驟如下:
此處注意:安裝過程中出現了這個報錯,找了各種日志也沒發現原因,最后發現是需要關閉selinux。
安裝完成。
原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/53730