利用 ELK 处理 Percona 审计日志

news2024/11/29 8:00:18
Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为

前提

1、有强烈的审计需求。

2、能允许10%-15%左右的性能损失。

3、有强烈的对数据库操作实时查看需求(一般都是为了领导要求)。

Logstash 比较坑的配置

input {
    file {
        path => ["/u02/backup/audit.log"]
        codec => json
    }
}
output {
    elasticsearch {
        hosts  => ["192.168.1.233"]
    }
}

上面的配置看上去是没有问题的,如果是一般的json数据哪就能解析成功了,

但是在 Percona audit plugin 中应用程序应用程序生成的SQL是五花八门,各种字符都有其中有。

如下审计的日志被 python 读取后的字符串展现(红色标记):

从上图可以看到有一些换行后tab的字符,这些字符使用 json.load 的时候会报错,不能解析成json

使用python json 模块解析相关日志文件报错:

>>> json.loads(json_line)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/simplejson/__init__.py", line 516, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.7/site-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib64/python2.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.scanner.JSONDecodeError: Invalid control character '\t' at: line 1 column 232 (char 231)

所以在使用logstash的时候也就解析不了这样的json数据了,

最终logstash只能报错并将整个message记录到 Elasticsearch 中

解决办法

解决办法就是把这些字符替换掉。如下 Logstash 配置文件

input {
    file {
        path => ["/u02/backup/audit.log"]
    }
}
 
filter {
    mutate {
        gsub => ["message", "\\\\n", " "]
        gsub => ["message", "\t", " "]
        replace => [ "message", "%{message}" ]
    }
    json{
        source => "message"
    }
    mutate {
         remove_field => [ "message" ]
    }
}
 
output {
    elasticsearch {
        hosts  => ["192.168.1.233"]
    }
}

该配置文件是投机取巧的办法, 把 (换行/tab) 字符替换成空格,要注意的一点最终显示的SQL和原来的有所差别。

这种方法有点不灵活如果sql语句中还有遇到一些json不能解析的字符又要进行处理。

>>朋友们如果有更好的方法也告知一声哈!<<<

还不能笑到最后

刚开始以为这一切都万事大吉了。其实还有个一坑就是在使用 Kibana 查看的时候,这时候问题就来了。

有是有过 Percona audit 插件的估计都有这样的问题,就是他记录的是时间是国际形式的(如上图黄色标记),不像我们习惯了北京时间。因此在页面显示的时间会比我们平时的少 8 小时。

一般来说在ELK中使用国际的标准格式是合理的。因为在使用 Kibana 查看的时候会帮你自动转化成本地时间格式。也就是如果我们在中国他会自动把 timezone 转化为 Asia/Shanghai(东8区) 的。所以显示的时间应该是正确的才对。可是实际情况并没有。

没有转化的原因

是应为 Elasticsearch 将 "2016-08-30T01:45:30 UTC" 这串字符解析成了String类型。按道理应该解析成和@timestamp一样的date类型。

解决思路

将 "2016-08-30T01:45:30 UTC" 格式转化成和 @timestamp 一样的格式("2016-08-30T01:45:30Z")

最终配置文件如下

input {
    file {
        path => ["/u02/backup/audit.log"]
    }
}
 
filter {
    mutate {
        gsub => ["message", "\\\\n", " "]
        gsub => ["message", "\t", " "]
        replace => [ "message", "%{message}" ]
    }
 
    json{
        source => "message"
    }
 
    mutate {
        remove_field => [ "message" ]
        gsub => ["[audit_record][timestamp]", " UTC", "Z"]
        replace => [ "[audit_record][timestamp]", "%{[audit_record][timestamp]}" ]
    }
}
 
output {
    elasticsearch {
        hosts  => ["192.168.1.233"]
    }
}

使用上面配置就能顺利的将 时间格式 转化成 Elasticsearch 想要的时间格式,并且能在 Kibana 中正确显示。

祝大家好运。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网站建设常用的cms建站系统推荐

国内网站建设市场参差不齐&#xff0c;建站公司多如牛毛&#xff0c;网站价格便宜的几百&#xff0c;贵的几十万&#xff0c;作为外行&#xff0c;很难去选择&#xff0c;国内大部分网站建设公司都是营销公司&#xff0c;完全没有底层技术框架的开发能力&#xff0c;90%以上的网…

srs流媒体服务安装和使用

简介 SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。 官网&#xff1a;https://ossrs.net/lts/zh-cn/ 编译安装 使用ubuntu系统作为例子&#xff0c;最好是20版本。 1、克隆项目代码 …

2023.4.12

文章目录一&#xff1a;try catch处理异常1&#xff1a;原理&#xff1a;2&#xff1a;catch中如何处理异常**3&#xff1a;try-catch-finally**4&#xff1a;多重catch5&#xff1a;异常的分类6&#xff1a;throw和throws的区别7&#xff1a;练习题8&#xff1a;重载和重写的异…

Python后端架构演进

做了3年的后端开发, 经历一款SaaS产品从0到10(还没有到100, 哈哈哈)的过程, 3年间后端的架构逐步演变, 在微服务的实践过程中遇到的问题也越来越多, 在这里总结下. 产品是一款服务于人力资源的SaaS在线服务, 面向HR有Web Android/iOS 小程序多个客户端, 后端采用RESTful风格AP…

表id自增的方法

数据库主键id自增的方法&#xff0c;列举了几种如下 一、数据库自增&#xff08;部分数据库支持&#xff09; 创建表的时候设置id自增即可&#xff0c;或者后期修改表id自增 # mysql 语法 create table your_table_name(id bigint(20) not null auto_increment primary key …

Android技术分享 | 一行代码实现屏幕、声音采集

