メインコンテンツまでスキップ
に最終更新

監視メトリクス

DorisのFEとBEのプロセスには監視メトリクスが組み込まれており、デフォルトでPrometheus互換形式で公開されます。このドキュメントでは、観測できるすべてのメトリクスを体系的に一覧化し、優先度(Priority)を示します。PrometheusとGrafanaを連携させた後、監視とアラートの仕組みをすばやく構築できます。

適用シナリオ​

シナリオ目的
クラスタの健全性監視P0メトリクスを使ってFE/BEノードの異常をすばやく検出する
アラート設定QPS、エラー率、Compaction Scoreなどのメトリクスにしきい値ベースのアラートを設定する
パフォーマンスのトラブルシューティングクエリのレイテンシ、スレッドプールのキュー滞留、メモリ使用量のメトリクスを使ってボトルネックを特定する
容量計画ディスク使用量、tablet数、接続数を使ってクラスタの負荷を評価する
障害の振り返りマシンのメトリクス(CPU、IO、ネットワーク)とプロセスのメトリクスを組み合わせて障害の根本原因を分析する

メトリクスの分類​

Dorisの監視メトリクスは、観測対象によって次の2種類に分かれます。

  1. プロセス監視:クエリ数、トランザクション数、Compactionの状態など、Dorisプロセス自体の実行時メトリクスを示します。
  2. ノード監視:CPU、メモリ、IO、ネットワークなど、Dorisプロセスが稼働するマシンのリソースメトリクスを示します。

監視メトリクスの取得​

Prometheus互換形式(デフォルト)​

FEまたはBEノードのHTTPポートに直接アクセスします。

curl http://fe_host:http_port/metrics
curl http://be_host:webserver_port/metrics

レスポンス例:

doris_fe_cache_added{type="partition"} 0
doris_fe_cache_added{type="sql"} 0
doris_fe_cache_hit{type="partition"} 0
doris_fe_cache_hit{type="sql"} 0
doris_fe_connection_total 2

JSON形式​

type=jsonパラメータを使用して、メトリクスをJSON形式で取得します。

curl http://fe_host:http_port/metrics?type=json
curl http://be_host:webserver_port/metrics?type=json

bvarメトリクス​

BEおよびMeta Service / Recyclerのプロセスは、それぞれのbrpcサービスからbvarメトリクスも公開します。Prometheus互換の出力には/brpc_metricsを、名前を指定した診断情報の確認には/varsを使用します。

curl http://be_host:brpc_port/brpc_metrics
curl http://be_host:brpc_port/vars
curl http://cloud_host:brpc_listen_port/brpc_metrics

これらのエンドポイントは、BEのbrpc_port(デフォルトは8060)またはMeta Service / Recyclerのbrpc_listen_port(デフォルトは5000)を使用します。前述のFE / BEのHTTP監視ポートとは異なります。以下のbvar名は登録名に従っており、すべてにdoris_be_プレフィックスが付くわけではありません。

バージョンの識別​

バージョン4.1.5以降、BEとMeta Service / Recyclerのバージョンメトリクスには、/brpc_metricsで次のラベルが含まれます。

メトリクス型ラベル意味
doris_be_versionGaugeversion、major、minor、patch、hotfix、short_hashBEのビルドバージョンとコミット識別子
doris_cloud_versionGauge上記と同じMeta Service / Recyclerのビルドバージョンとコミット識別子

各プロセスはバージョンのサンプルを1つ公開します。メトリクス値には従来のバージョンエンコーディングが保持されます。完全なバージョンはversionラベル、コミット識別子はshort_hashラベルで確認してください。doris_cloud_versionでは、そのプロセスがMeta Service、Recycler、または両方のどれを実行しているかを区別できません。役割を識別するには、スクレイプターゲットのラベルを追加してください。

プロセスのbvar_max_dump_multi_dimension_metric_num設定は、多次元bvarサンプルの数を制限します。デフォルトは5000で、0にするとバージョンメトリクスなどのサンプルが無効になります。BEではバージョン4.1.5以降にこの設定を使用でき、変更を反映するには再起動が必要です。BE設定を参照してください。

監視の優先度とベストプラクティス​

  • 各メトリクステーブルの最後の列は優先度(Priority)です。P0が最も重要で、値が大きいほど重要度は低くなります。まずP0メトリクスを連携させてください。

  • 監視メトリクスの大半はCounter型(累積値)です。有用な情報を得るには、一定間隔(たとえば15秒ごと)でサンプリングし、単位時間あたりの傾きを計算する必要があります。

    たとえば、doris_fe_query_errの傾きを計算すると、クエリのエラー率(1秒あたりのエラー数)が得られます。

より網羅的で有用な監視メトリクスを提供するため、この表への貢献を歓迎します。

FE監視メトリクス​

プロセス監視​

