From d6fc848e8b13af202def8faba057ac63bed619b2 Mon Sep 17 00:00:00 2001 From: weixiang1862 <652048614@qq.com> Date: Fri, 19 Apr 2024 19:12:36 +0800 Subject: [PATCH] Calculate Nginx service HTTP Latency by MQE. (#12136) --- docs/en/changes/changes.md | 1 + .../otel-rules/nginx/nginx-service.yaml | 2 +- .../nginx/nginx-service.json | 2 +- test/e2e-v2/cases/nginx/e2e.yaml | 2 +- ...e-label-percentile-service_instance_id.yml | 37 +++++++++++++++++++ 5 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 test/e2e-v2/cases/nginx/expected/metrics-has-value-label-percentile-service_instance_id.yml diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 9a6b2f9b0e..6b0a0a70d1 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -110,6 +110,7 @@ * Support Apache ActiveMQ server monitoring. * Add Service Hierarchy auto matching layer relationships (upper -> lower) as following: - ACTIVEMQ -> K8S_SERVICE +* Calculate Nginx service HTTP Latency by MQE. #### UI diff --git a/oap-server/server-starter/src/main/resources/otel-rules/nginx/nginx-service.yaml b/oap-server/server-starter/src/main/resources/otel-rules/nginx/nginx-service.yaml index 78d82f9d37..0147b569af 100644 --- a/oap-server/server-starter/src/main/resources/otel-rules/nginx/nginx-service.yaml +++ b/oap-server/server-starter/src/main/resources/otel-rules/nginx/nginx-service.yaml @@ -36,7 +36,7 @@ metricsRules: - name: http_requests exp: nginx_http_requests_total.sum(['service','service_instance_id']).rate('PT1M') - name: http_latency - exp: nginx_http_latency.sum(['le','service']).histogram().histogram_percentile([50,70,90,99]) + exp: nginx_http_latency.sum(['le','service','service_instance_id']).histogram().histogram_percentile([50,70,90,99]) - name: http_bandwidth exp: nginx_http_size_bytes.sum(['type','service','service_instance_id']).rate('PT1M') - name: http_connections diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/nginx/nginx-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/nginx/nginx-service.json index 9585468d9e..68d0304d4b 100644 --- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/nginx/nginx-service.json +++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/nginx/nginx-service.json @@ -60,7 +60,7 @@ "showYAxis": true }, "expressions": [ - "meter_nginx_service_http_latency" + "aggregate_labels(meter_nginx_service_http_latency, avg(p))" ] }, { diff --git a/test/e2e-v2/cases/nginx/e2e.yaml b/test/e2e-v2/cases/nginx/e2e.yaml index 882354f229..1c55aee1de 100644 --- a/test/e2e-v2/cases/nginx/e2e.yaml +++ b/test/e2e-v2/cases/nginx/e2e.yaml @@ -49,7 +49,7 @@ verify: - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_nginx_service_http_requests --service-name=nginx::e2e-test expected: expected/metrics-has-value-label-service_instance_id.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_nginx_service_http_latency --service-name=nginx::e2e-test - expected: expected/metrics-has-value-label-percentile.yml + expected: expected/metrics-has-value-label-percentile-service_instance_id.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_nginx_service_http_bandwidth --service-name=nginx::e2e-test expected: expected/metrics-has-value-label-type-service_instance_id.yml - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_nginx_service_http_connections --service-name=nginx::e2e-test diff --git a/test/e2e-v2/cases/nginx/expected/metrics-has-value-label-percentile-service_instance_id.yml b/test/e2e-v2/cases/nginx/expected/metrics-has-value-label-percentile-service_instance_id.yml new file mode 100644 index 0000000000..b3a8249825 --- /dev/null +++ b/test/e2e-v2/cases/nginx/expected/metrics-has-value-label-percentile-service_instance_id.yml @@ -0,0 +1,37 @@ +# 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. + +type: TIME_SERIES_VALUES +results: + {{- contains .results }} + - metric: + labels: + {{- contains .metric.labels }} + - key: p + value: {{ .value }} + - key: service_instance_id + value: {{ .value }} + {{- end}} + values: + {{- contains .values }} + - id: {{ notEmpty .id }} + value: {{ .value }} + traceid: null + - id: {{ notEmpty .id }} + value: null + traceid: null + {{- end}} + {{- end}} +error: null