- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Apigee 프록시 로그를 수집하여 오류, 응답 시간, 기간, 레이턴시, 모니터링 성능, 프록시 문제를 추적합니다.
Apigee 로그를 수집하는 두 가지 방법입니다.
MessageLogging 정책 유형을 사용하여 API의 syslog 파라미터로 syslog에 커스텀 메시지를 로깅합니다. 다음 예제에서 <site_intake_endpoint>
를 로,
<site_port>
를 로 변경합니다.
<MessageLogging name="LogToSyslog">
<DisplayName>datadog-logging</DisplayName>
<Syslog>
<Message><YOUR API KEY> test</Message>
<Host><site_intake_endpoint></Host>
<Port><site_port></Port>
<Protocol>TCP</Protocol>
</Syslog>
</MessageLogging>
Apigee의 자바스크립트(Javascript) 정책을 사용하여 Apigee 프록시 로그를 Datadog으로 전송합니다.
자바스크립트(Javascript)는 필수 플로우 변수를 Datadog의 로그 속성으로 캡처하도록 설정되어 있습니다. 해당 속성은 표준 속성 목록에 따라 명명됩니다.
dd_api_url
변수의 <DATADOG_API_KEY>
를 고객님의 Datadog API KEY로 변경합니다.// 여기에서 Datadog API URL을 설정합니다.
var dd_api_url = "https://http-intake.logs.
/api/v2/logs?dd-api-key=<DATADOG_API_KEY>&ddsource=apigee";
// 디버그(Debug)
// print(dd_api_url);
// print('Name of the flow: ' + context.flow);
// 클라이언트, 타겟, 총 응답 시간을 산출합니다.
var request_start_time = context.getVariable('client.received.start.timestamp');
var request_end_time = context.getVariable('client.received.end.timestamp');
var system_timestamp = context.getVariable('system.timestamp');
var target_start_time = context.getVariable('target.sent.start.timestamp');
var target_end_time = context.getVariable('target.received.end.timestamp');
var total_request_time = system_timestamp - request_start_time;
var total_target_time = target_end_time - target_start_time;
var total_client_time = total_request_time - total_target_time;
var timestamp = crypto.dateFormat('YYYY-MM-dd HH:mm:ss.SSS');
var organization = context.getVariable("organization.name");
var networkClientIP = context.getVariable("client.ip");
var httpPort = context.getVariable("client.port");
var environment = context.getVariable("environment.name");
var apiProduct = context.getVariable("apiproduct.name");
var apigeeProxyName = context.getVariable("apiproxy.name");
var apigeeProxyRevision = context.getVariable("apiproxy.revision");
var appName = context.getVariable("developer.app.name");
var httpMethod = context.getVariable("request.verb");
var httpUrl = '' + context.getVariable("client.scheme") + '://' + context.getVariable("request.header.host") + context.getVariable("request.uri");
var httpStatusCode = context.getVariable("message.status.code");
var statusResponse = context.getVariable("message.reason.phrase");
var clientLatency = total_client_time;
var targetLatency = total_target_time;
var totalLatency = total_request_time;
var userAgent = context.getVariable('request.header.User-Agent');
var messageContent = context.getVariable('message.content');
// Datadog 로그 속성
var logObject = {
"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,
};
var headers = {
'Content-Type': 'application/json'
};
// 디버그(Debug)
// print('LOGGING OBJECT' + JSON.stringify(logObject));
var myLoggingRequest = new Request(dd_api_url, "POST", headers, JSON.stringify(logObject));
// Datadog으로 로그 전송
httpClient.send(myLoggingRequest);
참고: 공식 Apigee 플로우 변수 참조에서 자바스크립트(Javascript)에 플로우 변수를 더 추가하세요.
도움이 필요하신가요? Datadog 지원팀에 문의하세요.
추가 유용한 문서, 링크 및 기사: