Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

AWSでElasticsearch(Elastic Cloud)を使う時のポイント 2024年版(運用編1)

こんにちは、Elastic認定資格3種(※)を保持しているノムラです。
※Elastic社の公式認定資格(Elastic Certified Engineer / Elastic Certified Analyst / Elastic Certified Observability Engineer)

こちらはAWS編の記事になります。

AWSでElasticsearch(Elastic Cloud)を使う時のポイントの記事一覧は以下です。
①構築編
acro-engineer.hatenablog.com
②運用編2
<運用編2 近日公開予定!!>


本記事ではElastic Cloudを運用するにあたり、必要な各種設定を実施する手順を紹介します。

はじめに
1. Monitoring設定(Metric/Logs)
2. Snapshot設定
3. 監視設定
まとめ

はじめに

以下本記事ではElastic Cloud(Elasticsearch Service)の名称を統一して「Elastic Cloud」で記載します。

1. Monitoring設定(Metric/Logs)

Monitoring機能について

Monitoring機能を利用することでクラスタの状態が一目で分かり、かつ何らか問題が発生した際もリソースとログの両面から素早く問題調査することが可能です。

Elastic CloudでMonitoring機能を有効化する

Monitoring機能はデフォルトでは有効化されていません。
そのため以下の手順で有効化していきます。

(1) Elastic CloudのDeploymentの画面にアクセスしメニューの「Logs and metrics」を押下
「Logs and metrics」を押下
(2) 「Ship to a deployment」の「Enable」を押下
「Enable」を押下
(3) 構築したDeploymentを選択し「Save」を押下
Monitoring機能が有効化されます。
「Save」を押下

Metricを確認する

MetricではElastic Stackがそれぞれどれ位サーバリソースを利用しているかを確認可能です。
(1) Kibana画面の左側のメニューから「Stack Monitoring」を押下
「Stack Monitoring」を押下
(2) Elasticsearchの「Overview」を押下
OverviewではElasticsearch全体の検索性能/インデキシング性能をリアルタイムに確認可能です。
「Overview」を押下
(3) Elasticsearchの「Nodes」からインスタンスを1つ選び押下
「Nodes」からインスタンスを1つ選び押下
各サーバ毎のリソースの状況がリアルタイムに確認可能です。
Metricを確認

Logsを確認する

Logsではリアルタイムにログを確認/絞り込みを行いながら調査することが可能です。
(1) Kibana画面の左側のメニューから「Logs」を押下
「Logs」を押下
Stream画面ではElasticsearchに取り込んでいる各種ログがリアルタイムに表示されます。
ログがリアルタイムに表示される
(2) 画面上部の検索窓に「error」と入力し、ログの絞り込みを実行
ログを絞り込みながら問題調査を実施することが可能です。
「error」と入力しログの絞り込みを実行

Metricの保持期間を変更する

Metricの保持期間はデフォルトでは3日に設定されています。 要件毎に保持期間は異なると思いますので、設定を変更してみましょう。
(1) Kibana画面の左側のメニューから「Stack Management」を押下
「Stack Management」を押下
(2) 「Index Lifecycle Policies」を押下
「Index Lifecycle Policies」を押下
(3) 検索窓に「.monitoring」と入力し表示される「.monitoring-8-ilm-policy」を押下
「.monitoring-8-ilm-policy」を押下
Elasticsearchはインデックスをフェーズと呼ばれている状態で管理しており、フェーズの遷移条件をILM(Index Lifecycle Management)で定義しています。 詳細については以下をご参照ください。
ILM: Manage the index lifecycle | Elasticsearch Guide [8.14] | Elastic

変更前の設定は以下の通りとなっています。
フェーズ 設定値
Hotフェーズ インデックス作成から3日経過 or プライマリーシャードのサイズが50GB以上になった際インデックスをRolloverする
Warmフェーズ セグメント数が1になるようにForcemergeを実行する
Deleteフェーズ Rollover後、3日経過したインデックスを削除する
Hotフェーズで定義されているRolloverというのは簡単に言うと特定条件を満たした際に新しいインデックスを作成する機能です。 詳細については以下をご参照ください。
Rollover | Elasticsearch Guide [8.14] | Elastic

(4) Deleteフェーズの値を「3 days」から「31 days」に変更し「Save Policy」を押下
設定を変更し「Save Policy」を押下
上記の手順で、Rollover後31日経過したインデックスを削除するように設定を変更できました。

2. Snapshot設定

Snapshot設定について

Elastic Cloudではデフォルト設定で30分に1回スナップショットを取得します。 こちらも設定確認/設定変更していきましょう。
(1) Kibana画面の左側のメニューから「Stack Management」を押下
「Stack Management」を押下
(2) 「Snapshot nad Restore」を押下
「Snapshot nad Restore」を押下
(3) 「Policies」タブを押下し、「cloud-snapshot-policy」右側の「Edit」ボタンを押下
「Edit」ボタンを押下
(4) 「Schedule」の設定値を変更
時刻の設定はCron表現で設定可能です。また、UTCであることにご注意ください。 詳細については以下のドキュメントを参照ください。
API conventions | Elasticsearch Guide [8.14] | Elastic

「Schedule」の設定値を変更
(5) 必要に応じて「Expiration」「Snapshots to retain」の設定値を変更
必要に応じて設定を変更
(6) 「Save policy」を押下
「Save policy」を押下
(7) 「cloud-snapshot-policy」を押下し「Summary」を表示
変更した結果、毎日0時(JST)にスナップショットが取得されるようになりました。
「Summary」を表示

3. 監視設定

Elastic Cloudの監視機能について

Elastic CloudではAlert機能を利用することで監視/通知を行うことができます。 またデフォルトで多くの監視項目が設定可能なため、簡単に監視設定を行うことが可能です。 デフォルトルールを作成して監視機能を利用してみましょう。
(1)左のメニューから「Stack Monitoring」を押下し、Monitoring画面右上の「alerts and rules」を選択し「Create default rules」を押下
「Create default rules」を押下
(2) 「Create」を押下
これで監視設定ができました。最後に作成されたルール一覧を確認してみましょう。
「Create」を押下
(3) 「Stack Management」を押下し、「Alerts」を選択、その後画面右上の「Manage rules」を押下
「Manage rules」を押下
作成されたルール一覧が表示されます。ルールを編集することで条件の変更や通知設定を行うことも可能です。
作成されたルール一覧
例えば「CPU Usage」のルールはCPU使用率の5分間の平均が85%を超えた場合検知/通知されます。
CPU Usage
また通知先はデフォルトではKibanaログに出力される設定になっていますが、メールやSlack等の多くのコネクタが利用可能です。
コネクタ一覧

まとめに

ここまで構築編、運用編1と構築/セキュリティ設定/運用設定を実施してきました。 これでかなりポイントを押さえたElastic Cloudの利用が可能となっていると思います。 また実際に運用していくと、上記の3点以外に以下も必要になることがあるかもしれません。
  1. バージョンアップ対応
  2. 監査ログ
そこで次回の記事では上記の内容についても解説していきたいと思います。
Acroquest Technologyでは、キャリア採用を行っています。
  • Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • マイクロサービス、DevOps、最新のOSSクラウドサービスを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
  少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。 www.wantedly.com