目录
一日志收集
二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监听端口收集其他主机的日志,配置网页查看日志信息的网站。
转载于:https://blog.51cto.com/oldking/1891232