名前ラベル単位意味説明優先度
doris_fe_cache_added{type="partition"}Num新規追加されたPartition Cacheの累積数
{type="sql"}Num新規追加されたSQL Cacheの累積数
doris_fe_cache_hit{type="partition"}NumPartition Cacheのヒット数
{type="sql"}NumSQL Cacheのヒット数
doris_fe_connection_totalNumFEのMySQLポートへの現在の接続数クエリ接続数の監視に使用します。接続数が上限を超えると、新しい接続を受け付けられなくなりますP0
doris_fe_counter_hit_sql_block_ruleNumSQL BLOCK RULEによってブロックされたクエリ数
doris_fe_edit_log_clean{type="failed"}Num過去のメタデータログのクリーンアップ失敗回数失敗しないことが期待されます。失敗した場合は手動での対処が必要ですP0
{type="success"}Num過去のメタデータログのクリーンアップ成功回数
doris_fe_edit_log{type="accumulated_bytes"}Bytesメタデータログの累積書き込み量傾きから書き込み速度を求め、メタデータの書き込みに遅延がないか確認しますP0
{type="current_bytes"}Bytesメタデータログの現在のサイズeditlogのサイズを監視します。サイズが上限を超えた場合は手動での対処が必要ですP0
{type="read"}Numメタデータログの読み取り回数傾きからメタデータの読み取り頻度が正常か確認しますP0
{type="write"}Numメタデータログの書き込み回数傾きからメタデータの書き込み頻度が正常か確認しますP0
{type="current"}Num現在のメタデータログ数editlogの数を監視します。数が上限を超えた場合は手動での対処が必要ですP0
doris_fe_editlog_write_latency_msMillisecondsメタデータログの書き込みレイテンシのパーセンタイル統計。たとえば、{quantile="0.75"}は75パーセンタイルの書き込みレイテンシを示します
doris_fe_image_clean{type="failed"}Num過去のメタデータイメージファイルのクリーンアップ失敗回数失敗しないことが期待されます。失敗した場合は手動での対処が必要ですP0
{type="success"}Num過去のメタデータイメージファイルのクリーンアップ成功回数
doris_fe_image_push{type="failed"}Numメタデータイメージファイルを他のFEノードにプッシュした際の失敗回数
{type="success"}Numメタデータイメージファイルを他のFEノードにプッシュした際の成功回数
doris_fe_image_write{type="failed"}Numメタデータイメージファイルの生成失敗回数失敗しないことが期待されます。失敗した場合は手動での対処が必要ですP0
{type="success"}Numメタデータイメージファイルの生成成功回数
doris_fe_jobNum種類と状態ごとのジョブ数。たとえば、{job="load", type="INSERT", state="LOADING"}はLOADING状態にあるINSERTタイプのデータロードジョブ数を示します必要に応じて、クラスタ内の種類別ジョブ数を確認しますP0
doris_fe_max_journal_idNum現在のFEノードにあるメタデータログの最大ID。Master FEでは現在書き込まれている最大ID、Master以外のFEでは現在リプレイ済みのメタデータログの最大IDです複数のFE間でIDに大きな差がないか確認します。差が大きい場合はメタデータ同期に問題がありますP0
doris_fe_max_tablet_compaction_scoreNumすべてのBEノードにおけるCompaction Scoreの最大値現在のクラスタの最大Compaction Scoreを確認し、高すぎないか判断します。値が高いとクエリや書き込みのレイテンシが生じる可能性がありますP0
doris_fe_qpsNum/Sec現在のFEにおける1秒あたりのクエリ数(クエリリクエストのみをカウント)QPSP0
doris_fe_query_errNum失敗したクエリの累積数
doris_fe_query_err_rateNum/Sec1秒あたりの失敗したクエリ数クラスタでクエリエラーが発生していないか確認しますP0
doris_fe_query_latency_msMillisecondsクエリリクエストのレイテンシのパーセンタイル統計。たとえば、{quantile="0.75"}は75パーセンタイルのクエリレイテンシを示します各パーセンタイルのクエリレイテンシを詳しく確認しますP0
doris_fe_query_latency_ms_dbMillisecondsDBごとのクエリリクエストのレイテンシのパーセンタイル統計。たとえば、{quantile="0.75",db="test"}はDB testの75パーセンタイルのクエリレイテンシを示しますDBごとに各パーセンタイルのクエリレイテンシを詳しく確認しますP0
doris_fe_query_olap_tableNum内部テーブル(OlapTable)に対するクエリリクエスト数
doris_fe_query_totalNumすべてのクエリリクエストの累積数
doris_fe_report_queue_sizeNumBEから送られる各種定期レポートタスクを処理するFE側キューの長さMaster FEノードでレポートタスクが滞留している度合いを示します。値が大きいほどFEの処理能力に余裕がありませんP0
doris_fe_request_totalNumMySQLポートを通じて受信したすべての操作リクエスト(クエリとその他のステートメントを含む)
doris_fe_routine_load_error_rowsNumクラスタ内のすべてのRoutine Loadジョブにおけるエラー行の総数
doris_fe_routine_load_receive_bytesBytesクラスタ内のすべてのRoutine Loadジョブが受信したデータの総量
doris_fe_routine_load_rowsNumクラスタ内のすべてのRoutine Loadジョブが受信したデータ行の総数
doris_fe_routine_load_get_meta_latencyMillisecondsクラスタ内のすべてのRoutine Loadジョブにおけるメタデータ取得のレイテンシ
doris_fe_routine_load_get_meta_countNumクラスタ内のすべてのRoutine Loadジョブにおけるメタデータ取得回数
doris_fe_routine_load_get_meta_fail_countNumクラスタ内のすべてのRoutine Loadジョブにおけるメタデータ取得の失敗回数
doris_fe_routine_load_task_execute_timeMillisecondsクラスタ内のすべてのRoutine Loadタスクの実行時間
doris_fe_routine_load_task_execute_countNumクラスタ内のすべてのRoutine Loadタスクの実行回数
doris_fe_routine_load_lagMillisecondsクラスタ内のすべてのRoutine Loadジョブの消費遅延
doris_fe_routine_load_progressMillisecondsクラスタ内のすべてのRoutine Loadジョブの消費進捗
doris_fe_routine_load_abort_task_numNumクラスタ内のすべてのRoutine Loadジョブで失敗したタスク数
doris_fe_rpsNum現在のFEにおける1秒あたりのリクエスト数(クエリとその他のステートメントを含む)QPSと併せて使用し、クラスタが処理したリクエスト量を確認しますP0
doris_fe_scheduled_tablet_numNumMaster FEノードがスケジューリング中のtablet数。修復中のレプリカとバランス調整中のレプリカを含みます現在クラスタ内で移行中のtablet数を示します。ゼロ以外の状態が長く続く場合、クラスタは不安定ですP0
doris_fe_tablet_max_compaction_scoreNum各BEノードが報告したCompaction Score。たとえば、{backend="172.21.0.1:9556"}は"172.21.0.1:9556"のBEが報告した値を示します
doris_fe_tablet_numNum各BEノード上のtabletの総数。たとえば、{backend="172.21.0.1:9556"}は"172.21.0.1:9556"のBEに現在あるtablet数を示しますtabletの分布が均一か、絶対数が妥当かを確認しますP0
doris_fe_tablet_status_countNumMaster FEノードのTablet schedulerがスケジューリングしたtabletの累積数
{type="added"}NumMaster FEノードのTablet schedulerがスケジューリングしたtabletの累積数。"added"はスケジューリングされたtablet数を示します
{type="in_sched"}Num上記と同じメトリクス。繰り返しスケジューリングされたtablet数を示しますこの値が急速に増加する場合、一部のtabletが長期間にわたり異常な状態にあり、スケジューラによって繰り返しスケジューリングされています
{type="not_ready"}Num上記と同じメトリクス。スケジューリングのトリガー条件をまだ満たしていないtablet数を示しますこの値が急速に増加する場合、多数のtabletが異常な状態にあるものの、スケジューリングできていません
{type="total"}Num上記と同じメトリクス。チェック済みのtabletの累積数を示します(スケジューリングされたとは限りません)
{type="unhealthy"}Num上記と同じメトリクス。チェック済みの異常なtabletの累積数を示します
doris_fe_thread_poolNum各種スレッドプールのワーカースレッド数とキュー滞留状況の統計。active_thread_numは現在実行中のタスク数、pool_sizeはプール内の総スレッド数、task_in_queueは現在キューに入っているタスク数を示します
{name="agent-task-pool"}NumMaster FEがBEにAgent Taskを送信するためのスレッドプール
{name="connect-scheduler-check-timer"}NumMySQLのアイドル接続がタイムアウトしたかどうかを確認するスレッドプール
{name="connect-scheduler-pool"}NumMySQL接続リクエストを受け付けるスレッドプール
{name="mysql-nio-pool"}NumNIO MySQL Serverがタスクを処理するためのスレッドプール
{name="export-exporting-job-pool"}Numexporting状態のエクスポートジョブ用スケジューリングスレッドプール
{name="export-pending-job-pool"}Numpending状態のエクスポートジョブ用スケジューリングスレッドプール
{name="heartbeat-mgr-pool"}NumMaster FEが各ノードからのハートビートを処理するためのスレッドプール
{name="loading-load-task-scheduler"}NumMaster FEがBroker Loadジョブでloading状態のタスクをスケジューリングするためのスレッドプール
{name="pending-load-task-scheduler"}NumMaster FEがBroker Loadジョブでpending状態のタスクをスケジューリングするためのスレッドプール
{name="schema-change-pool"}NumMaster FEがスキーマ変更ジョブをスケジューリングするためのスレッドプール
{name="thrift-server-pool"}NumFE側のThriftServerのワーカースレッドプール。fe.confのrpc_portに対応し、BEとの通信に使用します
doris_fe_txn_counterNum各状態のデータロードトランザクションの累積数データロードトランザクションの実行状態を確認しますP0
{type="begin"}Num開始されたトランザクション数
{type="failed"}Num失敗したトランザクション数
{type="reject"}Num拒否されたトランザクション数(たとえば、現在実行中のトランザクション数がしきい値を超えたために新しいトランザクションが拒否された場合)
{type="success"}Num成功したトランザクション数
doris_fe_txn_statusNum現在、各状態にあるデータロードトランザクション数。たとえば、{type="committed"}はcommitted状態のトランザクション数を示します各状態のデータロードトランザクション数を確認し、滞留の有無を判断しますP0
doris_fe_query_instance_numNum特定のユーザーが現在リクエストしているfragment instance数。たとえば、{user="test_u"}はユーザーtest_uが現在リクエストしているinstance数を示します特定のユーザーがクエリリソースを使いすぎていないか確認しますP0
doris_fe_query_instance_beginNum特定のユーザーがリクエストを開始したfragment instance数。たとえば、{user="test_u"}はユーザーtest_uがリクエストを開始したinstance数を示します特定のユーザーがクエリを大量に送信していないか確認しますP0
doris_fe_query_rpc_totalNum特定のBEに送信されたRPC数。たとえば、{be="192.168.10.1"}はIPアドレス192.168.10.1のBEに送信されたRPC数を示します特定のBEにRPCが大量に送信されていないか確認します
doris_fe_query_rpc_failedNum特定のBEに送信され、失敗したRPC数。たとえば、{be="192.168.10.1"}はIPアドレス192.168.10.1のBEへのRPC失敗数を示します特定のBEでRPCの問題が発生していないか確認します
doris_fe_query_rpc_sizeNum特定のBE向けRPCのデータサイズ。たとえば、{be="192.168.10.1"}はIPアドレス192.168.10.1のBEに送信されたRPCデータのバイト数を示します特定のBEにサイズが大きすぎるRPCが送信されていないか確認します
doris_fe_txn_exec_latency_msMillisecondsトランザクション実行時間のパーセンタイル統計。たとえば、{quantile="0.75"}は75パーセンタイルのトランザクション実行時間を示します各パーセンタイルのトランザクション実行時間を詳しく確認しますP0
doris_fe_txn_publish_latency_msMillisecondsトランザクションpublish時間のパーセンタイル統計。たとえば、{quantile="0.75"}は75パーセンタイルのトランザクションpublish時間を示します各パーセンタイルのトランザクションpublish時間を詳しく確認しますP0
doris_fe_txn_numNum特定のDBで現在実行中のトランザクション数。たとえば、{db="test"}はDB testで現在実行中のトランザクション数を示します特定のDBで大量のトランザクションが送信されていないか確認しますP0
doris_fe_publish_txn_numNum特定のDBで現在publish中のトランザクション数。たとえば、{db="test"}はDB testで現在publish中のトランザクション数を示します特定のDBでpublish中のトランザクション数を確認しますP0
doris_fe_txn_replica_numNum特定のDBで現在実行中のトランザクションが開いたレプリカ数。たとえば、{db="test"}はDB testで現在実行中のトランザクションが開いたレプリカ数を示します特定のDBでレプリカを開きすぎて、他のトランザクションの実行に影響を与えていないか確認しますP0
doris_fe_thrift_rpc_totalNumFEのthriftインターフェースの各メソッドが受信したRPCリクエスト数。たとえば、{method="report"}はreportメソッドが受信したRPCリクエスト数を示します特定のthrift rpcメソッドの負荷を確認します
doris_fe_thrift_rpc_latency_msMillisecondsFEのthriftインターフェースの各メソッドにおけるRPCリクエスト処理時間。たとえば、{method="report"}はreportメソッドのRPCリクエスト処理時間を示します特定のthrift rpcメソッドの負荷を確認します
doris_fe_external_schema_cache{catalog="hive"}Num特定のExternal Catalogのスキーマキャッシュ内のエントリ数
doris_fe_hive_meta_cache{catalog="hive"}Num
{type="partition_value"}Num特定のExternal Hive Metastore Catalogのパーティション値キャッシュ内のエントリ数
{type="partition"}Num特定のExternal Hive Metastore Catalogのパーティションキャッシュ内のエントリ数
{type="file"}Num特定のExternal Hive Metastore Catalogのファイルキャッシュ内のエントリ数
doris_fe_virtual_compute_group_switch_total{virtual_compute_group_id, virtual_compute_group_name, src_compute_group_id, src_compute_group_name, dst_compute_group_id, dst_compute_group_name}Num仮想コンピュートグループのアクティブ・スタンバイ切り替えの累積回数。バージョン4.0.8以降でサポートされ、コンピュートとストレージの分離モードでのみ生成されます傾きから仮想コンピュートグループの切り替え頻度が高いか確認できます。頻繁な切り替えは通常、プライマリコンピュートグループが不安定であることを示します

