服务器作用不就是发送和收集数据,这个数据无非分为两类,一类是业务数据,主要是为维持业务运行数据,比如一个游戏服务器,业务数据有装备信息,用户等级信息,装备爆率等等。另一类数据就是日志信息,这个数据非必要数据,但是这个数据可以分析用户行为,可以进一步的帮助我们发现用户需求创造收入来源,,在这个大数据时代如果不搞点数据分析基本上不敢说主机是高科技公司。同时我们也使用日志信息记录服务器状态,协助我们了解系统瓶颈,实现业务平滑拓展收缩。为了迎合大数据时代的需求这里主要介绍日志收集。
目录
- 一日志收集
- 二rsyslog特点
- 三rsyslog组成
- 四实践
一日志收集
日志数据的收集手段是多种多样的,采集的数据也是多种多样的。其中很多应用都是自己收集数据,这一类应用一般比较重量级,并且我们也使用其自带的日志收集工具,主要原因是收集的数据个格式一般比较特殊,需要记录的内容很多。记录日志需要写数据到磁盘,写操作一般会消耗大量的资源这就需要一个高性能的日志记录,若采用第三方记录日志的工具,每记录一次日志都有发送给记录日志的程序,无形间就消耗了大量的资源。这类记录日志的手段需要结合具体的应用去了解使用,这里不做过多的介绍。平时我们会使用一些比较小的程序,这些程序产生的日志比较少但是还比较重要需要记录,每个小程序都写一个自己的日志记录工具显然比较浪费,这时centos给我们提供了一个通用的记录日志的api,小程序记录日志直接调用即可,服务名称为rsyslog,只要程序支持使用rsyslog记录日志,我们就可以调用了。有时我们收集的数据量特别大,这就要求使用更高性能的日志收集展示工具,比较流行的是ELK,E: elasticsearch, L: logstash, K: kibana。以后再介绍
二rsyslog特点
- rsyslog的特性:多线程;UDP/TCP/SSL/TLS/RELP;存储日志信息于MySQL, PGSQL, Oracle等RDBMS;强大的过滤器,实现过滤日志信息中的任何部分的内容;自定义的输出格式;
常用事件记录格式:日期时间 主机 进程[pid]: 事件内容;
- facility:设施,收束日志数据流为有限几个;我们使用的一般是local0-local7自定义收集数据auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7
- proirity:优先级,在记录日志是我们选择一个级别,只要报错信息超过该级别就都会记录debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
三rsyslog组成
既然是要了解rsyslog首先我们要了解他的配置文件以方便我了解它的功能,配置文件的位置在/etc/rsyslog.conf,它的配置文件分为三个部分
-
MODULES
这一部分主要是给rsyslog启动一些额外的模块,帮助rsyslog完成对其他主机日志的收集。$ModLoad imudp #启用udp监听模块,不使用注释掉即可$UDPServerRun 514 #监听在514端口$ModLoad imtcp$InputTCPServerRun 514$ModLoad ommysql #启用MySQL数据库记录数据,只有这个还不够还需要在RULES部分定义调用哪个数据库
-
GLOBAL DIRECTIVES
全局配置段,定义一下通用的属性
-
RULES
定义记录日志的格式,之前在modules部分启用了mysql模块,在这里使用时可以使用如下格式facility.priority :ommysql:DBHOST,DBNAME,DBUSER,DBUSERPASSWORD
四实践
先说目的,这里我们要实现一个使用数据库记录日志信息的rsyslog服务器,并且帮助另外一条记录日志,同时我们提供一个web查看界面。拆分一下任务,1配置rsyslog需要的数据库,2配置rsyslog把数据写到数据库并且监听udp514端口,3使用另外一条主机把日志信息发送到rsyslog服务器,4提供网页查看日志工具loganalyzer
loganalyzer的安装包下载位置http://loganalyzer.adiscon.com/downloads/
- 这里我直接写了一个脚本,主要适用centos7,6的话需要更改一些内容
- yum install mariadb-server rsyslog-mysql -y #安装数据库和rsyslog连接数据库的组件
- systemctl start mariadb.service #启动数据库
- mysql <<eofGRANT ALL ON Syslog.* TO ‘rsluser‘@‘127.0.0.1‘ IDENTIFIED BY ‘rslpass‘;
- GRANT ALL ON Syslog.* TO ‘rsluser‘@‘localhost‘ IDENTIFIED BY ‘rslpass‘;
- eof #授权rsyslog使用rsluser使用rslpass密码访问本地数据库,并且只可以通过本地访问
- mysql < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql #创建rsyslog需要数据库,这个sql脚本是rsyslog-mysql包带的
- systemctl restart rsyslog.serviceyum install httpd php php-mysql php-gd -y #安装提供网页组件
- cd
- wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz #下载loganalyzer包
- tar xf loganalyzer-4.1.5.tar.gz #解压并复制到/var/www/html/loganalyzer
- cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzercd
- cd /var/www/html/loganalyzer #创建666权限的config.php
- touch config.php
- chmod 666 config.php
- systemctl start httpd.service #启动httpd服务
- 需要手动更改的内容
- vim /etc/rsyslog.conf
- $ModLoad imudp
- $UDPServerRun 514
- $ModLoad ommysql #这一行需要添加
- *.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,rsluser,rslpass
- 配置下一台服务器把日志写到这台rsyslog服务器,只要改这一行就好了,当然ip是你们rsyslog服务器的ip不要填写我的ip
- *.info;mail.none;authpriv.none;cron.none @172.16.29.20
- 打开网页第七步的时候配置内容如下
- My Syslog Source My Syslog SourceSource
- Type MYSQL NativeSelect
- View SyslogfieldsDatabase
- Type OptionsTable type MonitorWareDatabase
- Host 127.0.0.1
- Database Name Syslog
- Database Tablename SystemEvents
- Database User rsluser
- Database Password ******** #这里的密码就是我们设置的连接数据库的密码rslpassEnable Row Counting No
- 都配置完之后把/var/www/html/loganalyzer/config.php文件的权限更改为644
- chmod 644 /var/www/html/loganalyzer/config.php
总结
这一节主要是学习使用rsyslog,主要是学会配置数据库接收日志信息,让rsyslog监听端口收集其他主机的日志,配置网页查看日志信息的网站。