Linux日誌伺服器

餘二五發表於2017-11-15

 

 

 Linux 下的rsyslog有向遠端傳送日誌的功能,出於安全和審計需要,可以將伺服器的日誌集中起來管理。加上圖形化的日誌分析工具,我們可以很直觀的發現日誌中的問題,配合常規的監控系統,以實現基於日誌的顆粒化運維。

 

日誌伺服器的運作機制大致是這樣的:

1、客戶端將日誌傳送到伺服器,服務端的日誌裡於是出現了客戶端的日誌

2、服務端將日誌匯入mysql,通過php程式進行日誌分析並顯示在網頁上。

 

環境:CentOS 6.3 x64

服務端:loganalyzer.test.org   192.168.1.249

客戶端:apache01.test.org      192.168.1.21

 

一、配置基本的日誌伺服器

 

1、在服務端開啟接收日誌選項,編輯/etc/rsyslog.conf,取消下面兩行註釋:

 

$ModLoad imtcp  $InputTCPServerRun 514

這會讓rsyslog監聽本地tcp 514埠,請注意iptables防火牆要開啟該埠。

 

同理,如果需要監聽udp 514埠,則啟用下面這段程式碼

 

$ModLoad imudp $UDPServerRun 514

 

2、在客戶端修改開啟傳送日誌選項,編輯/etc/rsyslog.conf ,在行末新增如下內容:

 

*.*   @@192.168.1.249

也可以寫域名,但是為了減少依賴和服務的可靠性,建議使用IP地址。


全部日誌傳送的話,感覺有很多垃圾,比如cron日誌,可以選擇性的傳送一些日誌

*.info;mail.none;cron.none   @@192.168.1.249

 

注意:上面有兩個@,如果服務端採用udp協議,則只需要一個@

 1

*.*   @192.168.1.249

 

tcp更穩定可靠,udp更快速高效, 請根據需要選擇。

 

3、重啟rsyslog服務

 

/etc/init.d/rsyslog restart

不出意外,在服務端應該就可以看到客戶端的日誌了。

 

 

二、在服務端配置loganalyzer

 

1、安裝LAMP

 

 

yum -y install httpd mysql-server php php-mysql php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-snmp  --enablerepo=epel    sed -i `/ServerTokens/{s/OS/Minor/g}` /etc/httpd/conf/httpd.conf    sed -i `/ServerSignature/{s/On/Off/g}` /etc/httpd/conf/httpd.conf    echo "<?php phpinfo();phpinfo(INFO_MODULES);?>"  >/var/www/html/index.php    sed -i `/;date.timezone/{s/;//g;s/=/= Asia/Shanghai/g}` /etc/php.ini

 

2、配置rsyslog-mysql

 

yum install rsyslog-mysql -y chkconfig --level 2345 mysqld on /etc/init.d/mysqld start mysql_secure_installation

 

 

找到 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql,

 

匯入資料庫:  

 # mysql -u root -p </usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

這會建立一個資料庫loganalyzer,和兩個表 SystemEvents / SystemEventsProperties

 

 

授予許可權

 

mysql -u root -p -e "GRANT ALL PRIVILEGES ON loganalyzer.* TO rsyslog@localhost IDENTIFIED BY  `rsyslogpassword`;"  mysql -u root -p -e "flush privileges;"

 

編輯/etc/rsyslog.conf

 

在檔案末尾新增兩行讓系統日誌匯入到mysql中去

 

$ModLoad MySQL  *.*       >127.0.0.1,loganalyzer,rsyslog,rsyslogpassword

後面三個字元段的格式是:【資料庫名】【使用者名稱】【密碼】,之間用逗號分開

 

 

重啟服務

 

/etc/init.d/rsyslog restart

 

配置檢查

tail /var/log/message 是否有資料庫連線報錯

登入mysql,檢查Syslog資料庫中的SystemEvents是否依然為空

 

# mysql -u root -p -e "select * from loganalyzer.SystemEvents;"
3、配置loganalyzer第一、二、三步直接next,然後跳到第七步,選擇下列值(注意大小寫!!)
第八步,完成配置

 

如果不幸配置失敗,可以清空檔案config.php來重新配置loganalyerzer

本文轉自 紫色葡萄 51CTO部落格,原文連結:http://blog.51cto.com/purplegrape/958117,如需轉載請自行聯絡原作者


相關文章