Prometheus のカスタム メトリクスの作成
この例では、MATLAB® Production Server™ のインスタンス上に Prometheus® のカスタム メトリクスを作成し、メトリクス サービスを使用してそれらを取得する方法を説明します。カスタム メトリクスは、デプロイした MATLAB 関数内で関数 prodserver.metrics.setGauge および prodserver.metrics.incrementCounter を使用して作成します。デプロイした関数の実行後に、Metrics Service (MATLAB Production Server)をクエリしてカスタム メトリクスを取得します。
この例では、コマンド ラインを使用して管理された http://localhost:9910 で実行中のオンプレミス サーバーがあると仮定しています。
MATLAB コードの記述によるカスタム メトリクスの作成
関数 proprodserver.metrics.setGauge および prodserver.metrics.incrementCounter を呼び出す MATLAB 関数を記述して、タイプがそれぞれゲージとカウンターの Prometheus メトリクスを作成します。proprodserver.metrics.setGauge と prodserver.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.m を test_metrics というデプロイ可能なアーカイブにパッケージ化し、サーバーにデプロイします。
サーバーの作成と起動の詳細については、コマンド ラインを使用したサーバー インスタンスの作成 (MATLAB Production Server)およびコマンド ラインを使用したサーバー インスタンスの起動 (MATLAB Production Server)を参照してください。
デプロイ可能なアーカイブの作成、およびサーバーへのデプロイの詳細については、MATLAB Production Server 用のデプロイ可能なアーカイブの作成 (MATLAB Production Server)およびMATLAB Production Server へのアーカイブのデプロイ (MATLAB Production Server)を参照してください。
サーバー上でのメトリクスの有効化
サーバーの構成ファイル main_config を編集して、サーバー上でメトリクス サービスを有効にします。main_config で、--enable-metrics プロパティのコメントを解除します。変更を有効にするために、サーバーを再起動します。
デプロイした関数の実行
任意の言語を使用して、デプロイした関数を実行するクライアント アプリケーションを記述します。この例では、Windows® 端末で cURL コマンドを使用して、サーバーにリクエストを送信します。リクエストの作成の詳細については、MATLAB データ型の JSON 表現 (MATLAB Production Server)を参照してください。
次のコマンドは、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 (MATLAB Production Server) 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 のメトリクス タイプはゲージであるため、デプロイされた関数を実行したり、メトリクス サービスをクエリしたりするたびにその値が増減します。
参考
prodserver.metrics.setGauge | prodserver.metrics.incrementCounter
トピック
- MATLAB 関数実行のための RESTful API (MATLAB Production Server)
- Metrics Service (MATLAB Production Server)
- GET Metrics (MATLAB Production Server)