之前发布过一行代码实现安卓屏幕采集编码&#xff0c;并介绍了如何屏幕采集编码并进行了封装&#xff0c;简单的调用即可实现MediaProjection权限申请、H264硬编码、错误处理等功能。本文将介绍新增的功能&#xff0c;还是只需一行代码即可实现屏幕、声音采集。 一行代码实现屏…

【原创】万字长文讲解AI绘画基本技术原理

作者&#xff1a;黑夜路人 时间&#xff1a;2023年4月12日 AIGC是什么 AIGC - AI Generated Content &#xff08;AI生成内容&#xff09;&#xff0c;对应我们的过去的主要是 UGC&#xff08;User Generated Content&#xff09;和 PGC&#xff08;Professional user Generat…

c语言数据结构——树形结构之树和二叉树

前言 二叉树有什么用&#xff1f; 二叉树应用非常广泛。 在操作系统源程序中&#xff0c;树和森林被用来构造文件系统。我们看到的window和linux等文件管理系统都是树型结构。在编译系统中&#xff0c;如C编译器源代码中&#xff0c;二叉树的中序遍历形式被用来存放C 语言中的…

如何从阿里云盘下载大文件到自己的电脑或者租赁的服务器中?

首先进入阿里云盘的github项目处&#xff0c;里面有详细的说明&#xff0c;入口&#xff1a;https://github.com/tickstep/aliyunpan Ubuntu挂载阿里云盘作为自己的硬盘 如果你是Ubuntu系统的话&#xff0c;直接在使用apt命令在电脑安装阿里云盘即可&#xff0c;命令如下&…

Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)

Oracle基础部分二&#xff08;伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算&#xff09;1 伪列、伪表1.1 伪列1.2 伪表2 单个函数2.1 常用字符串函数2.1.1 length() 询指定字符的长度2.1.2 substr() 用于截取字符串2.1.3 concat() 用于字符串拼接2.2 常用数值函…

生成树端口选举

所有交换机运行RSTP,SW1优先级4096,SW2优先级4096,SW3优先级8192,SW1的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW1的G0/0/3、G0/0/4接口通过手动模式加入Eth-Trunk 2,SW2的G0/0/1、G0/0/2接口通过手动模式加入Eth-Trunk 1,SW3的G0/0/1、G0/0/2接口通过手动模式…

【Unity VR开发】结合VRTK4.0:攀爬功能

语录&#xff1a; 不要因为开心消失了而感到难过&#xff0c;宇宙正在努力为你准备下一场惊喜&#xff0c;你要给宇宙一点时间。 前言&#xff1a; 攀爬是虚拟现实中一种有趣的运动&#xff0c;可以使用定制的可交互预制体轻松创建这种机制来处理攀爬动作&#xff0c;以及处理用…

ICRA 2023 | 具身感知中学习探索信息丰富的轨迹和样本

我们正在见证感知模型的巨大进步&#xff0c;特别是在大规模互联网图像上训练的模型。 然而如何有效地将这些感知模型推广到具身环境的研究还远远不够&#xff0c;这些研究将有助于推进各种相关应用&#xff08;例如家用机器人&#xff09;的发展。为了使用尽可能少的标注&…

RabbitMQ 安装体验

前言 RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境。 一、Erlang下载安装 https://packagecloud.io/rabbitmq/erlang 上执行命令 此时&#xff0c;Erlang的rpm包下载完成&#xff0c;见下图。 wg…

Servlet/Web开发概述/Http响应

一、web开发概述 学习web开发&#xff0c;需要先安装一台web服务器&#xff0c;将开发好的web项目部署在web服务器中供外界访问. Web服务器是指驻留于因特网上某种类型计算机的程序&#xff0c;可以放置资源文件&#xff0c;别人可以访问、服务器可以做出响应&#xff1a; 可…

基于PCA与LDA的数据降维实践

基于PCA与LDA的数据降维实践 描述 数据降维&#xff08;Dimension Reduction&#xff09;是降低数据冗余、消除噪音数据的干扰、提取有效特征、提升模型的效率和准确性的有效途径&#xff0c; PCA&#xff08;主成分分析&#xff09;和LDA&#xff08;线性判别分析&#xff0…

centos7怎么查看防火墙以及添加白名单

方法一&#xff1a;systemctl status firewalld 防火墙的开启、关闭、禁用命令 &#xff08;1&#xff09;设置开机启用防火墙&#xff1a;systemctl enable firewalld.service &#xff08;2&#xff09;设置开机禁用防火墙&#xff1a;systemctl disable firewalld.servic…

积化和差公式推导

积化和差公式是初等数学三角函数部分的一组恒等式&#xff0c;积化和差公式将两个三角函数值的积化为另两个三角函数值的和的常数倍&#xff0c;达到降次的作用。 基本上记不住这好几个哥们,不过幸运的是,利用诱导公式可以一式生万式子,记住一个就好了 式子1:sin⁡α∗cos⁡β1…

【3D建模工具】上海道宁与McNeel为您提供强大的专业3D造型软件

Rhino可以对 NURBS曲线、曲面、实体、 细分几何图形 (SubD)、点云和多边形网格 进行创建、编辑、分析、记录、 渲染、动画制作与转换 只要硬件条件允许 不受复杂度、阶数与尺寸大小的限制 Rhino 7使用SubD工具 可以建立有机形状 使用Rhino.Inside.Revit 做为Revit附加…

2023MathorCup数模A题思路数据代码论文【全网最全分享】

文章目录赛题思路赛题详情参赛建议&#xff08;个人见解&#xff09;选择队友及任务分配问题&#xff08;重要程度&#xff1a;5星&#xff09;2023MathorCup数模A题思路数据论文代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片&#xff0c;…