リクエストレベルのメトリックは、各関数の呼び出しに関する詳細なインサイトを提供し、関数の実行ステータスをモニターするのに役立ちます。リクエストレベルのメトリックを使用すると、問題を迅速に特定し、アプリケーションのボトルネックを分析し、関数アプリケーションをより適切に管理および最適化できます。
リクエストレベルのメトリックとは
リクエストレベルのメトリックは、リクエストレベルで関数の実行ステータスを要約します。この機能を有効にすると、システムはパフォーマンス、例外、トレースメトリックなど、各関数実行のメトリックを収集します。これらのメトリックは、ログ構成で指定した Logstore に配信されます。
パフォーマンスメトリック: メモリ使用量、関数の実行時間、初期化時間、コールドスタート情報。
例外メトリック: 実行の失敗とエラーの詳細。
トレースメトリック: 主要なシステムリンクの実行時間、統合トレースのサンプリングステータス、および HTTP 関数の詳細 (パス、状態コード、クライアント IP アドレスなど)。
リクエストレベルのメトリックを有効にすると、Function Compute は各リクエストの実行メトリックを Logstore に配信します。次の図に例を示します。

シナリオ
関数の実行詳細、パフォーマンスメトリック、エラーメッセージを表示します。
コンソールには、リクエストレベルのメトリックに基づくリクエストリストが表示されます。このページでは、実行ステータス、インスタンス ID、実行時間、メモリ使用量、リクエストログなど、各リクエストの詳細を表示できます。次の図に例を示します。
説明リクエストレベルのメトリックが無効になっている場合でも、リクエストリストを表示できます。ただし、次のシナリオではリストが不正確になる場合があります。
同じリクエスト ID が複数回表示される場合、特定のリクエストのログを見つけることができません。この問題は、非同期呼び出しのリトライシナリオでよく発生します。
カスタムランタイムおよびカスタムイメージランタイムで、
FC Invoke Start RequestId: xxxとFC Invoke End RequestId: xxxがログに記録されると、1 回の呼び出しがリクエストリストに 2 回表示されることがあります。
カスタム検索を実行し、カスタムダッシュボードを作成します。
リクエストメトリックは、
key:valueフォーマットで Logstore に配信されます。ビジネス要件に合わせてカスタムダッシュボードを作成できます。詳細については、「ダッシュボードの作成」をご参照ください。
注意
範囲
リクエストレベルのメトリックロギングは、関数レベルの構成です。この機能を有効にすると、現在の関数に適用され、各関数の実行ごとにログが記録されます。
料金
ログが Simple Log Service (SLS) に配信されると、ログストレージ料金が発生します。SLS の料金の詳細については、「料金」をご参照ください。
リクエストレベルのメトリックを有効にする
コンソールでリクエストレベルのメトリックを有効にする
前提条件
Function Compute
Simple Log Service (SLS)
手順
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、管理する関数をクリックします。
関数の詳細ページで、[設定] タブをクリックします。
[高度な設定] を見つけて [編集] をクリックします。[高度な設定] パネルで、[ログ] エリアを見つけ、インスタンスレベルのメトリックを有効にして、[デプロイ] をクリックします。
次の表に、主なパラメーターを示します。他のパラメーターにはデフォルト値を使用できます。
パラメーター
説明
例
ロギング
関数の呼び出しログを Simple Log Service (SLS) に保存するかどうかを指定します。ロギング機能の詳細については、「ロギングの設定」をご参照ください。
有効化
プロジェクト
設定済みのプロジェクトを選択します。
aliyun-fc-hangzhou-2238f0df-a742-524f-9f90-976ba*******
Logstore
設定済みの Logstore を選択します。
function-log
ログ分割ルール
ログ分割ルールを有効にするかどうかを指定します。有効にすると、Function Compute はルールに従ってログを複数のセグメントに分割し、Simple Log Service に 1 つずつ書き込みます。
有効化
リクエストレベルのメトリック
リクエストレベルのメトリックを表示するかどうかを指定します。この機能を有効にすると、各関数の呼び出しのメトリックが収集され、ログ構成で選択した Logstore に配信されます。
有効化
インスタンスレベルのメトリック
インスタンスレベルのメトリックを有効にするかどうかを指定します。この機能を有効にすると、関数インスタンスのメトリックデータが、ログ構成で選択した Logstore に配信されます。
有効化
Serverless Devs を使用してリクエストレベルのメトリックを有効にする
前提条件
手順
コードディレクトリを作成します。次の例はディレクトリ構造を示しています。
. ├── code │ └── index.js └── s.yaml次のコードは s.yaml ファイルの例です。
この例では、enableRequestMetrics フィールドを使用してリクエストレベルのメトリックを有効にします。この機能を有効にする前に、ロギングを有効にし、logstore および project フィールドをアカウント内の既存の Logstore およびプロジェクトに設定する必要があります。
edition: 3.0.0 name: hello-world-app access: "default" vars: # グローバル変数 region: "cn-hangzhou" resources: hello_world: component: fc3 # コンポーネント名 props: region: ${vars.region} functionName: "start-nodejs-****" description: 'hello world by serverless devs' runtime: "nodejs16" code: ./code handler: index.handler memorySize: 128 timeout: 30 logConfig: # logstore と project の値を実際の Logstore とプロジェクトに変更します。logConfig を auto に設定して、プロジェクトと Logstore を自動的に作成することもできます。 enableInstanceMetrics: true enableRequestMetrics: true # リクエストレベルのメトリックのスイッチ。この機能を有効にすると、システムは各関数の実行のメトリックを収集します。 logBeginRule: DefaultRegex logstore: 'your-logstore' project: 'your-project'次のコマンドを実行してアプリケーションをデプロイします。
sudo s deploy -yデプロイが成功したら、Function Compute コンソールにログインして、関数でリクエストレベルのメトリックが有効になっていることを確認できます。
ログクエリ
ログフォーマット
リクエストレベルのメトリックログのトピックは、FCRequestMetrics:/functionName のフォーマットに従います。SLS でクエリ文 __topic__: "FCRequestMetrics:/functionName" を使用して、すべてのリクエストレベルのメトリックログをフィルターできます。詳細については、「ログのクエリと分析のクイックスタート」をご参照ください。
メトリックフィールド
リクエストレベルのメトリックには、次のフィールドが含まれます。
メトリック | 説明 | 例 | 各呼び出しで記録されますか? |
functionName | 関数名。 | my-function | はい |
versionId | バージョン名。 | 12 | はい |
qualifier | サービスエイリアス。デフォルト値は LATEST です。 | prod | はい |
requestId | リクエスト ID。 | db72ce53-ccbe-4216-af55-642622e01494 | はい |
operation | 操作名。 | InvokeFunction | はい |
invocationType | 呼び出しタイプ。有効な値: Sync: 同期呼び出し Async: 非同期呼び出し | Sync | はい |
memoryMB | 関数のメモリ制限。 | 512 | はい |
memoryUsageMB | 関数実行によって消費されたメモリ。 | 410 | はい |
durationMs | リクエストの実行時間。 | 20.20 | はい |
isColdStart | リクエストがコールドスタートであるかどうかを示します。 説明 リクエストが Function Compute に到着したときに、リクエストを処理できる実行中の関数インスタンスがない場合、システムはインスタンスを作成し、コードをダウンロードし、実行環境を開始する必要があります。 ライフサイクル内でインスタンスの作成、コードのダウンロード、環境の起動の完全なプロセスを経るリクエストは、コールドスタートリクエストと呼ばれます。 Function Compute プラットフォームには、コールドスタートを軽減するための多くの最適化があります。コールドスタートを回避するために、プラットフォームは事前にインスタンスを作成します。リクエストが到着したとき、インスタンス作成プロセス中に、すでに作成されたインスタンスによって処理される場合があります。このようなリクエストは、コールドスタートリクエストとは見なされません。 | false | はい |
instanceEvent | インスタンスイベント。現在、ColdStart のみがサポートされており、コールドスタートリクエストに対して記録されます。 | ColdStart | いいえ |
hasFunctionError | 関数実行中に関数エラーが発生したかどうかを示します。 | false | はい |
errorType | 関数エラーのタイプ。有効な値:
| FunctionUnhandledError | いいえ。このメトリックは、関数エラーが発生した場合、つまり |
invokeFunctionLatencyMs | 関数の実行時間。 | 99.00 | はい。このメトリックは常に記録されます。 |
traceContext | トレースコンテキスト情報。 | 371d3ff242fcee9:371d3ff242fcee9:0:1 | いいえ。このメトリックは、トレースが設定されている場合にのみ記録されます。 |
isSampled | リクエストが Tracing Analysis によってサンプリングされたかどうかを示します。 | true | いいえ。このメトリックは、トレースが設定されている場合にのみ記録されます。 |
resourceMode | リクエストを処理するインスタンスのタイプ。有効な値:
| OnDemand | はい |
instanceID | インスタンス ID。 | c-65603d8c-37e1bf7123054a77**** | はい |
hostname | インスタンスのホスト。 | c-65603d8c-37e1bf7123054a77**** | はい |
ipAddress | インスタンスの IP アドレス。 注: これはインスタンスの内部 IP アドレスであり、異なるインスタンスを区別するために使用されます。インスタンスのパブリック IP アドレスではありません。 | 21.0.XX.XX | はい |
activeInstances | アクティブなインスタンスの数。 | 1 | はい |
activeInstancesPerFunction | 現在の関数のアクティブなインスタンスの数。 | 1 | はい |
scheduleLatencyMs | スケジューリングのレイテンシ。スケジューリングのレイテンシは、コールドスタートリクエストでは比較的長くなります。 | 10.07 | はい |
coldStartStartTimestamp | コールドスタートが開始されるときの UNIX タイムスタンプ。 | 1700806029167 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
coldStartLatencyMs | コールドスタートのレイテンシ。 | 487.65 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
prepareCodeStartTimestamp | コードのダウンロードが開始されるときの UNIX タイムスタンプ。これはミリ秒単位で正確な 13 桁のタイムスタンプです。 | 1700806029167 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
prepareCodeLatencyMs | コードのダウンロードにかかった時間。 | 0.18 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
runtimeInitializationStartTimestamp | ランタイムの初期化が開始されるときの UNIX タイムスタンプ。 | 1700806029168 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
runtimeInitializationMs | ランタイムの初期化にかかった時間。 | 487.37 | いいえ。このメトリックは、コールドスタートが発生した場合にのみ記録されます。 |
asyncAttemptStartTimestamp | デフォルトでは、失敗した非同期関数の呼び出しは 3 回リトライされます。 このパラメーターは、${retryCount} 回目のリトライの開始タイムスタンプです。 | 1700806028084 | いいえ。このメトリックは、非同期呼び出しの場合にのみ記録されます。 |
asyncAttemptLatencyMs | デフォルトでは、失敗した非同期関数の呼び出しは 3 回リトライされます。 このパラメーターは、${retryCount} 回目のリトライの期間です。 | 1688.74 | いいえ。このメトリックは、非同期呼び出しの場合にのみ記録されます。 |
asyncMode | 非同期呼び出しモード。有効な値:
| Stateful | いいえ。このメトリックは、非同期呼び出しの場合にのみ記録されます。 |
retryCount | リトライ回数。 | 0 | いいえ。このメトリックは、非同期呼び出しの場合にのみ記録されます。 |
ログの取得
ログを取得するには、インデックスを設定する必要があります。Function Compute コンソールは、必要なインデックスを自動的に設定します。インデックスが設定された後、SLS コンソールの対応する Logstore で SQL 文を実行して、リクエストログを取得およびフィルターできます。トピックを指定して、検索範囲をリクエストレベルのメトリックログに限定できます。
たとえば、実行時間が 1 秒を超えるリクエストをクエリするには、次の SQL 文を実行します。
__topic__: "FCRequestMetrics:/f1" AND qualifier: q1 and operation: InvokeFunction and durationMs>1000複雑なクエリ構文の詳細については、「ログのクエリと分析のガイド」をご参照ください。
カスタムダッシュボードの作成
x 軸が時間 (t) を表し、y 軸がメトリック値を表すチャートを作成する場合は、次の SQL 文を実行できます。
__topic__: "FCRequestMetrics:/f1" AND qualifier: q1 and operation: InvokeFunction | select __time__ - __time__ % 60 as t, count(*) as invocations, avg(durationMs) as avgDurationMs group by t order by t カスタムダッシュボードの作成方法の詳細については、「ダッシュボードの作成」をご参照ください。