JVM監視​

名前ラベル単位意味説明優先度
jvm_heap_size_bytesBytesJVMメモリの監視。ラベルにはmax、used、committedがあり、それぞれ最大メモリ、使用中のメモリ、コミット済みメモリに対応しますJVMのメモリ使用量を確認しますP0
jvm_non_heap_size_bytesBytesJVMのヒープ外メモリの統計
<GarbageCollector>GCの監視GarbageCollectorは特定のガベージコレクタを指しますP0
{type="count"}NumGCの累積回数
{type="time"}MillisecondsGCの累積時間
jvm_old_size_bytesBytesJVMのOld世代メモリの統計P0
jvm_threadNumJVMのスレッド数の統計JVMのスレッド数が妥当か確認しますP0
jvm_young_size_bytesBytesJVMのYoung世代メモリの統計P0

マシン監視​

名前ラベル単位意味説明優先度
system_meminfoBytesFEノードのマシンのメモリ監視。/proc/meminfoから収集します。buffers、cached、memory_available、memory_free、memory_totalを含みます
system_snmpFEノードのマシンのネットワーク監視。/proc/net/snmpから収集します
{name="tcp_in_errs"}Numtcpパケットの受信エラー数
{name="tcp_in_segs"}Num受信したtcpパケット数
{name="tcp_out_segs"}Num送信したtcpパケット数
{name="tcp_retrans_segs"}Numtcpパケットの再送数

