系統日志的重要性,相信大家都深有體會,當發生故障後,第一時間就是查看相關報錯信息和日志信息,以定位問題所在,還可以基於日志,進行日志的分析,從而獲取系統運行狀態的一些規律,本篇就介紹關於系統日志的先關內容,具體分為:
1、rsyslog相關概念的介紹
2、自定義日志存儲的信道(facility)和存儲位置,讓rsyslog作為服務端記錄rsyslog客戶端的日志信息
3、定義rsyslog的日志存儲在mysql數據庫中
4、利用loganalyzer實現對存儲在mysql數據庫中的rsyslog日志信息,進行web圖形化分析管理
環境:
CentOS7系統,IP為10.1.32.72
LAMP組合采用:yum方式的rpm包安裝
httpd-2.4
php-fpm(也就是php基於fastcgi方式與httpd交互的實現)
mariadb
第一章 rsyslog相關概念的介紹
1、rsyslog是什麼
rsyslog是系統上用來進行日志管理的工具,其C/S架構的程序,可以為當前系統記錄系統相關的日志信息,也支持為其他軟件或其他的系統記錄日志信息,其相關特性表現為:
多線程工作;
基於UDP、TCP、協議,還可以基於tls/ssl進行加密通信,還可以基於RELP進行通信;
存儲日志信息於MySQL、PostgreSQL(PGSQL)、Oracle等RDBMS;
強大的過濾器,實現過濾日志信息中任何部分的內容;
自定義的輸出格式;
2、rsyslog程序環境
程序包:
rsyslog 程序包
rsyslog-mysql 支持將日志信息記錄到mysql的程序包
配置文件:
/etc/rsyslog.conf、/etc/rsyslog.d/*.conf
主程序:
/usr/sbin/rsyslogd
模塊組件:
/usr/lib64/rsyslog/
Unit file:
/usr/lib/systemd/system/rsyslog.service
3、rsyslog相關的術語
facility:收集日志的通道設施,信道,可以理解為日志通過那個虛擬設備發送進來
常見的facility有:
auth # 認證相關的
authpriv # 權限,授權相關的
cron # 任務計劃相關的
daemon # 守護進程相關的
kern # 內核相關的
lpr # 打印相關的
mail # 郵件相關的
mark # 標記相關的
news # 新聞相關的
security # 安全相關的,與auth 類似
syslog # syslog自己的
user # 用戶相關的
uucp # unix to unix cp 相關的
local0 到 local7 # 用戶自定義使用
* # *表示所有的facility
priority:(log level)日志的級別,一般有以下幾種級別(從低到高)
debug # 程序或系統的調試信息
info # 一般信息
notice # 不影響正常功能,需要注意的消息
warning/warn # 可能影響系統功能,需要提醒用戶的重要事件
err/error # 錯誤信息
crit # 比較嚴重的
alert # 必須馬上處理的
emerg/panic # 會導致系統不可用的
* # 表示所有的日志級別
none # 跟* 相反,表示啥也沒有
target:(動作)日志記錄的位置,常見的有:
文件:
將指定的日志信息記錄到指定的文件中
-文件:
表示將日志信息記錄到指定的文件中,-表示異步寫入
用戶:
將日志事件通知給指定的用戶,通常是將日志信息發送給登錄到當前系統上的所有用戶的終端
日志服務器:
格式為@RSYSLOG_SERVER ,表示將日志信息發送給指定的日志服務器
管道:
格式為 |COMMAND 表示將日志信息管道送給指定的命令
4、記錄日志定義的格式為:
facility.priority target
表示將哪個信道傳進來的日志,哪個日志級別(及其之上的日志級別),記錄到哪個目標中
facility格式:
* 表示所有的facility
FACI1,FACI2,FACI1,… 列表中給定的所有facility
FACI1.PRI1;FACI2.PRI2;FACI3.PRI3;… 列表中給定的facility和對應的priority及其之上級別的記錄
priority格式:
* 所有級別
none 沒有級別,不記錄日志
PRIORITY:此級別(含)及其以上的所有級別
=PRIORITY: 僅指定的級別
例如:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
表示所有信道的info級別以上的信息,除了mail設備,authprioriv設備、cron設備的日志,都記錄到/var/www/messages文件
authpriv.* /var/log/secure
表示authpriv設備上所有日志級別的日志,都記錄到/var/log/secure文件中
mail.* -/var/log/maillog
表示mail設備所有日志級別的日志,都以異步方式記錄到/var/log/mailog文件中
auth.=info @10.0.0.1
# 表示將auth相關的,級別為只為info的日志記錄到10.0.0.1主機上去
前提是10.0.0.1要能接收其他主機發來的日志信息
user.!=error /var/log/test.log
# 表示記錄user相關的,不包括error級別的信息,記錄到/var/log/test.log文件中
cron.info;mail.info /var/log/test.log
# 多個日志來源可以用";" 隔開
cron,mail.info /var/log/test.log
# 與cron.info;mail.info 是一個意思
mail.*;mail.!=info /var/log/test.log
# 表示記錄mail相關的所有級別的信息,但是不包括info級別的
第二章 自定義日志存儲的信道(facility)和存儲位置,讓rsyslog作為服務端記錄rsyslog客戶端的日志信息
1、自定義存儲位置—以文件為例 2、讓本機rsyslog作為服務端,接受來自其他rsyslog客戶端的日志