歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 如何在Centos 6.3下利用rsyslog+loganalyzer+mysql部署日志服務器

如何在Centos 6.3下利用rsyslog+loganalyzer+mysql部署日志服務器

日期:2017/3/3 16:11:30   编辑:關於Linux

作為一名系統運維工程師,平時查看分析LINUX系統日志我覺得是我們每天必做的功課,但時間長了會發現每次查看站點日志都得挨個進後台,幾台服務器還可以這麼對付,但如果管理成百上千台線上服務器,這種方法就捉襟見肘了。

後來想了想能不能有一台日志服務器集中管理日志,並以WEB形式將日志顯示到前台方便查看,頓時碼字的想法油然而生,呵呵。

本人有一個習慣,那就是會把群裡或者網上看到的圈內比較認可的LINUX系統軟件先保存在備忘錄,等閒下來研究研究,剛好前段時間有位朋友提到rsyslog+loganalyzer集中管理日志,所以今天剛好就抽空研究了下,過程雖有曲折(網上的文檔各種坑跌),最後還是利用一天時間搞定,將自己的理解分享給搭建,僅供參考。

本文檔是利用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.驗證效果

如圖:

作者:51cto博客 一路向北

Copyright © Linux教程網 All Rights Reserved