Recueillez des logs sur les proxies Apigee afin de surveiller les erreurs, les délais de réponse, les durées, la latence ainsi que les performances des monitors et les problèmes des proxies.
Utilisez le type de stratégie MessageLogging avec un paramètre syslog sur votre API pour enregistrer des messages personnalisés dans syslog. Remplacez<site_intake_endpoint> par intake.logs.datadoghq.com et <site_port> par 10516 dans lʼexemple suivant :
Envoyer des logs sur les proxies Apigee à Datadog en exploitant la stratégie JavaScript d’Apigee.
JavaScript a été configuré de façon à enregistrer les variables de flux importantes en tant qu’attributs de logs dans Datadog. Les noms des attributs correspondent à la liste d’attributs standards.
Sélectionnez le proxy Apigee à partir duquel vous souhaitez envoyer des logs à Datadog.
Sur la page de présentation du proxy de votre choix, cliquez sur l’onglet DEVELOP en haut à droite.
Sous Navigator, ajoutez une nouvelle stratégie JavaScript. Modifiez ensuite le fichier JavaScript créé, accessible depuis le menu déroulant Resources –> jsc.
Ajoutez-y l’extrait de code JavaScript suivant. Assurez-vous de remplacer <DATADOG_API_KEY> par votre Clé dʼAPI Datadog dans la variable dd_api_url.
//Définiricil'URL de l'APIDatadog.vardd_api_url="https://http-intake.logs.datadoghq.com/api/v2/logs?dd-api-key=<DATADOG_API_KEY>&ddsource=apigee";//Debugging//print(dd_api_url);//print('Name of the flow: '+context.flow);//Calculerlesdélaisderéponsepourleclient,lacibleetletotalvarrequest_start_time=context.getVariable('client.received.start.timestamp');varrequest_end_time=context.getVariable('client.received.end.timestamp');varsystem_timestamp=context.getVariable('system.timestamp');vartarget_start_time=context.getVariable('target.sent.start.timestamp');vartarget_end_time=context.getVariable('target.received.end.timestamp');vartotal_request_time=system_timestamp-request_start_time;vartotal_target_time=target_end_time-target_start_time;vartotal_client_time=total_request_time-total_target_time;vartimestamp=crypto.dateFormat('YYYY-MM-dd HH:mm:ss.SSS');varorganization=context.getVariable("organization.name");varnetworkClientIP=context.getVariable("client.ip");varhttpPort=context.getVariable("client.port");varenvironment=context.getVariable("environment.name");varapiProduct=context.getVariable("apiproduct.name");varapigeeProxyName=context.getVariable("apiproxy.name");varapigeeProxyRevision=context.getVariable("apiproxy.revision");varappName=context.getVariable("developer.app.name");varhttpMethod=context.getVariable("request.verb");varhttpUrl=''+context.getVariable("client.scheme")+'://'+context.getVariable("request.header.host")+context.getVariable("request.uri");varhttpStatusCode=context.getVariable("message.status.code");varstatusResponse=context.getVariable("message.reason.phrase");varclientLatency=total_client_time;vartargetLatency=total_target_time;vartotalLatency=total_request_time;varuserAgent=context.getVariable('request.header.User-Agent');varmessageContent=context.getVariable('message.content');//AttributsdelogDatadogvarlogObject={"timestamp":timestamp,"organization":organization,"network.client.ip":networkClientIP,"env":environment,"apiProduct":apiProduct,"apigee_proxy.name":apigeeProxyName,"apigee_proxy.revision":apigeeProxyRevision,"service":appName,"http.method":httpMethod,"http.url":httpUrl,"http.status_code":httpStatusCode,"http.port":httpPort,"status":statusResponse,"clientLatency":clientLatency,"targetLatency":targetLatency,"totalLatency":totalLatency,"http.client.start_time_ms":request_start_time,"http.client.end_time_ms":request_end_time,"http.useragent":userAgent,"message":messageContent,};varheaders={'Content-Type':'application/json'};//Debugging//print('LOGGING OBJECT'+JSON.stringify(logObject));varmyLoggingRequest=newRequest(dd_api_url,"POST",headers,JSON.stringify(logObject));//EnvoyerleslogsàDatadoghttpClient.send(myLoggingRequest);
Remarque : pour ajouter de nouvelles variables de flux à JavaScript, consultez la référence sur les variables de flux de la documentation Apigee officielle (en anglais).