Problème : les métriques ou les invocations CloudWatch n'apparaissent pas
Après avoir instrumenté votre fonction AWS Lambda avec OpenTelemetry et l'avoir invoquée, la section CloudWatch metrics ou l'onglet Invocations n'apparaît pas dans l'interface utilisateur de New Relic.
Solution
New Relic requiert les attributs de ressource OpenTelemetry suivants pour identifier et afficher correctement votre fonction Lambda dans l'interface utilisateur :
| Attribut | Description | Exemple de valeur |
|---|---|---|
faas.name | Le nom de la fonction Lambda | my-lambda-function |
faas.id | L'ARN complet de la fonction Lambda | arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function |
Si ces attributs sont manquants, définissez-les à l'aide de la variable d'environnement OTEL_RESOURCE_ATTRIBUTES.
Modèle SAM :
yourFunctionHere: Type: AWS::Serverless::Function Properties: # ... Environment: Variables: OTEL_RESOURCE_ATTRIBUTES: "faas.name=my-lambda-function,faas.id=arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function"Important
Remplacez my-lambda-function et l'ARN par le nom et l'ARN réels de votre fonction. L'ARN doit correspondre exactement à la valeur affichée dans la console AWS Lambda.
Console AWS :
- Ouvrez votre fonction dans la console Lambda.
- Choisissez Configuration, puis Environment variables.
- Choisissez Edit, puis Add environment variable.
- Définissez Key sur
OTEL_RESOURCE_ATTRIBUTESet Value surfaas.name=my-lambda-function,faas.id=arn:aws:lambda:us-east-1:123456789012:function:my-lambda-function. - Choisissez Save.
Si vous avez déjà défini d'autres attributs de ressource, ajoutez les nouvelles valeurs sous forme de paires clé-valeur séparées par des virgules :
OTEL_RESOURCE_ATTRIBUTES=service.name=my-service,faas.name=my-lambda-function,faas.id=arn:aws:lambda:us-east-1:123456789012:function:my-lambda-functionProblème : ID de requête manquant dans les traces
Les traces de votre fonction Lambda apparaissent dans New Relic, mais l'ID de requête AWS n'est pas visible sur le span racine, ce qui rend difficile la corrélation des traces avec les entrées de CloudWatch Logs.
Solution
Définissez l'attribut faas.execution sur la span racine dans votre gestionnaire. Les conventions sémantiques d'OpenTelemetry définissent cet attribut comme l'ID de requête ou d'invocation du fournisseur de cloud.
Python:
from opentelemetry import trace
def handler(event, context): span = trace.get_current_span() span.set_attribute("faas.execution", context.aws_request_id)
# Your handler logic here return {"statusCode": 200, "body": "OK"}Node.js :
const { trace } = require('@opentelemetry/api');
exports.handler = async (event, context) => { const span = trace.getActiveSpan(); if (span) { span.setAttribute('faas.execution', context.awsRequestId); }
// Your handler logic here return { statusCode: 200, body: 'OK' };};Java:
import io.opentelemetry.api.trace.Span;
public class Handler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> { @Override public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent event, Context context) { Span span = Span.current(); span.setAttribute("faas.execution", context.getAwsRequestId());
// Your handler logic here return new APIGatewayProxyResponseEvent().withStatusCode(200); }}Conseil
New Relic affiche faas.execution en tant que Request ID dans le panneau des détails de la trace, ce qui permet de trouver facilement l'entrée CloudWatch Logs correspondante pour toute invocation.
Plus d'informations
Pour plus d'informations, consultez ce qui suit :