国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

你真的知道如何查看 Elasticsearch 的 Debug 日志嗎?!

這篇具有很好參考價值的文章主要介紹了你真的知道如何查看 Elasticsearch 的 Debug 日志嗎?!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

當(dāng)我們遇到問題或者需要深入了解 Elasticsearch 的運行機制時,調(diào)整日志等級(?logging level?)到更詳細(xì)的級別,比如?DEBUG、TRACE?,會是一個有效且必須要掌握的方法。

Elasticsearch 提供了如下的接口來支持動態(tài)變更 logging level,logger 后面是 package name 或者 class name。

PUT _cluster/settings
{
  "persistent": {
    "logger": {
      "org.elasticsearch.action": "DEBUG"
    }
  }
}
當(dāng)然,你也可以去修改配置目錄下面的 log4j2.properties,然后重啟節(jié)點,但這種方法太過笨重,建議你不要用。

如果后續(xù)想要調(diào)整回默認(rèn)設(shè)置,操作也簡單,如下所示:

 
PUT _cluster/settings
{
  "persistent": {
    "logger": {
      "org.elasticsearch.action": null
    }
  }
}

上面的示例只是指定了一個 logger,當(dāng)然也可以在一次請求中設(shè)定多個 logger,如下所示:

PUT _cluster/settings
{
  "persistent": {
    "logger": {
      "_root": "INFO",
      "org.elasticsearch.action": "DEBUG",
      "org.elasticsearch.action.admin.cluster.health": "TRACE"
    }
  }
}

上面的設(shè)定中,調(diào)用者的意圖可能如下:

  1. root 的日志等級(默認(rèn)所有 logger 的日志級別)設(shè)定為 INFO,雖然 log4j2.properties 中已經(jīng)設(shè)定過了,保險起見,這里再指定一次。
  2. 設(shè)定 org.elasticsearch.action 這個 package 下所有 logger 的日志級別都為 DEBUG,需要查看下 transport action 的執(zhí)行日志。
  3. 設(shè)定 org.elasticsearch.action.admin.cluster.health 這個 package 下所有 logger 的日志級別都為 TRACE,需要查看 Cluster Health 執(zhí)行的更多日志。

但實際去運行時,Elasticsearch 并沒有按照預(yù)期的結(jié)果去執(zhí)行,沒有相關(guān)?DEBUG?和?TRACE?級別的日志輸出。這里直接給出原因和解決方案。

原因是 elasticsearch 在設(shè)定 logging level 時,會優(yōu)先采用?_root?和?parent logger?的設(shè)定,這里和 log4j2.properties 中的設(shè)定有所差異。

上面的調(diào)用,最終結(jié)果是采用 _root 的設(shè)定,所有 logger 都是?INFO?,其他的設(shè)定都無效了。

解決方案如下,去除 _root 設(shè)定和 parent logger 的設(shè)定。

PUT _cluster/settings
{
  "persistent": {
    "logger": {
      "_root": null,
      "org.elasticsearch.action": null,
      "org.elasticsearch.action.admin.cluster.health": "TRACE"
    }
  }
}

下面就是源碼分析了,感興趣的可以繼續(xù)看下去~

源碼分析

相關(guān)實現(xiàn)邏輯在?ClusterSetting.LoggingSettingUpdater?里面,這里簡單給下定位的思路,感興趣的同學(xué)可以自己去翻下源碼。

  1. rest 請求的入口是?RestClusterUpdateSettingsAction,這里會轉(zhuǎn)發(fā)請求到 master 節(jié)點
  2. master 處理的入口是?TransportClusterUpdateSettingsAction,這里會去 update Cluster Setting,關(guān)鍵詞為?updater.updateSettings。
  3. 在 updateSettings的時候會調(diào)用所有的 ClusterSettingUpdater,Logging 就是其中之一。

這里 apply setting 的代碼如下:

for (String key : value.keySet()) {
    assert loggerPredicate.test(key);
    String component = key.substring("logger.".length());
    if ("level".equals(component)) {
        continue;
    }
    if ("_root".equals(component)) {
        final String rootLevel = value.get(key);
        if (rootLevel == null) {
            Loggers.setLevel(LogManager.getRootLogger(), Loggers.LOG_DEFAULT_LEVEL_SETTING.get(settings));
        } else {
            Loggers.setLevel(LogManager.getRootLogger(), rootLevel);
        }
    } else {
        Loggers.setLevel(LogManager.getLogger(component), value.get(key));
    }
}

