当前位置:首页>活动 >

Elasticsearch 日志能否把全部请求打印出来?

时间:2023-01-02 22:26:38    来源:
1、实战问题

请问一下球主,es怎么配置可以把请求日志都打印出来。就是不管是调用借口,还是kibana查询数据,es能打印dsl的请求日志吗??求指导。怎么配置?


(资料图片仅供参考)

——问题来源:https://t.zsxq.com/09vv8rqZj

2、Elasticsearch 日志必知必会2.1 Elasticsearch 日志用途集群状态监测和故障诊断。2.2 Elasticsearch 日志缺省路径$ES_HOME/logs。如果命令行启动 ES,则日志输出信息也是命令行。2.3 Elasticsearch 日志基于组件Log4j 2https://logging.apache.org/log4j/2.x/2.4 Elasticsearch 日志配置文件log4j2.properties 。和 elasticsearch.yml 文件路径相同。2.5 Elasticsearch 日志配置内容命名规范日志随日期滚动策略(日志大小等条件设置)等。2.6 Elasticsearch 日志级别

由低到高分别为:TRACE -> DEBUG -> INFO -> WARN -> ERROR -> FATAL,如下图所示。

图片来自:spring 官网

这些大家并不陌生,日志级别越低(前提系统设置的话),打印输出的越多;日志级别越高,比如:FATAL,只是特定致命场景才会打印输出,一般遇不到。

2.7 Elasticsearch 默认日志类型调整方式

前提:支持动态更新。

方式一:支持动态更新,无需重启。

PUT/_cluster/settings{"persistent":{"logger.org.elasticsearch.discovery":"DEBUG"}}

方式二:elasticsearch.yml 配置(静态配置方式,重启后生效)。

logger.org.elasticsearch.discovery:DEBUG

方式三:log4j2.properties 配置(静态配置方式,重启后生效)

logger.discovery.name=org.elasticsearch.discoverylogger.discovery.level=debug

3、日志调到最低级别,看能否输出检索DSL?

问题来了?改成最低TRACE级别,日志能输出咱们的日期请求吗?试试看。

那怎么办?如何输出请求日志?此路已然不同,我们只能另寻他路。除了基础日志,我们还有slowlog日志。

4、Elasticsearch slowlog日志必知必会4.1 Elasticsearc slowlog 用途

见名释义,本质是:慢日志,又可以分为:慢检索日志和慢写入日志。

slowlog 用于显示:query 阶段 和 fetch 阶段的日志。

Elasticsearch 查询请求如下图所示。

图片来自 Elastic 官方博客

query阶段的核心步骤:

客户端发送请求到协调节点;协调阶段转发请求到索引的每个主或副本分片;分片本地查询完成后,将结果添加到本地的优先队列;每个分片将本地结果返回给协调节点,协调节点合并完成后,形成全局排序列表。

fetch阶段的核心步骤:

协调节点接收到客户端请求后,将 GET 请求(来自query 阶段形成的全局排序列表结果数据)-转发给相关节点。接收到请求后的节点向协调节点返回结果数据。待全部结果数据都返回后,协调节点将结果返回给客户端。4.2 Elasticsearc slowlog 设置内容含义

如下所示,拿 query 阶段举例(以实测为准):

query 请求耗时超过 500ms,打印 trace 日志。query 请求耗时超过 2s,打印 debug 日志。query 请求耗时超过 5s,打印 info 日志。query 请求耗时超过 10s,打印 warn 日志。

index.search.slowlog.threshold.query.warn:10sindex.search.slowlog.threshold.query.info:5sindex.search.slowlog.threshold.query.debug:2sindex.search.slowlog.threshold.query.trace:500ms

fetch 阶段设置如下,原理同上。

index.search.slowlog.threshold.fetch.warn:1sindex.search.slowlog.threshold.fetch.info:800msindex.search.slowlog.threshold.fetch.debug:500msindex.search.slowlog.threshold.fetch.trace:200ms

index 写入日志设置如下,原理同上。

index.indexing.slowlog.threshold.index.warn:10sindex.indexing.slowlog.threshold.index.info:5sindex.indexing.slowlog.threshold.index.debug:2sindex.indexing.slowlog.threshold.index.trace:500msindex.indexing.slowlog.source:1000

4.3 slowlog 中 source:1000 含义是?

"index.indexing.slowlog.source":"1000"

如下这个问题至少被问到三次,问题大致如下:

slowlog 日志显示不全、被截取了怎么办?

默认:记录slowlog中_source的前1000个字符。设置为 true 含义:记录整个源请求。设置为 false 或 0 含义:不记录源请求。特别说明:原始_source被重新格式化,以确保它适合于单个日志行。4.3 Elasticsearch slowlog 如何设置?

直接更新 setting 就可以,动态参数,支持动态更新。

