rsyslog + mysql + loganalyzer 构建日志服务器
时间:2022-03-13 22:54
rsyslog支持的特性
支持多线程
支持tcp,ssl,tls.relp
可以把日志存储于关系型数据库中
支持过滤器,可以实现过滤日志中的任意部分。
支持自定义格式
适用于企业级的日志记录需求。
功能模块化
rsyslog用facility接收各个应用和程序的日志,并把日志分类。有以下几类
auth 与认证相关的
authpriv 与用户认证授权相关的,如用户登陆
cron 与周期任务相关的
daemon 与守护进程相关的
kern 与内核相关的
lpr 与打印相关的
mail 与邮件子系统相关
mark 与防火墙标记相关的
security 与安装相关的
syslog 与日志服务本身相关的
user 与用户相关的
uucp unix早期共享文件的协议
news 与新闻组相关
local 0 到 local 7 8个自定义级别。
通配符,用来指定facility时使用字符
* 表示所有的facility
, 用来facility例表中,分隔facility使用
! 用来取反
facility记录日志的级别,(称为 priority),越向下级别越高。
debug 调试级别,信息最为详细
info 仅次于debug
notic 通知级别
warn 警告,另一种写法:warning
err 错误,还有另一种写法:error
crit 蓝色警报
alert 橙色警报
emerg 红色警报,此级别相当严重了。
指定级别时还有其它写法
* 表示所有级别
none 没有任何级别,一般表示不做记录。
日志发送位置称为target,有以下几类
文件路径 如:/var/log/message ,如果文件路径前面加-表示此日志记录不用同步写入。
用户 如:* 星表示发送给登陆当前系统的所有用户
日志服务器 如:@172.16.2.10
管道 如: | awk 表示把日志交给awk处理。
rsyslog的配置文件:
主配置文件:/etc/rsyslog.conf
其它配置文件:/etc/rsyslog.d/*.conf
主配置文件分为三段
#### MODULES #### 用来加载各个模块
# Provides UDP syslog reception 使用udp协议为其它主机提供日志服务器功能
#$ModLoad imudp 加载udp模块
#$UDPServerRun 514 指定监听udp协议的端口
# Provides TCP syslog reception 启动tcp协议为其它主机提供日志服务功能
#$ModLoad imtcp 加载模块
#$InputTCPServerRun 514 监听tcp端口
#### GLOBAL DIRECTIVES #### 全局指定,定义rsyslog工作特性
#### RULES #### 定义日志记录类型和级别
日志记录要写在 #### RULES #### 中,写法如下:
<记录日志类型><.><记录日志级别> <target> 该级别以上级别的日志都会被记录
<记录日志类型><.>=<记录日志级别> <target> 只记录该级别的日志,其它级别不记录。
<记录日志类型><.>!<记录日志级别> <target> 除了该级别的其它日志级别
日志文件记录格式如下:
时间 地点 人物 动作详细信息
====================================================================
配置rsyslog为其它主提供日志服务--------大体配置步骤如下:
1,服务器端配置:编辑/etc/rsyslog.conf文件,启动监听的端口。是否修改日志文件存放位置,根据自己的需要而定,重启rsyslog服务。
2,修改客户机日志配置文件/etc/rsyslog.conf,把需要发送到日志服务器的日志段的发送位置修改为 @日志服务器的ip。
日志服务器配置
# vim /etc/rsyslog.conf
#### MODULES ####启动以下行
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
# service rsyslog restart
客户机配置,这里假设把本机的全部日志都发送到日志服务器。
# vim /etc/rsyslog.conf 编辑主配置文件
#*.info;mail.none;authpriv.none;cron.none /var/log/messages 注释此行
*.info @172.16.2.16 添加此行,172.16.2.16是我的日志服务器。此时会把本机的所有日志都发给日志服务器。
# service rsyslog restart
测试是否配置成功,以管理软件为例----------------------------------------
在日志服务器执行
# tail -f /var/log/messages 动态监视日志文件新产生的日志,最下面是没有关于安装软件记录的。
客户机操作
# echo =============== >> /var/log/message 给message文件一个分隔线。
# tail /var/log/message
# yum -y install elinks 安装软件,让系统发生日志。
# tail /var/log/messages 查看是否有日志,正确配置是没有日志的。
到日志服务器查看监视的日志
==================================================================
配置日志服务器,记录日志存储于mysql数据库中--------大体配置步骤如下
1,安装日志服务器mysql的驱动模块。
2,修改配置文件,启用mysql驱动模块,把日志记录位置修改为mysql数据库。
3,在mysql数据库服务器为日志服务器授权。
4,安装
# yum -y install rsyslog-mysql 安装rsyslog的mysql驱动模块
# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so 模块文件所在的位置
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql mysql创建数据库用的脚本,把此文件放在mysql服务器执行。
# vim /etc/rsyslog.conf 修改配置文件
#### MODULES #### 加入以下行,启动支持mysql模块
$ModLoad ommysql
#### RULES #### 修改以下行,把日志文件都记录在mysql中。
*.info;mail.none;authpriv.none;cron.none :ommysql:172.16.2.13,Syslog,rsyslog,rsyslog 加入此行,Syslog为数据库名,第一个rsyslog为mysql用户名第二个是密码
执行完mysql服务器授权后再重启rsyslog服务
----在mysql服务器执行---------------------------------------------
# mysql < /root/createDB.sql 因在日志服务器已经把此脚本传到mysql服务器了。
# mysql
MariaDB [(none)]> grant all on Syslog.* to rsyslog@172.16.2.16 identified by ‘rsyslog‘;
MariaDB [(none)]> flush privileges;
测试 ----------------------------------
在rsyslog服务器执行
# echo ======================== >> /var/log/messages
# tail -f /var/log/messages 监视日志,如果配置正确,应该没有日志产生。
在客户机端执安装软件测试
# yum -y install bind 测试安装一个软件用来产生日志。
在mysql查看
MariaDB [Syslog]> select * from SystemEvents; 查看表中有没有数据
==============================================================
数据库中有记录了,在数据库查看比较难。所以使用web页面展示的软件 loganalyzer软件。
loganalyzer是一个php程序,所以需要web服务。
# yum -y install httpd php php-mysql php-gd mysql-server 安装发布loganalyzer所需要的软件。
# service httpd start 启动httpd服务,测试服务是否能正常运行,级提供服务。
# cd /var/www/html
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz 下载loganalyzer程序
# cp loganalyzer-3.6.5/src ./log
# cp loganalyzer-3.6.5/contrib/* log/
# cd log
# chmod u+x configure.sh secure.sh
# ./configure.sh
# ./secure.sh
# chown -R apache:apache ../log
配置完成,到windows的浏览器里输入http://172.16.2.16/log/。
出现了以上错误,因为没的日志文件导致
# touch /var/log/syslog
# chown apache:apache /var/log/syslog
至此日志就可以在网页查看分析了。
本文出自 “” 博客,请务必保留此出处
rsyslog + mysql + loganalyzer 构建日志服务器,布布扣,bubuko.com