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 を構成することで、システム全体をまとめたビューを提供し、システムが正しく効率的に動作しているかどうかを容易に評価できます。
/api/monitor サービスの概要
/api/monitor サービスは、このサービスが実行されている InterSystems IRIS インスタンスに関する情報を提供します。既定では、/api/monitor Web アプリケーションは “認証なし” アクセスで使用できます。このサービスの認証の設定については、"REST サービスの保護" を参照してください。
この API には、以下の 2 つのエンドポイントがあります。
-
/api/monitor/metrics は、すべてのインスタンスのメトリックを返します。また、特定のアプリケーションのメトリックを返すように構成できます。
-
/api/monitor/alerts は、エンドポイントが最後にスクレイプされた後に送信されたすべてのシステム・アラートを返します。
-
/api/monitor/interop/interfaces は、指定された期間内に実行されているプロダクション・インタフェースの数とタイプを返します。
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 のドキュメントの "Exposition Formats" ページ (https://prometheus.io/docs/instrumenting/exposition_formats/Opens in a new tab) で説明されています。各メトリックは 1 行に記述し、名前と値は 1 つのスペースで区切ります。
以下のテーブルに、InterSystems IRIS メトリックを表示します。ここでは、読みやすくするために、ラベルがあるメトリック名には改行を入れています。
このテーブルには、ここで説明している 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("インターシステムズのプロセスおよびオペレーティング・システム・リソースの保護" 参照。) |
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 の数 ("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_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 のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) |
iris_smh_percent_full
{id="purpose"} |
purpose 別の使用中の割り当て済み共有メモリの割合 (purpose, の ID のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) |
iris_smh_total | 現在のインスタンスに割り当てられた共有メモリ (KB 単位) |
iris_smh_total_percent_full | 現在のインスタンスで使用中の割り当て済み共有メモリの割合 |
iris_smh_used
{id="purpose"} |
purpose 別の使用中の共有メモリ (KB 単位) (purpose, の ID のリストを含め、詳細は、"一般 (共有) メモリ・ヒープ使用状況" を参照してください。) |
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"} |
グループが接続および作業を待機している、アイドル状態のワーカ・ジョブの平均数 |
相互運用メトリック
このセクションで説明する /metrics エンドポイントでは、処理されたメッセージ数、処理された平均文字数などの詳細情報を提供する、非常にきめ細かな相互運用プロダクション・データが収集されます。プロダクション・インタフェースの状態を幅広く調べる場合は、/interop/interfaces エンドポイントを利用できます。
前のセクションで説明したメトリックの他にも、InterSystems IRIS インスタンスでは、アクティブな相互運用プロダクションに関するメトリックを記録し、それを /metrics エンドポイントの出力に含めることもできます。このような相互運用メトリックの記録は、既定で無効になっています。これを有効にするには、監視する相互運用プロダクションごとに以下の手順を実行する必要があります。
-
監視するプロダクションを実行している InterSystems IRIS インスタンスのターミナル・セッションを開きます。必要に応じて、以下のコマンドを実行して、プロダクションに関連付けられているネームスペースに切り替えます。
set $namespace = "[interopNS]"
[interopNS] はネームスペース名です。
-
ターミナルで以下のコマンドを実行して、現在のネームスペース内のアクティブなプロダクションに対してメトリックのコレクションを有効にします (SAM は、インターシステムズのモニタリング・ソリューションである System Alerting and MonitoringOpens in a new tab を指します)。
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 内で現在キューに入っているメッセージの数。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで現在キューに入っているメッセージの数が個別に提供されます。 |
メトリック名 | 説明 |
---|---|
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 転送の数の秒あたりの平均。出力が、ホスト・ラベルを含めるよう構成されている場合、各ホストで送信された秒あたりの転送数が個別に提供されます。 |
/interop/interfaces エンドポイント
ここでは、/interop/interfaces エンドポイント、および結果のフィルタリングに使用できるパラメータについて説明します。このエンドポイントを呼び出すと、指定された期間内に実行された一意のインタフェースの数が返されます。
/interop/interfaces エンドポイントは、以下のように使用できます。
パラメータを指定せずに渡した場合、これまでに実行された一意のインタフェースの数、および現在アクティブな数をインタフェース・タイプ別に列挙して返します。
指定された期間中にアクティブな一意のインタフェースの数を、インタフェース・タイプ別に列挙して返します。
開始日と終了日の形式は (現在のタイムゾーンの) YYYY-MM-DD{THH:MM:SS} です。例えば、2024–02–19T16:30:00 は、ローカル・タイムゾーンの 2024 年 2 月 19 日午後 4:30 です。
いずれかのパラメータで時刻が除外されている場合、開始日の既定時刻は指定された日の最初の秒 (つまり、午前 0 時 00 分) になり、終了日の既定時刻は指定された日の最後の秒になります。
終了日が含まれない場合、期間は指定した開始時刻から現在の日時までです。
N で指定された年 (過去の年の場合は 1 月 1 日から 12 月 31 日まで、現在の年の場合は 1 月 1 日から現在の日付まで) にアクティブな一意のインタフェースの数を、インタフェース・タイプ別に列挙して返します。例えば、N が 2 の場合、指定される年は 2 年前です。N が 0 または指定されていない場合、期間は現在の年の初日から今日までです。つまり、N が 0 で、現在の日付が 2024 年 2 月 19 日の場合、期間は 2024 年 1 月 1 日から 2024 年 2 月 19 日までです。N が 2 で、現在の年が 2024 年の場合、期間は 2022 年 1 月 1 日から 2022 年 12 月 31 日までです。
N で指定された月にアクティブな一意のインタフェースの数を、インタフェース・タイプ別に列挙して返します。例えば、N が 2 の場合、指定される月は 2 か月前です。N が 0 または指定されていない場合、期間は現在の月の初日から今日までです。つまり、N が 0 で、現在の日付が 2 月 19 日の場合、期間は 2 月 1 日から 2 月 19 日までです。N が 2 で、現在の月が 6 月の場合、期間は 3 月 1 日から 3 月 31 日までです。
N で指定された日にアクティブな一意のインタフェースの数を、インタフェース・タイプ別に列挙して返します。例えば、N が 2 の場合、指定される日は 2 日前です。N が 0 または指定されていない場合、期間は今日です。つまり、N が 0 で、現在の時刻が午前 11 時 53 分の場合、期間は今日の午前 0 時 00 分から午前 11 時 53 分までです。N が 2 で、現在の日が 2 月 19 日の場合、期間は 2 月 17 日午前 0 時 00 分から 2 月 17 日午後 11 時 59 分 59 秒までです。
指定されたネームスペースでアクティブな一意のインタフェースの数を、インタフェース・タイプ別に列挙して返します。
インタフェース・タイプは以下のとおりです。
受信ビジネス・サービス。
送信ビジネス・オペレーション。
手動で作成された CSP アプリケーション。これらは、プロダクションではなく、管理ポータルの Web アプリケーション・ページで定義されます。Web API インタフェースは REST および SOAP サービスにフィードできます。または、プロダクション外のカスタム・コードの呼び出しに使用することもできます。
受信および送信プロダクション・インタフェースについては、"プロダクションの正式な概要" を参照してください。
管理ポータルの相互運用性の使用ページでもこれらのメトリックに容易にアクセスできますが、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 および InterSystems SAM との互換性を確保するために、値は整数または浮動小数点数にする必要があります。
オプションでメトリックのラベルを定義できますが、定義する場合は常に、その特定のメトリックのラベルを定義する必要があります。
Note:メトリックおよびラベル名の選択のベスト・プラクティスについては、Prometheus のドキュメントの "Metric and Label Naming" を参照してください (https://prometheus.io/docs/practices/naming/Opens 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 メトリックは、新規アラートが生成されているかどうかを示すブーリアンです。
アラートが生成されるタイミングと方法の詳細は、"ログ・モニタの使用" を参照してください。