Reading Time: 1 minutes
この記事の所要時間: 約 5分

こんにちは、ManageEngineエンジニアの園部です。本日は、全文検索エンジンのElasticsearchに関する話題をお届けします。

目次

Elasticsearchは、拡張性の高い分散型オープンソースの検索分析エンジンです。構造化されたデータをリアルタイムに格納・取得可能のため、ログ分析、リアルタイムアプリケーションの監視、クリックストリーム分析などに使用されます。

Elasticsearchの特徴は以下の通りです。

  • HTTP Webインターフェースを備えたマルチテナント機能
  • JSON文書の形式でデータを表示し、REST APIを介して全文検索が可能
  • PHPやRuby、.NetやJavaなどの言語用のWebクライアントに対応

Elasticsearchの最大の特徴である、ビッグデータの収集と解析の機能を最大限に活用する第一歩として、
Elasticsearch環境のパフォーマンス状況を把握し、いつでも最良の環境でElasticsearchを動かすことから始めていきましょう!

監視すべきElasticsearchの指標 4項目とは?

Elasticsearchの監視では、見るべき箇所がたくさんありますが、ここでは、特に重要な4つの指標について詳しくご紹介していきます。

1. クラスタのステータスとノードの可用性

クラスタステータスとノードの可用性
Elasticsearchサーバーのパフォーマンスは、インストールされているマシンによって大きく左右されます。
まずは、主要なパフォーマンス・メトリックを監視することが重要です。

クラスタの状態を把握するには、すべてのノードの

  • CPU使用率
  • メモリ使用率
  • ディスクI/O

等、各Elasticsearchノードのステータスをリアルタイムで監視しましょう。

CPU使用率が急上昇してしまった場合は、まずJava仮想マシン(JVM)を調べるのがオススメです。
ElasticsearchはJVMで実行されるため、Elasticsearchのメモリー使用量を監視するには、JVMメモリーとガーベッジ・コレクションの統計を確認しましょう。

2. インデックスのパフォーマンス

インデックスのパフォーマンス
ワークロードの書き込み負荷が高い場合、インデックスを新しい情報で更新してみると、Elasticsearchのパフォーマンスの監視と分析がしやすくなります。

インデクシングレートの急激な上昇や低下が発生した場合は、
データソースに問題が発生している可能性があります。

また、クラスタ全体のパフォーマンスは、リフレッシュ時間とマージ時間の影響を受けることがあります。
このことから、インデックスのパフォーマンスとして、
リフレッシュ時間の短縮とマージ時間の短縮が推奨されます。

Elasticsearchパフォーマンス監視ツールを使用して、

  • 開始時間
  • ノード内の平均セグメント時間
  • ファイルシステムキャッシュ使用率
  • リクエストレート

など、各ノードの平均のクエリレイテンシーを監視していくことが望ましいです。

3. 検索のパフォーマンス

検索のパフォーマンス
インデックスリクエストとは別に、検索リクエストも重要な要素です。Elasticsearchの監視で重要な検索のパフォーマンス指標は以下の2つです:

・クエリレイテンシー時間とリクエスト率

クエリのパフォーマンスに影響を与える可能性のある要素は数多くあります。
例えば、

  • 内容が誤っているクエリ、効率の悪いクエリ
  • Elasticsearchクラスタ
  • JVMメモリー
  • ガーベッジ・コレクション

などです。

クエリレイテンシーは、ユーザーに直接影響を与える要素となるため、非常に重要です。
状態を常に監視し、異常事態の発生時には真っ先に対処することが重要です。

クエリレイテンシとともにリクエストレートを監視することで、システムがどの程度使用されているかも把握可能です。

・フィルターキャッシュ

Elasticsearchのフィルターはデフォルトでキャッシュされます。
フィルターを使用してクエリーを実行すると、Elasticsearchはフィルタに一致するドキュメントを検索し、その情報を使用して「ビットセット」と呼ばれる構造を作成します。

その後のクエリ実行時に、同じフィルタが設定されている場合は、ビットセットに格納されている情報が再利用されます。

これにより、I/O処理とCPUサイクルが節約されるため、クエリの実行速度が向上します。

フィルターキャッシュの状況を把握し、実行速度改善の仕組みが機能しているかを確認できることが望ましいと言えます。

4. ネットワークとスレッドプールの監視

スレッドのステータス
Elasticsearchノードは、スレッドプールを使用して、スレッドメモリとCPUの消費を管理しています。
スレッドプールはプロセッサー数に基づいて自動的に設定されます。

監視するべき重要なスレッドプールと、スレッドプールに発生する問題の一覧を以下にまとめました。

監視すべき対象スレッド スレッドに起こる4大問題
検索
索引
マージ
バルク
保留リクエストが大量に溜まる
ノードの1つが低速になる
スレッドプールのリジェクト

特に、メモリ使用量が急激に変化している場合や、長時間のガーベッジコレクションが発生している場合は要注意です。

ガーベッジコレクションが多発する原因として考えられるのは、

  • ある1つの特定のプールがストレスを受けている
  • JVMのメモリ不足

等が考えられます。ガーベッジコレクションがボトルネックと感じる場合は、最初にここを確認してみてください。

まとめ

Elasticsearchの性能を十分に活かすために監視しておくべき4つの項目をご紹介しました。
大量データの検索や解析が手軽に実現可能となった昨今においても、土台となるサーバーやアプリケーションの保守の重要性は変わりません。
安定稼働や高速化を実現するための第一歩として、4つの項目の監視を始めることをおすすめいたします。

ポイント
  • 土台の安定性確保のため、クラスタのステータスとノードの可用性を監視しましょう!
  • インデックスのパフォーマンスを監視してElasticsearch本来の機能を安定させましょう!
  • ユーザーに影響が及ぶ前に、検索のパフォーマンスを監視して問題が波及しないようにしましょう!
  • スレッドプールを監視して、データのやり取りで問題が起こらないようにしましょう!

 

※ なお、監視すべきポイントの紹介で使用したグラフイメージは、アプリケーション監視・可視化ツールの『ManageEngine Applications Manager』の画面スクリーンショットを使用しています。
これらのスクリーンショットのグラフは、特別な作りこみが必要なく、監視情報の入力で簡単に作成可能です。

Elasticsearchのパフォーマンス監視要件でお困りの際には、ぜひManageEngine Applications Managerをご検討ください!

▼▼ Webシステムの統合監視なら、ManageEngine Applications Manager ▼▼

Applications Manager 公式ホームページ
Applications Managerのダウンロードはこちら
Applications Manager製品概要資料のダウンロードはこちら
※永年無料版の利用をご希望の方は、30日間フル機能ご利用いただける「評価版」をダウンロードしてください。
30日が過ぎると自動的に5モニターまで監視可能の永年無料版となります。