淺顯易懂,不廢話,而且這里的邏輯看起來很正常,那么繼續(xù)來看下 Loggers.setLevel代碼。

public static void setLevel(Logger logger, Level level) {
    if (!LogManager.ROOT_LOGGER_NAME.equals(logger.getName())) {
        Configurator.setLevel(logger.getName(), level);
    } else {
        final LoggerContext ctx = LoggerContext.getContext(false);
        final Configuration config = ctx.getConfiguration();
        final LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName());
        loggerConfig.setLevel(level);
        ctx.updateLoggers();
    }

    // we have to descend the hierarchy
    final LoggerContext ctx = LoggerContext.getContext(false);
    for (final LoggerConfig loggerConfig : ctx.getConfiguration().getLoggers().values()) {
        if (LogManager.ROOT_LOGGER_NAME.equals(logger.getName()) || loggerConfig.getName().startsWith(logger.getName() + ".")) {
            Configurator.setLevel(loggerConfig.getName(), level);
        }
    }
}

最后的處理邏輯會在每個 logger 設(shè)定完成后,去重新刷一遍現(xiàn)有的 logger,應(yīng)用 root 或者 parent logger 的設(shè)定

順著代碼的修改記錄,找到了當(dāng)初的修改 PR 如下:

[https://github.com/elastic/el...]()

其中也描述了修改的原因:

Today when setting the logging level via the command-line or an API
call, the expectation is that the logging level should trickle down the
hiearchy to descendant loggers. However, this is not necessarily the
case. For example, if loggers x and x.y are already configured then
setting the logging level on x will not descend to x.y. This is because
the logging config for x.y has already been forked from the logging
config for x. Therefore, we must explicitly descend the hierarchy when
setting the logging level and that is what this commit does.

從這段描述看,當(dāng)時要解決的問題是 x.y 沒有繼承 x logging level 的問題,所以加了這段顯示繼承的邏輯。

雖然這解決了繼承的問題,但其行為本身與 log4j2.properties 中 logger 的修改邏輯就不一致了,難免帶來困擾。

但考慮到這個配置是一個專家級別的配置,很少用戶會使用,自己心里明白正確的使用方法就好了^_^文章來源地址http://www.zghlxwxcb.cn/news/detail-807304.html

到了這里,關(guān)于你真的知道如何查看 Elasticsearch 的 Debug 日志嗎?!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Observability:如何有效地將應(yīng)用日志發(fā)送到 Elasticsearch

    Observability:如何有效地將應(yīng)用日志發(fā)送到 Elasticsearch

    ?在今天的文章中,我們將探討使用 3 種不同的架構(gòu)發(fā)送應(yīng)用的日子到 Elasticsearch。我們將詳述它們的優(yōu)缺點。更多關(guān)于日志架構(gòu)的介紹,請參考 “Elastic:開發(fā)者上手指南” 中的 “ Elastic Stack 架構(gòu) ” 部分。 采用 Elastic Stack,應(yīng)用程序日志發(fā)送到 Elasticsearch 有三種不同架構(gòu),

    2024年02月09日
    瀏覽(16)
  • linux 如何查看es進程,Linux---關(guān)閉Elasticsearch進程,并重新啟動

    查看ES進程: 執(zhí)行命令:ps -ef | grep elasticsearch 如果有elasticsearch進程,則會返回包含elasticsearch的進程信息,如下所示: 如果沒有elasticsearch進程,則不會返回任何信息。 關(guān)閉ES進程: 執(zhí)行命令:sudo systemctl stop elasticsearch 等待一段時間,直到ES進程完全停止。 重新啟動

    2024年02月11日
    瀏覽(21)
  • Observability:如何使用 Elastic Agents 把定制的日志攝入到 Elasticsearch 中

    Observability:如何使用 Elastic Agents 把定制的日志攝入到 Elasticsearch 中

    在我之前的文章 “Observability:使用 Elastic Agent 來攝入日志及指標(biāo) - Elastic Stack 8.0”,我詳細(xì)地描述了如何安裝 Elasticsearch,Stack 及 Elastic Agents 來采集系統(tǒng)日志及指標(biāo)。很多開發(fā)者可能會有疑問,在我們的實際使用中,我們更多的可能是需要采集定制的應(yīng)用日志,而不是系統(tǒng)日

    2024年02月02日
    瀏覽(22)
  • linux查看es節(jié)點使用情況,elasticsearch(es) 如何查看當(dāng)前集群中哪個節(jié)點是主節(jié)點(master)

    elasticsearch 查看當(dāng)前集群中的 master 節(jié)點是哪個需要使用 _cat 監(jiān)控命令,具體如下。 查看方法 es 主節(jié)點確定命令,以 kibana 上查看示例如下: GET _cat/nodesv 返回結(jié)果示例如下: ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.16.16.188 52 99 5 2.59 1.70 1.45 mdi - elastic3

    2023年04月15日
    瀏覽(32)
  • 如何在 Ubuntu 14.04 上使用 Rsyslog、Logstash 和 Elasticsearch 實現(xiàn)日志集中管理

    Elastic 的一篇文章 理解組織生成的數(shù)百萬條日志行可能是一個艱巨的挑戰(zhàn)。一方面,這些日志行提供了對應(yīng)用程序性能、服務(wù)器性能指標(biāo)和安全性的視圖。另一方面,日志管理和分析可能非常耗時,這可能會阻礙對這些日益必要的服務(wù)的采用。 開源軟件,如 rsyslog、Elasticse

    2024年04月11日
    瀏覽(60)
  • 關(guān)于ElasticSearch,你應(yīng)該知道的

    一、集群規(guī)劃優(yōu)化實踐 1、基于目標(biāo)數(shù)據(jù)量規(guī)劃集群 在業(yè)務(wù)初期,經(jīng)常被問到的問題,要幾個節(jié)點的集群,內(nèi)存、CPU要多大,要不要SSD? 最主要的考慮點是:你的目標(biāo)存儲數(shù)據(jù)量是多大?可以針對目標(biāo)數(shù)據(jù)量反推節(jié)點多少。 2、要留出容量Buffer 注意:Elasticsearch有三個警戒水

    2024年01月23日
    瀏覽(20)
  • Elasticsearch:關(guān)于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

    Elasticsearch:關(guān)于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x

    在本文中,我們將討論如何在 Python 中使用 Elasticsearch。 如果你還不了解 Elasticsearch,可以閱讀這篇文章 “Elasticsearch 簡介” 進行快速介紹。在我之前的文章 “Elasticsearch:使用最新的 Python client 8.0 來創(chuàng)建索引并搜索”,我也有所介紹如何使用 Python 客戶端來連接 Elasticsearch

    2024年02月02日
    瀏覽(24)
  • Elasticsearch 刪除重復(fù)文檔實現(xiàn)方式,你知道幾個?

    Elasticsearch 刪除重復(fù)文檔實現(xiàn)方式,你知道幾個?

    之前文章有講到借助:fingerprint filter 插件實現(xiàn)去重。 近期又有社群小伙伴問到同樣的問題,這里一并梳理回復(fù)如下。 這里講的實現(xiàn),借助 python 腳本實現(xiàn)。 前置條件: 由于涉及 8.X 版本 Elasticsearch 以安全方式的連接,這里需要 python 升級到 3.10+ 版本才可以。 1.1 實現(xiàn)前提 標(biāo)

    2023年04月08日
    瀏覽(19)
  • Elasticsearch:為日志分析設(shè)置安全的 Elasticsearch 管道

    Elasticsearch:為日志分析設(shè)置安全的 Elasticsearch 管道

    在我之前的許多文章中,我已經(jīng)詳細(xì)地描述了如何配置如下的管道: 如果你想了解更多,請詳細(xì)閱讀文章: Logstash:Logstash 入門教程 (二)? Elastic:運用 Docker 安裝 Elastic Stack 并采集日志文件 在實際的使用中,Elastic Stack 中的各個組件極有可能不在同樣的一個機器上。我們

    2024年02月05日
    瀏覽(17)
  • Eclipse在Debug時如何方便查看參數(shù)(看各個變量的值)

    Eclipse在Debug時如何方便查看參數(shù)(看各個變量的值)

    初學(xué)者在用eclipse時經(jīng)常會找不到debug的各個參數(shù)的值,下面3步讓你快速打開各參數(shù)窗口 第一步:打開eclipse 第二步:Windows–Preferences 第三步:Java–Editor–Hovers–把第一個?取消,第二個打?如圖所示 第四步:應(yīng)用即可顯示出各變量的值

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包