Elasticsearch 日志能否把全部請(qǐng)求打印出來(lái)?
請(qǐng)問(wèn)一下球主,es怎么配置可以把請(qǐng)求日志都打印出來(lái)。就是不管是調(diào)用借口,還是kibana查詢數(shù)據(jù),es能打印dsl的請(qǐng)求日志嗎??求指導(dǎo)。怎么配置?
(資料圖)
——問(wèn)題來(lái)源:https://t.zsxq.com/09vv8rqZj
2、Elasticsearch 日志必知必會(huì)2.1 Elasticsearch 日志用途集群狀態(tài)監(jiān)測(cè)和故障診斷。2.2 Elasticsearch 日志缺省路徑$ES_HOME/logs。如果命令行啟動(dòng) ES,則日志輸出信息也是命令行。2.3 Elasticsearch 日志基于組件Log4j 2https://logging.apache.org/log4j/2.x/2.4 Elasticsearch 日志配置文件log4j2.properties 。和 elasticsearch.yml 文件路徑相同。2.5 Elasticsearch 日志配置內(nèi)容命名規(guī)范日志隨日期滾動(dòng)策略(日志大小等條件設(shè)置)等。2.6 Elasticsearch 日志級(jí)別由低到高分別為:TRACE -> DEBUG -> INFO -> WARN -> ERROR -> FATAL,如下圖所示。
這些大家并不陌生,日志級(jí)別越低(前提系統(tǒng)設(shè)置的話),打印輸出的越多;日志級(jí)別越高,比如:FATAL,只是特定致命場(chǎng)景才會(huì)打印輸出,一般遇不到。
2.7 Elasticsearch 默認(rèn)日志類型調(diào)整方式前提:支持動(dòng)態(tài)更新。
方式一:支持動(dòng)態(tài)更新,無(wú)需重啟。PUT/_cluster/settings{"persistent":{"logger.org.elasticsearch.discovery":"DEBUG"}}方式二:elasticsearch.yml 配置(靜態(tài)配置方式,重啟后生效)。
logger.org.elasticsearch.discovery:DEBUG方式三:log4j2.properties 配置(靜態(tài)配置方式,重啟后生效)
logger.discovery.name=org.elasticsearch.discoverylogger.discovery.level=debug3、日志調(diào)到最低級(jí)別,看能否輸出檢索DSL?
問(wèn)題來(lái)了?改成最低TRACE級(jí)別,日志能輸出咱們的日期請(qǐng)求嗎?試試看。
那怎么辦?如何輸出請(qǐng)求日志?此路已然不同,我們只能另尋他路。除了基礎(chǔ)日志,我們還有slowlog日志。
4、Elasticsearch slowlog日志必知必會(huì)4.1 Elasticsearc slowlog 用途見(jiàn)名釋義,本質(zhì)是:慢日志,又可以分為:慢檢索日志和慢寫(xiě)入日志。
slowlog 用于顯示:query 階段 和 fetch 階段的日志。
Elasticsearch 查詢請(qǐng)求如下圖所示。
圖片來(lái)自 Elastic 官方博客
query階段的核心步驟:
客戶端發(fā)送請(qǐng)求到協(xié)調(diào)節(jié)點(diǎn);協(xié)調(diào)階段轉(zhuǎn)發(fā)請(qǐng)求到索引的每個(gè)主或副本分片;分片本地查詢完成后,將結(jié)果添加到本地的優(yōu)先隊(duì)列;每個(gè)分片將本地結(jié)果返回給協(xié)調(diào)節(jié)點(diǎn),協(xié)調(diào)節(jié)點(diǎn)合并完成后,形成全局排序列表。fetch階段的核心步驟:
協(xié)調(diào)節(jié)點(diǎn)接收到客戶端請(qǐng)求后,將 GET 請(qǐng)求(來(lái)自query 階段形成的全局排序列表結(jié)果數(shù)據(jù))-轉(zhuǎn)發(fā)給相關(guān)節(jié)點(diǎn)。接收到請(qǐng)求后的節(jié)點(diǎn)向協(xié)調(diào)節(jié)點(diǎn)返回結(jié)果數(shù)據(jù)。待全部結(jié)果數(shù)據(jù)都返回后,協(xié)調(diào)節(jié)點(diǎn)將結(jié)果返回給客戶端。4.2 Elasticsearc slowlog 設(shè)置內(nèi)容含義如下所示,拿 query 階段舉例(以實(shí)測(cè)為準(zhǔn)):
query 請(qǐng)求耗時(shí)超過(guò) 500ms,打印 trace 日志。query 請(qǐng)求耗時(shí)超過(guò) 2s,打印 debug 日志。query 請(qǐng)求耗時(shí)超過(guò) 5s,打印 info 日志。query 請(qǐng)求耗時(shí)超過(guò) 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 階段設(shè)置如下,原理同上。
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 寫(xiě)入日志設(shè)置如下,原理同上。
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:10004.3 slowlog 中 source:1000 含義是?
"index.indexing.slowlog.source":"1000"
如下這個(gè)問(wèn)題至少被問(wèn)到三次,問(wèn)題大致如下:
默認(rèn):記錄slowlog中_source的前1000個(gè)字符。設(shè)置為 true 含義:記錄整個(gè)源請(qǐng)求。設(shè)置為 false 或 0 含義:不記錄源請(qǐng)求。特別說(shuō)明:原始_source被重新格式化,以確保它適合于單個(gè)日志行。4.3 Elasticsearch slowlog 如何設(shè)置?slowlog 日志顯示不全、被截取了怎么辦?
直接更新 setting 就可以,動(dòng)態(tài)參數(shù),支持動(dòng)態(tài)更新。
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 打印請(qǐng)求日志
slowlog 既然可以基于閾值打印輸出請(qǐng)求日志,閾值勢(shì)必可以設(shè)置很低,最低設(shè)置為0,必然能打印出全部日志了。
試試看?
如下是基于 packets-2022-12-14 進(jìn)行的 index、fetch、query 的 debug 設(shè)置。
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"}
設(shè)置完成后,在 kibana 控制臺(tái)隨意加個(gè) query 請(qǐng)求。
日志存儲(chǔ)在:elasticsearch_index_search_slowlog.json 文件下,如下圖所示。
如下圖標(biāo)紅所示,任意的請(qǐng)求 DSL 被打印出來(lái)。
開(kāi)篇問(wèn)題得以求解完成!
5、小結(jié)Elasticearch 日志協(xié)助排查集群故障,慢日志協(xié)助排查寫(xiě)入、查詢層面的慢寫(xiě)入、慢查詢問(wèn)題。集群規(guī)模大,可以獨(dú)立采集到 Kibana 可視化展示,更為方便和快捷!
你有沒(méi)有使用 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
推薦閱讀全網(wǎng)首發(fā)!從 0 到 1 Elasticsearch 8.X 通關(guān)視頻
重磅 | 死磕 Elasticsearch 8.X 方法論認(rèn)知清單(2022年國(guó)慶更新版)
如何系統(tǒng)的學(xué)習(xí) Elasticsearch ?
更短時(shí)間更快習(xí)得更多干貨!
和全球1800+Elastic 愛(ài)好者一起精進(jìn)!
比同事?lián)屜纫徊綄W(xué)習(xí)進(jìn)階干貨!相關(guān)閱讀
-
Elasticsearch 日志能否把全部請(qǐng)求打印出來(lái)?
1、實(shí)戰(zhàn)問(wèn)題請(qǐng)問(wèn)一下球主,es怎么配置可以把請(qǐng)求日志都打印出來(lái)。就... -
圖解|透明大頁(yè)原理與實(shí)現(xiàn)
在《圖解|Linux大內(nèi)存頁(yè)原理》一文中,我們介紹過(guò)標(biāo)準(zhǔn)大頁(yè)的原理與... -
難受的這兩天,你們?cè)趺礃樱?/a>
12月23號(hào)周五,下班回來(lái)小云說(shuō)中午下樓買(mǎi)菜碰到小區(qū)認(rèn)識(shí)的一個(gè)媽媽... -
超越ConvNeXt!Transformer 風(fēng)格的卷積...
↑點(diǎn)擊藍(lán)字關(guān)注極市平臺(tái)作者丨科技猛獸編輯丨極市平臺(tái)極市導(dǎo)讀本文... -
極市直播預(yù)告丨NeurIPS 2022 Oral-張...
↑點(diǎn)擊藍(lán)字關(guān)注極市平臺(tái)|極市線上分享第107期|一直以來(lái),為讓大家更... -
【天天時(shí)快訊】最大CLIP!LAION發(fā)布CLIP...
點(diǎn)藍(lán)色字關(guān)注“機(jī)器學(xué)習(xí)算法工程師”設(shè)為星標(biāo),干貨直達(dá)!近日,LAI...