LoginSignup
1
1

More than 1 year has passed since last update.

Elasticsearch ThreadPool Rejectedの値をDatadogで監視する

Last updated at Posted at 2021-09-10

背景

  • ElasticsearchのThreadPoolごとのRejected数はノードを再起動しないとリセットされない
  • つまりstatsを取得しても、その数値は過去の累積値であって、直近発生した拒否数は分からない

そういう事情のもとで、Datadogで監視する方法をメモ

前提

メトリクスの取得方法

$ curl -s 'https://hoge.com/_nodes/stats?human&pretty' | jq '.nodes.XXXXXX..thread_pool.write'
{
  "threads": 2,
  "queue": 0,
  "active": 0,
  "rejected": 10000,
  "largest": 2,
  "completed": 123456789
}

AWS OpenSearch(旧AWS ES)ではこちらを参照。
https://docs.aws.amazon.com/ja_jp/opensearch-service/latest/developerguide/managedomains-cloudwatchmetrics.html

ElasticsearchのThreadPoolごとのRejected数はノードを再起動しないとリセットされない

こちらのフォーラムにもQ&Aがあるとおり、ノードの再起動でリセットされるものだそうです。

つまり、直近1分で発生したRejected数を見るには、1分前との差分で見ないといけないです。

Datadogで監視

グラフデータ

Timeseriesグラフで見る時、上述のとおり今のメトリクスと1分前のメトリクスの差をグラフ表示させることができます。

Datadog.png

Timeshift

ここで使った方法は上記のTimeshift関数を使うものです。
timeshift(metrics, time_in_second)という形式で指定したメトリクスの指定した時間だけ前の値を取得する関数です。
例えば、前述のグラフデータを数式表現した以下図をみると、timeshift(avg:aws.es.threadpool_wirte_rejected{}.by{}.as_count(), -60)のように使われています。

Datadog.png

ちなみに、上図ではa, bとそれぞれ定義されていますが、aだけ定義して、式でa - timeshift(a, -60)と入力することも可能です。
ただし、グラフを保存すると、自動的にa, bという形で再定義されてしまうので要注意。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1