日志功能对于操作系统是相当重要的,在使用中,无论是系统还是应用等等,出了任何问题,我们首先想到的便是分析日志,查找问题原因。
自 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/