Grafana
Artillery integrates with Grafana Cloud using OpenTelemetry protocol to send both metrics and traces.
Quick Start
plugins:
publish-metrics:
- type: 'open-telemetry'
serviceName: my-service
metrics:
exporter: otlp-proto
endpoint: '{{ $env.GRAFANA_OTLP_ENDPOINT }}'
headers:
Authorization: 'Basic {{ $env.GRAFANA_AUTH_CODE }}'Requirements
- Access Policy Token with correct scopes
- Account Information obtained in
Cloud Portal->OpenTelemetrycard ->Configure:Instance ID(e.g.130834)OTLP Endpoint(e.g.https://otlp-gateway-prod-us-central-0.grafana.net/otlp)
Configuration
Full Configuration Example
plugins:
publish-metrics:
- type: 'open-telemetry'
serviceName: <your-service-name>
metrics:
exporter: otlp-proto
endpoint: '{{ $env.GRAFANA_OTLP_ENDPOINT }}'
headers:
Authorization: 'Basic {{ $env.GRAFANA_AUTH_CODE }}'
traces:
exporter: otlp-proto
endpoint: '{{ $env.GRAFANA_OTLP_ENDPOINT }}'
headers:
Authorization: 'Basic {{ $env.GRAFANA_AUTH_CODE }}'Note: Grafana requires otlp-proto exporter (HTTP/protobuf) rather than the default otlp-http (HTTP/JSON).
Generating Auth Code
- Create an Access Policy Token with the
metrics:writeand/ortraces:writescopes depending on the data you will be sending. - Make a base64 encoding of the
<your-instance-id>:<your-token>string and store it as an environment variable (e.g.GRAFANA_AUTH_CODE).
Example using command line:
echo -n "130834:your-access-token-here" | base64Supported Features
Metrics
- All Artillery metrics are sent to Grafana Cloud
- Custom attributes can be added via the
attributesconfiguration - Metrics can be filtered using
includeOnlyorexcludedoptions
Traces
- Distributed tracing for HTTP and Playwright engines
- Sampling rate configuration
- Custom attributes for all spans
- Request name mapping
Example with All Features
plugins:
publish-metrics:
- type: 'open-telemetry'
serviceName: load-test-service
resourceAttributes:
environment: production
team: platform
metrics:
exporter: otlp-proto
endpoint: '{{ $env.GRAFANA_OTLP_ENDPOINT }}'
headers:
Authorization: 'Basic {{ $env.GRAFANA_AUTH_CODE }}'
attributes:
test.type: load
test.scenario: checkout-flow
traces:
exporter: otlp-proto
endpoint: '{{ $env.GRAFANA_OTLP_ENDPOINT }}'
headers:
Authorization: 'Basic {{ $env.GRAFANA_AUTH_CODE }}'
sampleRate: 0.1
useRequestNames: true
attributes:
test.id: '{{ $testId }}'Debugging
Set DEBUG=plugin:publish-metrics:open-telemetry when running your tests to print out helpful debugging messages:
DEBUG=plugin:publish-metrics:open-telemetry artillery run my-script.yamlReference
For additional information about sending OpenTelemetry data to Grafana, check their documentation .
Last updated on