[Elasticsearch Monitor]Elasticsearchを監視する方法(二)

8267 ワード

前回の記事では、Elasticsearchをどのように監視するかについて、主にEsサーバに対してどのような指標を監視すべきかについて説明しました.本稿では,es apiにおける各統計指標の意味を紹介することを目的とする.
Elasticsearch’s RESTful API + JSON
デフォルトでは、Elasticsearchは9200ポートでrestful httpサービスを提供し、クラスタ、ノード、インデックス状況のJSON結果を返します.主に5つのHTTP REST APIがElasticsearchを監視するために使用できる:
  • Cluster Health API
  • Cluster Stats API
  • Node Stats API
  • Index Stats API
  • Pending Tasks API

  • 次の表では、検索性能、インデックス性能、メモリ性能、ネットワーク性能に対応するESAPIについてまとめています.いくつかのパフォーマンスデータは、ノード次元およびインデックス次元で検索パフォーマンスが提供されるなど、複数の次元から記述されています.
    Metric category
    Availability
    Search performance metrics
    Node Stats API, Index Stats API
    Indexing performance metrics
    Node Stats API, Index Stats API
    Memory and garbage collection
    Node Stats API, Cluster Stats API
    Network metrics
    Node Stats API
    Cluster health and node availability
    Cluster Health API
    Resource saturation and errors
    Node Stats API, Index Stats API, Cluster Stats API, Pending Tasks API
    (一)Cluster Health API
    Cluster Health APIは、クラスタの健康状態を記述するJSONオブジェクトデータを提供する.
    APIインタフェース:
    GET _cluster/health
    

    戻り結果JSON:
    {
      "cluster_name": "elasticsearch",
      "status": "yellow",
      "timed_out": false,
      "number_of_nodes": 1,
      "number_of_data_nodes": 1,
      "active_primary_shards": 11,
      "active_shards": 11,
      "relocating_shards": 0,
      "initializing_shards": 0,
      "unassigned_shards": 10,
      "delayed_unassigned_shards": 0,
      "number_of_pending_tasks": 0,
      "number_of_in_flight_fetch": 0,
      "task_max_waiting_in_queue_millis": 0,
      "active_shards_percent_as_number": 52.38095238095239
    }
    
  • status合計3つの状態:greenすべてのプライマリスライスおよびバックアップスライスが割り当てられ、クラスタが100%健全であることを示す.yellowすべてのプライマリスライスが割り当てられているが、少なくとも1つのバックアップスライスが割り当てられていないことを示す.データは失われず、検索結果は完全です.ただし、高可用性は失われ、データが失われるリスクがあり、黄色で警告されます.red少なくとも1つのマスタースライスが未割当てであり、このマスタースライスのすべてのスライスが失われていることを示す.データが失われ、検索結果が不完全で、このスライスインデックスデータに異常が発生します.
  • number_of_nodesnumber_of_data_nodesは、名前からノード数とデータノード数であることがわかります.
  • active_primary_shardsクラスタ内のすべてのindexのマスタースライス数の合計.
  • active_shardsクラスタ内のすべてのindexのスライス数の合計、バックアップスライスを含む.
  • relocating_shards、移動中のスライス数.通常は0であり,クラスタrebalanceの場合に変化する.

  • (二)Cluster Stats API
    Cluster Stats APIは、クラスタ次元の情報を提供します.基本的にはNode Stats APIのデータの総和です.各ノードの詳細はありませんが、クラスタ全体の現在の動作状態をすばやく把握できます.
    APIインタフェース:
    GET _cluster/stats
    
    {
      "_nodes": {
        "total": 1,
        "successful": 1,
        "failed": 0
      },
      "cluster_name": "elasticsearch",
      "timestamp": 1500175210218,
      "status": "yellow",
      "indices": {
        "count": 11,
        "shards": {...},
        "docs": {...},
        "store": {...},
        "fielddata": {...},
        "query_cache": {...},
        "completion": {...},
        "segments": {...}
      },
      "nodes": {
        "count": {...},
        "versions": [...],
        "os": {...},
        "process": {...},
        "jvm": {...},
        "fs": {...},
        "plugins": [...],
        "network_types": {...}
      }
    }
    

    Indicesとnodesの内部属性の意味はNode Stats APIで紹介されます
    (三)Node Stats API
    Node Stats APIは、クラスタの各サーバの状態を監視するために非常に有用なAPIです.それは私たちが監視したい主な指標を統計して、私たちが前に列挙した大部分の指標を含む.
    APIインタフェース:
    GET _nodes/stats (    node   _nodes/node1,node2/stats)
    
    {
      "_nodes": {
        "total": 1,
        "successful": 1,
        "failed": 0
      },
      "cluster_name": "elasticsearch",
      "nodes": {
        "SdRLvOO7RKSiaBW_hmwvZg": {
          "name": "node1",
          "indices": {...},
          "os": {...},
          "process": {...},
          "jvm": {...},
          "thread_pool": {...},
          "fs": {...},
          "transport": {...},
          "http": {...}
        }
        ...
      }
    }
    
  • クエリ性能指標、プレフィックスindices.search.*の指標
  • indices.search.query_total問合せ総量
  • indices.search.query_time_in_millis合計照会時間
  • indices.search.query_current処理中の問合せ量
  • indices.search.fetch_totalクエリの第2段階fetch総量
  • indices.search.fetch_time_in_millisfetch所要時間
  • indices.search.fetch_current処理中のfetch数
  • インデックス性能指標、接頭辞indices.indexing.* ,indices.refresh.* ,indices.flush.* の指標
  • indices.indexing.index_totalインデックス総量
  • indices.indexing.index_time_in_millisインデックス消費時間
  • indices.indexing.index_current処理中のインデックス量
  • indices.refresh.totalリフレッシュメモリ総量
  • indices.refresh.total_time_in_millisメモリ更新にかかる時間
  • indices.flush.total同期ディスク総量
  • indices.flush.total_time_in_millis同期ディスク消費時間
  • Cache性能指標、プレフィックスindices.query_cache.* ,indices.fielddata.* ,indices.request_cache.* を選択します.Fielddataはメモリ消費の大きなユーザーになる可能性がありますので、特に注意が必要です.
  • indices.query_cache.memory_size_in_bytesクエリー・キャッシュ・サイズ
  • indices.query_cache.evictionsクエリー・キャッシュの消去サイズ
  • indices.fielddata.memory_size_in_bytesfielddataキャッシュサイズ
  • indices.fielddata.evictionsfielddataキャッシュ消去サイズ
  • indices.request_cache.memory_size_in_bytes全リクエストキャッシュサイズ
  • indices.request_cache.evictions全リクエストキャッシュ消去サイズ
  • os指標
  • os.cpu.percentシステムCPU使用率
  • os.cpu.load_average.1mシステムCPU 1分平均load
  • os.cpu.load_average.5mシステムCPU 5分平均load
  • os.cpu.load_average.15mシステムCPU 15分平均load
  • os.mem.free_percentシステムメモリ使用率
  • os.mem.used_percentシステムメモリ使用率
  • os.mem.total_in_bytesシステムメモリ総サイズ
  • os.mem.free_in_bytesシステムメモリ使用可能サイズ
  • os.mem.used_in_bytesシステムメモリ使用サイズ
  • os.swap.total_in_bytesシステムswap総サイズ
  • os.swap.free_in_bytesシステムswap利用可能サイズ
  • os.swap.used_in_bytesシステムswap使用済サイズ
  • process指標、専用とes jvmプロセスの資源消費指標
  • process.cpu.percentプロセスCPU使用率
  • process.cpu.total_in_millisプロセスCPU使用時間
  • process.mem.total_virtual_in_bytesプロセス使用可能な仮想メモリサイズ
  • process.open_file_descriptorsプロセスオープンファイルハンドル数
  • process.max_file_descriptorsプロセス利用可能ハンドル数
  • JVM性能指標、プレフィックスjvm.*の指標、メモリ使用及びGC指標
  • jvm.gc.collectors.young.collection_countyoung gcサイズ
  • jvm.gc.collectors.young.collection_time_in_millisyoung gc所要時間
  • jvm.gc.collectors.old.collection_countold gcサイズ
  • jvm.gc.collectors.old.collection_time_in_millisold gc消費時間
  • jvm.mem.heap_used_percentメモリ使用率
  • jvm.mem.heap_used_in_bytesメモリ使用量
  • jvm.mem.heap_committed_in_bytesメモリ使用量
  • スレッドプール性能指標、接頭辞thread_pool.*の指標
  • thread_pool.bulk.queuethread_pool.index.queuethread_pool.search.queuethread_pool.merge.queue・各キュー長
  • thread_pool.bulk.rejectedthread_pool.index.rejectedthread_pool.search.rejectedthread_pool.merge.rejected各キューオーバーフロー量(未実行、放棄)
  • ファイルシステム指標
  • fs.total.total_in_bytesデータディレクトリ合計サイズ
  • fs.total.free_in_bytesデータディレクトリ残量
  • fs.total.vailable_in_bytesデータディレクトリ利用可能サイズ
  • クラスタ通信指標
  • transport.rx_countクラスタ通信で受信したパケット総数
  • transport.rx_size_in_bytesクラスタ通信で受信したデータの合計サイズ
  • transport.tx_countクラスタ通信で送信されるパケット総数
  • transport.tx_size_in_bytesクラスタ通信で送信されるデータの合計サイズ
  • transport.server_openクラスタ通信のための接続数