当前位置: 首页 > news >正文

rsyslog实现将日志存储到mysql中

​ 前提:准备好msql server或mariadb server;

​ 1、安装rsyslog连接至mysql server的驱动模块;

[13:24 root@centos6.8~]# yum install -y rsyslog-mysql 
[13:24 root@centos6.8~]# 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

可以看到其实rsyslog模块提供的启动mysql的模块还有createDB.sql,它的作用就是定义了日志的记录表格式,可以直接导入该sql语句到mysql即可

新建rsyslog的mysql用户

CREATE USER 'rsyslog'@'localhost' IDENTIFIED BY 'password';

授权数据库

GRANT ALL PRIVILEGES ON Syslog.* TO 'rsyslog'@'localhost';

刷新权限:运行以下命令以使权限更改立即生效:

FLUSH PRIVILEGES;

​ 2、在mysql server准备rsyslog专用的用户账号;

mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslogpass';
mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'local' IDENTIFIED BY 'rsyslogpass';
mysql> FLUSH PRIVILEGES;

​ 3、导入该sql语句到mysql即可,生成所需要的数据库和表;

[13:24 root@centos6.8~]# mysql -ursyslog -h127.0.0.1 -p123456 <  /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
mysql> USE Syslog
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW TABLES;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
mysql> DESC SystemEvents-> ;
+--------------------+------------------+------+-----+---------+----------------+
| Field              | Type             | Null | Key | Default | Extra          |
+--------------------+------------------+------+-----+---------+----------------+
| ID                 | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| CustomerID         | bigint(20)       | YES  |     | NULL    |                |
| ReceivedAt         | datetime         | YES  |     | NULL    |                |
| DeviceReportedTime | datetime         | YES  |     | NULL    |                |
| Facility           | smallint(6)      | YES  |     | NULL    |                |
| Priority           | smallint(6)      | YES  |     | NULL    |                |
| FromHost           | varchar(60)      | YES  |     | NULL    |                |
| Message            | text             | YES  |     | NULL    |                |
| NTSeverity         | int(11)          | YES  |     | NULL    |                |
| Importance         | int(11)          | YES  |     | NULL    |                |
| EventSource        | varchar(60)      | YES  |     | NULL    |                |
| EventUser          | varchar(60)      | YES  |     | NULL    |                |
| EventCategory      | int(11)          | YES  |     | NULL    |                |
| EventID            | int(11)          | YES  |     | NULL    |                |
| EventBinaryData    | text             | YES  |     | NULL    |                |
| MaxAvailable       | int(11)          | YES  |     | NULL    |                |
| CurrUsage          | int(11)          | YES  |     | NULL    |                |
| MinUsage           | int(11)          | YES  |     | NULL    |                |
| MaxUsage           | int(11)          | YES  |     | NULL    |                |
| InfoUnitID         | int(11)          | YES  |     | NULL    |                |
| SysLogTag          | varchar(60)      | YES  |     | NULL    |                |
| EventLogType       | varchar(60)      | YES  |     | NULL    |                |
| GenericFileName    | varchar(60)      | YES  |     | NULL    |                |
| SystemID           | int(11)          | YES  |     | NULL    |                |
+--------------------+------------------+------+-----+---------+----------------+
24 rows in set (0.00 sec)

​ 4、配置rsyslog加载ommysql模块

#### MODULES ####
......
$ModLoad ommysql
​ 5、配置RULES,将所期望的日志信息记录于mysql中;​ 其格式为:​ facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS

检查数据库连接信息:确保数据库连接信息正确。在你的配置中,你正在将日志发送到MySQL服务器的127.0.0.1,数据库名为Syslog,用户名为rsyslog,密码为123456。请确保这些信息与你的实际MySQL配置匹配。

配置规则:在*.*:ommysql这部分,*.*表示将所有日志消息都发送到MySQL。你可以根据需要更改这部分以匹配特定的日志规则。

​ 所以添加以下信息:

*.* 
:ommysql:127.0.0.1,Syslog,rsyslog,123456

​ 6、启动mysql服务,并重启rsyslog服务,mysql已经记录日志,到此为止,日志信息已经成功的存储于数据库中;

