Main Content

Prometheus のカスタム メトリクスの作成

この例では、MATLAB® Production Server™ のインスタンス上に Prometheus® のカスタム メトリクスを作成し、メトリクス サービスを使用してそれらを取得する方法を説明します。カスタム メトリクスは、デプロイした MATLAB 関数内で関数 prodserver.metrics.setGauge (MATLAB Compiler SDK) および prodserver.metrics.incrementCounter (MATLAB Compiler SDK) を使用して作成します。デプロイした関数の実行後に、Metrics Serviceをクエリしてカスタム メトリクスを取得します。

この例では、コマンド ラインを使用して管理された http://localhost:9910 で実行中のオンプレミス サーバーがあると仮定しています。

MATLAB コードの記述によるカスタム メトリクスの作成

関数 proprodserver.metrics.setGauge および prodserver.metrics.incrementCounter を呼び出す MATLAB 関数を記述して、タイプがそれぞれゲージとカウンターの Prometheus メトリクスを作成します。proprodserver.metrics.setGaugeprodserver.metrics.incrementCounter は出力を返しません。

次の関数 test_metrics が作成しているのはメトリクスの例に過ぎません。実際には、MATLAB プログラマはサーバー管理者と相談しながら、デプロイ アプリケーションに関して、デプロイされる MATLAB コードのインストルメンテーションに役立つメトリクスを作成します。

function rc = test_metrics()
tic
prodserver.metrics.incrementCounter("test_function_execution_count",1)
toc
prodserver.metrics.setGauge("test_timer_seconds",toc)
rc = 0;
end

サーバーへの MATLAB 関数のデプロイ

関数 test_metrics.mtest_metrics というデプロイ可能なアーカイブにパッケージ化し、サーバーにデプロイします。

サーバーの作成と起動の詳細については、コマンド ラインを使用したサーバー インスタンスの作成およびStart Server Instance Using Command Lineを参照してください。

デプロイ可能なアーカイブの作成、およびサーバーへのデプロイの詳細については、MATLAB Production Server 用のデプロイ可能なアーカイブの作成およびMATLAB Production Server へのアーカイブのデプロイを参照してください。

サーバー上でのメトリクスの有効化

サーバーの構成ファイル main_config を編集して、サーバー上でメトリクス サービスを有効にします。main_config で、--enable-metrics プロパティのコメントを解除します。変更を有効にするために、サーバーを再起動します。

デプロイした関数の実行

任意の言語を使用して、デプロイした関数を実行するクライアント アプリケーションを記述します。この例では、Windows® 端末で cURL コマンドを使用して、サーバーにリクエストを送信します。リクエストの作成の詳細については、MATLAB データ型の JSON 表現を参照してください。

次のコマンドは、http://localhost:9910 で実行中のサーバーにデプロイされた関数 test_metrics を実行します。この関数を実行すると、test_function_execution_count メトリクスが 1 ずつインクリメントされ、test_timer_seconds メトリクスが可変の数値に設定されます。

curl -v -H Content-Type:application/json -d '{"nargout":0,"rhs":[]}' http://localhost:9910/test_metrics/test_metrics 

メトリクス サービスへのクエリによるカスタム メトリクスの取得

カスタム メトリクスは、デプロイされた MATLAB 関数をクライアントが呼び出した後に、サーバーに登録されます。メトリクスを取得するには、Web ブラウザーで次の URL にアクセスすることにより、GET Metrics API を使用します。実際には、Prometheus サーバーが HTTP/HTTPS エンドポイントのメトリクスを収集します。

http://localhost:9910/api/metrics
メトリクス サービスの出力には、サーバーのメトリクスに関する情報が含まれます。また、test_function_execution_count および test_timer_seconds の各カスタム メトリクスと、メトリクスを生成するデプロイ可能なアーカイブの名前 test_metrics も含まれます。
# TYPE matlabprodserver_up_time_seconds counter
matlabprodserver_up_time_seconds 16705.3
# TYPE matlabprodserver_queue_time_seconds gauge
matlabprodserver_queue_time_seconds 0
# TYPE matlabprodserver_cpu_time_seconds counter
matlabprodserver_cpu_time_seconds 29.1406
# TYPE matlabprodserver_memory_working_set_bytes gauge
matlabprodserver_memory_working_set_bytes 5.17153e+08
# TYPE matlabprodserver_requests_accepted_total counter
matlabprodserver_requests_accepted_total 7
# TYPE matlabprodserver_requests_in_queue gauge
matlabprodserver_requests_in_queue 0
# TYPE matlabprodserver_requests_processing gauge
matlabprodserver_requests_processing 0
# TYPE matlabprodserver_requests_succeeded_total counter
matlabprodserver_requests_succeeded_total 7
# TYPE matlabprodserver_requests_failed_total counter
matlabprodserver_requests_failed_total 0
# TYPE matlabprodserver_requests_canceled_total counter
matlabprodserver_requests_canceled_total 0
# TYPE test_function_execution_count counter
test_function_execution_count{archive="test_metrics_2"} 1
# TYPE test_timer_seconds gauge
test_timer_seconds{archive="test_metrics_2"} 0.0194095

test_function_execution_count のメトリクス タイプはカウンターであるため、デプロイされた関数を実行したり、メトリクス サービスをクエリしたりするたびにその値が 1 ずつ増加します。test_timer_seconds のメトリクス タイプはゲージであるため、デプロイされた関数を実行したり、メトリクス サービスをクエリしたりするたびにその値が増減します。

参考

(MATLAB Compiler SDK) | (MATLAB Compiler SDK)

関連するトピック

外部の Web サイト