作為一名系統營運工程師,平時查看分析LINUX系統日誌我覺得是我們每天必做的功課,但時間長了會發現每次查看網站日誌都得挨個進後台,幾台伺服器還可以這麼對付,但如果管理成百上千台線上伺服器,這種方法就捉襟見肘了。
後來想了想能不能有一台Log Service器集中管理日誌,並以WEB形式將日誌顯示到前台方便查看,頓時碼字的想法油然而生,呵呵。
本人有一個習慣,那就是會把群裡或者網上看到的圈內比較認可的LINUX系統軟體先儲存在備忘錄,等閑下來研究研究,剛好前段時間有位朋友提到rsyslog+loganalyzer集中管理日誌,所以今天剛好就抽空研究了下,過程雖有曲折網上的文檔各種坑跌),最後還是利用一天時間搞定,將自己的理解分享給搭建,僅供參考。
我的部落格新站已經建好,更多新的內容即將在新站更新。。
歡迎訪問 http://www.showerlee.com
本文檔是利用rsyslog+loganalyzer+mysql將網內所有LINUX伺服器的系統日誌集中到Log Service器進行管理,所有日誌會儲存在mysql資料庫表中
註:loganalyzer在擷取用戶端日誌會有兩種儲存模式,一種是直接讀取用戶端/var/log/目錄下的日誌並儲存到服務端該目錄下,一種是讀取後儲存到Log Service器資料庫中,本文檔推薦後者
解決方案:
一.環境部署
作業系統: centos6.3 x64
rsyslog: 系統預設yum源
loganalyzer: loganalyzer-3.6.3
LAMP: httpd-2.4.4,mysql-5.6.10,php-5.4.13
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JTA555-0.jpg" title="rsyslog.jpg" />
rsyslog server: 192.168.7.201 lamp.example.com
rsyslog client: 192.168.7.74 www2.example.com
1.安裝LAMP環境
本博傳送門:http://showerlee.blog.51cto.com/2047005/1174141
2.關閉iptables和SELINUX
# service iptables stop
註:這裡若要開啟iptables服務增加系統安全性
服務端需添加rsyslog UDP 514連接埠以及loganalyzer TCP 80連接埠通過規則
# iptables -A INPUT -p udp --dport 514 -j ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -p TCP --dport 80 -j ACCEPT
用戶端只需添加OUTPUT通過規則
# iptables -P OUTPUT ACCEPT
從規則可見,rsyslog server端為被動擷取資料,client端為主動發送資料
關閉iptables的朋友可以無視。。
# setenforce 0
# vi /etc/sysconfig/selinux
---------------
SELINUX=disabled
---------------
3.同步時間
# ntpdate asia.pool.ntp.org
二.安裝配置rsyslog
(rsyslog server)
# yum install rsyslog rsyslog-mysql -y
註:rsyslog-mysql為rsyslog將記錄傳送到mysql資料庫的一個模組,這裡必須安裝
# cd /usr/share/doc/rsyslog-mysql-5.8.10/
# mysql -uroot -p123456 < createDB.sql
註:這裡匯入資料庫操作其實博主最後研究了下,就是建立了Syslog庫並在該庫中建立了兩張空表
建立rsyslog使用者在mysql下的相關許可權
# mysql -uroot -p123456
> grant all privileges on Syslog.* to rsyslog@localhost identified by "123456";
> flush privileges;
> exit
佈建服務端支援rsyslog-mysql模組,並開啟UDP服務連接埠擷取網內其他LINUX系統日誌
# vi /etc/rsyslog.conf
在#### MODULES ####下添加這兩行
------------------
$ModLoad ommysql.so
*.* :ommysql:localhost,Syslog,rsyslog,123456
------------------
注:localhost表示本地主機,Syslog為資料庫名,rsyslog為資料庫的使用者,123456為該使用者密碼
取消下面三行注釋
-----------------
$ModLoad immark
$ModLoad imudp
$UDPServerRun 514
-----------------
重啟服務:
# service rsyslog restart
(rsyslog client)
# yum install rsyslog -y
配置rsyslog用戶端發送本地日誌到服務端
# vi /etc/rsyslog.conf
末行添加如下內容
-------------------
*.* @192.168.7.201
-------------------
注:192.168.7.201 為Log Service器端IP地址
重啟服務:
# service rsyslog restart
三.安裝loganalyzer
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.3.tar.gz
# tar zxvf loganalyzer-3.6.3.tar.gz
# cd loganalyzer-3.6.3
# mkdir -p /usr/local/apache2/htdocs/loganalyzer
複製loganalyzer原始碼到apache的DocumentRoot下loganalyzer目錄
# cp -r src/* /usr/local/apache2/htdocs/loganalyzer
# cp -r contrib/* /usr/local/apache2/htdocs/loganalyzer
# chown -R daemon.daemon /usr/local/apache2/htdocs/loganalyzer
通過web嚮導安裝loganalyzer前,必須先執行以下兩個指令碼
# cd /usr/local/apache2/htdocs/loganalyzer/
# sh configure.sh
# sh secure.sh
註:該指令碼實際上是建立該目錄下的config.php,並配置該檔案許可權。
在瀏覽器輸入網址,進入安裝嚮導
http://192.168.7.201/loganalyzer
1.提示沒有設定檔,點擊here利用嚮導產生
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JTA344-1.png" style="float:none;" title="1.png" />
2.NEXT
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT64408-2.png" style="float:none;" title="2.png" />
3.按照輸入配置,點擊NEXT:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT64296-3.png" title="14.png" />
註:點擊NEXT時若報錯,後台執行如下命令後繼續
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
4.開始寫入資料庫,NEXT
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JTC452-4.png" title="5.png" />
5.提示寫入成功,NEXT
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JTCc0-5.png" title="6.png" />
6.設定管理員賬戶,配置完畢NEXT
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT62A2-6.png" title="7.png" />
7.設定監控日誌儲存到mysql資料庫中,按照配置後NEXT
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT62934-7.png" title="15.png" />
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT635F-8.png" title="16.png" />
8.完成配置,FINISH
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT62133-9.png" title="10.png" />
9.進入登陸介面:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT64V2-10.png" title="11.png" />
10.進入主介面:
查看loganalyzer是否擷取192.168.7.201和192.168.7.74系統日誌
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT64612-11.png" title="19.png" />
利用navicat查看rsyslog服務端和用戶端系統日誌是否都寫入資料庫Syslog-SystemEvents表
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT64963-12.png" title="18.png" />
---------- 大功告成------------
後記:
1.本人在loganalyzer安裝嚮導配置的web後台賬戶,在登陸介面無法登陸,提示帳號或密碼錯誤,不知道是什麼原因?最後是在嚮導一處去掉登陸認證才勉強通過,有遇到相同問題的朋友望幫忙解答。
經過一位朋友指點,終於找到了原因
首先利用以下命令守株待兔
# tail -f /usr/local/mysql/log/mysql.log
然後在loganalyzer嚮導STEP6輸入web後台帳號密碼後,點擊NEXT
查看到mysql.log日誌裡出現了一條INSERT語句
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JTA951-13.png" title="20.png" />
然後將該語句複製到後台手動執行,看報什麼錯誤
# mysql -uroot -p123456;
> INSERT INTO logcon_users (username, password, is_admin) VALUES ('admin', '00a1f187721cxxxxxxx6bf791e69382c', 1);
ERROR 1364 (HY000): Field 'last_login' doesn't have a default value
提示'last_login'欄不可為空值
OK,直接登入navicat,將這欄設定為允許空值儲存即可
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT61017-14.png" title="21.png" />
從新執行這條語句
> INSERT INTO logcon_users (username, password, is_admin) VALUES ('admin', '00a1f187721cxxxxxxx6bf791e69382c', 1);
Query OK, 1 row affected (0.06 sec)
顯示執行成功
利用navicat 查看後台該表,顯示成功插入一條記錄
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT61495-15.png" title="22.png" />
重新利用該帳號即可成功登入loganalyzer web後台
看來是mysql在執行該語句時,發現last_login欄預設為非空,所以拒絕這條insert語句執行,解決辦法就是將該欄設定為允許空值即可
博主線上上老版本mysql-5.0.56無需進行上述手動操作,即可成功登入後台
但本篇出現的問題則是在mysql-5.6.10版本上
看來這應該不算是loganalyzer的BUG,應該是mysql在高版本執行insert語句提高了嚴謹性
這裡給卡在這裡的朋友點思路,僅供參考。
在此感謝longeleven11朋友的提點。。。。
2.安裝rsyslog可謂是過程曲折,之前本想全部編譯安裝,最後才發現網上的文檔各種誤導,編譯rsyslog最後花了2個小時安裝了其6個依賴包,全部找的老外的文檔挨個測試,裝完網上給出的文檔又不能合理給出如何與系統內建的rsyslog共存保證不衝突,也就是編譯的rsyslog的啟動方法如何與系統內建的區別,索性就yum吧,實屬無奈之舉,還有吐槽下google各種間歇性抽風,至於原因,大家都懂的。。。
3.Windows用戶端安裝(win2008 server 64bit)
1.下載evtsys
http://eventlog-to-syslog.googlecode.com/files/Evtsys_4.4.3_64-Bit.zip
2.解壓檔案將包內64-Bit檔案夾下的所有檔案複製C:\Windows\System32下
3.開啟evtsys服務
運行- cmd
> cd c:\Windows\System32
> evtsys -i -s 10 -h 192.168.7.11 -p 514
> net start evtsys
4.驗證效果
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1JT625F-16.png" title="1.png" />
本文出自 “一路向北” 部落格,請務必保留此出處http://showerlee.blog.51cto.com/2047005/1231160