REST を介した InterSystems IRIS の監視
すべての InterSystems IRIS® Data Platform インスタンスには、そのインスタンスの統計情報を提供する REST インタフェースが含まれています。この REST API を使用することで、InterSystems IRIS が実行されている複数のマシンから情報を収集し、アプリケーションを構成するすべてのインスタンスを詳細に監視できます。この API は OpenMetrics 標準Opens in a new tabに準拠しています。
このトピックでは、/api/monitor サービスで提供されるメトリックについて説明します。これらのメトリックは、オープンソースの監視およびアラート・ツールである Prometheus と互換性があります。接続された複数の InterSystems IRIS インスタンスをスクレイプするように Prometheus を構成することで、システム全体をまとめたビューを提供し、システムが正しく効率的に動作しているかどうかを容易に評価できます。OpenTelemetry と互換性のある監視ツールを使用している場合は、このサービスで提供されるメトリックを OTLP/HTTP 信号として送信するように InterSystems IRIS を構成することもできます。
/api/monitor サービスの概要
/api/monitor サービスは、このサービスが実行されている InterSystems IRIS インスタンスに関する情報を提供します。既定では、/api/monitor Web アプリケーションは “認証なし” アクセスで使用できます。このサービスの認証の設定については、"REST サービスの保護" を参照してください。
この API には、以下のエンドポイントがあります。
-
/api/monitor/metrics は、すべてのインスタンスのメトリックを返します。また、特定のアプリケーションのメトリックを返すように構成できます。
-
/api/monitor/alerts は、エンドポイントが最後にスクレイプされた後に送信されたすべてのシステム・アラートを返します。
-
/api/monitor/interop は、実行されているインタフェースの数、送信された相互運用性メッセージの数、指定した期間中に送信された相互運用性メッセージのデータベース・サイズへの全体的な影響など、さまざまな相互運用性の使用状況メトリックを返します。
InterSystems IRIS は、install-dir/mgr ディレクトリにある SystemMonitor.log ファイルにエラーを記録します。
/api/monitor/metrics
/api/monitor/metrics エンドポイントは、"メトリックの説明" で説明されているメトリックのリストを返します。"相互運用メトリック" で説明されているように、アクティブな相互運用プロダクションに関するその他のメトリックのコレクションを有効にすることもできます。"アプリケーションのメトリックの作成" には、カスタム・メトリックを定義するための手順が記載されています。
InterSystems IRIS のインスタンスをスクレイプするように Prometheus を構成するには、"First Steps With Prometheus" (https://prometheus.io/docs/introduction/first_steps/Opens in a new tab) の手順に従います。
メトリックの説明
メトリックはテキストベース形式で返されます。これについては、Prometheus のドキュメント (https://prometheus.io/docs/instrumenting/exposition_formats/Opens in a new tab) で説明されています。各メトリックは 1 行に記述し、名前と値は 1 つのスペースで区切ります。一意の各メトリックの前に # HELP および # TYPE コメント行が付けられます (https://prometheus.io/docs/instrumenting/exposition_formats/#comments-help-text-and-type-informationOpens in a new tab で説明されています)。該当する場合、InterSystems IRIS には # UNIT コメント行も含められます。このコメントは、メトリックに使用される単位を指定します。これらのコメント行も提供するには、カスタム・アプリケーション・メトリックを構成します。
以下のテーブルに、InterSystems IRIS メトリックとセンサ・グループを示します。センサ・グループの使用の詳細は、ExcludeMetricsOpens in a new tab プロパティに関する説明を参照してください。
このテーブルには、ここで説明している InterSystems IRIS のバージョンのメトリックが含まれます。新しいバージョンではメトリックが追加される可能性があるため、このドキュメントがお使いの InterSystems IRIS のバージョンと一致することを確認してください。
メトリック名 | 説明 | センサ・グループ |
---|---|---|
iris_cached_query_by_ns
{id="namespace"} |
各ネームスペース内のクエリ・キャッシュの合計数 | パフォーマンス |
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 ("インターシステムズのプロセスおよびオペレーティング・システム・リソースの保護" 参照。) |
CPU |
iris_cpu_usage | オペレーティング・システム上のすべてのプログラムの CPU 使用率 | CPU |
iris_csp_activity
{id="IPaddress:port"} |
Web ゲートウェイ・サーバが起動してからそのサーバによって処理された Web 要求の数 | CSPGateway |
iris_csp_actual_connections
{id="IPAddress:port"} |
Web ゲートウェイ・サーバからこのサーバへの現在の接続の数 | CSPGateway |
iris_csp_gateway_latency
{id="IPaddress:port"} |
iris_csp_ メトリックのフェッチ時に、Web ゲートウェイ・サーバから応答を取得するのに要する時間 (ミリ秒単位) | CSPGateway |
iris_csp_in_use_connections
{id="IPaddress:port"} |
Web 要求を処理している Web ゲートウェイ・サーバからこのサーバへの現在の接続の数 | CSPGateway |
iris_csp_private_connections
{id="IPaddress:port"} |
ステート認識アプリケーションのために予約されている (保持モード 1) Web ゲートウェイ・サーバからこのサーバへの現在の接続の数 | CSPGateway |
iris_csp_sessions | このサーバで現在アクティブな Web セッション ID の数 | CSPGateway |
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 の数 ("Seize、ASeize、および NSeize に関する注意事項" を参照) | パフォーマンス |
iris_glo_n_seize_per_sec | グローバル・リソース上の 1 秒あたりの Nseize の数 ("Seize、ASeize、および NSeize に関する注意事項" を参照) | パフォーマンス |
iris_glo_ref_per_sec | ローカル・データベースにあるグローバルへの 1 秒あたりの参照の数 | パフォーマンス |
iris_glo_ref_rem_per_sec | リモート・データベースにあるグローバルへの 1 秒あたりの参照の数 | パフォーマンス |
iris_glo_seize_per_sec | グローバル・リソース上の 1 秒あたりの Seize の数 ("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 単位)。JournalType は WIJ、primary、または secondary です。 | ジャーナル |
iris_jrn_size
{id="JournalType"} |
各ジャーナル・ファイルの現在のサイズ (MB 単位)。JournalType は WIJ、primary、または secondary です。 | ジャーナル |
iris_license_available | 現在未使用のライセンスの数 | ライセンス |
iris_license_consumed | 現在使用中のライセンスの数 | ライセンス |
iris_license_days_remaining | InterSystems IRIS ライセンスの期限が切れるまでの日数。小数第 1 位まで指定できます。 | ライセンス |
iris_license_percent_used | 現在使用中のライセンスの割合 | ライセンス |
iris_log_reads_per_sec | 1 秒あたりの論理読み取り数 | パフォーマンス |
iris_obj_a_seize_per_sec | オブジェクト・リソース上の 1 秒あたりの Aseize の数 ("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 の数 ("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 の数 ("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_count_by_ns
{id="namespace"} |
各ネームスペース内のルーチンの合計数 | パフォーマンス |
iris_rtn_load_per_sec | ローカルでディスクからロードされた、またはディスクに保存された 1 秒あたりのルーチンの数 | パフォーマンス |
iris_rtn_load_rem_per_sec | リモートでディスクからロードされた、またはディスクに保存された 1 秒あたりのルーチンの数 | パフォーマンス |
iris_rtn_seize_per_sec | ルーチン・リソース上の 1 秒あたりの Seize の数 ("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 のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) | SharedMemory |
iris_smh_percent_full
{id="purpose"} |
purpose 別の使用中の割り当て済み共有メモリの割合 (purpose, の ID のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) | SharedMemory |
iris_smh_total | 現在のインスタンスに割り当てられた共有メモリ (KB 単位) | SharedMemory |
iris_smh_total_percent_full | 現在のインスタンスで使用中の割り当て済み共有メモリの割合 | SharedMemory |
iris_smh_used
{id="purpose"} |
purpose 別の使用中の共有メモリ (KB 単位) (purpose, の ID のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) | SharedMemory |
iris_sql_active_queries
{id="namespace"} |
現在実行中の SQL 文の数 | Sql |
iris_sql_active_queries_95_percentile
{id="namespace"} |
アクティブな SQL 文の現在のセットについて、文の実行開始から 95 パーセンタイルの経過時間 | Sql |
iris_sql_active_queries_99_percentile
{id="namespace"} |
アクティブな SQL 文の現在のセットについて、文の実行開始から 99 パーセンタイルの経過時間 | Sql |
iris_sql_commands_per_second
{id="namespace"} |
SQL クエリを実行するために実行された ObjectScript コマンドの秒あたりの平均数 | Sql |
iris_sql_queries_avg_runtime
{id="namespace"} |
SQL 文の平均実行時間 (秒単位) | Sql |
iris_sql_queries_avg_runtime_std_dev
{id="namespace"} |
SQL 文の平均実行時間の標準偏差 | Sql |
iris_sql_queries_per_second
{id="namespace"} |
1 秒あたりの SQL 文の平均数 | 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 | 最近のサイクル中にライト・デーモンが書き込み、前のサイクルでも書き込まれたデータベース・バッファの数 | WriteDemon |
iris_wd_buffer_write | 最近のサイクル中にライト・デーモンが書き込んだデータベース・バッファの数 | WriteDemon |
iris_wd_cycle_time | 最近のライト・デーモン・サイクルが完了するのに要した時間 (ミリ秒単位) | WriteDemon |
iris_wd_proc_in_global | 最近のライト・デーモン・サイクルの開始時に、グローバル・バッファをアクティブに保持しているプロセスの数 | WriteDemon |
iris_wd_size_write | 最近のサイクル中にライト・デーモンが書き込んだデータベース・バッファのサイズ (KB 単位) | WriteDemon |
iris_wd_sleep | 最近のサイクルが始まるまで、ライト・デーモンが非アクティブであった時間 (ミリ秒単位) | WriteDemon |
iris_wd_temp_queue | 最近のサイクルの開始時点でライト・デーモンによって使用済みのメモリ内バッファの数 | WriteDemon |
iris_wd_temp_write | 最近のサイクル中にライト・デーモンが書き込んだメモリ内バッファの数 | WriteDemon |
iris_wdwij_time | 最近のサイクル中に WIJ ファイルへの書き込みにライト・デーモンが要した時間 (ミリ秒単位) | WriteDemon |
iris_wd_write_time | 最近のサイクル中にデータベースへのバッファの書き込みにライト・デーモンが要した時間 (ミリ秒単位) | WriteDemon |
iris_wij_writes_per_sec | 1 秒あたりの WIJ 物理ブロック書き込み数 | パフォーマンス |
iris_wqm_active_worker_jobs
{id="category"} |
ブロックされていないロジックを実行中のワーカ・ジョブの平均数 | Wqm |
iris_wqm_commands_per_sec
{id="category"} |
この作業キュー管理カテゴリで 1 秒あたりに実行された平均コマンド数 | Wqm |
iris_wqm_globals_per_sec
{id="category"} |
この作業キュー管理カテゴリでの 1 秒あたりの平均グローバル参照実行数 | Wqm |
iris_wqm_max_active_worker_jobs
{id="category"} |
最後のログ・エントリが記録されてからの最大アクティブ・ワーカ数 | Wqm |
iris_wqm_max_work_queue_depth
{id="category"} |
最後のログ以降のこの作業キュー管理カテゴリのキュー内の最大エントリ数 | Wqm |
iris_wqm_waiting_worker_jobs
{id="category"} |
グループが接続および作業を待機している、アイドル状態のワーカ・ジョブの平均数 | Wqm |
相互運用メトリック
このセクションで説明する /metrics エンドポイントでは、処理されたメッセージ数、処理された平均文字数などの詳細情報を提供する、非常にきめ細かな相互運用プロダクション・データが収集されます。プロダクション・インタフェースの状態を幅広く調べる場合は、相互運用性の使用状況メトリックのための REST API を利用できます。
前のセクションで説明したメトリックの他にも、InterSystems IRIS インスタンスでは、アクティブな相互運用プロダクションに関するメトリックを記録し、それを /metrics エンドポイントの出力に含めることもできます。このような相互運用メトリックの記録は、既定で無効になっています。これを有効にするには、監視する相互運用プロダクションごとに以下の手順を実行する必要があります。
-
監視するプロダクションを実行している InterSystems IRIS インスタンスのターミナル・セッションを開きます。必要に応じて、以下のコマンドを実行して、プロダクションに関連付けられているネームスペースに切り替えます。
set $namespace = "[interopNS]"
[interopNS] はネームスペース名です。
-
ターミナルで以下のコマンドを実行して、現在のネームスペース内のアクティブなプロダクションに対してメトリックのコレクションを有効にします。
do ##class(Ens.Util.Statistics).EnableSAMForNamespace()
Note:ネームスペースに対してメトリックの記録は有効になっているが、対応するプロダクションがアクティブでない場合、/metrics エンドポイントはいずれのメトリックも返しません。
Ens.Util.Statistics クラスには、/metrics エンドポイントの出力をカスタイマイズするためのメソッドが用意されています。例えば、DisableSAMIncludeHostLabel メソッドを呼び出すと、集約メトリックがホストごとに別々に提供されるのではなく、プロダクション全体の集約メトリックが提供されます。
この手順の完了後に使用できるメトリックについては、以下のテーブル "基本的な相互運用メトリック" と "メッセージ保存メトリック" を参照してください。
-
プロダクションの追加のメトリックを収集する場合は、ターミナルを使用して、対応するネームスペースで、クラス・メソッド Ens.Util.Statistics.EnableStatsForProduction を呼び出すことでアクティビティ・モニタリングを有効にします。また、プロダクションに、Ens.Activity.Operation.Local ビジネス・オペレーションを追加することも必要です。このプロセスの詳細は、"アクティビティ・モニタリングの有効化" を参照してください。
この手順の完了後に使用できる追加メトリックについては、以下のテーブル "アクティビティ量メトリック" を参照してください。
-
(プロダクションで使用される) EnsLib.HTTP.OutboundAdapter または EnsLib.SOAP.OutboundAdapter の追加の HTTP 転送メトリックを収集する場合は、以下の手順を実行して、対応するビジネス・オペレーションの HTTP メトリックのレポートを有効にします。
-
監視する Web クライアントを含む InterSystems IRIS インスタンスの管理ポータルを開きます。
-
[相互運用性] を選択して、Web クライアントを含むネームスペースを選択します。
-
[構成]→[プロダクション] を選択して、[プロダクション構成] ページを開きます。
-
HTTP または SOAP 送信アダプタを使用するオペレーションを選択します。
-
[プロダクション設定]→[設定] パネルの [アラートの制御] セクションで、[SAMにメトリックを提供] チェック・ボックスにチェックを付けます。
-
[適用] を選択して、設定を保存します。
この手順の完了後に使用できる追加メトリックについては、以下のテーブル "HTTP メトリック" を参照してください。
Note:現在、HTTP 転送メトリックは、([プロセス内] スタイルではなく) [キュー] スタイルを使用してアクターを呼び出すビジネス・オペレーションについてのみ収集されます。これらの呼び出しスタイルの相違についての詳細は、"ビジネス・オペレーション・クラスの定義" を参照してください。
-
以下のテーブルに、InterSystems IRIS 相互運用メトリックを示します。ここでは、読みやすくするために、ラベルがあるメトリック名には改行を入れています。
これらのテーブルには、ここで説明している InterSystems IRIS のバージョンのメトリックが含まれます。新しいバージョンではメトリックが追加される可能性があるため、このドキュメントがお使いの InterSystems IRIS のバージョンと一致することを確認してください。
メトリック名 | 説明 |
---|---|
iris_interop_alert_delay
{id="namespace",host="host",production="production"} |
production および namespace 内で、キュー待機警告をトリガしたホストの数。出力が、ホスト・ラベルを含めるよう構成されている場合、キュー待機警告をトリガしたホストが個別に提供され、値は 1 になります。 |
iris_interop_hosts
{id="namespace",status="status",host="host",production="production"} |
production および namespace 内で、現在、指定された status になっているホストの数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストのステータスが個別に提供され、値は 1 になります。status は、OK、Error (エラー)、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 内で現在キューに入っているメッセージの数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで現在キューに入っているメッセージの数が個別に提供されます。 |
以下のテーブルに示すメッセージ保存メトリックは、プロダクション・データが適切に削除されているかどうかを判断するのに役立ちます。これらのメトリックは、Ens.SAM.GeneralMetricsOpens in a new tab クラスの Collect() メソッドによって集計されます。これは、直接呼び出すか、"相互運用性メッセージ保存メトリックの収集" タスクである Ens.Util.Tasks.MonitorMetricsOpens in a new tab によって実行をスケジュールできます。
DayBoundariesForCounts プロパティを使用すると、メッセージ・ヘッダ・カウント計算を締め切るさまざまな日数境界を指定できます。このプロパティの値は、最も古い日と 0 を除いたメッセージ・ヘッダ・カウントを示す日数のコンマ区切りリストです。既定値は "56, 28, 14, 7, 1" です。
API を直接呼び出すには、以下を実行します。
do ##class(Ens.SAM.GeneralMetrics).Collect(<boundaries>)
boundaries パラメータはオプションで、DayBoundariesForCounts の値を指定します。
メトリック名 | 説明 |
---|---|
iris_interop_oldest_message_header_days{id="namespace",production="production"} |
現在 namespace および production 内に保存されている最も古いメッセージ・ヘッダの経過時間 (日数)。 |
iris_interop_oldest_message_header_count{id="namespace",production="production"} |
現在 namespace および production 内に保存されている、iris_interop_oldest_message_header_days で指定された経過時間のメッセージ・ヘッダの数。 |
iris_interop_header_count_older_than{id="namespace",days="n",production="production"} |
現在 namespace および production 内に保存されている、n 日以上経過したメッセージ・ヘッダの数。InterSystems IRIS は、n が 1、7、14、28、56 の場合にこのメトリックを提供します。 |
iris_interop_namespace_storage_mb{id="namespace",production="production"} |
namespace および production のみが使用するデータベース内の占有ストレージ領域の合計量 (メガバイト単位)。 |
iris_interop_session_count{id="namespace",production="production"} |
namespace および production に記録された一意のセッション数。 |
iris_interop_session_storage_kb{id="namespace",production="production"} |
namespace および production でデータベース内でセッション当たりに使用されたストレージ領域の平均量 (キロバイト単位)。 |
InterSystems IRIS では、このセクションの冒頭で説明した追加の有効化手順を実行する場合のみ、アクティビティ量メトリックと HTTP メトリック (以下の 2 つのテーブルで説明します) が提供されます。
メトリック名 | 説明 |
---|---|
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 を指定しないと、"-" が返されます。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで処理されるメッセージの数が個別に提供されます。 |
メトリック名 | 説明 |
---|---|
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 転送の数の秒あたりの平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで送信された秒あたりの転送数が個別に提供されます。 |
相互運用性の使用状況メトリックのための REST API
ここでは、/interop/current および /interop/historical エンドポイント、および結果のフィルタリングに使用できるパラメータについて説明します。
毎週スケジュールされているタスク Purge Interoperability Usage Metrics は、日次メトリック・データを月次集計にまとめます。/current エンドポイントを呼び出すと、応答データには日次データが含まれ、/historical エンドポイントを呼び出すと、応答データには月次集計データが含まれます。
ここで説明する各相互運用性使用状況メトリック・エンドポイントでは、結果をフィルタリングする日付範囲を指定できます。日付が指定されていない場合は、以下のようになります。
-
/current エンドポイントの結果には、相互運用メトリックからまだ削除されていないすべての関連データが含まれます。
-
/historical エンドポイントの結果には、月次集計に統合されたすべての関連データが含まれます。
これらの API の日付と時刻はすべて UTC です。
相互運用性の使用状況メトリックには、以下の REST API を使用できます。
/interop/[current|historical]/interfaces エンドポイントを呼び出すと、指定された期間内に実行された一意のインタフェースの数が返されます。
/interop/[current|historical]/interfaces エンドポイントによって返されるメトリックは、インタフェース・タイプごとに列挙されます。インタフェース・タイプは以下のとおりです。
-
受信インタフェース — 受信ビジネス・サービス。
-
送信インタフェース — 送信ビジネス・オペレーション。
-
Web API — 手動で作成された CSP アプリケーション。これらは、プロダクションではなく、管理ポータルの Web アプリケーション・ページで定義されます。Web API インタフェースは REST および SOAP サービスにフィードできます。または、プロダクション外のカスタム・コードの呼び出しに使用することもできます。
受信および送信プロダクション・インタフェースについては、"プロダクションの正式な概要" を参照してください。
end | /Current/interfaces と共に使用します。結果が返される日付範囲の終了を示す UTC の日付または日時。ODBC 形式 (YYYY-MM-DD[HH:MM:SS]) で指定されます。時刻が指定されていない場合、HH:MM:SS は 23:59:59 と見なされます。 |
endmonth | /historical/interfaces と共に使用します。結果が返される日付範囲の最終月。形式は YYYY-MM です。 |
namespace | 結果が返されるネームスペース。指定しない場合、結果にはすべてのネームスペースが含まれます。 |
start | /Current/interfaces と共に使用します。結果が返される日付範囲の開始を示す UTC の日付または日時。ODBC 形式 (YYYY-MM-DD[HH:MM:SS]) で指定されます。時刻が指定されていない場合、HH:MM:SS は 00:00:00 と見なされます。 |
startmonth | /historical/interfaces と共に使用します。結果が返される日付範囲の最初の月。形式は YYYY-MM です。 |
/interfaces は、指定された期間の結果を集計する、非推奨エンドポイント /interfaces/year、/interfaces/month、/interfaces/day の要求にも応答します。ただし、これらのエンドポイントの使用はお勧めしません。
/interop/[current|historical]/databaseimpact エンドポイントを呼び出すと、指定された期間における、相互運用メトリック・データが格納されているデータベースのサイズの変更 (MB 単位) が返されます。これは、その期間中に受信したメッセージの合計サイズとほぼ同じです。
Database Impact メトリックは、プロダクション・データが削除されるたびに収集されます。
database | サイズのデルタが返される特定のデータベース。指定しない場合、すべてのデータベースのデータが返されます。 |
end | /current/databaseimpact と共に使用します。結果が返される日付範囲の終了を示す UTC の日付または日時。ODBC 形式 (YYYY-MM-DD[HH:MM:SS]) で指定されます。時刻が指定されていない場合、HH:MM:SS は 23:59:59 と見なされます。 |
endmonth | /historical/databaseimpact と共に使用します。結果が返される日付範囲の最終月。 |
start | /current/databaseimpact と共に使用します。結果が返される日付範囲の開始を示す UTC の日付または日時。ODBC 形式 (YY-MM-DD[HH:MM:SS]) で指定されます。時刻が指定されていない場合、HH:MM:SS は 00:00:00 と見なされます。 |
startmonth | /historical/databaseimpact と共に使用します。結果が返される日付範囲の最初の月。 |
/interop/[current|historical]/volume エンドポイントを呼び出すと、指定した期間内の受信および送信相互運用性メッセージの数が、ネームスペース別に列挙されて返されます。
endDate | /current/volume と共に使用します。結果が返される日付範囲の終了を示す UTC の日付。ODBC 形式 (YYYY-MM-DD) で指定されます。 |
endmonth | /historical/volume と共に使用します。結果が返される日付範囲の最終月。 |
namespace | 結果が返されるネームスペース。指定しない場合、結果にはすべてのネームスペースが含まれます。 |
startDate | /current/volume と共に使用します。結果が返される日付範囲の開始を示す UTC の日付。ODBC 形式 (YYYY-MM-DD) で指定されます。 |
startmonth | /historical/volume と共に使用します。結果が返される日付範囲の最初の月。 |
毎週スケジュールされているタスク Purge Interoperability Usage Metrics は、日次メトリック・データを月次集計にまとめ、1 か月以上前の日次データを削除します。
/interop/[current|historical]/range エンドポイントを呼び出すと、日次相互運用性使用状況メトリック・データの最も古いものと最も新しいものの日付が返されます。メトリック・データが存在しない場合、応答は空です。これは、他のエンドポイントの呼び出し時にパラメータとして入力すべき日付の決定に役立つ、ユーティリティ API です。
このエンドポイントはパラメータを取りません。
アプリケーションのメトリックの作成
/metrics エンドポイントによって返されたメトリックにカスタム・アプリケーションのメトリックを追加するには、以下の手順に従います。
-
%SYS.Monitor.SAM.AbstractOpens in a new tab を継承する新規クラスを作成します。
-
PRODUCT パラメータをアプリケーションの名前として定義します。InterSystems IRIS メトリックに予約されている iris 以外の任意の値を指定できます。
-
GetSensors()Opens in a new tab メソッドを実装して、必要なカスタム・メトリックを次のように定義します。
-
このメソッドには、SetSensor()Opens in a new tab メソッドへの 1 つ以上の呼び出しが含まれている必要があります。このメソッドは、アプリケーション・メトリックの名前と値を設定します。Prometheus との互換性を確保するために、値は整数または浮動小数点数にする必要があります。
オプションでメトリックのラベルを定義できますが、定義する場合は常に、その特定のメトリックのラベルを定義する必要があります。
Note:メトリックおよびラベル名の選択のベスト・プラクティスについては、Prometheus のドキュメントの "Metric and Label Naming" を参照してください (https://prometheus.io/docs/practices/naming/Opens in a new tab)。
-
SetSensorLabels() メソッドを呼び出すことで、このメソッドにはオプションでメトリックのラベルを含めることができます。ただし、メトリックのラベルを定義する場合は、そのメトリックを設定するたびにそのラベルを含める必要があります。
-
このメトリックは、SetSensorInfo() メソッドを呼び出すことで、オプションでメトリックの HELP、TYPE、および UNIT 情報を定義できます。/metrics エンドポイントの出力には、この情報がコメントとして含められます。詳細は、Prometheus のドキュメント (https://prometheus.io/docs/instrumenting/exposition_formats/#comments-help-text-and-type-informationOpens in a new tab) を参照してください。
-
成功すると、このメソッドは $$$OK を返します。
Important:GetSensors() の実装が低速であると、システム・パフォーマンスに悪影響を及ぼす可能性があります。GetSensors() の実装が効率的であることをテストして、タイムアウトや停止が発生する可能性のある実装は避けてください。
-
-
クラスをコンパイルします。以下に例を示します。
/// 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 } }
-
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
Note:InterSystems IRIS システムをアップグレードする場合は、この手順をやり直す必要があります。
-
/api/monitor Web アプリケーションに、カスタム・メトリックにアクセスするために必要なアプリケーション・ロールがあることを確認します。アプリケーション・ロールの編集方法の詳細は、"アプリケーションの編集 : [アプリケーションロール] タブ" を参照してください。
この手順では、カスタム・メトリックに必要なデータへの /api/monitor アクセスを許可します。例えば、カスタム・メトリック・クラスが USER データベース (%DB_USER リソースによって保護されている) にある場合、/api/monitor に %DB_USER ロールを付与します。
-
ブラウザで URL http://<baseURL>/api/monitor/metrics を指定して、/metrics エンドポイントの出力を確認します。<baseURL> はシステムのベース URL です。以下のように、InterSystems IRIS メトリックの後に、定義したメトリックが表示されます。
[...] myapp_my_counter{id="my_label") 1 myapp_my_gauge 92
/metrics エンドポイントは、定義したカスタム・メトリックを返すようになります。InterSystems IRIS メトリックには接頭語 iris_ が含まれるのに対し、カスタム・メトリックでは PRODUCT の値が接頭語として使用されます。
/api/monitor/alerts
/api/monitor/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."}
/api/monitor/alerts を呼び出すと、前回 /api/monitor/alerts が呼び出されてからこれまでに生成されたアラートを返します。iris_system_alerts_new メトリックは、新規アラートが生成されているかどうかを示すブーリアンです。
アラートが生成されるタイミングと方法の詳細は、"ログ・モニタの使用" を参照してください。