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.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
というデプロイ可能なアーカイブにパッケージ化し、サーバーにデプロイします。
サーバーの作成と起動の詳細については、Create Server Instance Using Command Lineおよび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
のメトリクス タイプはゲージであるため、デプロイされた関数を実行したり、メトリクス サービスをクエリしたりするたびにその値が増減します。
参考
prodserver.metrics.setGauge
(MATLAB Compiler SDK) | prodserver.metrics.incrementCounter
(MATLAB Compiler SDK)