systemctl restart mariadb && systemctl restart rsyslog
mysql>USE Syslog
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changedmysql> SELECT * FROM SystemEvents\G
*************************** 1. row ***************************ID: 1CustomerID: NULLReceivedAt: 2016-10-16 13:35:46
DeviceReportedTime: 2016-10-16 13:35:46Facility: 0Priority: 6FromHost: centos6Message: imklog 5.8.10, log source = /proc/kmsg started.NTSeverity: NULLImportance: NULLEventSource: NULLEventUser: NULLEventCategory: NULLEventID: NULLEventBinaryData: NULLMaxAvailable: NULLCurrUsage: NULLMinUsage: NULLMaxUsage: NULLInfoUnitID: 1SysLogTag: kernel:EventLogType: NULLGenericFileName: NULLSystemID: NULL
*************************** 2. row ***************************ID: 2CustomerID: NULLReceivedAt: 2016-10-16 13:35:46
DeviceReportedTime: 2016-10-16 13:35:46Facility: 5Priority: 6FromHost: centos6Message:  [origin software="rsyslogd" swVersion="5.8.10" x-pid="3081" x-info="http://www.rsyslog.com"] startNTSeverity: NULLImportance: NULLEventSource: NULLEventUser: NULLEventCategory: NULLEventID: NULLEventBinaryData: NULLMaxAvailable: NULLCurrUsage: NULLMinUsage: NULLMaxUsage: NULLInfoUnitID: 1SysLogTag: rsyslogd:EventLogType: NULLGenericFileName: NULLSystemID: NULL
*************************** 3. row ***************************ID: 3CustomerID: NULLReceivedAt: 2016-10-16 13:35:50
DeviceReportedTime: 2016-10-18 10:48:37Facility: 18Priority: 6FromHost: localhostMessage:  nidhaiNTSeverity: NULLImportance: NULLEventSource: NULLEventUser: NULLEventCategory: NULLEventID: NULLEventBinaryData: NULLMaxAvailable: NULLCurrUsage: NULLMinUsage: NULLMaxUsage: NULLInfoUnitID: 1SysLogTag: root:EventLogType: NULLGenericFileName: NULLSystemID: NULL
*************************** 4. row ***************************ID: 4CustomerID: NULLReceivedAt: 2016-10-16 13:35:52
DeviceReportedTime: 2016-10-18 10:48:39Facility: 18Priority: 6FromHost: localhostMessage:  DNTSeverity: NULLImportance: NULLEventSource: NULLEventUser: NULLEventCategory: NULLEventID: NULLEventBinaryData: NULLMaxAvailable: NULLCurrUsage: NULLMinUsage: NULLMaxUsage: NULLInfoUnitID: 1SysLogTag: root:EventLogType: NULLGenericFileName: NULLSystemID: NULL
4 rows in set (0.00 sec)

http://www.lryc.cn/news/194407.html

相关文章:

  • 2015架构案例(五十一)
  • 亚马逊测评安全吗?
  • VS2022新建项目时没有ASP.NET Web应用程序 (.NET Framework)
  • TIA博途软件中如何设置在程序中自动显示变量的注释信息?
  • Hadoop3教程(一):Hadoop的定义、组成及全生态概览
  • 成为数据分析师要具备什么能力——功法篇(上)
  • 【MySQL】Java的JDBC编程
  • windows OpenCV(包含cuda)最简安装教程
  • Vue3 + Nodejs 实战 ,文件上传项目--实现文件批量上传(显示实时上传进度)
  • 狂砸40亿美元,亚马逊向OpenAI竞争对手Anthropic投资
  • 目标检测YOLO实战应用案例100讲-基于YOLOv5_tiny算法的路面裂缝智能检测
  • P5682 [CSP-J2019 江西] 次大值% 运算 set 去重的一道好题
  • vue3后台管理框架之API接口统一管理
  • 线性表的插入、删除和查询操作
  • 基于深度学习网络的疲劳驾驶检测算法matlab仿真
  • 【文件系统】Linux文件系统的基本存储机制
  • Outlook导入导出功能灰色,怎么解决
  • Chrome 同站策略(SameSite)问题
  • docker搭建nginx+php-fpm
  • 数据结构与算法---单调栈结构
  • Python爬虫:某书平台的Authorization参数js逆向
  • Android MediaCodec 框架 基于codec2
  • 【RocketMQ 系列三】RocketMQ集群搭建(2m-2s-sync)
  • Go TLS服务端绑定证书的几种方式
  • 【算法与数据结构】--高级算法和数据结构--排序和搜索
  • 【Java】jvm 元空间、常量池(了解)
  • Spring Boot自动加载
  • MPNN 模型:GNN 传递规则的实现
  • Flink kafka 数据汇不指定分区器导致的问题
  • 【软考】14.1 面向对象基本概念/分析设计测试