■ 山东广电网络有限公司济宁分公司 李瑞祥 崔冬梅 刘伟
编者按:以前笔者单位通过3CD软件进行的日志的收集工作,对于关键词的查找也只能是通过人工查找,对系统资源消耗比较大,现在改为在LINUX下建立日志服务器,查找信息很方便,下面介绍一下如何配置与使用。
为了实现对于公司网络设备的实时监控,我们需要有一种手段可以收集网内重要的数据设备(如交换机等)的日志信息,并能够定时对日志信息进行查询操作,如果发现有可能引起网络故障的关键词,如loopback、ARP detects IP conflict等,就需要进行故障排查,这样我们就可以在网络运维工作中做到提前发现、提前处理,达到防患于未然的目的。
这项工作我们以前一直在做,是通过3CD软件进行的日志的收集工作,对于关键词的查找也只能是通过人工,同时由于3CD是运行Windows系统中的,对于系统资源消耗比较大,往往运行个几天软件就卡死了,这对于日志记录来说是非常致命的,本来我们是要通过日志信息来发现问题,如果日志服务器本身就出问题了,还谈什么发现问题、解决问题呢?
今年我们开始在Linux下建立日志服务器,来统一收集各种类型的交换机发来的日志,这些日志文件能够保存到一个数据库中,利用数据库强大的查询功能,我们可以根据关键词来集中的定位故障信息,比如用SELECT* from SystemEvents where Message LIKE'%conflict%'来查看有哪些冲突产生了。
在这些功能基础功能都实现的基础上(即我们在MYSQL数据里面产生了大量的日志信息,也可以方便地通过客户端对日志信息进行查询),接下来的就是对日志信息进行分析,即我们确定好需要对哪些网络设备进行日志记录,以哪些单词为关键词进行查询,日志信息保存多少天的,超出天数的日志信息如何处理等,最后就是配置一个Web查询的界面,这个界面可以让大家都方便的进行查询,因为是通过浏览器进行查询的,不需要安装客户端,因此更加方便。
好了,下面开始说具体的配置过程,大致分三个部分,一个是LAMP的搭建,一个是RSYSLOG服务器的搭建,一个是loganalyzer的配置。
可以说这是一个庞杂的系统,需要费好大的劲才可以配置好,我觉得主要的原因还在于Linux的版本众多,Linux下面应有程序的版本也众多,不同版本的配置方法还不一样,这样就造成我们在初学配置的时候不知道照着哪个教程学,实际上照哪个教程都配置不出来,非得要综合多个教程才能配置成功,而且这样配置成功了,再换一台电脑,还不一定能够配置成功。
这是Linux系统的一个问题,这个问题造成只有专业人员才可以使用Linux,才有可能在Linux里面配置各种服务,当然这也给我们一个机会,即如果有一个办法,可以把Linux里面的服务封装好,方便下一步快速部署,也算是解决了一个难题。
(1)确认系统的版本号
我采用的是CENTOS系统,版本号是7.4.1708
[root@localhost /]#cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
[root@localhost /]#cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
(2)给系统打补丁
为了让系统保持一个良好的工作状态,同时保障系统的安全性,我们要及时给系统打上补丁,当然前提是这个系统是可以连接外网的。
yum update
(3)关闭Linux的防火墙
当然,关闭了防火墙系统就不安全了,但是如果不关的话,在配置过程中好多的服务通过网络是访问不到了,所以我们先关闭防火墙,等系统的各项服务都配置好了,再研究如何开启防火墙,以及开放哪些端口。
systemctl stop firewalld.service
出现如图1的提示,说明防火墙已经关闭了。
(1)程序安装
很简单,在系统中执行一条命令即可:
yum install httpd
(2)了解配置文件
在这个项目,我们只需要了解一条信息,即要发布的网页存放在哪个目录(/var/www/html)下,定义是在/etc/httpd/conf文件里,如图2所示,以后我们要放发布的网页,就要放在这个目录下。
图1 配置过程中的提示
图2 了解网页文件的发布路径
启动httpd的命令为systemctl start httpd
(1)MYSQL的安装
安装MySQL,由于CentOS7默认会安装Mariadb,因此使用MySQL官方提供快速的安装方法,地址:http://dev.mysql.com/doc/mysql-yum-repoquick-guide/en/
具体方法与步骤如图3所示。
(2)MYSQL客户端的使用
MYSQL是数据库服务器,是存储数据的地方,一般来说,数据库服务器我们一般是不会直接操作的,我们是通过客户端软件连接上MYSQL服务器,在本机上通过客户端软件来操作数据库服务器的,有一款很好用的客户端软件,名叫navicat for mysql,从网上可以下载免费的试用版本。安装完以后,就要在MYSQL里面设置让root帐号可以在客户端软件上登录,具体方法如图4所示。这里面的关键就是将host的值从localhost或者代表本地的IP地址改成为%,这样就表示可以远端进行登录了。
图3 安装具体方法
图4 登录客户端
(1)安装
yum install php phpgd php-xml php-mysql -y
(2)设置httpd及mysql开机自启动
# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl start mysqld.service
# systemctl enable mysqld.service
(3)测试PHP是否正常运行
[root@localhost html]# pwd
/var/www/html
# vi index.php
phpinfo()
?>
在浏览器中输入http://10.66.66.67/index.php,若显示如图5所示的内容,则表示配置成功。
安装完PHP以后,一定要记得执行如下操作:
将SELINUX设置为disabled
# setenforce 0
# sed -i 's#SELINUX=e nforcing#SELINUX=disable d#g' /etc/selinux/config
补充知识:
-i :直接修改读取的文件内容,而不是输出到终端。
s :取代。
不 然,在loganalye的安装时,就会一直提示有一个无法无法写入,就算就把这个文件的权限已经改成chmod 666也不行。
rpm -qa rsyslog#CentOS7默认会安装rsyslog
rsyslog-8.24.0-12.el7.x86_64
可以看到我安装的RSYSLOG程序的版本跟网上的教程里面显示的不一样,因为我的LINUX版本是比较新的,所以里面的RSYSLOG程序也比较新。
#yum install rsyslogmysql -y #rsyslog使用此模块将数据传入MySQL数据库,必须安装
# cd /usr/share/doc/rsyslog-8.24.0/
# mysql -u root -p # Enter password: 图5 PHP配置成功的界面 导入数据库操作创建Syslog 库,并在该库中创建两张空表SystemEvents 和SystemEventsProperties。通 过mysql-creatDB.sql程序可以查看此表格的详细属性,例如在日志数据表SystemEvents中,包 含设备编号ID,告警日志接收时间ReceivedAt,告警发送时间DeviceReportedTime,告警级别Priority,告警设备名字FromHost,告警信息Message等等,这些属性与设备日志文件产生的数据属性一一对应。 此步骤非常关键,主要是配置rsyslog系统的端口、接收协议和一些规则等,详细配置可查看/etc目录下的rsyslog.conf文件,配置简要说明如下: (1)加载模块命令 $ModLoad imuxsock $ModLoad imjournal (2)开启UDP协议,接收从514端口转发过来的日志 $ModLoad imudp $UDPServerRun 514 (3)开启TCP协议,接收从514端口转发过来的日志 $ModLoad imtcp $InputTCPServerRun 514 (4)所有日志类型的info级别以及大于info级别的信息记录到/var/log/messages,但不包含mail邮件信息,authpriv验证信息和cron时间任务信息 *.info;mail.none;authpriv.none;cron.none /var/log/messages 5.查询rsyslog程序是否运行正常,执行命令#systemctl status rsyslog,可以看到如图6的信息。由Started System Logging Serv...说明rsyslog程序正常运行。 安装这个程序的目的是让同事通过浏览器软件就可以直接查看日志信息,不用再单独安装连接MySql的客户端软件了,虽然有好处,但是配置特别繁琐,下面我就是不再说细说明每一个步骤,就把需要注意的地方说明一下。 图6 查询是否正常运行 图7 创建一个可以连接日志数据库的用户名和密码 我们是直接从loganalyzer的网站上下载的最新版本的程序,该程序放在/home/lrx目录下了。 #mkdir-p/var/www/html/loganalyzer # cp -rf src/* /var/www/html/loganalyzer/ #cp-rf contrib/*/var/www/html/loganalyzer [root@localhost loganalyzer-4.1.6]#cd/var/www/html/loganalyzer/ [root@localhost loganalyzer]#sh configure.sh (1)config.php文件不可写的问题 这个问题除了要注意chmod 666外,还要注意,之前说过修改LINUX里面的一个配置文件的问题。 (2)连接数据库的问题 LogAnalyzer要想配置成功,关键问题是要能够连接数据库,核心是连接数据的用户名和密码,在这里我们首先要在数据库里面创新一个用户,本例中为syslog1,密码要符合规定,然后要明确连接数据库的名称为Syslog,最后要自己在命令行中测试一遍,确认没有问题的话,才能在Web的配置界面中配置成功,如图7所示,就是一个创建连接数据库的用户名的界面。 mysql>grant all on Syslog.*to syslog1@'local host'identified by 'Wbzlr x95!'; mysql>flush privilege s; 注意:最后还有一个连接数据库的操作,这里面的用户名为root,密码为root的密码,这个跟之前的那个用户名是不一样的。 (3)登录查询信息 使用syslog1/W***95!这个帐号和密码进行登录,在登录时能够登录上,但是会出现一个错误提示,大概的意思是显示不出来日志信息是因为配置文件有拼写错误,我们通过以下操作来解决的: 即进入/var/www/html/loganalyzer这个目录,查看config.php文件,会发现里面把记录日志数据库文件的表名写错了,大小写与实际的表名不一致,改成一致的就可以了,如下所示。 $CFG['Sources']['Source1']['DBTableName'] ='SystemEvents'; $CFG['Sources']['Source1']['DBEnableRowCounting']= false; 通过在Linux操作系统上,使用rsyslog软件来建立日志服务器,让我们对于公司网络内的主要的网络设备的运行状态有了更加清晰准确的了解,通过对记录的日志信息的分析让我们及时了解了网络中存在的问题和隐患,从而便于我们提前预防和解决。 实践证明通过建立日志服务器来保障网络更加稳定安全运行是有效的,在第一台外网日志服务器建立后,我们又陆续建立了内网日志服务器、区县外网日志服务器等等,也都发挥了应用的作用,以后随着网络规模的扩大和业务应用的增加,还将建立更多日志服务器。4.配置服务端支持rsyslog-mysql模块,并开启UDP服务端口获取网内网络设备的系统日志
安装和配置LogAnalyzer
1.安装
2.配置过程中需要注意的三个问题
总结