BE監視メトリクス​

プロセス監視​

名前ラベル単位意味説明優先度
doris_be_active_scan_context_countNum外部システムによって直接開かれているscannerの現在数を示します
doris_be_add_batch_task_queue_sizeNumデータロード中にバッチを受信するスレッドプールのキューサイズを記録します0より大きい場合、データロードタスクの受信側で滞留が発生していますP0
agent_task_queue_sizeNum各Agent Task処理キューの長さを示します。たとえば、{type="CREATE_TABLE"}はCREATE_TABLEタスクのキュー長を示します
doris_be_brpc_endpoint_stub_countNumBE間の通信に使用する、作成済みのbrpc stub数
doris_be_brpc_function_endpoint_stub_countNumRemote RPCとの通信に使用する、作成済みのbrpc stub数
doris_be_cache_capacity特定のLRU Cacheの容量を記録します
doris_be_cache_usage特定のLRU Cacheの使用量を記録しますメモリ使用量を確認しますP0
doris_be_cache_usage_ratio特定のLRU Cacheの使用率を記録します
doris_be_cache_lookup_count特定のLRU Cacheの検索回数を記録します
doris_be_cache_hit_count特定のLRU Cacheのヒット数を記録します
doris_be_cache_hit_ratio特定のLRU Cacheのヒット率を記録しますキャッシュが有効に機能しているか確認しますP0
{name="DataPageCache"}NumDataPageCacheはデータのData Pageをキャッシュしますデータキャッシュであり、クエリ効率に直接影響しますP0
{name="IndexPageCache"}NumIndexPageCacheはデータのIndex Pageをキャッシュしますインデックスキャッシュであり、クエリ効率に直接影響しますP0
{name="LastSuccessChannelCache"}NumLastSuccessChannelCacheはデータロードの受信側にあるLoadChannelをキャッシュします
{name="SegmentCache"}NumSegmentCacheはインデックス情報など、開かれたSegmentをキャッシュします
doris_be_chunk_pool_local_core_alloc_countNumChunkAllocatorで、バインドされたコアのメモリキューからメモリが割り当てられた回数
doris_be_chunk_pool_other_core_alloc_countNumChunkAllocatorで、他のコアのメモリキューからメモリが割り当てられた回数
doris_be_chunk_pool_reserved_bytesBytesChunkAllocatorで予約されているメモリのサイズ
doris_be_chunk_pool_system_alloc_cost_nsNanosecondsSystemAllocatorによるメモリ割り当てに費やされた累積時間傾きからメモリ割り当ての所要時間を確認しますP0
doris_be_chunk_pool_system_alloc_countNumSystemAllocatorがメモリを割り当てた回数
doris_be_chunk_pool_system_free_cost_nsNanosecondsSystemAllocatorによるメモリ解放に費やされた累積時間傾きからメモリ解放の所要時間を確認しますP0
doris_be_chunk_pool_system_free_countNumSystemAllocatorがメモリを解放した回数
doris_be_compaction_bytes_totalBytesCompactionで処理されたデータの累積量Compactionタスクへの入力rowsetのディスクサイズを記録します。傾きからCompaction速度を確認しますP0
{type="base"}BytesBase Compactionの累積データ量
{type="cumulative"}BytesCumulative Compactionの累積データ量
doris_be_compaction_deltas_totalNumCompactionで処理されたrowsetの累積数Compactionタスクへの入力rowset数を記録します
{type="base"}NumBase Compactionで処理されたrowsetの累積数
{type="cumulative"}NumCumulative Compactionで処理されたrowsetの累積数
doris_be_disks_compaction_numNum特定のデータディレクトリで現在実行中のCompactionタスク数。たとえば、{path="/path1/"}は/path1ディレクトリで現在実行中のタスク数を示します各ディスクのCompactionタスク数が妥当か確認しますP0
doris_be_disks_compaction_scoreNum特定のデータディレクトリで現在実行中のCompaction token数。たとえば、{path="/path1/"}は/path1ディレクトリで現在実行中のtoken数を示します
doris_be_compaction_used_permitsNumCompactionタスクがすでに使用しているtoken数Compactionのリソース消費を示します
doris_be_compaction_waitting_permitsNumCompaction tokenを待っている項目数
doris_be_data_stream_receiver_countNum受信側のデータReceiver数FIXME: このメトリクスはベクトル化エンジンにはありません
doris_be_disks_avail_capacityBytes特定のデータディレクトリがあるディスクの空き容量。たとえば、{path="/path1/"}は/path1ディレクトリがあるディスクの空き容量を示しますP0
doris_be_disks_local_used_capacityBytes特定のデータディレクトリがあるディスクで、ローカルで使用中の容量
doris_be_disks_remote_used_capacityBytes特定のデータディレクトリがあるディスクに対応するリモートディレクトリの使用容量
doris_be_disks_stateBoolean特定のデータディレクトリのディスク状態。1は正常、0は異常を示します
doris_be_disks_total_capacityBytes特定のデータディレクトリがあるディスクの総容量doris_be_disks_avail_capacityと併せて使用し、ディスク使用率を計算しますP0
doris_be_engine_requests_totalNumBE上の各種タスクの実行状態ごとの累積数
{status="failed",type="xxx"}Numタイプxxxのタスクの累積失敗回数
{status="total",type="xxx"}Numタイプxxxのタスクの累積実行回数必要に応じて、各種タスクの失敗回数を監視しますP0
{status="skip",type="report_all_tablets"}Numタイプxxxのタスクがスキップされた累積回数
doris_be_fragment_endpoint_countNumdoris_be_data_stream_receiver_countと同じFIXME: doris_be_data_stream_receiver_countと同じ数です。これもベクトル化エンジンにはありません
doris_be_fragment_request_duration_usMicrosecondsすべてのfragment instanceの累積実行時間傾きからinstanceの実行時間を確認しますP0
doris_be_fragment_requests_totalNum実行されたfragment instanceの累積数
doris_be_load_channel_countNum現在開いているload channel数値が大きいほど、現在実行中のデータロードタスクが多いことを示しますP0
doris_be_local_bytes_read_totalBytesLocalFileReaderが読み取ったバイト数P0
doris_be_local_bytes_written_totalBytesLocalFileWriterが書き込んだバイト数P0
doris_be_local_file_reader_totalNum開かれたLocalFileReaderインスタンスの累積数
doris_be_local_file_open_readingNum現在開いているLocalFileReaderインスタンス数
doris_be_local_file_writer_totalNum開かれたLocalFileWriterインスタンスの累積数
doris_be_mem_consumptionBytes特定のモジュールの現在のメモリ消費量。たとえば、{type="compaction"}はCompactionモジュールの現在の総メモリ消費量を示します同じタイプのMemTrackerから取得した値です。FIXME
doris_be_memory_allocated_bytesBytesBEプロセスの物理メモリサイズ。/proc/self/status/VmRSSから取得しますP0
doris_be_memory_jemallocBytesJemallocの統計。je_mallctlから取得します意味については https://jemalloc.net/jemalloc.3.html を参照してくださいP0
doris_be_memory_pool_bytes_totalBytesすべてのMemPoolが現在占有しているメモリサイズ。実際のメモリ使用量を表すものではない統計値です
doris_be_memtable_flush_duration_usMicrosecondsmemtableのディスクへの書き込みに費やされた累積時間傾きから書き込みレイテンシを確認しますP0
doris_be_memtable_flush_totalNumディスクに書き込まれたmemtableの累積数傾きからファイルの書き込み頻度を計算しますP0
doris_be_meta_request_durationMicrosecondsRocksDB内のmetaへのアクセスに費やされた累積時間傾きからBEメタデータの読み書きのレイテンシを確認しますP0
{type="read"}Microseconds読み取り時間
{type="write"}Microseconds書き込み時間
doris_be_meta_request_totalNumRocksDB内のmetaへの累積アクセス回数傾きからBEメタデータへのアクセス頻度を確認しますP0
{type="read"}Num読み取り回数
{type="write"}Num書き込み回数
doris_be_fragment_instance_countNum現在受信しているfragment instance数instanceが滞留していないか確認しますP0
doris_be_process_fd_num_limit_hardNumBEプロセスのファイルハンドル数のハードリミット。/proc/pid/limitsから収集します
doris_be_process_fd_num_limit_softNumBEプロセスのファイルハンドル数のソフトリミット。/proc/pid/limitsから収集します
doris_be_process_fd_num_usedNumBEプロセスが使用中のファイルハンドル数。/proc/self/fdのエントリを数えて収集します
doris_be_process_thread_numNumBEプロセスのスレッド数。/proc/pid/taskから収集しますP0
doris_be_query_cache_memory_total_byteBytesQuery Cacheが占有しているバイト数
doris_be_query_cache_partition_total_countNumPartition Cacheの現在のエントリ数
doris_be_query_cache_sql_total_countNumSQL Cacheの現在のエントリ数
doris_be_query_scan_bytesBytes読み取ったデータの累積量。Olapテーブルから読み取ったデータのみを数えます
doris_be_query_scan_bytes_per_secondBytes/Secdoris_be_query_scan_bytesから計算した読み取り速度クエリ速度を確認しますP0
doris_be_query_scan_rowsNum読み取った行の累積数。Olapテーブルから読み取ったデータのみを数えます。これはRawRowsReadであり、インデックスによってスキップされて実際には読み取られなかったデータ行も、この値には含まれる場合があります傾きからクエリ速度を確認しますP0
doris_be_result_block_queue_countNum現在クエリ結果キャッシュにあるfragment instance数このキューは、外部システムが直接読み取る場合にのみ使用されます。たとえば、Spark on Dorisはexternal scanを介してデータをクエリします
doris_be_result_buffer_block_countNum現在クエリ結果キャッシュにあるクエリ数現在のBEにあるクエリ結果のうち、FEによる消費を待っているものの数を示しますP0
doris_be_routine_load_task_countNum現在実行中のRoutine Loadタスク数
doris_be_rowset_count_generated_and_in_useNum前回の起動以降に新たに追加され、使用中のrowset ID数
doris_be_s3_bytes_read_totalNumS3FileReaderが開かれた累積回数
doris_be_s3_file_open_readingNum現在開いているS3FileReaderインスタンス数
doris_be_s3_bytes_read_totalBytesS3FileReaderが読み取った累積バイト数
doris_be_scanner_thread_pool_queue_sizeNumOlapScanner用スレッドプールの現在のキューサイズゼロより大きい値は、Scannerの滞留が始まっていることを示しますP0
doris_be_segment_read{type="segment_read_total"}Num読み取ったsegmentの累積数
doris_be_segment_read{type="segment_row_total"}Numsegment全体で読み取った行の累積数インデックスで除外された行も含みます。読み取ったsegment数に各segmentの総行数を掛けた値に相当します
doris_be_send_batch_thread_pool_queue_sizeNumデータロード中にデータパケットを送信するスレッドプールのキューサイズ0より大きい値は滞留を示しますP0
doris_be_send_batch_thread_pool_thread_numNumデータロード中にデータパケットを送信するスレッドプールのスレッド数
doris_be_small_file_cache_countNum現在BEにキャッシュされている小さなファイルの数
doris_be_streaming_load_current_processingNum現在実行中のStream Loadタスク数curlコマンド経由で送信されたタスクのみを含みます
doris_be_streaming_load_duration_msMillisecondsすべてのStream Loadタスクの累積実行時間
doris_be_streaming_load_requests_totalNumStream Loadタスクの累積数傾きからタスクの送信頻度を確認しますP0
doris_be_stream_load_pipe_countNum現在のStream Loadデータパイプ数Stream LoadとRoutine Loadの両方のタスクを含みます
doris_be_stream_load{type="load_rows"}NumStream Loadによって最終的にロードされた行の累積数Stream LoadとRoutine Loadの両方のタスクを含みますP0
doris_be_stream_load{type="receive_bytes"}BytesStream Loadが受信した累積バイト数HTTP経由でStream Loadが受信したデータと、Routine LoadがKafkaから読み取ったデータを含みますP0
doris_be_tablet_base_max_compaction_scoreNum現在のBase Compaction Scoreの最大値この値はリアルタイムで変化するため、ピーク値を見逃すことがあります。値が高いほどCompactionの滞留が深刻ですP0
doris_be_tablet_cumulative_max_compaction_scoreNumすべてのCumulative Compaction戦略における現在のCompaction Scoreの最大値戦略全体の最大値として保持されます
doris_be_tablet_version_num_distributionNumtabletのバージョン数のヒストグラムtabletのバージョン数の分布を示しますP0
doris_be_thrift_connections_totalNum作成されたthrift接続の累積数。たとえば、{name="heartbeat"}はheartbeatサービスへの接続の累積数を示しますBEがサーバー側として動作するthrift serverの値です
doris_be_thrift_current_connectionsNum現在のthrift接続数。たとえば、{name="heartbeat"}はheartbeatサービスへの現在の接続数を示します上記と同じです
doris_be_thrift_opened_clientsNum現在開いているthrift client数。たとえば、{name="frontend"}はFEサービスにアクセスするclient数を示します
doris_be_thrift_used_clientsNum現在使用中のthrift client数。たとえば、{name="frontend"}はFEサービスへのアクセスに現在使用されているclient数を示します
doris_be_timeout_canceled_fragment_countNumタイムアウトによってキャンセルされたfragment instanceの累積数この値は複数回記録される場合があります。たとえば、同じfragment instanceが複数回キャンセルされることがありますP0
doris_be_stream_load_txn_request{type="begin"}Num開始されたStream Loadトランザクションの累積数Stream LoadとRoutine Loadの両方のタスクを含みます
doris_be_stream_load_txn_request{type="commit"}Num正常にコミットされたStream Loadトランザクションの累積数上記と同じです
doris_be_stream_load_txn_request{type="rollback"}Num失敗したStream Loadトランザクションの累積数上記と同じです
doris_be_unused_rowsets_countNum現在使用されなくなっているrowset数通常、これらのrowsetは定期的に削除されます
doris_be_upload_fail_countNum階層型ストレージ機能でrowsetのリモートストレージへのアップロードに失敗した累積回数
doris_be_upload_rowset_countNum階層型ストレージ機能でrowsetのリモートストレージへのアップロードに成功した累積回数
doris_be_upload_total_byteBytes階層型ストレージ機能でリモートストレージへのアップロードに成功したrowsetの累積データ量
doris_be_load_bytesBytestablet sink経由で送信された累積バイト数データロード量を確認しますP0
doris_be_load_rowsNumtablet sink経由で送信された累積行数データロード量を確認しますP0
fragment_thread_pool_queue_sizeNumクエリ実行スレッドプールの待機キューの現在の長さゼロより大きい場合、クエリスレッドが使い尽くされ、クエリが滞留していますP0
doris_be_all_rowsets_numNum現在のすべてのrowsetの総数P0
doris_be_all_segments_numNum現在のすべてのsegmentの総数P0
doris_be_heavy_work_max_threadsNumbrpcのheavyスレッドプールのスレッド数P0
doris_be_light_work_max_threadsNumbrpcのlightスレッドプールのスレッド数P0
doris_be_heavy_work_pool_queue_sizeNumbrpcのheavyスレッドプールのキュー長の上限。超えると作業の投入がブロックされますP0
doris_be_light_work_pool_queue_sizeNumbrpcのlightスレッドプールのキュー長の上限。超えると作業の投入がブロックされますP0
doris_be_heavy_work_active_threadsNumbrpcのheavyスレッドプール内のアクティブなスレッド数P0
doris_be_light_work_active_threadsNumbrpcのlightスレッドプール内のアクティブなスレッド数P0
routine_load_get_msg_latencyMillisecondsRoutine LoadがKafkaメッセージを取得する際のレイテンシ
routine_load_get_msg_countNumRoutine LoadがKafkaメッセージを取得した回数
routine_load_consume_bytesBytesRoutine LoadがKafkaから消費したデータ量
routine_load_consume_rowsNumRoutine LoadがKafkaから消費した行数
doris_be_tablet_size_based_max_compaction_scoreNumSize-based戦略の現在のCumulative Compaction Scoreの最大値Gauge。4.1.5で追加され、統合モードとコンピュートとストレージの分離モードに対応します
doris_be_tablet_time_series_max_compaction_scoreNumTime-series戦略の現在のCumulative Compaction Scoreの最大値Gauge。4.1.5で追加され、統合モードとコンピュートとストレージの分離モードに対応します
doris_be_hdfs_file_open_readingNum実際に開いているHDFSファイルハンドルの現在数Gauge。バージョン4.1.5以降は、readerオブジェクトではなく共有ファイルハンドルを数えます
doris_be_hdfs_file_reader_totalNumHDFSファイルハンドルを正常に開いた累積回数Counter。バージョン4.1.5以降は、ファイルを開かないreaderは値を増やさず、キャッシュされたハンドルを再利用しても再度カウントしません

