日志功能對於操作系統是相當重要的,在使用中,無論是系統還是應用等等,出了任何問題,我們首先想到的便是分析日志,查找問題原因。
自 CentOS 7 開始,我們的 CentOS 便開始使用 rsyslog 做為日志收集服務了,相對於之前的 syslog 它能夠支持多線程,數據庫存儲,支持更多了傳輸協議等等優點。
而 LogAnalyzer 則是一款基於 PHP 開發的 syslog 日志和其他網絡事件數據的 Web 前端。它提供了對日志的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。
將他們整合起來,我們就能夠搭建一個日志收集管理服務器,用來應對小型的日志數據收集分析。
本次主要配置日志服務器用途收集交換機防火牆等網絡設備的日志。
配置內容
操作系統:CentOS 7.0 ,最小化安裝,配置地址為192.168.119.202
數據庫:mariadb v5.5.44
httpd:v2.4.6
php: v2.4.0
LogAnalyzer:v4.1.5
交換機:nutanix_sw1,華為S5720,地址為172.31.205.29
防火牆:gateway,飛塔FG3040b,地址為192.168.1.254
注意,進行服務器的配置之前,務必確保與交換機,防火牆之間的兩兩路由互相可達,能夠ping通。
關閉防火牆和selinux
在CentOS7上面是firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
關閉 selinux
setenforce 0
getenforce
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
grep SELINUX=disabled /etc/sysconfig/selinux
安裝數據庫
安裝mariadb數據庫。
yum -y install mariadb mariadb-server
啟動並初始化數據庫
啟動mariadb數據庫服務器
systemctl start mariadb.service
systemctl enable mariadb
初始化數據庫
/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):<–初次運行直接回車
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y並回車或直接回車
New password: <– 設置root用戶的密碼
Re-enter new password: <– 再輸入一次你設置的密碼
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,生產環境建議刪除,所以直接回車
… Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–是否禁止root遠程登錄,根據自己的需求選擇y並回車,建議禁止
… Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,直接回車
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 是否重新加載權限表,直接回車
… Success!
Cleaning up…
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
添加數據庫和用戶
mysql -uroot -p
創建”rsyslog”的數據庫,字符編碼設置為utf 8
create database rsyslog character set utf8 collate utf8_bin;
對數據庫“rsyslog”創建全權限的rsyslog,的本地用戶,設置密碼為“rsyslog”
grant all privileges on rsyslog.* to 'rsyslog'@'localhost' identified by 'rsyslog';flush privileges;
安裝 rsyslog 的 MySQL 擴展程序包 rsyslog-mysql
安裝rsyslog
yum -y install rsyslog-mysql
將 rsyslog 的 MySQL 表導入創建的 rsyslog 數據庫,並給予用戶權限
將 rsyslog 的 MySQL 表導入創建的 rsyslog 數據庫
mysql -uroot -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
創建數據庫Syslog,設置本地用戶rsyslog,密碼rsyslog,全部權限
mysql -uroot -p
grant all privileges on Syslog.* to 'rsyslog'@'%' identified by 'rsyslog';flush privileges;
修改 rsyslog 配置文件
vi /etc/rsyslog.conf
$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,rsyslog #日志 :ommysql:數據庫地址,數據庫名,數據庫用戶,數據庫用戶密碼
# 使用UDP協議傳輸
$ModLoad imudp
$UDPServerRun 514
$UDPServerRun 38514
#使用TCP協議傳輸(兩者可同時使用)
$ModLoad imtcp
$InputTCPServerRun 514
$InputTCPServerRun 38514 #華為交換機默認發送日志端口
注意,在修改配置文件的時候,要使功能生效,需要將“#”刪掉

