Centos6.3下利用rsyslog+loganalyzer+mysql部署日志服务器
? ? ?作為一名系統運維工程師,平時查看分析LINUX系統日志我覺得是我們每天必做的功課,但時間長了會發現每次查看站點日志都得挨個進后臺,幾臺服務器還可以這么對付,但如果管理成百上千臺線上服務器,這種方法就捉襟見肘了。
? ? ?后來想了想能不能有一臺日志服務器集中管理日志,并以WEB形式將日志顯示到前臺方便查看,頓時碼字的想法油然而生,呵呵。
? ? ?本人有一個習慣,那就是會把群里或者網上看到的圈內比較認可的LINUX系統軟件先保存在備忘錄,等閑下來研究研究,剛好前段時間有位朋友提到rsyslog+loganalyzer集中管理日志,所以今天剛好就抽空研究了下,過程雖有曲折(網上的文檔各種坑跌),最后還是利用一天時間搞定,將自己的理解分享給搭建,僅供參考。
我的博客新站已經建好,更多新的內容即將在新站更新。。
歡迎訪問 ? ? http://www.showerlee.com
? ? ?本文檔是利用rsyslog+loganalyzer+mysql將網內所有LINUX服務器的系統日志集中到日志服務器進行管理,所有日志會保存在mysql數據庫表中
注:loganalyzer在獲取客戶端日志會有兩種保存模式,一種是直接讀取客戶端/var/log/目錄下的日志并保存到服務端該目錄下,一種是讀取后保存到日志服務器數據庫中,本文檔推薦后者
解決方案:
一.環境部署
操作系統: ? ? ? ?centos6.3 x64
rsyslog: ? ? ? ? ?系統默認yum源
loganalyzer: ? ? ?loganalyzer-3.6.3 ?
LAMP: ? ? ? ? ? ? httpd-2.4.4,mysql-5.6.10,php-5.4.13
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 為日志服務器端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利用向導生成
2.NEXT
3.按照如圖輸入配置,點擊NEXT:
注:點擊NEXT時若報錯,后臺執行如下命令后繼續
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
4.開始寫入數據庫,NEXT
5.提示寫入成功,NEXT
6.設置管理員賬戶,配置完畢NEXT
7.設置監控日志保存到mysql數據庫中,按照如圖配置后NEXT
8.完成配置,FINISH
9.進入登陸界面:
10.進入主界面:
查看loganalyzer是否獲取192.168.7.201和192.168.7.74系統日志
利用navicat查看rsyslog服務端和客戶端系統日志是否都寫入數據庫Syslog-SystemEvents表
---------- 大功告成------------
后記:
1.本人在loganalyzer安裝向導配置的web后臺賬戶,在登陸界面無法登陸,提示賬號或密碼錯誤,不知道是什么原因?最后是在向導一處去掉登陸認證才勉強通過,有遇到相同問題的朋友望幫忙解答。
經過一位朋友指點,終于找到了原因
首先利用以下命令守株待兔
# tail -f /usr/local/mysql/log/mysql.log
然后在loganalyzer向導STEP6輸入web后臺賬號密碼后,點擊NEXT
查看到mysql.log日志里出現了一條INSERT語句
然后將該語句復制到后臺手動執行,看報什么錯誤
# 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,將這欄設置為允許空值保存即可
從新執行這條語句
> INSERT INTO logcon_users (username, password, is_admin) VALUES ('admin', '00a1f187721cxxxxxxx6bf791e69382c', 1);
Query OK, 1 row affected (0.06 sec)
顯示執行成功
利用navicat 查看后臺該表,顯示成功插入一條記錄
重新利用該賬號即可成功登錄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.驗證效果
如圖:
轉載于:https://blog.51cto.com/showerlee/1231160
總結
以上是生活随笔為你收集整理的Centos6.3下利用rsyslog+loganalyzer+mysql部署日志服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载] 七龙珠第一部——第095话 悟
- 下一篇: 036、Linux下ipmitool命令