Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

REST API を使用した InterSystems IRIS の監視

すべての InterSystems IRIS® Data Platform インスタンスには、そのインスタンスの統計情報を提供する REST インタフェースが含まれています。この REST API を使用することで、InterSystems IRIS が実行されている複数のマシンから情報を収集し、アプリケーションを構成するすべてのインスタンスを詳細に監視できます。

この付録では、/api/monitor サービスが提供するメトリックについて説明します。これらのメトリックは、オープンソースの監視およびアラート・ツールである Prometheus と互換性があります。接続された複数の InterSystems IRIS インスタンスをスクレイプするように Prometheus を構成することで、システム全体をまとめたビューを提供し、システムが正しく効率的に動作しているかどうかを容易に評価できます。

Note:

REST インタフェースの作成および使用の概要は、"REST サービスの作成の概要" を参照してください。ご自分ですぐに作成してみる場合は、"Developing Rest InterfacesOpens in a new tab" を参照してください。

/api/monitor サービス

/api/monitor サービスは、このサービスが実行されている InterSystems IRIS インスタンスに関する情報を提供します。既定では、/api/monitor Web アプリケーションは “認証なし” アクセスで使用できます。このサービスの認証の設定については、"REST サービスの作成" の "REST サービスの保護Opens in a new tab" の章を参照してください。

この API には、以下の 2 つのエンドポイントがあります。

  • /metrics エンドポイントは、すべてのインスタンスのメトリックを返します。また、特定のアプリケーションのメトリックを返すように構成できます。

  • /alerts エンドポイントは、エンドポイントが最後にスクレイプされた後に送信されたすべてのシステム・アラートを返します。

Note:

InterSystems IRIS は、install-dir/mgr ディレクトリにある SystemMonitor.log ファイルにエラーを記録します。

/metrics エンドポイント

/metrics エンドポイントは、"メトリックの説明" で説明されているメトリックのリストを返します。"相互運用メトリック" で説明されているように、アクティブな相互運用プロダクションに関するその他のメトリックのコレクションを有効にすることもできます。"アプリケーションのメトリックの作成" には、カスタム・メトリックを定義するための手順が記載されています。