戦略ごとの2つのCompaction Scoreはいずれも最大値です。合算したり、Counterのレートを適用したりしないでください。全体のチェックが完了した後、対象となるtabletがない戦略の値はゼロにリセットされる場合があります。統合モードでディスク容量の制限により一部のディレクトリのチェックがスキップされた場合、それを理由に以前観測した値が引き下げられることはありません。

マシン監視​

名前ラベル単位意味説明優先度
doris_be_cpuNumCPU関連の監視メトリクス。/proc/statから収集します。値は論理コアごとに収集されます。たとえば、{device="cpu0",mode="nice"}はcpu0のnice値を示しますこれを使ってCPU使用率を計算できますP0
doris_be_disk_bytes_readBytesディスクから読み取った累積データ量。/proc/diskstatsから収集します。値はディスクごとに収集されます。たとえば、{device="vdd"}はvddディスクの値を示します
doris_be_disk_bytes_writtenBytesディスクに書き込んだ累積データ量。上記と同じ方法で収集します
doris_be_disk_io_time_msMilliseconds上記と同じ方法で収集しますこれを使ってIO Utilを計算できますP0
doris_be_disk_io_time_weightedMilliseconds上記と同じ方法で収集します
doris_be_disk_reads_completedNum上記と同じ方法で収集します
doris_be_disk_read_time_msMilliseconds上記と同じ方法で収集します
doris_be_disk_writes_completedNum上記と同じ方法で収集します
doris_be_disk_write_time_msMilliseconds上記と同じ方法で収集します
doris_be_fd_num_limitNumシステムのファイルハンドル数の上限。/proc/sys/fs/file-nrから収集します
doris_be_fd_num_usedNumシステムが使用中のファイルハンドル数。/proc/sys/fs/file-nrから収集します
doris_be_file_created_totalNumローカルファイルの作成累積数local_file_writerを呼び出し、最終的にクローズされたすべてのファイルを数えます
doris_be_load_averageNumマシンのLoad Avgを監視するメトリクス。たとえば、{mode="15_minutes"}は15分間のLoad Avgを示しますマシン全体の負荷を確認しますP0
doris_be_max_disk_io_util_percentPercentageすべてのディスクについて計算されたIO UTILの最大値P0
doris_be_max_network_receive_bytes_rateBytes/Secすべてのネットワークインターフェースについて計算された最大受信速度P0
doris_be_max_network_send_bytes_rateBytes/Secすべてのネットワークインターフェースについて計算された最大送信速度P0
doris_be_memory_pgpginBytesシステムがディスクからメモリページに書き込んだデータ量
doris_be_memory_pgpgoutBytesシステムがメモリページからディスクに書き込んだデータ量
doris_be_memory_pswpinBytesシステムがディスクからメモリにスワップインしたデータ量通常はswapを無効にするため、この値は0であるべきです
doris_be_memory_pswpoutBytesシステムがメモリからディスクにスワップアウトしたデータ量通常はswapを無効にするため、この値は0であるべきです
doris_be_network_receive_bytesBytes各ネットワークインターフェースの累積受信バイト数。/proc/net/devから収集します
doris_be_network_receive_packetsNum各ネットワークインターフェースの累積受信パケット数。/proc/net/devから収集します
doris_be_network_send_bytesBytes各ネットワークインターフェースの累積送信バイト数。/proc/net/devから収集します
doris_be_network_send_packetsNum各ネットワークインターフェースの累積送信パケット数。/proc/net/devから収集します
doris_be_proc{mode="ctxt_switch"}NumCPUコンテキストスイッチの累積回数。/proc/statから収集します異常なコンテキストスイッチが発生していないか確認しますP0
doris_be_proc{mode="interrupt"}NumCPU割り込みの累積回数。/proc/statから収集します
doris_be_proc{mode="procs_blocked"}Numシステム内で現在ブロックされているプロセス数(たとえばIO待ち)。/proc/statから収集します
doris_be_proc{mode="procs_running"}Numシステム内で現在実行中のプロセス数。/proc/statから収集します
doris_be_snmp_tcp_in_errsNumtcpパケットの受信エラー数。/proc/net/snmpから収集します再送やパケット損失などのネットワークエラーを確認します。他のsnmpメトリクスと併せて使用しますP0
doris_be_snmp_tcp_in_segsNum受信したtcpパケット数。/proc/net/snmpから収集します
doris_be_snmp_tcp_out_segsNum送信したtcpパケット数。/proc/net/snmpから収集します
doris_be_snmp_tcp_retrans_segsNumtcpパケットの再送数。/proc/net/snmpから収集します

