Elasticsearchスローログ

検索とインデックスはElasticsearchでの2つの主要なリクエストタイプであり、Elasticsearchスローログを有効にすることで、問題あるインデックスの特定に役立てられます。Site24x7アプリケーションログを使用して、Elasticsearchインデックスにスロークエリしきい値を設定し、スローな検索とインデックスログを監視します。ダッシュボードで、クエリについての情報を表示します。

目次

Elasticsearchスローログの有効化

Elasticsearchでスローログは、デフォルトで無効化されています。ロギングを有効化にするには、Elasticsearchインデックスの設定APIを設定して、スロー検索またはインデックスログのしきい値を設定します。定義できるしきい値は3種類あります。

  • インデックス (index)
  • 検索のクエリ段階 (query)
  • 検索の取得段階 (fetch)

スロー検索ログのロギングの有効化方法:

検索プロセスにはクエリと取得の2つの段階があり、この両実行段階に対してしきい値を設定できます。

curl -X PUT "<Elasticsearch_domain>/<Index>/_settings?pretty" -H 'Content-Type: application/json' -d' {
"index.search.slowlog.threshold.query.warn": "0ms",
"index.search.slowlog.threshold.query.info": "0ms",
"index.search.slowlog.threshold.query.debug": "0ms",
"index.search.slowlog.threshold.query.trace": "0ms",
"index.search.slowlog.threshold.fetch.warn": "0ms",
"index.search.slowlog.threshold.fetch.info": "0ms",
"index.search.slowlog.threshold.fetch.debug": "0ms",
"index.search.slowlog.threshold.fetch.trace": "0ms"
}'

スローインデックスログのロギングの有効化方法:

curl -X PUT "<Elasticsearch_domain>/<Index>/_settings?pretty" -H 'Content-Type: application/json' -d' {
"index.indexing.slowlog.threshold.index.warn": "0ms",
"index.indexing.slowlog.threshold.index.info": "0ms",
"index.indexing.slowlog.threshold.index.debug": "0ms",
"index.indexing.slowlog.threshold.index.trace": "0ms",
"index.indexing.slowlog.level": "trace",
"index.indexing.slowlog.source": "1000"
}'

上記クエリで、Elasticsearch_domain (例:localhost:9200)とIndexが入力されていることを確認してください。すべてのインデックスを有効化したい場合、インデックスで、*または_allを指定します。しきい値設定を0msとすると、すべてのログを記録し、それがパフォーマンス結果に影響します。設定したしきい値制限に基づいて、しきい値を超過した検索とインデックスログが記録されるようになります。

ログ管理の設定方法

  1. Site24x7にログインします。
  2. Site24x7サーバー監視エージェント(Windows | Linux)をダウンロード後、インストールします。
  3. 管理 > アプリケーションログ > ログプロファイルに移動し、ログプロファイルの追加をクリックします。
    • プロファイル名:ログプロファイルの名前を入力します。
    • ログタイプの選択:ドロップダウンからElasticsearchスローログを選択します。
    • ログソース:ドロップダウンからローカルファイルを選択します。
    • ログ検索のためのファイルリスト:次のファイルが含まれます。
      /var/log/elasticsearch/*_index_indexing_slowlog*.log
      /var/log/elasticsearch/*_index_search_slowlog*.log
  4. サーバーを選択して保存をクリックします。

ログパターン

[$DateTime:date$][$LogLevel$][index.$Type$.slowlog.$Phase$.$NodeId$] [$NodeName$] [$Index$]![$Shard$]! took[*], took_millis[$TimeTaken:number$], !type[*], id[*], routing[*],!!total_hits[$TotalHits:number$], types[$Types$], stats[$Stats$], search_type[$SearchType$], total_shards[$TotalShared:number$],! source[$Message$

上記はSite24x7で定義されているデフォルトのパターンであり、次のサンプルのようにElasticsearchスローログが解析されます。

サンプルログ

インデックスおよび検索(取得とクエリ段階)スローログのサンプルログは次のとおりです。

[2022-09-18T01:28:13,358][WARN ][index.indexing.slowlog.index.Y37CmUvQSi2jgtzN_-6K1A] [esd6C] [10772528_2000326507563_2000550180009_16_202/Y37CmUvQSi2jgtzN_-6K1A] took[1.5ms], took_millis[1], type[-1], id[Jcvyl4ABjtHtfc2jfkMH], routing[0], source[{"2002351591637":"367550","2002681248211":563,"2002351591639":215,"_zl_secs_to_millis":197]

[2022-09-18T00:57:14,861][WARN ][index.search.slowlog.fetch.tWO5cHxMRrGW3VuwRhIwYQ] [esd2C] [10772528_-1_-1_21_864][3] took[85.3micros], took_millis[0], total_hits[3456], types[some_type], stats[], search_type[QUERY_THEN_FETCH], total_shards[195], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], extra_source[],

[2022-09-18T02:19:14,861][WARN ][index.search.slowlog.query.tWO5cHxMRrGW3VuwRhIwYQ] [esd2C] [10772528_-1_-1_21_864][0] took[25.3s], took_millis[2366], total_hits[3456], types[], stats[], search_type[QUERY_THEN_FETCH], total_shards[123], source[{"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], id[],

上記サンプルログは項目ごとに分けられて、それぞれの値が取得され、Site24x7にアップロードされます。

項目名 項目値
DateTime 2022-09-18T02:19:14,861
LogLevel WARN
Type search
Phase query
NodeId tWO5cHxMRrGW3VuwRhIwYQ
NodeName esd2C
Index 10772528_-1_-1_21_864
Shard 0
TimeTaken
(ms)
2366
TotalHits 3456
Types
Stats
SearchType QUERY_THEN_FETCH
TotalShared 123
Message {"query":{"query_string":{"query":"*"}},"from":0,"size":"24","sort":{"updated_at":"desc"}}], id[],

Elasticsearchスローログダッシュボード

アプリケーションログでは、ログタイプごとにダッシュボードが作成され、デフォルトで複数のウィジェットが表示されます。Elasticsearchスローログダッシュボードで表示されるウィジェットは次のとおりです。

  • スロー検索
  • 最も遅い検索時間
  • スローインデックス
  • 最も遅いインデックス時間
  • タイプごとのスロークエリ時間経過
  • タイプごとの検索
  • クエリシャード時間経過
  • クエリヒット時間経過
  • スロークエリ

関連ガイド