zoukankan      html  css  js  c++  java
  • ELK 处理 Percona 审计日志(填坑)

    前提

    1、有强烈的审计需求。

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

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

    Logstash 比较坑的配置

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

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

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

    ELK

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

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

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

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

    解决办法

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

    该配置文件是投机取巧的办法, 把 (换行/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")

    最终配置文件如下

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

  • 相关阅读:
    Android studio怎么创建shape的XML文件
    请问如何在PS中将一张图标里的各个小图标分离成一个个图标?
    IOS 开发之 -- 过滤掉字符串里面所有的非法字符 字典和json之间的互转
    ios开发之 -- 5分钟集成融云的客服功能
    ios开发之 --调用系统的页面,显示中文
    IOS 开发之-- textfield和textview,return键的改变,点击return键
    IOS 开发之--获取真机的deviceToeken
    iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片
    iOS 开发之--打测试包的时候报错的解决方法
    ios开发之 -- 调用系统定位获取当前经纬度与地理信息
  • 原文地址:https://www.cnblogs.com/DataArt/p/10338043.html
Copyright © 2011-2022 走看看