相信從事linux服務器運維的筒子們都和我同樣,天天都在和各類系統日誌、服務日誌打交道。這些日誌記錄了系統或服務天天發生的各類狀態。經過觀察日誌咱們能夠及時的解決掉不少系統和服務故障。mysql
今天主要寫的是利用rsyslog集中收集系統日誌和用戶操做記錄,以及對收集到的日誌進行相關處理的方法。例如服務器異常監控和用戶行爲審計。linux
部署架構:ios
角色:應用服務器、日誌彙總服務器、數據庫、日誌監控和日誌查詢sql
這裏針對上圖作下說明:數據庫
一、 把應用服務器上的日誌彙總到日誌彙總服務器上。vim
二、 把彙總服務器上的日誌寫到數據庫中。bash
三、 針對彙總日誌進行相關處理,例如日誌監控和歷史查詢。服務器
實驗環境:架構
操做系統:Centos 5.8 x86_64運維
1、配置日誌收集部分
在日誌彙總服務器上操做:
由於Centos 5.8 x86_64默認使用syslog服務,因此這裏的日誌彙總服務器須要手工安裝rsyslog。
service syslog stop chkconfig --del syslog yum -y install rsyslog
vim /etc/sysconfig/rsyslog #SYSLOGD_OPTIONS="-m 0" SYSLOGD_OPTIONS="-c 2 -r 514 -x -m 240"
各參數做用:
-c 指定運行兼容模式。
-r 指定監聽端口。
-x 在接收客戶端消息時,禁用DNS查找。需和-r參數配合使用。
-m 標記時間戳。單位是分鐘,爲0時,表示禁用該功能。
chkconfig rsyslog on service rsyslog start ps -ef|grep rsyslog
在應用服務器上操做:
echo "*.* @192.168.154.128" >> /etc/syslog.conf service syslog restart
vim /etc/bashrc export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
source /etc/bashrc
咱們在應用服務器上隨便輸入幾個命令,看看日誌彙總服務器上是否都已正常收到。
應用服務器上隨便輸幾個命令。
日誌彙總服務器:
tail -f /var/log/messages
配置日誌入庫部分
建立數據庫和表結構:
cat /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql
mysql < /usr/share/doc/rsyslog-mysql-3.22.1/createDB.sql
grant all on Syslog.* to rsyslog_user@'%' identified by 'rsyslog_pass'; flush privileges;
日誌彙總服務器上操做:
yum –y install rsyslog-mysql
vim /etc/rsyslog.conf $ModLoad ommysql *.* :ommysql:192.168.154.128,Syslog,rsyslog_user,rsyslog_pass
格式:*.* :ommysql:IP:庫名:用戶:密碼
service rsyslog restart
在數據庫驗證是否正常入庫
完成上述幾步,就能夠着手進行日誌處理相關方面的工做了。
關於日誌處理部分
常見的日誌處理大體有如下幾種方法:
一、使用nagios對日誌進行進行狀態監控,例如發現error狀態就發消息給管理員。讓管理員及時的處理服務器相關故障。
二、對日誌進行分析,例如loganalyzer日誌分析工具。
三、查詢數據庫中的日誌信息,可檢索某用戶對某臺機器都進行了哪些操做。
今天先寫到這裏,若是你們有不明白的地方,歡迎和我溝通^_^。