elk-kibana查看日志技巧

https://www.elastic.co/docs/reference/query-languages/query-dsl/regexp-syntax

Elasticsearch kibana 分词搜索:

例如积分兑换是同步在 http-nio-8080-exec-23 线程处理, 则可以使用如下分词搜索, 清晰查询除整个流程 开始, 记录日志, 扣减积分, 增加余额, 结束

"http-nio-8080-exec-23" and "od9049758943 deal begin" or "http-nio-8080-exec-23" and "od9049758943 record log" or "http-nio-8080-exec-23" and "od9049758943 sub points" and "od9049758943 add balance" or "http-nio-8080-exec-23" and "od9049758943 deal end"

匹配搜索

如果分词搜索内容包含 字符串及其他符号"HTTP/1.1" 499 " 导致搜索报错,可以加 反斜杠: \ 进行转义如 message:"HTTP\/1.1\" 499 " 即可正常搜索

排除搜索

如果分词搜索内容排除搜索,可以在搜索列前加 not关键字message:"api" and not message:"HTTP/1.1\" 200 " 即可搜索除http响应码200之外的其他请求

数字搜索

  • \<1-1000\> 匹配 大于等于1小于等于1000 的数字
  • \<1-\> 匹配 等于1 的数字
  • \<-1000\> 匹配 等于1000 的数字
  • \<01-\> 匹配 等于01 的数字
  • \<01-100\> 匹配 01,02,03...,99,100 的数字

声明:elk-kibana本身自带的搜索已经很完善了,但是分词语法和日志内容重复的话有些不好用,并且很多时候elk-kibana只能在堡垒机查看(这种除非服务器上有性能好的文本查看/编辑器,否则也不适用),这里提供的思路只是一个偏门,不一定适合所有人

需要注意:

1-并不是所有的elk并不能一次把你搜锁到的结果全部返回,一些设定会让elk单次查询最多返回 5000 或者 10000 条,如果你查询的日志量很大比如 20000-30000条,则需要分时间条件多次查询,把内容分别拷贝出来,详情点击 文章 查看

2-记得开启 Syntax Options,否则elk的分词多条件查询例如 message :"order001" and "order002" and "order003"不会生效

假设我们查询到 elk-kibana 上的日志特别多,不好分析时,我们可以通过 elk-kibana的接口,将数据复制出来到 vscode等性能好的文本查看/编辑器,使用正则,将多余的数据去除,方便我们查看日志

1、匹配非message开头以外的内容,正则表达式,将其内容替换为空(可多替换几次,去除干扰内容,视情况而定)

^\n|"|^((?!message).)*

2、匹配连续的空行内容,正则表达式,将其替换为空

^\n+

posted @ 2024-05-30 13:20  Journey&Flower  阅读(778)  评论(0)    收藏  举报