artilleryio / artillery

The complete load testing platform. Everything you need for production-grade load tests. Serverless & distributed. Load test with Playwright. Load test HTTP APIs, GraphQL, WebSocket, and more. Use any Node.js module.
https://www.artillery.io
Mozilla Public License 2.0
8.04k stars 511 forks source link

OpenTelemetry plugin missing crucial metrics #3353

Open peterpakos opened 1 month ago

peterpakos commented 1 month ago

We are trialling OpenTelemetry plugin for ingesting performance test metrics into our Grafana Cloud instance.

Everything appears to be working as expected but the selection of generated metrics is a bit sparse.

Version info:

2.0.20

Running this command:

artillery run getstatus.yml

I expected to see this happen:

All standard HTTP engine metrics being generated/ingested including http.requests, http.responses, http.codes.* etc. (as per https://www.artillery.io/docs/reference/engines/http#metrics-reported-by-the-engine).

Instead, this happened:

Only the following metrics appear in Grafana:

http_request_rate
http_response_time_count
http_response_time_max
http_response_time_mean
http_response_time_median
http_response_time_min
http_response_time_p50
http_response_time_p75
http_response_time_p90
http_response_time_p95
http_response_time_p99
http_response_time_p999
plugins_metrics_by_endpoint_response_time_GetStatus_count
plugins_metrics_by_endpoint_response_time_GetStatus_max
plugins_metrics_by_endpoint_response_time_GetStatus_mean
plugins_metrics_by_endpoint_response_time_GetStatus_median
plugins_metrics_by_endpoint_response_time_GetStatus_min
plugins_metrics_by_endpoint_response_time_GetStatus_p50
plugins_metrics_by_endpoint_response_time_GetStatus_p75
plugins_metrics_by_endpoint_response_time_GetStatus_p90
plugins_metrics_by_endpoint_response_time_GetStatus_p95
plugins_metrics_by_endpoint_response_time_GetStatus_p99
plugins_metrics_by_endpoint_response_time_GetStatus_p999
target_info
vusers_session_length_count
vusers_session_length_max
vusers_session_length_mean
vusers_session_length_median
vusers_session_length_min
vusers_session_length_p50
vusers_session_length_p75
vusers_session_length_p90
vusers_session_length_p95
vusers_session_length_p99
vusers_session_length_p999

Files being used:

    plugins:
      publish-metrics:
        - type: open-telemetry
          serviceName: GetStatus
          metrics:
            exporter: otlp-proto
            endpoint: https://xxx.grafana.net/otlp/v1/metrics
            headers:
              Authorization: 'Basic xxx'
maofalt commented 2 weeks ago

Did you find any solution ? Having the same problem.

peterpakos commented 6 days ago

@maofalt unfortunately I haven't.

It's been 6 weeks with no response or at least some sort of acknowledgement.

Shame.

hassy commented 4 days ago

@maofalt are you using Grafana Cloud too?

@peterpakos it seems that you can see Artillery's histogram and rate metrics in Grafana, but not the counters? Are they being shown in Artillery's own report? The code to send counter metrics is here: https://github.com/artilleryio/artillery/blob/main/packages/artillery-plugin-publish-metrics/lib/open-telemetry/metrics.js#L120 As you can see it's very similar to the code to send other metric types, and all it's doing is use an OTel SDK method. Does the Artillery configuration use includeOnly / exclude config options? https://www.artillery.io/docs/reference/extensions/publish-metrics/opentelemetry#metrics

peterpakos commented 4 days ago

@hassy yes, we can see all relevant metrics on Artillery summary report, they're just not being pushed to Grafana.

We are not using includeOnly or exclude options.