bvar診断メトリクス​

以下のメトリクスはバージョン4.1.5以降でサポートされ、前述のbrpcポートを使用します。Counterはプロセス起動時から累積し、Gaugeは現在値を示します。

名前またはプレフィックスプロセス型意味
sync_tablets_meta_numコンピュートとストレージの分離モードのBECounterバックグラウンドでtabletメタデータの同期を試みた累積回数。呼び出し前にカウントされるため、成功した呼び出し数を表すものではありません
sync_tablets_rowsets_numコンピュートとストレージの分離モードのBECounterバックグラウンドでtabletのrowsetの同期を試みた累積回数。呼び出し前にカウントされるため、成功した呼び出し数を表すものではありません
vertical_compaction_active_segment_contextsBEGaugevertical Compactionが保持する、現在アクティブなSegment context数
hdfs_get_path_infoBEレイテンシ統計、マイクロ秒HDFSファイルのメタデータアクセスを診断するためのhdfsGetPathInfoレイテンシメトリクスのプレフィックス
ms_repair_tablet_indexMeta ServiceCounterトランザクションのコミット時に、不足していたdb_idを追加するために修復された過去のTablet Indexレコードの累積数。コミットが成功した後にのみカウントされます
file_cache_ttl_mgr_ttl_info_map_size(キャッシュパスのプレフィックス付き)BEGaugeキャッシュブロック数ではなく、メモリ内で追跡されているtablet TTL情報エントリの現在数

