Las métricas a nivel de solicitud ofrecen una visión más profunda de cada invocación de función y le ayudan a comprender el rendimiento de sus funciones. Utilice estas métricas para detectar y localizar problemas rápidamente, así como para analizar los cuellos de botella de la aplicación. Habilite las métricas a nivel de solicitud para gestionar y optimizar mejor sus aplicaciones de funciones.
Qué son las métricas a nivel de solicitud
Las métricas a nivel de solicitud resumen el estado de ejecución de cada solicitud de función. Cuando se habilitan, el sistema recopila métricas de cada ejecución de función —incluidas las de rendimiento, excepciones y trazabilidad— y las entrega al logstore que seleccionó durante la configuración de registros.
Métricas de rendimiento: uso de memoria, tiempo de ejecución de la función, tiempo de inicialización, información de arranque en frío, entre otras.
Métricas de excepciones: indican si la ejecución terminó con errores e incluyen los detalles del error.
Métricas de trazabilidad: duración de la ejecución en rutas clave, estado del muestreo de trazabilidad distribuida y, para funciones HTTP, la ruta, el código de estado y la dirección IP del cliente.
Una vez habilitadas las métricas a nivel de solicitud, Function Compute entrega las métricas de ejecución de cada solicitud a su logstore con el siguiente formato.
activeInstances: 0
activeInstancesPerFunction: 0
durationMs: 1.56
functionName: sync-clone
hasFunctionError: false
hostname: sr-65a76c74-1224f354965f43a...
instanceID: c-65a77eb0-15416274-ff5addb...
invocationStartTimestamp: 1705476027407
invocationType: Sync
invokeFunctionLatencyMs: 2.92
invokeFunctionStartTimestamp: 1705476027406
ipAddress: 21.0
isColdStart: false
memoryMB: 512
memoryUsageMB: 8.99
operation: InvokeFunction
qualifier: LATEST
requestId: 1-65a77fbb-157f3f32-e1ee24b17e49
resourceMode: OnDemand
Escenarios
-
Consulte los detalles de ejecución de las funciones, las métricas de rendimiento y la información de errores mediante las métricas de solicitud.
La consola proporciona una lista de solicitudes basada en las métricas a nivel de solicitud. Utilice esta interfaz para consultar la información detallada de cada solicitud, incluido el estado de ejecución, el ID de instancia, la duración de la ejecución, el uso de memoria y los registros de solicitud.
En la pestaña Logs de la página de detalles de la función, seleccione la subpestaña Invocation Requests para consultar la lista de solicitudes. Los filtros ubicados arriba de la lista incluyen Show logs only for the current version or alias, Show only function errors, Show only client errors y Show only cold start requests.
NotaEs posible consultar la lista de solicitudes sin habilitar las métricas a nivel de solicitud, pero los datos pueden ser imprecisos en los siguientes escenarios.
Cuando aparecen varios RequestId idénticos de forma repetida —algo común en los reintentos de invocaciones asíncronas—, no es posible localizar los registros de una solicitud específica.
En entornos de runtime personalizado o de imagen personalizada, si su código imprime tanto
FC Invoke Start RequestId: xxxcomoFC Invoke End RequestId: xxx, una misma invocación aparecerá dos veces en la lista de solicitudes.
-
Aproveche las métricas de solicitud para búsquedas personalizadas y para construir paneles personalizados.
Las métricas de solicitud se entregan a su logstore en formato
key:val. Cree paneles personalizados según sus necesidades de negocio. Para obtener instrucciones, consulte Create a dashboard.
Notas
-
Alcance
Los registros de métricas a nivel de solicitud corresponden a una configuración a nivel de función. Una vez habilitados, se aplican a la función actual y cada ejecución genera una entrada de registro.
-
Costo
La entrega de registros a Simple Log Service genera cargos de almacenamiento. Para conocer los detalles de precios, consulte Precios.
Habilitar las métricas a nivel de solicitud
Habilitar las métricas a nivel de solicitud en la consola
Requisitos previos
-
Function Compute
-
Simple Log Service (SLS)
Procedimiento
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, seleccione .
En la barra de menú superior, seleccione una región. En la página Functions, haga clic en la función de destino.
En la página de configuración de la función, seleccione la pestaña Configuration.
-
Busque Advanced Settings y haga clic en Modify a su derecha. En el panel Advanced Configuration, vaya a la sección Logging, habilite Instance-level Metrics y, a continuación, haga clic en Deploy.
A continuación se describen los elementos de configuración principales. Mantenga el resto de los ajustes con sus valores predeterminados.
Elemento de configuración
Descripción
Valor de ejemplo
Logging
Define si los registros de invocación de la función se almacenan en Simple Log ServiceSLS. Para obtener más información, consulte Configure logging.
Enabled
Log project
Seleccione un proyecto de registros existente.
aliyun-fc-hangzhou-2238f0df-a742-524f-9f90-976ba***
Logstore
Seleccione un logstore existente.
function-log
Log segmentation rule
Define si se habilita la segmentación de registros. Si se habilita, Function Compute divide los registros en varios segmentos según la regla y escribe cada segmento en SLS.
Enabled
Request-level metrics
Define si se recopilan métricas a nivel de solicitud. Si se habilita, se recopilan las métricas de cada invocación de función y se entregan al logstore especificado en la configuración de registros.
Enabled
Instance-level metrics
Define si se habilitan las métricas a nivel de instancia. Si se habilita, las métricas de instancia se entregan al logstore especificado en la configuración de registros.
Enabled
Habilitar las métricas a nivel de solicitud con Serverless Devs
Requisitos previos
Procedimiento
-
Cree un directorio de código con la siguiente estructura.
. ├── code │ └── index.js └── s.yamlEn este ejemplo, el campo enableRequestMetrics configura las métricas a nivel de solicitud. Antes de habilitarlo, active el registro de eventos y establezca logstore y project con un logstore y un proyecto de registros existentes en su cuenta.
edition: 3.0.0 name: hello-world-app access: "default" vars: # Global variables region: "cn-hangzhou" resources: hello_world: component: fc3 # Component name 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: # Update logstore and project to match your setup. Alternatively, use logConfig:auto to auto-create them. enableInstanceMetrics: true enableRequestMetrics: true # Enable request-level metrics to collect execution metrics for every invocation logBeginRule: DefaultRegex logstore: 'your-logstore' project: 'your-project' -
Ejecute el siguiente comando para desplegar la aplicación.
sudo s deploy -yUna vez completado el despliegue, inicie sesión en la consola de Function Compute para confirmar que las métricas a nivel de solicitud están habilitadas en la función desplegada.
Consulta de registros
Formato de los registros
Los registros de métricas a nivel de solicitud utilizan el formato de tema: FCRequestMetrics:/functionName. En Simple Log Service, utilice la condición de consulta __topic__: "FCRequestMetrics:/functionName" para filtrar todos los registros de métricas a nivel de solicitud. Para obtener más información, consulte Quick guide to querying and analysis.
Campos de métricas
Las métricas a nivel de solicitud registran la siguiente información.
|
Nombre de la métrica |
Descripción |
Valor de ejemplo |
¿Se registra en cada invocación? |
|
functionName |
Nombre de la función. |
my-function |
Sí |
|
versionId |
Nombre de la versión. |
12 |
Sí |
|
qualifier |
Alias del servicio. El valor predeterminado es LATEST. |
prod |
Sí |
|
requestId |
ID de la solicitud. |
db72ce53-ccbe-4216-af55-642622e01494 |
Sí |
|
operation |
Nombre de la acción. |
InvokeFunction |
Sí |
|
invocationType |
Existen dos tipos de llamada. Sync: llamada síncrona Async: invocación asíncrona |
Sync |
Sí |
|
memoryMB |
Límite de memoria de la función. |
512 |
Sí |
|
memoryUsageMB |
Memoria consumida durante la ejecución de la función. |
410 |
Sí |
|
durationMs |
Tiempo de ejecución de la solicitud. |
20.20 |
Sí |
|
isColdStart |
Indica si se trata de un arranque en frío. Nota
Un arranque en frío ocurre cuando Function Compute recibe una solicitud, pero no dispone de ninguna instancia de función lista para procesarla. El sistema debe crear una nueva instancia, descargar el código e inicializar el entorno de ejecución. Se define como solicitud de arranque en frío aquella que atraviesa todo el proceso de creación de instancia, descarga de código e inicialización del runtime. Function Compute optimiza los arranques en frío mediante el precalentamiento de instancias. Si llega una solicitud mientras se crea una instancia y encuentra una instancia precalentada lista, no se considera un arranque en frío. |
false |
Sí |
|
instanceEvent |
Evento de instancia. Actualmente solo ColdStart, registrado para las solicitudes de arranque en frío. |
ColdStart |
No |
|
hasFunctionError |
Indica si la ejecución de la función presentó un error. |
false |
Sí |
|
errorType |
Los errores de función se clasifican en los tres tipos siguientes:
|
FunctionUnhandledError |
No. Solo se registra cuando |
|
invokeFunctionLatencyMs |
Tiempo de ejecución de la función. |
99.00 |
Sí. Se registra en cada invocación. |
|
traceContext |
Contexto de trazabilidad distribuida. |
371d3ff242fcee9:371d3ff242fcee9:0:1 |
No. Solo se registra cuando se configura la trazabilidad distribuida. |
|
isSampled |
Indica si la solicitud se incluyó en el muestreo de trazabilidad distribuida. |
true |
No. Solo se registra cuando se configura la trazabilidad distribuida. |
|
resourceMode |
Tipo de instancia utilizado para la solicitud:
|
OnDemand |
Sí |
|
instanceID |
ID de la instancia. |
c-65603d8c-37e1bf7123054a77**** |
Sí |
|
hostname |
Nombre de host de la instancia. |
c-65603d8c-37e1bf7123054a77**** |
Sí |
|
ipAddress |
Dirección IP de la instancia. Nota: Esta es la IP interna que se usa para distinguir entre instancias, no la dirección IP pública. |
21.0.XX.XX |
Sí |
|
activeInstances |
Número de instancias activas. |
1 |
Sí |
|
activeInstancesPerFunction |
Número de instancias activas para esta función. |
1 |
Sí |
|
scheduleLatencyMs |
Latencia de programación. Es mayor durante los arranques en frío. |
10.07 |
Sí |
|
coldStartStartTimestamp |
Marca de tiempo de inicio del arranque en frío. |
1700806029167 |
No. Solo se registra durante los arranques en frío. |
|
coldStartLatencyMs |
Duración del arranque en frío. |
487.65 |
No. Solo se registra durante los arranques en frío. |
|
prepareCodeStartTimestamp |
Marca de tiempo de inicio de la descarga de código. Marca de tiempo UNIX de 13 dígitos, con precisión de milisegundos. |
1700806029167 |
No. Solo se registra durante los arranques en frío. |
|
prepareCodeLatencyMs |
Duración de la descarga de código. |
0.18 |
No. Solo se registra durante los arranques en frío. |
|
runtimeInitializationStartTimestamp |
Marca de tiempo de inicio de la inicialización del runtime. |
1700806029168 |
No. Solo se registra durante los arranques en frío. |
|
runtimeInitializationMs |
Duración de la inicialización del runtime. |
487.37 |
No. Solo se registra durante los arranques en frío. |
|
asyncAttemptStartTimestamp |
En las invocaciones asíncronas, las ejecuciones con errores se reintentan hasta 3 veces de forma predeterminada. Este parámetro es la marca de tiempo de inicio del reintento número ${retryCount}. |
1700806028084 |
No. Solo se registra para invocaciones asíncronas. |
|
asyncAttemptLatencyMs |
En las invocaciones asíncronas, las ejecuciones con errores se reintentan hasta 3 veces de forma predeterminada. Este parámetro es la duración del reintento número ${retryCount}. |
1688.74 |
No. Solo se registra para invocaciones asíncronas. |
|
asyncMode |
Modo de invocación asíncrona:
|
Stateful |
No. Solo se registra para invocaciones asíncronas. |
|
retryCount |
Número de reintentos. |
0 |
No. Solo se registra para invocaciones asíncronas. |
Recuperar registros
Para recuperar registros se requieren índices. La consola de Function Compute los configura automáticamente. Una vez creados, utilice instrucciones SQL en la consola de Simple Log Service para buscar y filtrar solicitudes en su logstore. Especifique el tema para limitar los resultados a los registros de métricas a nivel de solicitud.
Por ejemplo, para encontrar solicitudes con un tiempo de ejecución superior a 1 segundo, utilice la siguiente instrucción SQL.
__topic__: "FCRequestMetrics:/f1" AND qualifier: q1 and operation: InvokeFunction and durationMs>1000
Para conocer la sintaxis avanzada de consultas, consulte Quick guide to querying and analysis.
Crear un panel personalizado
Para crear un gráfico con el tiempo (t) en el eje X y los valores de las métricas en el eje Y, utilice una instrucción SQL como la siguiente.
__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
Para obtener más información sobre la creación de paneles personalizados, consulte Create a dashboard.