継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Amazon OpenSearch Service でスローログを有効化しているのにログがでない...?時の解決方法を試した

タダです.

Amazon OpenSearch Service でスローログを有効化しているのに何もログがないって思ったことはありませんか?自分はあります.これでは遅いクエリの分析ができない...そんな状況からログを出すことができたので対処法をまとめていきます.

Amazon OpenSearch Service のログ有効化する方法

そもそも Amazon OpenSearch Service でログを有効化する方法はどのようにするかというと,ドキュメントにコンソール利用の方法と AWS CLI,AWS SDKの記載があり,これに従って設定していきます.

スローログの閾値を設定する

本題ですが,スローログを有効化してもログが出てこないのは閾値を設定してないからです.閾値の設定の仕方はドキュメントに記載があります.つまり,Amazon OpenSearch Service に対して PUT リクエストを送り閾値を設定するということですね.以下,curl でリクエストを送った場合の例になりますが,1秒以上かかるリクエストを WARN ログとして出力する例です.

$ curl -XPUT 'domain-endpoint/index-name/_settings' -H 'Content-Type: application/json' -d '{
"index.search.slowlog.threshold.query.warn": "1s"
}'

関連ドキュメント docs.aws.amazon.com

これで curl domain-endpoint/index-name/_settings?pretty を叩いて slowlog のセクションが出ていれば CloudWatch Logs にスローログが出力されます.

$ curl domain-endpoint/index-name/_settings?pretty
{
  "index-name" : {
    "settings" : {
      "index" : {
        "search" : {
          "slowlog" : {
            "threshold" : {
              "query" : {
                "warn" : "1s"
              }
            }
          }
        }
  ~中略~
}

なお,スローログのフィールド情報は下記ページに日本語記事の解説があり,大変勉強になりました.

www.elastic.co

まとめ

Amazon OpenSearch Service でスローログに何も出ない場合の理由とその対処をまとめました.