InterSystems IRIS のインスタンスをスクレイプするように Prometheus を構成するには、"First Steps With Prometheus" (https://prometheus.io/docs/introduction/first_steps/Opens in a new tab) の手順に従います。

メトリックの説明

メトリックはテキストベース形式で返されます。これについては、Prometheus のドキュメントの "Exposition Formats" ページ (https://prometheus.io/docs/instrumenting/exposition_formats/Opens in a new tab) で説明されています。各メトリックは 1 行に記述し、名前と値は 1 つのスペースで区切ります。

以下のテーブルに、InterSystems IRIS メトリックを表示します。ここでは、読みやすくするために、ラベルがあるメトリック名には改行を入れています。

Note:

このテーブルには、ここで説明している InterSystems IRIS のバージョンのメトリックが含まれます。新しいバージョンではメトリックが追加される可能性があるため、このドキュメントがお使いの InterSystems IRIS のバージョンと一致することを確認してください。

メトリック名 説明
iris_cpu_pct

{id="ProcessType"}

InterSystems IRIS プロセス・タイプ別の CPU 使用率。ProcessType は、以下のいずれかにできます。

ECPWorker、ECPCliR、ECPCliW、ECPSrvR、ECPSrvW、LICENSESRV、WDAUX、WRTDMN、JRNDMN、GARCOL、CSPDMN、CSPSRV、ODBCSRC、MirrorMaster、MirrorPri、MirrorBack、MirrorPre、MirrorSvrR、MirrorJrnR、MirrorSK、MirrorComm(InterSystems IRIS プロセスの詳細は、"インターシステムズのプロセスおよびオペレーティング・システム・リソースの保護" を参照してください。)

iris_cpu_usage オペレーティング・システム上のすべてのプログラムの CPU 使用率
iris_csp_activity

{id="IPaddress:port"}

Web ゲートウェイ・サーバが起動してからそのサーバによって処理された Web 要求の数
iris_csp_actual_connections

{id="IPAddress:port"}

Web ゲートウェイ・サーバからこのサーバへの現在の接続の数
iris_csp_gateway_latency

{id="IPaddress:port"}

iris_csp_ メトリックのフェッチ時に、Web ゲートウェイ・サーバから応答を取得するのに要する時間 (ミリ秒単位)
iris_csp_in_use_connections

{id="IPaddress:port"}

Web 要求を処理している Web ゲートウェイ・サーバからこのサーバへの現在の接続の数
iris_csp_private_connections

{id="IPaddress:port"}

ステート認識アプリケーションのために予約されている (保持モード 1) Web ゲートウェイ・サーバからこのサーバへの現在の接続の数
iris_csp_sessions このサーバで現在アクティブな Web セッション ID の数
iris_cache_efficiency 物理読み込みと物理書き込みに対するグローバル参照の割合 (パーセント)
iris_db_expansion_size_mb

{id="database"}

database を拡張する量 (MB単位)
iris_db_free_space

{id="database"}

database で使用可能な空き容量 (MB単位) (このメトリックは 1 日 1 回しか更新されないため、最新の変更が反映されていないことがあります。)
iris_db_latency

{id="database"}

database からのランダム読み取りが完了するまでに要した時間 (ミリ秒単位)
iris_db_max_size_mb

{id="database"}

database が拡大可能な最大サイズ (MB単位)
iris_db_size_mb

{id="database",dir="path"}

database のサイズ (MB単位)
iris_directory_space

{id="database",dir="path"}

database ディレクトリのストレージ・ボリュームで利用可能な空き領域 (MB 単位)
iris_disk_percent_full

{id="database",dir="path"}

database ディレクトリのストレージ・ボリュームで埋まっている領域の割合
iris_ecp_conn この ECP アプリケーション・サーバでアクティブなクライアント接続の合計数
iris_ecp_conn_max この ECP アプリケーション・サーバからのアクティブなクライアント接続の最大数
iris_ecp_connections この ECP アプリケーション・サーバと構成されている ECP データ・サーバを同期する際に同期されるサーバの数
iris_ecp_latency ECP アプリケーション・サーバと ECP データ・サーバとの間の遅延 (ミリ秒)
iris_ecps_conn この ECP データ・サーバへの 1 秒あたりのアクティブなクライアント接続の合計数
iris_ecps_conn_max この ECP データ・サーバへのアクティブなクライアント接続の最大数
iris_glo_a_seize_per_sec グローバル・リソース上の 1 秒あたりの Aseize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_glo_n_seize_per_sec グローバル・リソース上の 1 秒あたりの Nseize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_glo_ref_per_sec ローカル・データベースにあるグローバルへの 1 秒あたりの参照の数
iris_glo_ref_rem_per_sec リモート・データベースにあるグローバルへの 1 秒あたりの参照の数
iris_glo_seize_per_sec グローバル・リソース上の 1 秒あたりの Seize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_glo_update_per_sec ローカル・データベースにあるグローバルへの 1 秒あたりの更新 (SET および KILL コマンド) の数
iris_glo_update_rem_per_sec リモート・データベースにあるグローバルへの 1 秒あたりの更新 (SET および KILL コマンド) の数
iris_jrn_block_per_sec ディスクに書き込まれた 1 秒あたりのジャーナル・ブロック
iris_jrn_free_space

{id="JournalType",dir="path"}

各ジャーナル・ディレクトリのストレージ・ボリュームで利用可能な空き領域 (MB 単位)。JournalTypeWIJprimary、または secondary です。
iris_jrn_size

{id="JournalType"}

各ジャーナル・ファイルの現在のサイズ (MB 単位)。JournalTypeWIJprimary、または secondary です。
iris_license_available 現在未使用のライセンスの数
iris_license_consumed 現在使用中のライセンスの数
iris_license_percent_used 現在使用中のライセンスの割合
iris_log_reads_per_sec 1 秒あたりの論理読み取り数
iris_obj_a_seize_per_sec オブジェクト・リソース上の 1 秒あたりの Aseize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_obj_del_per_sec 1 秒あたりに削除されたオブジェクトの数
iris_obj_hit_per_sec プロセス・メモリ内での 1 秒あたりのオブジェクト参照の数
iris_obj_load_per_sec 共有メモリ内にない、1 秒あたりのディスクからロードされたオブジェクトの数
iris_obj_miss_per_sec メモリ内で見つからなかった 1 秒あたりのオブジェクト参照の数
iris_obj_new_per_sec 1 秒あたりに初期化されたオブジェクトの数
iris_obj_seize_per_sec オブジェクト・リソース上の 1 秒あたりの Seize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_page_space_percent_used 使用済みの最大割り当てページ・ファイル領域の割合
iris_phys_mem_percent_used 現在使用中の物理メモリ (RAM) の割合
iris_phys_reads_per_sec 1 秒あたりのディスクからのデータベース物理ブロック読み取り
iris_phys_writes_per_sec 1 秒あたりのディスクへのデータベース物理ブロック書き込み
iris_process_count アクティブな InterSystems IRIS プロセスの合計数
iris_rtn_a_seize_per_sec ルーチン・リソース上の 1 秒あたりの Aseize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_rtn_call_local_per_sec リモート・データベースにあるグローバルへの 1 秒あたりのローカル・ルーチン呼び出しの数
iris_rtn_call_miss_per_sec メモリ内で見つからなかった 1 秒あたりのルーチン呼び出しの数
iris_rtn_call_remote_per_sec 1 秒あたりのリモート・ルーチン呼び出しの数
iris_rtn_load_per_sec ローカルでディスクからロードされた、またはディスクに保存された 1 秒あたりのルーチンの数
iris_rtn_load_rem_per_sec リモートでディスクからロードされた、またはディスクに保存された 1 秒あたりのルーチンの数
iris_rtn_seize_per_sec ルーチン・リソース上の 1 秒あたりの Seize の数 (詳細は、"監視ガイド" の “^mgstat を使用したパフォーマンスの監視” のセクションの "Seize、ASeize、および NSeize に関する注意事項" を参照してください。)
iris_sam_get_db_sensors_seconds iris_db* センサの収集に要した時間 (秒単位)
iris_sam_get_jrn_sensors_seconds iris_jrn* センサの収集に要した時間 (秒単位)
iris_sam_get_sql_sensors_seconds iris_sql* センサの収集に要した時間 (秒単位)
iris_sam_get_wqm_sensors_seconds iris_wqm* センサの収集に要した時間 (秒単位)
iris_smh_available

{id="purpose"}

purpose 別の利用可能共有メモリ (KB 単位) (purpose, の ID のリストを含め、詳細は、"監視ガイド" の “管理ポータルを使用した InterSystems IRIS の監視” のセクションの "一般 (共有) メモリ・ヒープ使用状況" を参照してください。)
iris_smh_percent_full

{id="purpose"}

purpose 別の使用中の割り当て済み共有メモリの割合 (purpose, の ID のリストを含め、詳細は、"監視ガイド" の “管理ポータルを使用した InterSystems IRIS の監視” のセクションの "一般 (共有) メモリ・ヒープ使用状況" を参照してください。)
iris_smh_total 現在のインスタンスに割り当てられた共有メモリ (KB 単位)
iris_smh_total_percent_full 現在のインスタンスで使用中の割り当て済み共有メモリの割合
iris_smh_used

{id="purpose"}

purpose 別の使用中の共有メモリ (KB 単位) (purpose, の ID のリストを含め、詳細は、"監視ガイド" の “管理ポータルを使用した InterSystems IRIS の監視” のセクションの "一般 (共有) メモリ・ヒープ使用状況" を参照してください。)
iris_sql_active_queries

{id="namespace"}

現在実行中の SQL 文の数
iris_sql_active_queries_95_percentile

{id="namespace"}

アクティブな SQL 文の現在のセットについて、文の実行開始から 95 パーセンタイルの経過時間
iris_sql_active_queries_99_percentile

{id="namespace"}

アクティブな SQL 文の現在のセットについて、文の実行開始から 99 パーセンタイルの経過時間
iris_sql_commands_per_second

{id="namespace"}

SQL クエリを実行するために実行された ObjectScript コマンドの秒あたりの平均数
iris_sql_queries_avg_runtime

{id="namespace"}

SQL 文の平均実行時間 (秒単位)
iris_sql_queries_avg_runtime_std_dev

{id="namespace"}

SQL 文の平均実行時間の標準偏差
iris_sql_queries_per_second

{id="namespace"}

1 秒あたりの SQL 文の平均数
iris_system_alerts システム起動後にメッセージ・ログに送信されたアラートの数
iris_system_alerts_log 現在アラート・ログにあるアラートの数
iris_system_alerts_new /api/monitor/alerts エンドポイントで新規アラートを利用できるかどうかを示すブーリアン値
iris_system_state システム・モニタのヘルス状態を示す数値 (詳細は、"監視ガイド" の “システム・モニタの使用” のセクションの "システム・モニタのヘルス状態" を参照してください。)
iris_trans_open_count 現在のインスタンス上の開いているトランザクションの数
iris_trans_open_secs 現在のインスタンス上の開いているトランザクションの平均継続時間 (秒単位)
iris_trans_open_secs_max 現在のインスタンス上の開いているトランザクションの最長継続時間 (秒単位)
iris_wd_buffer_redirty 最近のサイクル中にライト・デーモンが書き込み、前のサイクルでも書き込まれたデータベース・バッファの数
iris_wd_buffer_write 最近のサイクル中にライト・デーモンが書き込んだデータベース・バッファの数
iris_wd_cycle_time 最近のライト・デーモン・サイクルが完了するのに要した時間 (ミリ秒単位)
iris_wd_proc_in_global 最近のライト・デーモン・サイクルの開始時に、グローバル・バッファをアクティブに保持しているプロセスの数
iris_wd_size_write 最近のサイクル中にライト・デーモンが書き込んだデータベース・バッファのサイズ (KB 単位)
iris_wd_sleep 最近のサイクルが始まるまで、ライト・デーモンが非アクティブであった時間 (ミリ秒単位)
iris_wd_temp_queue 最近のサイクルの開始時点でライト・デーモンによって使用済みのメモリ内バッファの数
iris_wd_temp_write 最近のサイクル中にライト・デーモンが書き込んだメモリ内バッファの数
iris_wdwij_time 最近のサイクル中に WIJ ファイルへの書き込みにライト・デーモンが要した時間 (ミリ秒単位)
iris_wd_write_time 最近のサイクル中にデータベースへのバッファの書き込みにライト・デーモンが要した時間 (ミリ秒単位)
iris_wij_writes_per_sec 1 秒あたりの WIJ 物理ブロック書き込み数
iris_wqm_active_worker_jobs

{id="category"}

ブロックされていないロジックを実行中のワーカ・ジョブの平均数
iris_wqm_commands_per_sec

{id="category"}

この作業キュー管理カテゴリで 1 秒あたりに実行された平均コマンド数
iris_wqm_globals_per_sec

{id="category"}

この作業キュー管理カテゴリでの 1 秒あたりの平均グローバル参照実行数
iris_wqm_max_active_worker_jobs

{id="category"}

最後のログ・エントリが記録されてからの最大アクティブ・ワーカ数
iris_wqm_max_work_queue_depth

{id="category"}

最後のログ以降のこの作業キュー管理カテゴリのキュー内の最大エントリ数
iris_wqm_waiting_worker_jobs

{id="category"}

グループが接続および作業を待機している、アイドル状態のワーカ・ジョブの平均数

相互運用メトリック

前のセクションで説明したメトリックの他にも、InterSystems IRIS インスタンスでは、アクティブな相互運用プロダクションOpens in a new tabに関するメトリックを記録し、それを /metrics エンドポイントの出力に含めることもできます。このような相互運用メトリックの記録は、既定で無効になっています。これを有効にするには、監視する相互運用プロダクションごとに以下の手順を実行する必要があります。

  1. 監視するプロダクションを実行している InterSystems IRIS インスタンスのターミナル・セッションを開きます。必要に応じて、以下のコマンドを実行して、プロダクションに関連付けられているネームスペースに切り替えます。

    set $namespace = "[interopNS]"
    

    [interopNS] はネームスペース名です。

  2. ターミナルで以下のコマンドを実行して、現在のネームスペース内のアクティブなプロダクションに対してメトリックのコレクションを有効にします (SAM は、インターシステムズのモニタリング・ソリューションである System Alerting and MonitoringOpens in a new tab を指します)。

    do ##class(Ens.Util.Statistics).EnableSAMForNamespace()
    
    Note:

    ネームスペースに対してメトリックの記録は有効になっているが、対応するプロダクションがアクティブでない場合、/metrics エンドポイントはいずれのメトリックも返しません。

    Ens.Util.Statistics クラスには、/metrics エンドポイントの出力をカスタイマイズするためのメソッドが用意されています。例えば、DisableSAMIncludeHostLabel メソッドを呼び出すと、集約メトリックがホストごとに別々に提供されるのではなく、プロダクション全体の集約メトリックが提供されます。

    この手順の完了後に使用できるメトリックについては、以下のテーブル "基本的な相互運用メトリック" を参照してください。

  3. プロダクションのアクティビティ量に関する追加のメトリックを収集する場合は、ターミナルを使用して、対応するネームスペースで、クラスメソッド Ens.Util.Statistics.EnableStatsForProduction を呼び出すことでアクティビティ・モニタリングを有効にする必要があります。また、プロダクションに、Ens.Activity.Operation.Local ビジネス・オペレーションを追加することも必要です。このプロセスの詳細は、"アクティビティ量の監視" ページの "アクティビティ・モニタリングの有効化" を参照してください。

    この手順の完了後に使用できる追加メトリックについては、以下のテーブル "アクティビティ量メトリック" を参照してください。

  4. EnsLib.HTTP.OutboundAdapter または EnsLib.SOAP.OutboundAdapter を使用する相互運用 Web クライアントについて、追加の HTTP 転送メトリックを収集する場合は、以下の手順を実行して、対応するビジネス・オペレーションの HTTP メトリックのレポートを有効にする必要があります。

    1. 監視する Web クライアントを含む InterSystems IRIS インスタンスの管理ポータルを開きます。

    2. [相互運用性] を選択して、Web クライアントを含むネームスペースを選択します。

    3. [構成][プロダクション] を選択して、[プロダクション構成] ページを開きます。

    4. HTTP または SOAP 送信アダプタを使用するオペレーションを選択します。

    5. [プロダクション設定][設定] パネルの [アラートの制御] セクションで、[SAMにメトリックを提供] チェックボックスにチェックを付けます。

    6. [適用] を選択して、設定を保存します。

    この手順の完了後に使用できる追加メトリックについては、以下のテーブル "HTTP メトリック" を参照してください。

    Note:

    現在、HTTP 転送メトリックは、([プロセス内] スタイルではなく) [キュー] スタイルを使用してアクターを呼び出すビジネス・オペレーションについてのみ収集されます。これらの呼び出しスタイルの相違についての詳細は、"ビジネス・オペレーションの定義" の "ビジネス・オペレーション・クラスの定義" を参照してください。

以下のテーブルに、InterSystems IRIS 相互運用メトリックを示します。ここでは、読みやすくするために、ラベルがあるメトリック名には改行を入れています。

Note:

これらのテーブルには、ここで説明している InterSystems IRIS のバージョンのメトリックが含まれます。新しいバージョンではメトリックが追加される可能性があるため、このドキュメントがお使いの InterSystems IRIS のバージョンと一致することを確認してください。

基本的な相互運用メトリック
メトリック名 説明
iris_interop_alert_delay

{id="namespace",host="host",production="production"}

production および namespace 内で、キュー待機警告Opens in a new tabをトリガしたホストの数。出力が、ホスト・ラベルを含めるよう構成されている場合、キュー待機警告をトリガしたホストが個別に提供され、値は 1 になります。
iris_interop_hosts

{id="namespace",status="status",host="host",production="production"}

production および namespace 内で、現在、指定された status になっているホストの数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストのステータスが個別に提供され、値は 1 になります。status は、OKError (エラー)、Retry (再試行)、Starting (開始中)、Inactive (非アクティブ)、または Unconfigured (未構成) のいずれかです。
iris_interop_messages

{id="namespace",host="host",production="production"}

production の開始以降に処理されたメッセージ数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで処理されたメッセージの数が個別に提供されます。
iris_interop_messages_per_sec

{id="namespace",host="host",production="production"}

直近のサンプリング時間において、production および namespace 内で 1 秒あたりに処理されたメッセージの数の平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで処理されたメッセージの数が個別に提供されます。
iris_interop_queued

{id="namespace",host="host",production="production"}

production および namespace 内で現在キューに入っているメッセージの数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで現在キューに入っているメッセージの数が個別に提供されます。
アクティビティ量メトリック
メトリック名 説明
iris_interop_avg_processing_time

{id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"}

production および namespace 内で、指定された MessageType のメッセージの処理にかかった平均所要時間 (秒単位)。HostType は、service (サービス)、operation (オペレーション)、または actor (アクター、つまりプロセス) のいずれかです。MessageType は、ユーザ定義です。MessageType を指定しないと、"-" が返されます。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストのメッセージ処理時間が個別に提供されます。
iris_interop_avg_queueing_time

{id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"}

production および namespace 内で、HostType のホストにより処理される際に、指定された MessageType のメッセージがキューに入っていた平均時間 (秒単位)。HostType は、service (サービス)、operation (オペレーション)、または actor (アクター、つまりプロセス) のいずれかです。MessageType は、ユーザ定義です。MessageType を指定しないと、"-" が返されます。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストのキュー時間が個別に提供されます。
iris_interop_sample_count

{id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"}

直近のサンプリング時間において、production および namespace 内で、HostType のホストによって処理された、指定された MessageType のメッセージの数。HostType は、service (サービス)、operation (オペレーション)、または actor (アクター、つまりプロセス) のいずれかです。MessageType は、ユーザ定義です。MessageType を指定しないと、"-" が返されます。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで処理されるメッセージの数が個別に提供されます。
iris_interop_sample_count_per_sec

{id="namespace",hosttype="HostType",host="host",production="production",messagetype="MessageType"}

直近のサンプリング時間において、production および namespace 内で、HostType のホストによって 1 秒あたりに処理された、指定された MessageType のメッセージの数の平均。HostType は、service (サービス)、operation (オペレーション)、または actor (アクター、つまりプロセス) のいずれかです。MessageType は、ユーザ定義です。MessageType を指定しないと、"-" が返されます。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで処理されるメッセージの数が個別に提供されます。
HTTP メトリック
メトリック名 説明
iris_interop_avg_http_received_chars

{id="namespace",host="host",production="production"}

直近のサンプリング時間において、production および namespace 内で受信された HTTP または SOAP 応答あたりの文字数の平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで受信された文字数の平均が個別に提供されます。
iris_interop_avg_http_sent_chars

{id="namespace",host="host",production="production"}

直近のサンプリング時間において、production および namespace 内で送信された HTTP または SOAP 要求あたりの文字数の平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで送信された文字数の平均が個別に提供されます。
iris_interop_avg_http_ttfc

{id="namespace",host="host",production="production"}

最初の文字までの時間 (TTFC) : HTTP または SOAP 要求の開始から対応する応答の最初の文字までの平均時間 (秒単位)。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストの TTFC が個別に提供されます。
iris_interop_avg_http_ttlc

{id="namespace",host="host",production="production"}

最後の文字までの時間 (TTLC) : HTTP または SOAP 要求の開始から対応する応答の最後の文字までの平均時間。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストの TTLC が個別に提供されます。
iris_interop_http_sample_count

{id="namespace",host="host",production="production"}

直近のサンプリング時間において、production および namespace 内で送信された HTTP または SOAP 転送の数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで送信された転送数が個別に提供されます。
iris_interop_http_sample_count_per_sec

{id="namespace",host="host",production="production"}

直近のサンプリング間隔において、production および namespace 内で送信された HTTP または SOAP 転送の数の秒あたりの平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで送信された秒あたりの転送数が個別に提供されます。

アプリケーションのメトリックの作成

/metrics エンドポイントによって返されたメトリックにカスタム・アプリケーションのメトリックを追加するには、以下の手順に従います。

  1. %SYS.Monitor.SAM.AbstractOpens in a new tab を継承する新規クラスを作成します。

  2. PRODUCT パラメータをアプリケーションの名前として定義します。InterSystems IRIS メトリックに予約されている iris 以外の任意の値を指定できます。

  3. GetSensors()Opens in a new tab メソッドを実装して、必要なカスタム・メトリックを次のように定義します。

    • このメソッドには、SetSensor()Opens in a new tab メソッドへの 1 つ以上の呼び出しが含まれている必要があります。このメソッドは、アプリケーション・メトリックの名前と値を設定します。Prometheus および InterSystems SAM との互換性を確保するために、値は整数または浮動小数点数にする必要があります。

      オプションでメトリックのラベルを定義できますが、定義する場合は常に、その特定のメトリックのラベルを定義する必要があります。

      Note:

      メトリックおよびラベル名の選択のベスト・プラクティスについては、Prometheus のドキュメントの "Metric and Label Naming" を参照してください (https://prometheus.io/docs/practices/naming/Opens in a new tab)。

    • 成功すると、このメソッドは $$$OK を返します。

    Important:

    GetSensors() の実装が低速であると、システム・パフォーマンスに悪影響を及ぼす可能性があります。GetSensors() の実装が効率的であることをテストして、タイムアウトや停止が発生する可能性のある実装は避けてください。

  4. クラスをコンパイルします。以下に例を示します。

    /// Example of a custom class for the /metric API
    Class MyMetrics.Example Extends %SYS.Monitor.SAM.Abstract
    {
    
    Parameter PRODUCT = "myapp";
    
    /// Collect metrics from the specified sensors
    Method GetSensors() As %Status
    {
       do ..SetSensor("my_counter",$increment(^MyCounter),"my_label")
       do ..SetSensor("my_gauge",$random(100))
       return $$$OK
    }
    
    }
  5. SYS.Monitor.SAM.ConfigOpens in a new tab クラスの AddApplicationClass()Opens in a new tab メソッドを使用して、カスタム・クラスを /metrics 構成に追加します。クラスの名前とそれが配置されているネームスペースを引数として渡します。

    例えば、ターミナルで %SYS ネームスペースから以下のように入力します。

    %SYS>set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("MyMetrics.Example", "USER")
    
    %SYS>w status
    status=1
    
  6. /api/monitor Web アプリケーションに、カスタム・メトリックにアクセスするために必要なアプリケーション・ロールがあることを確認します。アプリケーション・ロールの編集方法の詳細は、"アプリケーションの編集 : [アプリケーションロール] タブ" を参照してください。

    この手順では、カスタム・メトリックに必要なデータへの /api/monitor アクセスを許可します。例えば、カスタム・メトリック・クラスが USER データベース (%DB_USER リソースによって保護されている) にある場合、/api/monitor%DB_USER ロールを付与します。

  7. ブラウザで http://<instance-host>:52773/api/monitor/metrics を指して、/metrics エンドポイントの出力を確認します (52773 は、既定の WebServer ポート)。以下のように、InterSystems IRIS メトリックの後に、定義したメトリックが表示されます。

    [...]
    myapp_my_counter{id="my_label") 1
    myapp_my_gauge 92
    

/metrics エンドポイントは、定義したカスタム・メトリックを返すようになります。InterSystems IRIS メトリックには接頭語 “iris_” が含まれるのに対し、カスタム・メトリックでは PRODUCT の値が接頭語として使用されます。

/alerts エンドポイント

/alerts エンドポイントは、以下のように alerts.log ファイルから最新のアラートを取得して JSON 形式で返します。

{"time":"2019-08-15T10:36:38.313Z","severity":2,\
"message":"Failed to allocate 1150MB shared memory using large pages.  Switching to small pages."}

/alerts を呼び出すと、前回 /alerts が呼び出されてからこれまでに生成されたアラートを返します。iris_system_alerts_new メトリックは、新規アラートが生成されているかどうかを示すブーリアンです。

アラートが生成されるタイミングと方法の詳細は、このドキュメントの "ログ・モニタの使用" の章を参照してください。

FeedbackOpens in a new tab