You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2023/04/05 04:19:55 UTC
[skywalking] branch master updated: Support Amazon API Gateway monitoring (#10645)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new b7f456d29f Support Amazon API Gateway monitoring (#10645)
b7f456d29f is described below
commit b7f456d29f3b63ac29cd0541c8db37d2acabaf4a
Author: pg.yang <pg...@hotmail.com>
AuthorDate: Wed Apr 5 12:19:46 2023 +0800
Support Amazon API Gateway monitoring (#10645)
---
.github/workflows/skywalking.yaml | 3 +-
docs/en/changes/changes.md | 1 +
.../backend/backend-aws-api-gateway-monitoring.md | 46 ++
docs/menu.yml | 4 +
.../oap/meter/analyzer/dsl/SampleFamily.java | 8 +-
.../skywalking/oap/server/core/analysis/Layer.java | 13 +-
.../ui/template/UITemplateInitializer.java | 1 +
.../convertor-test-data/gateway-http-1/expect.json | 469 ++++++++++++++++
.../convertor-test-data/gateway-http-1/source.json | 401 ++++++++++++++
.../convertor-test-data/gateway-http-2/expect.json | 594 +++++++++++++++++++++
.../convertor-test-data/gateway-http-2/source.json | 498 +++++++++++++++++
.../convertor-test-data/gateway-rest-1/expect.json | 298 +++++++++++
.../convertor-test-data/gateway-rest-1/source.json | 258 +++++++++
.../src/main/resources/application.yml | 2 +-
.../otel-rules/aws-gateway/gateway-endpoint.yaml | 63 +++
.../otel-rules/aws-gateway/gateway-service.yaml | 63 +++
.../aws_gateway/aws_gateway-root.json | 68 +++
.../aws_gateway/aws_gateway_endpoint.json | 237 ++++++++
.../aws_gateway/aws_gateway_service.json | 291 ++++++++++
.../cases/aws/api-gateway/docker-compose.yml | 51 ++
test/e2e-v2/cases/aws/api-gateway/e2e.yaml | 44 ++
.../aws/api-gateway/expected/metrics-has-value.yml | 24 +
.../cases/aws/api-gateway/expected/service.yml | 24 +
.../cases/aws/api-gateway/gateway-cases.yaml | 29 +
.../cases/aws/api-gateway/mock-data/data-1.json | 469 ++++++++++++++++
.../cases/aws/api-gateway/mock-data/data-2.json | 469 ++++++++++++++++
26 files changed, 4421 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/skywalking.yaml b/.github/workflows/skywalking.yaml
index d78e29f60f..7fb5265350 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -673,9 +673,10 @@ jobs:
config: test/e2e-v2/cases/aws/s3/e2e.yaml
- name: AWS Cloud DynamoDB
config: test/e2e-v2/cases/aws/dynamodb/e2e.yaml
-
- name: PromQL Service
config: test/e2e-v2/cases/promql/e2e.yaml
+ - name: AWS API Gateway
+ config: test/e2e-v2/cases/aws/api-gateway/e2e.yaml
steps:
- uses: actions/checkout@v3
with:
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 568cc38e69..7745657395 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -27,6 +27,7 @@
* Support collecting memory buff/cache metrics in VM monitoring.
* PromQL: Remove empty values from the query result, fix `/api/v1/metadata` param `limit` could cause out of bound.
* Support monitoring the total number metrics of k8s StatefulSet and DaemonSet.
+* Support Amazon API Gateway monitoring.
#### UI
* Revert: cpm5d function. This feature is cancelled from backend.
diff --git a/docs/en/setup/backend/backend-aws-api-gateway-monitoring.md b/docs/en/setup/backend/backend-aws-api-gateway-monitoring.md
new file mode 100644
index 0000000000..1570076dba
--- /dev/null
+++ b/docs/en/setup/backend/backend-aws-api-gateway-monitoring.md
@@ -0,0 +1,46 @@
+# AWS API Gateway monitoring
+Amazon API Gateway is an AWS service for creating, publishing, maintaining, monitoring, and securing REST, HTTP, and WebSocket APIs. SkyWalking leverages [AWS Kinesis Data Firehose receiver](./aws-firehose-receiver.md) to transfer the CloudWatch metrics of API Gateway(HTTP and REST APIs) to
+[OpenTelemetry receiver](opentelemetry-receiver.md) and into the [Meter System](./../../concepts-and-designs/meter.md).
+
+### Data flow
+1. AWS CloudWatch collect metrics for API Gateway(REST and HTTP APIs), refer to [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html)
+2. [CloudWatch metric streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html) stream CloudWatch metrics of API Gateway to AWS Kinesis Data Firehose
+3. AWS Kinesis Data Firehose delivery metrics to [AWS Kinesis Data Firehose receiver](./aws-firehose-receiver.md) through the HTTP endpoint
+
+### Set up
+1. Enable CloudWatch metrics for API Gateway
+2. Create an Amazon Kinesis Data Firehose Delivery Stream, and set [AWS Kinesis Data Firehose receiver](./aws-firehose-receiver.md)'s address as HTTP(s) Destination, refer to [Create Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)
+3. Create CloudWatch metric stream, and select the Firehose Delivery Stream which has been created above, set `Select namespaces` to `AWS/ApiGateway`, `Select output format` to `OpenTelemetry 0.7`. refer to [CloudWatch Metric Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html)
+
+### Gateway Monitoring
+
+SkyWalking observes CloudWatch metrics of the AWS API Gateway, which is cataloged as a `LAYER: AWS_GATEWAY` `Service` in the OAP. Meanwhile, the routes would be recognized as `LAYER: AWS_GATEWAY` `endpoint`s
+
+#### Supported Metrics
+
+| Monitoring Panel | Unit | Metric Name | Catalog | Description | Data Source [...]
+|-------------------------------------|-------|------------------------------------------|------------|---------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| Request Count | count | aws_gateway_service_count | Service | The total number API requests in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| 4xx Count | count | aws_gateway_service_4xx | Service | The number of client-side errors captured in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| 5xx Count | count | aws_gateway_service_5xx | Service | The number of server-side errors captured in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Request Average Latency | ms | aws_gateway_service_latency | Service | The time between when API Gateway receives a request from a client and when it returns a response to the client. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Request Average Integration Latency | ms | aws_gateway_service_integration_latency | Service | The time between when API Gateway relays a request to the backend and when it receives a response from the backend. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Data Processed | KB | aws_gateway_service_data_processed | Service | The amount of data processed | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) [...]
+| Cache Hit Count Rate | % | aws_gateway_service_cache_hit_rate | Service | The number of requests served from the API cache | [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) [...]
+| Cache Miss Count Rate | % | aws_gateway_service_cache_miss_rate | Service | The number of requests served from the backend | [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) [...]
+| Request Count | count | aws_gateway_endpoint_count | Endpoint | The total number API requests in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| 4xx Count | count | aws_gateway_endpoint_4xx | Endpoint | The number of client-side errors captured in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| 5xx Count | count | aws_gateway_endpoint_5xx | Endpoint | The number of server-side errors captured in a given period. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Request Average Latency | ms | aws_gateway_endpoint_latency | Endpoint | The time between when API Gateway receives a request from a client and when it returns a response to the client. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Request Average Integration Latency | ms | aws_gateway_endpoint_integration_latency | Endpoint | The time between when API Gateway relays a request to the backend and when it receives a response from the backend. | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) and [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics [...]
+| Data Processed | KB | aws_gateway_endpoint_data_processed | Endpoint | The amount of data processed | [API Gateway HTTP APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html) [...]
+| Cache Hit Count Rate | % | aws_gateway_endpoint_cache_hit_rate | Endpoint | The number of requests served from the API cache | [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) [...]
+| Cache Miss Count Rate | % | aws_gateway_endpoint_cache_miss_rate | Endpoint | The number of requests served from the backend | [API Gateway REST APIs monitoring with CloudWatch](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) [...]
+
+
+
+
+### Customizations
+You can customize your own metrics/expression/dashboard panel.
+The metrics definition and expression rules are found in `/config/otel-rules/aws-gateway/`.
+The AWS Cloud EKS dashboard panel configurations are found in `/config/ui-initialized-templates/aws_gateway`.
diff --git a/docs/menu.yml b/docs/menu.yml
index fbf1bd695c..403ff93960 100644
--- a/docs/menu.yml
+++ b/docs/menu.yml
@@ -205,12 +205,16 @@ catalog:
path: "/en/setup/backend/backend-aws-s3-monitoring"
- name: "AWS DynamoDB"
path: "/en/setup/backend/backend-aws-dynamodb-monitoring"
+ - name: "AWS API Gateway"
+ path: "/en/setup/backend/backend-aws-api-gateway-monitoring"
- name: "Browser Monitoring"
path: "/en/setup/service-agent/browser-agent"
- name: "Gateway Monitoring"
catalog:
- name: "APISIX Monitoring"
path: "/en/setup/backend/backend-apisix-monitoring"
+ - name: "AWS API Gateway"
+ path: "/en/setup/backend/backend-aws-api-gateway-monitoring"
- name: "Database Monitoring"
catalog:
- name: "MySQL/MariaDB Server"
diff --git a/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/SampleFamily.java b/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/SampleFamily.java
index 96326e3ecb..4f5374ed9d 100644
--- a/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/SampleFamily.java
+++ b/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/SampleFamily.java
@@ -464,7 +464,7 @@ public class SampleFamily {
return instance(serviceKeys, Const.POINT, instanceKeys, Const.POINT, layer, null);
}
- public SampleFamily endpoint(List<String> serviceKeys, List<String> endpointKeys, Layer layer) {
+ public SampleFamily endpoint(List<String> serviceKeys, List<String> endpointKeys, String delimiter, Layer layer) {
Preconditions.checkArgument(serviceKeys.size() > 0);
Preconditions.checkArgument(endpointKeys.size() > 0);
ExpressionParsingContext.get().ifPresent(ctx -> {
@@ -475,7 +475,11 @@ public class SampleFamily {
if (this == EMPTY) {
return EMPTY;
}
- return createMeterSamples(new EndpointEntityDescription(serviceKeys, endpointKeys, layer, Const.POINT));
+ return createMeterSamples(new EndpointEntityDescription(serviceKeys, endpointKeys, layer, delimiter));
+ }
+
+ public SampleFamily endpoint(List<String> serviceKeys, List<String> endpointKeys, Layer layer) {
+ return endpoint(serviceKeys, endpointKeys, Const.POINT, layer);
}
public SampleFamily process(List<String> serviceKeys, List<String> serviceInstanceKeys, List<String> processKeys, String layerKey) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
index 7dc212ea75..3756b25a2c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java
@@ -119,7 +119,8 @@ public enum Layer {
K8S_SERVICE(17, true),
/**
- * MySQL Server, also known as mysqld, is a single multithreaded program that does most of the work in a MySQL installation.
+ * MySQL Server, also known as mysqld, is a single multithreaded program that does most of the work in a MySQL
+ * installation.
*/
MYSQL(18, true),
@@ -153,11 +154,17 @@ public enum Layer {
*/
AWS_S3(24, true),
- /*
+ /**
* Amazon DynamoDB is a fully managed NoSQL database service that provides
* fast and predictable performance with seamless scalability.
*/
- AWS_DYNAMODB(25, true);
+ AWS_DYNAMODB(25, true),
+
+ /**
+ * Amazon API Gateway is an AWS service for creating, publishing, maintaining, monitoring, and securing REST, HTTP,
+ * and WebSocket APIs at any scale.
+ */
+ AWS_GATEWAY(26, true);
private final int value;
/**
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
index 243e25e001..1b2da1deb7 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplateInitializer.java
@@ -64,6 +64,7 @@ public class UITemplateInitializer {
Layer.OS_WINDOWS.name(),
Layer.AWS_S3.name(),
Layer.AWS_DYNAMODB.name(),
+ Layer.AWS_GATEWAY.name(),
"custom"
};
private final UITemplateManagementService uiTemplateManagementService;
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/expect.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/expect.json
new file mode 100644
index 0000000000..ad6600e87a
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/expect.json
@@ -0,0 +1,469 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "scopeMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "IntegrationLatency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/source.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/source.json
new file mode 100644
index 0000000000..705e082814
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-1/source.json
@@ -0,0 +1,401 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "instrumentationLibraryMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Latency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "4xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "4xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Latency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Count"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "IntegrationLatency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "DataProcessed"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "4xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Count"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/expect.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/expect.json
new file mode 100644
index 0000000000..ba0d3fbe19
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/expect.json
@@ -0,0 +1,594 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "scopeMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "IntegrationLatency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "IntegrationLatency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "5xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "5xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "5xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/source.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/source.json
new file mode 100644
index 0000000000..3d444bf53c
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-http-2/source.json
@@ -0,0 +1,498 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "instrumentationLibraryMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Latency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "DataProcessed"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "IntegrationLatency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Count"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Count"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "IntegrationLatency"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "5xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "5xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "DataProcessed"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "DataProcessed"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ },
+ {
+ "key": "Method",
+ "value": "ANY"
+ },
+ {
+ "key": "Resource",
+ "value": "/graphql"
+ },
+ {
+ "key": "Stage",
+ "value": "$default"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5xx",
+ "unit": "1",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "5xx"
+ },
+ {
+ "key": "ApiId",
+ "value": "6m85d5acx7"
+ }
+ ],
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/expect.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/expect.json
new file mode 100644
index 0000000000..f72fd9b71b
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/expect.json
@@ -0,0 +1,298 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "scopeMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5XXError",
+ "unit": "{Count}",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "5XXError"
+ }
+ },
+ {
+ "key": "ApiName",
+ "value": {
+ "stringValue": "fafafa"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5XXError",
+ "unit": "{Count}",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "5XXError"
+ }
+ },
+ {
+ "key": "ApiName",
+ "value": {
+ "stringValue": "fafafa"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "prod"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4XXError",
+ "unit": "{Count}",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4XXError"
+ }
+ },
+ {
+ "key": "ApiName",
+ "value": {
+ "stringValue": "fafafa"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "prod"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiName",
+ "value": {
+ "stringValue": "fafafa"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "prod"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiName",
+ "value": {
+ "stringValue": "fafafa"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "{Count}",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/source.json b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/source.json
new file mode 100644
index 0000000000..4461e419b9
--- /dev/null
+++ b/oap-server/server-receiver-plugin/aws-firehose-receiver/src/test/resources/convertor-test-data/gateway-rest-1/source.json
@@ -0,0 +1,258 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "instrumentationLibraryMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5XXError",
+ "unit": "{Count}",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "5XXError"
+ },
+ {
+ "key": "ApiName",
+ "value": "fafafa"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/5XXError",
+ "unit": "{Count}",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "5XXError"
+ },
+ {
+ "key": "ApiName",
+ "value": "fafafa"
+ },
+ {
+ "key": "Stage",
+ "value": "prod"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4XXError",
+ "unit": "{Count}",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "4XXError"
+ },
+ {
+ "key": "ApiName",
+ "value": "fafafa"
+ },
+ {
+ "key": "Stage",
+ "value": "prod"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Latency"
+ },
+ {
+ "key": "ApiName",
+ "value": "fafafa"
+ },
+ {
+ "key": "Stage",
+ "value": "prod"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Latency"
+ },
+ {
+ "key": "ApiName",
+ "value": "fafafa"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "quantileValues": [
+ {
+ },
+ {
+ "quantile": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "{Count}",
+ "doubleSummary": {
+ "dataPoints": [
+ {
+ "labels": [
+ {
+ "key": "Namespace",
+ "value": "AWS/ApiGateway"
+ },
+ {
+ "key": "MetricName",
+ "value": "Count"
+ }
+ ],
+ "startTimeUnixNano": "1679234760000000000",
+ "timeUnixNano": "1679234820000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml
index 5b9a5d9bbb..7eb560f08b 100644
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -332,7 +332,7 @@ receiver-otel:
selector: ${SW_OTEL_RECEIVER:default}
default:
enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"oc,otlp"}
- enabledOtelRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_RULES:"apisix,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*"}
+ enabledOtelRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_RULES:"apisix,k8s/*,istio-controlplane,vm,mysql/*,postgresql/*,oap,aws-eks/*,windows,aws-s3/*,aws-dynamodb/*,aws-gateway/*"}
receiver-zipkin:
selector: ${SW_RECEIVER_ZIPKIN:-}
diff --git a/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-endpoint.yaml b/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-endpoint.yaml
new file mode 100644
index 0000000000..840adde706
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-endpoint.yaml
@@ -0,0 +1,63 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+# "PT20.345S" -- parses as "20.345 seconds"
+# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds)
+# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds)
+# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
+# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes"
+# "P-6H3M" -- parses as "-6 hours and +3 minutes"
+# "-P6H3M" -- parses as "-6 hours and -3 minutes"
+# "-P-6H+3M" -- parses as "+6 hours and -3 minutes"
+# </pre>
+
+# ApiId for HTTP APS, ApiName for REST API
+filter: "{ tags -> {tags.cloud_provider == 'aws' && tags.Namespace == 'AWS/ApiGateway' && (tags.ApiId || tags.ApiName) && tags.Stage && tags.Method && tags.Resource } }"
+expSuffix: tag({tags -> tags.service_name= tags.ApiId ? 'aws-api-gateway::'+tags.Stage+':'+tags.ApiId:'aws-api-gateway::'+tags.Stage+':'+tags.ApiName }).endpoint(['service_name'],['Method','Resource'], ':', Layer.AWS_GATEWAY)
+metricPrefix: aws_gateway_endpoint
+metricsRules:
+ # Only for HTTP API
+ - name: 4xx
+ exp: amazonaws_com_AWS_ApiGateway_4xx_sum.downsampling(SUM)
+ - name: 5xx
+ exp: amazonaws_com_AWS_ApiGateway_5xx_sum.downsampling(SUM)
+ - name: DataProcessed
+ exp: amazonaws_com_AWS_ApiGateway_DataProcessed_sum.downsampling(SUM)
+
+ # Only for REST API
+ - name: 4xx
+ exp: amazonaws_com_AWS_ApiGateway_4XXError_sum.downsampling(SUM)
+ - name: 5xx
+ exp: amazonaws_com_AWS_ApiGateway_5XXError_sum.downsampling(SUM)
+
+ - name: cache_hit_rate
+ exp: amazonaws_com_AWS_ApiGateway_CacheHitCount_sum.div(amazonaws_com_AWS_ApiGateway_CacheHitCount_count)
+ - name: cache_miss_rate
+ exp: amazonaws_com_AWS_ApiGateway_CacheMissCount_sum.div(amazonaws_com_AWS_ApiGateway_CacheMissCount_count)
+
+ # Common metrics for HTTP, REST API
+ - name: count
+ exp: amazonaws_com_AWS_ApiGateway_Count.downsampling(SUM)
+ - name: integration_latency
+ exp: amazonaws_com_AWS_ApiGateway_IntegrationLatency_sum.div(amazonaws_com_AWS_ApiGateway_IntegrationLatency_count)
+ - name: latency
+ exp: amazonaws_com_AWS_ApiGateway_Latency_sum.div(amazonaws_com_AWS_ApiGateway_Latency_count)
+
diff --git a/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-service.yaml b/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-service.yaml
new file mode 100644
index 0000000000..c1fc82db1f
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/otel-rules/aws-gateway/gateway-service.yaml
@@ -0,0 +1,63 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+# "PT20.345S" -- parses as "20.345 seconds"
+# "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds)
+# "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds)
+# "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
+# "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes"
+# "P-6H3M" -- parses as "-6 hours and +3 minutes"
+# "-P6H3M" -- parses as "-6 hours and -3 minutes"
+# "-P-6H+3M" -- parses as "+6 hours and -3 minutes"
+# </pre>
+
+# ApiId for HTTP APS, ApiName for REST API
+filter: "{ tags -> {tags.cloud_provider == 'aws' && tags.Namespace == 'AWS/ApiGateway' && (tags.ApiId || tags.ApiName) && tags.Stage && !tags.Method && !tags.Resource } }"
+expSuffix: tag({tags -> tags.service_name= tags.ApiId ? 'aws-api-gateway::'+tags.Stage+':'+tags.ApiId:'aws-api-gateway::'+tags.Stage+':'+tags.ApiName }).service(['service_name'], Layer.AWS_GATEWAY)
+metricPrefix: aws_gateway_service
+metricsRules:
+ # Only for HTTP API
+ - name: 4xx
+ exp: amazonaws_com_AWS_ApiGateway_4xx_sum.downsampling(SUM)
+ - name: 5xx
+ exp: amazonaws_com_AWS_ApiGateway_5xx_sum.downsampling(SUM)
+ - name: data_processed
+ exp: amazonaws_com_AWS_ApiGateway_DataProcessed_sum.downsampling(SUM)
+
+ # Only for REST API
+ - name: 4xx
+ exp: amazonaws_com_AWS_ApiGateway_4XXError_sum.downsampling(SUM)
+ - name: 5xx
+ exp: amazonaws_com_AWS_ApiGateway_5XXError_sum.downsampling(SUM)
+
+ - name: cache_hit_rate
+ exp: amazonaws_com_AWS_ApiGateway_CacheHitCount_sum.div(amazonaws_com_AWS_ApiGateway_CacheHitCount_count).multiply(100)
+ - name: cache_miss_rate
+ exp: amazonaws_com_AWS_ApiGateway_CacheMissCount_sum.div(amazonaws_com_AWS_ApiGateway_CacheMissCount_count).multiply(100)
+
+ # Common metrics for HTTP, REST API
+ - name: count
+ exp: amazonaws_com_AWS_ApiGateway_Count.downsampling(SUM)
+ - name: integration_latency
+ exp: amazonaws_com_AWS_ApiGateway_IntegrationLatency_sum.div(amazonaws_com_AWS_ApiGateway_IntegrationLatency_count)
+ - name: latency
+ exp: amazonaws_com_AWS_ApiGateway_Latency_sum.div(amazonaws_com_AWS_ApiGateway_Latency_count)
+
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway-root.json
new file mode 100644
index 0000000000..45e75bd851
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway-root.json
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+[
+ {
+ "id": "AWS_GATEWAY-Root",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 2,
+ "w": 24,
+ "h": 51,
+ "i": "0",
+ "type": "Widget",
+ "widget": {
+ "title": ""
+ },
+ "graph": {
+ "type": "ServiceList",
+ "dashboardName": "AWS_GATEWAY-service",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "moved": false
+ },
+ {
+ "x": 0,
+ "y": 0,
+ "w": 24,
+ "h": 2,
+ "i": "100",
+ "type": "Text",
+ "graph": {
+ "fontColor":"blue",
+ "backgroundColor":"white",
+ "content":"Provide AWS Cloud API Gateway monitoring through AWS FireHose Receiver",
+ "fontSize":14,
+ "textAlign":"left",
+ "url":"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-aws-api-gateway-monitoring/"
+ },
+ "moved": false
+ }
+ ],
+ "id": "AWS_GATEWAY-Root",
+ "layer": "AWS_GATEWAY",
+ "entity": "All",
+ "name": "AWS_GATEWAY-Root",
+ "isRoot": true
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_endpoint.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_endpoint.json
new file mode 100644
index 0000000000..7669a6a7aa
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_endpoint.json
@@ -0,0 +1,237 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+[
+ {
+ "id": "AWS_GATEWAY-endpoint",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_count"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "4xx Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_4xx"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "5xx Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_5xx"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Average Latency (ms)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_latency"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Average Integration Latency (ms)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_integration_latency"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Data Processed (KB, HTTP API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_data_processed"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "metricConfig": [
+ {
+ "calculation": "byteToKB"
+ }
+ ]
+ },
+
+ {
+ "x": 12,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "7",
+ "type": "Widget",
+ "widget": {
+ "title": "Cache Hit Count Rate (%, REST API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_cache_hit_rate"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 18,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "Cache Miss Count Rate (%, REST API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_cache_miss_rate"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ }
+ ],
+ "layer": "AWS_GATEWAY",
+ "entity": "Endpoint",
+ "name": "AWS_GATEWAY-endpoint",
+ "id": "AWS_GATEWAY-endpoint",
+ "isRoot": false
+ }
+ }
+]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_service.json
new file mode 100644
index 0000000000..7639f5f2c8
--- /dev/null
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/aws_gateway/aws_gateway_service.json
@@ -0,0 +1,291 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+[
+ {
+ "id": "AWS_GATEWAY-service",
+ "configuration": {
+ "children": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "3",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_count"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 6,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "1",
+ "type": "Widget",
+ "widget": {
+ "title": "4xx Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_4xx"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 12,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "2",
+ "type": "Widget",
+ "widget": {
+ "title": "5xx Count"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_5xx"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 18,
+ "y": 0,
+ "w": 6,
+ "h": 13,
+ "i": "5",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Average Latency (ms)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_latency"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "4",
+ "type": "Widget",
+ "widget": {
+ "title": "Request Average Integration Latency (ms)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_integration_latency"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "6",
+ "type": "Widget",
+ "widget": {
+ "title": "Data Processed (KB, HTTP API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_data_processed"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ],
+ "metricConfig": [
+ {
+ "calculation": "byteToKB"
+ }
+ ]
+ },
+
+ {
+ "x": 12,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "7",
+ "type": "Widget",
+ "widget": {
+ "title": "Cache Hit Count Rate (%, REST API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_cache_hit_rate"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 18,
+ "y": 13,
+ "w": 6,
+ "h": 13,
+ "i": "8",
+ "type": "Widget",
+ "widget": {
+ "title": "Cache Miss Count Rate (%, REST API Only)"
+ },
+ "graph": {
+ "type": "Line",
+ "step": false,
+ "smooth": false,
+ "showSymbol": false,
+ "showXAxis": true,
+ "showYAxis": true
+ },
+ "metrics": [
+ "aws_gateway_service_cache_miss_rate"
+ ],
+ "metricTypes": [
+ "readMetricsValues"
+ ]
+ },
+ {
+ "x": 0,
+ "y": 26,
+ "w": 24,
+ "h": 26,
+ "i": "9",
+ "type": "Widget",
+ "graph": {
+ "type": "EndpointList",
+ "dashboardName": "AWS_GATEWAY-endpoint",
+ "fontSize": 12,
+ "showXAxis": false,
+ "showYAxis": false,
+ "showGroup": true
+ },
+ "metrics": [
+ "aws_gateway_endpoint_count",
+ "aws_gateway_endpoint_4xx",
+ "aws_gateway_endpoint_5xx",
+ "aws_gateway_endpoint_latency",
+ "aws_gateway_endpoint_integration_latency"
+ ],
+ "metricTypes": [
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues",
+ "readMetricsValues"
+ ],
+ "metricConfig": [
+ {
+ "label": "Request Count",
+ "calculation": "average"
+ },
+ {
+ "label": "4xx Count",
+ "calculation": "average"
+ },
+ {
+ "label": "5xx Count",
+ "calculation": "average"
+ },
+ {
+ "label": "Latency",
+ "unit": "ms",
+ "calculation": "average"
+ },
+ {
+ "label": "Integration Latency",
+ "unit": "ms",
+ "calculation": "average"
+ }
+ ]
+ }
+ ],
+ "layer": "AWS_GATEWAY",
+ "entity": "Service",
+ "name": "AWS_GATEWAY-service",
+ "id": "AWS_GATEWAY-service",
+ "isRoot": false
+ }
+ }
+]
diff --git a/test/e2e-v2/cases/aws/api-gateway/docker-compose.yml b/test/e2e-v2/cases/aws/api-gateway/docker-compose.yml
new file mode 100644
index 0000000000..dcd2cfc5af
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/docker-compose.yml
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+version: '2.1'
+
+services:
+ oap:
+ extends:
+ file: ../../../script/docker-compose/base-compose.yml
+ service: oap
+ ports:
+ - 12800
+ networks:
+ e2e:
+
+ sender:
+ image: "eclipse-temurin:8-jre"
+ volumes:
+ - ./../../../java-test-service/e2e-mock-sender/target/e2e-mock-sender-2.0.0.jar:/e2e-mock-sender-2.0.0.jar
+ - ./mock-data:/data/otel-metrics
+ command: [ "java", "-jar", "/e2e-mock-sender-2.0.0.jar" ]
+ environment:
+ OAP_HOST: oap
+ OAP_GRPC_PORT: 11800
+ OTEL_METRICS_DATA_PATH: /data/otel-metrics
+ networks:
+ - e2e
+ ports:
+ - 9093:9093
+ healthcheck:
+ test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9093"]
+ interval: 5s
+ timeout: 60s
+ retries: 120
+ depends_on:
+ oap:
+ condition: service_healthy
+networks:
+ e2e:
diff --git a/test/e2e-v2/cases/aws/api-gateway/e2e.yaml b/test/e2e-v2/cases/aws/api-gateway/e2e.yaml
new file mode 100644
index 0000000000..358fab7090
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/e2e.yaml
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is used to show how to write configuration files and can be used to test.
+
+setup:
+ env: compose
+ file: docker-compose.yml
+ timeout: 20m
+ init-system-environment: ../../../script/env
+ steps:
+ - name: set PATH
+ command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+ - name: install yq
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+ - name: install swctl
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+
+trigger:
+ action: http
+ interval: 3s
+ times: 10
+ url: http://localhost:9093/otel-metrics/send
+ method: GET
+
+verify:
+ retry:
+ count: 10
+ interval: 3s
+ cases:
+ - includes:
+ - ./gateway-cases.yaml
diff --git a/test/e2e-v2/cases/aws/api-gateway/expected/metrics-has-value.yml b/test/e2e-v2/cases/aws/api-gateway/expected/metrics-has-value.yml
new file mode 100644
index 0000000000..247a7cafc8
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/expected/metrics-has-value.yml
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+ {{- contains . }}
+- key: {{ notEmpty .key }}
+ value:
+ value: 0
+ isemptyvalue: true
+- key: {{ notEmpty .key }}
+ value:
+ value: {{ gt .value.value 0 }}
+ isemptyvalue: false
+ {{- end }}
diff --git a/test/e2e-v2/cases/aws/api-gateway/expected/service.yml b/test/e2e-v2/cases/aws/api-gateway/expected/service.yml
new file mode 100644
index 0000000000..22818cce2e
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/expected/service.yml
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ {{- contains . }}
+- id: {{ b64enc "aws-api-gateway::$default:6m85d5acx7" }}.1
+ name: "aws-api-gateway::$default:6m85d5acx7"
+ group: aws-api-gateway
+ shortname: '$default:6m85d5acx7'
+ normal: true
+ layers:
+ - AWS_GATEWAY
+ {{- end }}
diff --git a/test/e2e-v2/cases/aws/api-gateway/gateway-cases.yaml b/test/e2e-v2/cases/aws/api-gateway/gateway-cases.yaml
new file mode 100644
index 0000000000..f28f8729a6
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/gateway-cases.yaml
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is used to show how to write configuration files and can be used to test.
+
+ cases:
+ - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
+ expected: expected/service.yml
+ - query: |
+ swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
+ --name=aws_gateway_service_4xx --service-name='aws-api-gateway::$default:6m85d5acx7' |yq e 'to_entries' -
+ expected: expected/metrics-has-value.yml
+ - query: |
+ swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
+ --name=aws_gateway_endpoint_latency --endpoint-name='ANY:/graphql' \
+ --service-name='aws-api-gateway::$default:6m85d5acx7' |yq e 'to_entries' -
+ expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/aws/api-gateway/mock-data/data-1.json b/test/e2e-v2/cases/aws/api-gateway/mock-data/data-1.json
new file mode 100644
index 0000000000..ad6600e87a
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/mock-data/data-1.json
@@ -0,0 +1,469 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "scopeMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "IntegrationLatency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/e2e-v2/cases/aws/api-gateway/mock-data/data-2.json b/test/e2e-v2/cases/aws/api-gateway/mock-data/data-2.json
new file mode 100644
index 0000000000..ad6600e87a
--- /dev/null
+++ b/test/e2e-v2/cases/aws/api-gateway/mock-data/data-2.json
@@ -0,0 +1,469 @@
+{
+ "resourceMetrics": [
+ {
+ "resource": {
+ "attributes": [
+ {
+ "key": "cloud.provider",
+ "value": {
+ "stringValue": "aws"
+ }
+ },
+ {
+ "key": "cloud.account.id",
+ "value": {
+ "stringValue": "008835616606"
+ }
+ },
+ {
+ "key": "cloud.region",
+ "value": {
+ "stringValue": "ap-northeast-1"
+ }
+ },
+ {
+ "key": "aws.exporter.arn",
+ "value": {
+ "stringValue": "arn:aws:cloudwatch:ap-northeast-1:008835616606:metric-stream/CustomPartial"
+ }
+ }
+ ]
+ },
+ "scopeMetrics": [
+ {
+ "metrics": [
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Latency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 376.0,
+ "quantileValues": [
+ {
+ "value": 11.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 104.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Latency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/IntegrationLatency",
+ "unit": "ms",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 32.0,
+ "quantileValues": [
+ {
+ "value": 3.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 8.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "IntegrationLatency"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/DataProcessed",
+ "unit": "By",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 2775.0,
+ "quantileValues": [
+ {
+ "value": 555.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 555.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "DataProcessed"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/4xx",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "4xx"
+ }
+ },
+ {
+ "key": "ApiId",
+ "value": {
+ "stringValue": "6m85d5acx7"
+ }
+ },
+ {
+ "key": "Method",
+ "value": {
+ "stringValue": "ANY"
+ }
+ },
+ {
+ "key": "Resource",
+ "value": {
+ "stringValue": "/graphql"
+ }
+ },
+ {
+ "key": "Stage",
+ "value": {
+ "stringValue": "$default"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "amazonaws.com/AWS/ApiGateway/Count",
+ "unit": "1",
+ "summary": {
+ "dataPoints": [
+ {
+ "startTimeUnixNano": "1679195460000000000",
+ "timeUnixNano": "1679195520000000000",
+ "count": "5",
+ "sum": 5.0,
+ "quantileValues": [
+ {
+ "value": 1.0
+ },
+ {
+ "quantile": 1.0,
+ "value": 1.0
+ }
+ ],
+ "attributes": [
+ {
+ "key": "Namespace",
+ "value": {
+ "stringValue": "AWS/ApiGateway"
+ }
+ },
+ {
+ "key": "MetricName",
+ "value": {
+ "stringValue": "Count"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}