重啟rsyslog服務
systemctl restart rsyslog.service
systemctl enable rsyslog.service
准備web環境
安裝所需軟件
yum install httpd php php-mysql php-gd -y
下載 loganalyzer
yum install unzip wget -y
cd /var/www/html/
wget https://github.com/rsyslog/loganalyzer/archive/master.zip
解壓 loganalyzer
unzip master.zip
復制文件
cp -a loganalyzer-master/src/* /var/www/html/ #把src中的文件包括子目錄,都拷貝到httpd的根目錄
cp /usr/local/src/loganalyzer-3.2.3/contrib/* /var/www/html/ #把contrib中的configure.sh 和 secure.sh 拷到 httpd的根目錄
cd /var/www/html/
chmod u+x configure.sh secure.sh
./configure.sh #運行這個文件,會創建一個每個人都有寫權限的空的 configure.php文件
啟動httpd服務
systemctl start httpd
進入瀏覽器頁面配置
1.step 2 會檢查config.php的寫入權限,如果沒有請授權一下, chmod +w config.php 2.step 3 選擇enable user database,使用自定義數據庫,然后填寫數據庫訪問信息,這里的數據庫是指loganalyzer的用戶數據庫,而不是rsyslog日志存儲的數據庫,這里是需要注意的。並且選取require user to be login。 3.step 5 會將loganalyzer的相關用戶表寫入到數據庫,可以檢查loganalyzer的數據庫就可以看到了。 4.step 6 配置loganalyzer的管理員賬號,登錄loganalyzer界面使用的。 5.step 7 是配置rsyslog的日志存儲數據庫的訪問方法,在source type選擇 mysql native,然后填寫mysql的訪問信息,記住,這里是rsyslog的日志存儲數據庫,不是loganalyzer的用戶數據庫。 6.完成后會自動跳轉提示登錄,登陸后就可以看到數據了。
在瀏覽器中輸入192.168.119.202進行配置,提示點擊 here 進行配置。

點擊之后,提示開始檢查。

配置文件檢查,注意 config.php 需要 666 權限,如果沒有寫權限,則會報錯提示。

LogAnalyzer 的基本配置,此處配置的數據庫為 LogAnalyzer 的數據庫,也就是我們自己建的 rsyslog 數據庫。數據庫名稱,用戶名及密碼都是rsyslog。

如果數據庫能正常連接,那么就會顯示正常了,如果數據庫連接出錯,則會提示錯誤原因,點擊 Next 繼續下一步。

連接數據庫成功后,會自動創建數據庫表,提示 24 條成功,0 失敗。

提示創建管理員用戶

密碼:123456
這一步便是填寫日志信息的數據庫信息,也就是我們導入 sql 文件所創建的 Syslog 數據庫,請注意大小寫,監控表為 SystemEvents,默認為小寫,會出錯,很奇怪。

繼續下一步就會提示成功啦,然后點擊登錄,便能進入查看了。



安裝完成后為了安全,請將 config.php 權限修改為 644
[root@localhost html]# chmod 644 config.php
交換機配置
info-center loghost 192.168.119.202//日志服務器地址
info-center enable //啟動
-info-center loghost source Vlanif205 //指定日志發送源接口為邏輯口
info-center source default channel 2 log level debugging//發送所有級別的日志
Rsyslog+LogAnalyzer解決IP地址空白或不顯示IP地址
mysql -uroot -p
USE Syslog;
ALTER TABLE SystemEvents ADD FromIP VARCHAR(60) DEFAULT NULL AFTER FromHost;

vi /etc/rsyslog.conf
添加
$template insertpl,"insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%', '%fromhost-ip%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL




注: DBMappings注意大小寫,對應后面全部小寫,不能有錯,對應如下。
uID => id,
Date => devicereportedtime,
Host => fromhost,
Messagetype => infounitid,
Message => message,
Facility => facility,
IP => fromip,
Severity => priority,
Syslogtag => syslogtag,
ProcessID => processid,
Event ID => eventid,
Eventlog Type => eventlogtype,
Event Source => eventsource,
Event Category => eventcategory,
Event User => eventuser,
SystemID => systemid,
Checksum => checksum
修改默認 Table type =>> MonitorWare, 修改為 NewSyslog 也就是上面新添加的NewSyslog。
修改日志選擇 Select View => NewSyslog。

facllity:設施,從功能或程序上對日志進行分類,並由專門的工具附則記錄其日志
auth:認證相關信息
authpriv:認證授權相關信息
cron:周期性計划任務相關信息
daemon:守護進程相關信息
kern:內核相關信息
lpr:打印相關信息
mail:收發郵件相關信息
mark:防火牆標記
news:新聞相關信息
security:安全相關信息
syslog:自身記錄
user:用戶相關信息
uucp:早起系統文件共享服務
local0..local7:8個自定義facility
priority:級別
debug:調試信息
info:基本說明信息
notice:需要注意的信息
warn,warning:警告信息
err,error:錯誤信息
crit:藍色警報
alert:橙色警報
emerg,panic:紅色警報
后記:
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.驗證效果
如圖:
4.防火牆及交換機配置
4.1.防火牆配置
進入防火牆界面,配置日志服務器。
收集到的防護牆日志如下所示
4.2.交換機配置
info-center loghost 172.31.206.112//日志服務器地址 info-center enable //啟動 -info-center loghost source Vlanif205 //指定日志發送源接口為邏輯口 info-center source default channel 2 log level debugging//發送所有級別的日志
收集到的交換機日志如下圖所示
*安裝步驟請參考
https://www.getlinux.cn/centos-7-xia-rsyslog-mariadb-loganalyzer-ri-zhi-fu-wu-qi-da-jian.html*****
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_43017750/article/details/89873469
拓補說明
某企業網絡拓補如圖
交換機配置vlanif1的IP地址為192.168.133.100,掩碼長度為24
日志服務器配置的IP地址為192.168.133.129,掩碼長度為24
現在要求在交換機上配置syslog,主動上傳日志到日志服務器。
配置步驟
交換機上的配置
#1.配置交換機IP地址
<Huawei>system-view #進入系統視圖
[Huawei]sysname Switch #配置系統名稱位 Switch
[Switch]interface Vlanif 1 #進入三層VLANIF口1
[Switch-Vlanif1]ip add 192.168.133.100 24 #配置IP地址為192.168.133.100,掩碼長度為24位
[Switch-Vlanif1]quit #退出三層VLANIF口1
[Switch]info-center enable #開啟信息中心
[Switch]info-center loghost source Vlanif 1 #配置信息中心日志主機發送源為vlanif1
[Switch]info-center loghost 192.168.133.129 #配置信息中心日志主機的IP為192.168.133.129
————————————————
版權聲明:本文為CSDN博主「貓先生的早茶」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43017750/article/details/89873469
科普時間
1.關於rsyslog的日志規則facitlity和priority
###rsyslog.conf中日志規則的定義的格式 facitlity.priority Target #facility: 日志設備(可以理解為日志類型): ============================================================== auth #pam產生的日志,認證日志 authpriv #ssh,ftp等登錄信息的驗證信息,認證授權認證 cron #時間任務相關 kern #內核 lpr #打印 mail #郵件 mark(syslog) #rsyslog服務內部的信息,時間標識 news #新聞組 user #用戶程序產生的相關信息 uucp #unix to unix copy, unix主機之間相關的通訊 local 1~7 #自定義的日志設備 =============================================================== #priority: 級別日志級別: ===================================================================== debug #有調式信息的,日志信息最多 info #一般信息的日志,最常用 notice #最具有重要性的普通條件的信息 warning, warn #警告級別 err, error #錯誤級別,阻止某個功能或者模塊不能正常工作的信息 crit #嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息 alert #需要立刻修改的信息 emerg, panic #內核崩潰等嚴重信息 ###從上到下,級別從低到高,記錄的信息越來越少,如果設置的日志內性為err,則日志不會記錄比err級別低的日志,只會記錄比err更高級別的日志,也包括err本身的日志。 ===================================================================== Target: #文件, 如/var/log/messages #用戶, root,*(表示所有用戶) #日志服務器,@172.16.22.1 #管道 | COMMAND
2.如果日志數量太大,內容太多,可以進行過濾記錄日志
簡單的方法可以在rsyslog客戶端上的配置
:msg, !contains, "informational" *.* @主rsyslog服務器ip或者host
在傳輸配置的上一行增加一個過濾配置,格式是嚴格的,一定要在上一行增加過濾配置,這里的意思是日志內容出現informational的就不記錄。詳細的過濾方式在官網上有說,需要的話就要慢慢按照他的方式來使用。
參考文檔:
1.http://litaotao.blog.51cto.com/6224470/1283871
2.http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/rsyslog-3.19...
3.http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html
原文鏈接:
http://www.godblessyuan.com/2015/05/02/rsyslog_loganalyzer_setting/