Syslog常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网上中传递记录档消息的标准。这个词汇常用来指涉实际的syslog 协议,或者那些提交syslog消息的应用程序或数据库。
syslog协议属于一种主从式协议:syslog发送端会发送出一个小的文字消息(小于1024位组)到syslog接收端。接收端通常名为“syslogd”、“syslog daemon”或syslog服务器。系统日志消息可以被以UDP协议及╱或TCP协议来发送。这些数据是以明码类型被发送。不过由于SSL加密外套(例如Stunnel、sslio或sslwrap等)并非syslog协议本身的一部分,因此可以被用来透过SSL/TLS方式提供一层加密。
Rsyslog 是syslog 的升级版,一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计,将多种来源输入输出转换结果到目的地。
Rsyslog的传输方式有三种:
UDP 传输协议
基于传统UDP协议进行远程日志传输,也是传统syslog使用的传输协议;
可靠性比较低,但性能损耗最少
在网络情况比较差,或者接收服务器压力比较高情况下,可能存在丢日志情况。
TCP 传输协议
基于传统TCP协议明文传输,需要回传进行确认,可靠性比较高;
但在接收服务器宕机或者两者之间网络出问题的情况下,会出现丢日志情况。
RELP 传输协议
RELP(Reliable Event Logging Protocol)是基于TCP封装的可靠日志消息传输协议;
是为了解决TCP 与 UDP 协议的缺点而在应用层实现的传输协议,也是三者之中最可靠的。
对于线上服务器,为了日志安全起见,建议使用 RELP 协议进行传输。
Rsyslog 的主配置文件为 /etc/rsyslog.conf
ModLoad imrelp
配置加载RELP传输模块规则的选择器(selectors)由两部分组成,设施和优先级,由点号.分隔。多个选择器用;分隔,如:*.info;mail.none
内建的日志设施有:
auth(security), authpriv:认证授权和安全相关的消息
kern:来自Linux内核的消息
mail:邮件服务系统的各种组件
mark:防火墙标记
cron:周期任务计划相关的信息
daemon:守护进程产生的信息
news:网络消息子系统
lpr:打印相关的日志信息
user:用户进程相关的信息
local0 to local7:保留,本地使用
debug:包含详细的开发情报的信息,通常只在调试一个程序时使用
info:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理
notice: 不是错误情况,也不需要立即处理
warning: 警告信息,不是错误,比如系统磁盘使用了85%等
err:错误,不是非常紧急,在一定时间内修复即可
crit:重要情况,如硬盘错误,备用连接丢失
alert:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失
emerg:紧急情况,需要立即通知技术人员
指定级别 | 功能 |
---|---|
* | 所有级别 |
none | 没有级别 |
priority | 此级别及高于此级别的所有级别 |
=priority | 仅此级别 |
action是规则描述的一部分,位于选择器的后面,规则用于处理消息。总的来说,消息内容被写到一种日志文件上,但也可以执行其他动作,比如写到数据库表中或转发到其他主机。
写到mysql数据库中
编辑 /etc/rsyslog.conf 主配置文件
vim /etc/rsyslog.conf
在 MODULES 下面添加以下信息:
$ModLoad imrelp 开启RELP传输协议
$InputRELPServerRun 514 设定监听端口
编辑 /etc/sysconfig/rsyslog 开启传输端口监听
vim /etc/sysconfig/rsyslog
-r指定监听端口,-c2 使用兼容模式
SYSLOGD_OPTIONS="-r514 -c2"
确认无误 启动 Rsyslog 服务
systemctl start rsyslog
查看 514 端口是否被监听
ss -alnt | grep 514
在服务器端用 tail -f /var/log/messages 追踪日志
tail -f /var/log/messages
Loganalyzer是一款syslog日志和其他网络时间数据的web前端,它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般syslog文本文件中获取,所有loganalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息windows事件日志记录,支持故障排除,使用户能快速查找日志数据中看出问题的解决方案。
loganalyzer获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log目录下的日志并保存到服务端该目录下,一种是读取后保存日志服务器数据库中,这里测试的是mariadb数据库
Loganalyzer基于php开发,需要搭建php运行环境
导入所需要的数据库和表:
mysql -uroot -p123456 < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
mysql-createDB.sql 是安装 rsyslog-mysql 生成的,可以用命令查看
rpm –ql rsyslog-mysql
添加、授权用户 rsyslog 使用 Syslog 库
mysql -uroot -p123456 -e "GRANT ALL ON Syslog.* TO 'rsyslog'@'%' IDENTIFIED BY 'rsyspass';" 需要从网络登陆,%或者 192.168.1.%,localhost只能本地登陆。
mysql -uroot -p123456 -e "flush privileges;" 立即刷新权限
编辑 /etc/rsyslog.conf 主配置文件
vim /etc/rsyslog.conf
在 MODULES 下面添加以下信息:
$ModLoad imrelp 开启RELP传输协议
$InputRELPServerRun 514 设定监听端口
$ModLoad ommysql 开启 mysql 模块
在 RULES 下面添加
rule, send to mysql
*.* :ommysql:database-server,database-name,database-userid,database-password
*.* :ommysql:192.168.1.2,Syslog,rsyslog,rsyspass
Source Type MYSQL Native 选择 MYSQL 记录方式
Select View EventLog Fields
Database Type Options
Table type MonitorWare 默认
Database Host 192.168.1.2 MariaDB Server IP
Database Name Syslog 选择数据库
Database Tablename SystemEvents 选择表,注意大小写!
Database User rsyslog MariaDB授权用户
Database Password rsyspass 用户密码
Enable Row Counting 默认
Step 8 Finish
chmod 644 /data/web/config.php
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!