PUT/my-index-000001/_settings{"index.search.slowlog.threshold.query.warn":"10s","index.search.slowlog.threshold.query.info":"5s","index.search.slowlog.threshold.query.debug":"2s","index.search.slowlog.threshold.query.trace":"500ms","index.search.slowlog.threshold.fetch.warn":"1s","index.search.slowlog.threshold.fetch.info":"800ms","index.search.slowlog.threshold.fetch.debug":"500ms","index.search.slowlog.threshold.fetch.trace":"200ms"}

4.3 基于slowlog 打印请求日志

slowlog 既然可以基于阈值打印输出请求日志,阈值势必可以设置很低,最低设置为0,必然能打印出全部日志了。

试试看?

如下是基于 packets-2022-12-14 进行的 index、fetch、query 的 debug 设置。

PUTpackets-2022-12-14/_settings{"index.indexing.slowlog.threshold.index.debug":"0s","index.search.slowlog.threshold.fetch.debug":"0s","index.search.slowlog.threshold.query.debug":"0s"}

设置完成后,在 kibana 控制台随意加个 query 请求。

日志存储在:elasticsearch_index_search_slowlog.json 文件下,如下图所示。

如下图标红所示,任意的请求 DSL 被打印出来。

开篇问题得以求解完成!

5、小结

Elasticearch 日志协助排查集群故障,慢日志协助排查写入、查询层面的慢写入、慢查询问题。集群规模大,可以独立采集到 Kibana 可视化展示,更为方便和快捷!

你有没有使用 Elasticsearch 日志?欢迎留言讨论。如何使用的?

参考

[1]https://www.elastic.co/guide/en/elasticsearch/reference/current/logging.html

[2]https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-slowlog.html

推荐阅读

全网首发!从 0 到 1 Elasticsearch 8.X 通关视频

重磅 | 死磕 Elasticsearch 8.X 方法论认知清单(2022年国庆更新版)

如何系统的学习 Elasticsearch ?

更短时间更快习得更多干货!

和全球1800+Elastic 爱好者一起精进!

比同事抢先一步学习进阶干货!

上一篇:

下一篇:

Elasticsearch 日志能否把全部请求打印出来?

1、实战问题请问一下球主,es怎么配置可以把请求日志都打印出来。就是不管是调用借口,还是kibana查询数据,es能打印dsl的请求日志吗??求指

2023-01-02

当前热门:2023-2028年中国草甘膦行业市场全景评估及投资战略规划研究报告

本报告由华经产业研究院出品,对中国草甘膦行业的发展现状、竞争格局及市场供需形势进行了具体分析,并从行业的政策环境、经济环境、社会环境

2023-01-02

小白菜可以放冰箱吗 小白菜放冰箱行不行

1、小白菜可以放冰箱保存,但是会损失一定的营养价值。2、小白菜含有的水分比较多,很容易出现腐烂变质或是掉叶等现象。如果买回家的小白菜比

2023-01-01

环球快看点丨上坤集团董事长朱静:以二次创业心态 ,与变化双向奔赴

2022年12月31日,上坤集团通过官方微信发布了其董事长朱静所作的2023年新年贺词。在2023年新年贺词中,朱静指出,新的一年,上坤将加速业务重

2023-01-01

环球今日报丨普通感冒、流感、新冠病毒感染有何不同?专家教你快速识别

央视新闻客户端在冬季不少人会出现鼻塞、流鼻涕、嗓子痒等症状。是普通感冒、流感,还是新冠病毒感染?这三者有什么不同?针对这个问题国家卫

2022-12-31

全球聚焦:2022年全国碳市场总成交量逾5088.9万吨

(记者阮煜琳)12月30日是全国碳排放权交易市场2022年度最后一个交易日。截至2021年12月31日,全国碳市场第一个履约周期顺利收官,碳排放配额累

2022-12-30

【环球热闻】下月起,很多人的按揭款将变少

本报讯 随着12月20日最新一期LPR数据出炉,今年5年期以上的LPR最终

2022-12-30

快资讯:云水清甜 舞出多彩 青啤优家云南山泉第二届云水文化节总决赛圆满收官

云南山泉的水源自地下约497米的玄武岩层中,通过深行于地下的密闭管道,软泉水不接触任何外部环境,直达工厂。青啤优家云南山泉2022第二届云水

2022-12-30

“球王”贝利去世,巴西政府宣布哀悼三天

当地时间12月29日,巴西圣保罗市阿尔伯特·爱因斯坦医院发布公告称,巴西知名运动员、“球王”贝利当天去世。据路透社消息,巴西政府当天宣布

2022-12-30

【世界新要闻】橡胶板块12月29日涨0.09%,震安科技领涨,主力资金净流出1296.08万元

12月29日橡胶板块较上一交易日上涨0 09%,震安科技领涨。当日上证指数报收于3073 7,下跌0 44%。深证成指报收于10996 41,下跌0 13%。橡胶板块

2022-12-30

X 关闭

X 关闭