キャッシュパスのプレフィックスと退避に関するメトリクスについては、File Cacheの監視を参照してください。vertical Compactionの終了時には、BEのINFOログフィールドvertical_compaction_active_segment_contexts_peakに、そのタスクのcontext数のピーク値が記録されます。これはログフィールドであり、別のプロセスレベルのGaugeではありません。

FAQ​

Q: 監視エンドポイントが404を返します。どうすればよいですか?​

FEのhttp_portまたはBEのwebserver_portにアクセスしていることを確認し、fe.conf / be.confで実際のポート番号を確認してください。

Q: Counterメトリクスは増えるだけで減りません。正常ですか?​

正常です。Counterは累積値を表します。瞬間的なレートを得るには、一定間隔でサンプリングして傾きを計算する必要があります(たとえばPromQLのrate()を使用します)。

Q: 複数のFE間でdoris_fe_max_journal_idの差が大きすぎます。どうすればよいですか?​

メタデータの同期遅延を示しています。Master FEに対するFollower / Observer FEのネットワーク接続とリプレイ速度を確認してください。

Q: Compaction Scoreが高いままです。どう調査すればよいですか?​

doris_be_tablet_base_max_compaction_scoreとdoris_be_tablet_cumulative_max_compaction_scoreを重点的に確認し、ディスクIOとCompactionタスク数を併せてボトルネックを特定してください。

Q: クエリやデータロードが滞留しています。どう調査すればよいですか?​

fragment_thread_pool_queue_size、doris_be_scanner_thread_pool_queue_size、doris_be_send_batch_thread_pool_queue_sizeなど、スレッドプールのキュー滞留メトリクスを確認してください。