AWS SDK 없이 CloudWatch 지표를 보고하는 방법
11971 단어 monitoringserverlessjavascriptaws
putMetricData
method from the AWS SDK을 사용하는 것입니다.const AWS = require("aws-sdk");
const cloudwatch = new AWS.CloudWatch();
exports.handler = async () => {
// business logic
const metric = {
Namespace: "Service1",
MetricData: [
{
MetricName: "loginAttempts",
Dimensions: [
{
Name: "tenant",
Value: "client1",
},
],
Unit: "Count",
Value: 1,
},
],
};
await cloudwatch.putMetricData(metric).promise();
// more business logic
};
이 솔루션은 때때로 이러한 메트릭을 보내는 경우에 충분합니다. 함수 코드의 다른 위치에서 많은 메트릭을 보내려는 경우 문제가 시작됩니다. AWS SDK에서 다른 메서드를 호출하는 것과 동일한 방식으로
putMetricData
메서드를 호출하면 함수의 실행 시간이 늘어나 비용이 증가합니다. 게다가 한 번의 호출로 40kB의 데이터만 보낼 수 있습니다.2019년 말에 AWS는 AWS SDK를 사용하지 않고 지표 보고를 활성화했습니다.
포함된 메트릭 형식
이는 Embedded Metric Format 이라는 특정 형식으로 데이터를
stdout
에 기록하여 수행할 수 있습니다. 예를 들어:{
"_aws": {
"Timestamp": 1579211886742,
"CloudWatchMetrics": [
{
"Dimensions": [["tenant"]],
"Metrics": [
{
"Name": "loginAttempts",
"Unit": "Count"
}
],
"Namespace": "Service1"
}
]
},
"loginAttempts": 1,
"tenant": "client1"
}
이러한 객체를 쉽게 생성할 수 있도록 AWS는 Node.js , Python , Java 및 .NET 에 대한 라이브러리를 제공했습니다. 이제 AWS SDK를 사용하는 위의 예를 다음과 같이 작성할 수 있습니다.
const { createMetricsLogger, Unit } = require("aws-embedded-metrics");
exports.handler = async (event, context) => {
// business logic
const metrics = createMetricsLogger();
metrics.setNamespace("Service1");
metrics.putMetric("loginAttempts", 1, Unit.Count);
metrics.setDimensions({ tenant: "client1" });
await metrics.flush();
// more business logic
};
관련된 AWS에 대한 네트워크 호출이 없으므로 함수 호출 시간이 증가하지 않습니다. 데이터는
stdout
에 기록되고 나머지는 CloudWatch에서 처리하여 지표로 게시합니다. 또한 함수에는 cloudwatch:PutMetricData
권한이 필요하지 않습니다.aws-embedded-metrics
라이브러리는 또한 flush()
메서드를 수동으로 호출할 필요가 없는 Lambda 함수용 래퍼를 제공합니다. 이를 통해 보고 메트릭을 코드 전체에 분산시킬 수 있으며 이를 stdout
로 전송하면 Lambda 실행이 끝날 때 한 번만 발생합니다.const { metricScope } = require("aws-embedded-metrics");
exports.handler = metricScope((metrics) => async () => {
// business logic
metrics.setNamespace("Service2");
metrics.putMetric("loginAttempts", 1, Unit.Count);
metrics.setDimensions({ tenant: "client2" });
metrics.setProperty("RequestId", context.awsRequestId);
// more business logic
});
또한
setProperty
메서드를 사용하여 나중에 CloudWatch Logs Insights에서 검색할 수 있는 선택적 파라미터를 추가할 수 있습니다.요약하면 Embedded Metric Format을 사용하면 함수 기간을 연장하지 않고도 CloudWatch 서비스에 많은 사용자 지정 지표를 최적으로 보낼 수 있습니다.
로그를 파악하세요 🌩
서버리스 서비스 성능, 호출, 오류 등을 모니터링하기 위한 데스크탑 앱인 Cloudash을 소개합니다.
지난 주에 생산 사건이 발생했습니까? 아니면 20초 전? Cloudash를 사용하면 서버리스 로그 및 메트릭을 쉽게 검색, 필터링 및 탐색할 수 있습니다.
원할 때마다 원하는 것을 검색하십시오. Cloudash에는 필터링 기능이 내장되어 있어 그 어느 때보다 빠르게 문제를 해결할 수 있습니다.
시작하기here .
Reference
이 문제에 관하여(AWS SDK 없이 CloudWatch 지표를 보고하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mthenw/how-to-report-cloudwatch-metrics-without-aws-sdk-2ip텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)