set up grafana for leapwork go.md

Set up Grafana for Leapwork Go

This guide shows you how to connect Leapwork Go to Grafana Cloud so you can visualize performance test metrics in Grafana dashboards.

Use it when you want to monitor latency, throughput, and error rates across runs.

Before you begin

Make sure you have:

Note: Leapwork Go currently supports Grafana integrations only when using the Graphite data source.

Create a Grafana access policy and token

  1. Open Administration → Users and access → Cloud access policies in Grafana Cloud.
  2. Select Create access policy.
  3. Enter a descriptive name, such as Leapwork Go metrics publish.
  4. Add at least metrics:write. Optionally, add metrics:read.
  5. Save the policy.
  6. Under the new policy, select Add token.
  7. Copy the full token immediately. You cannot view it again.

Note: If you create a token under a predefined read-only policy, it will not include metrics:write. Leapwork Go requires metrics:write to publish data.

Find the Graphite connection details

In your Grafana Cloud stack details or the Graphite setup page, locate these values:

Detail Example
Graphite datasource URL https://graphite-prod-43-prod-ap-south-1.grafana.net/graphite
Graphite ingest URL https://graphite-prod-43-prod-ap-south-1.grafana.net/graphite/metrics
Graphite username / instance ID 3140687

Note: The datasource URL ends with /graphite. Leapwork Go must use the ingest endpoint, which ends with /graphite/metrics.

Add the Grafana connection in Leapwork Go

  1. Open Settings → App Monitoring in Leapwork Go.
  2. Select the Grafana provider tile.
  3. Enter the connection details using the values from the previous section.
  4. Save the connection.

Recommended field values:

Field Value
Provider Grafana
Connection name Primary Grafana
Graphite ingest URL https://<stack>.grafana.net/graphite/metrics
Graphite username Your Graphite instance ID
Access token Your Grafana Cloud token
Metric namespace lp.run_results
Default tags Optional. For example, env:prod,team:perf
Enable automatic publishing true

Example stored configuration:

{ "endpoint": "https://graphite-prod-43-prod-ap-south-1.grafana.net/graphite/metrics", "username": "3140687", "apiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "defaultTags": ["env:prod", "team:perf"], "metricNamespace": "lp.run_results" }

Understand how publishing works

Leapwork Go publishes data to Grafana automatically when a run reaches a terminal state: Finished , Stopped , or Failed.

The backend checks whether the company has an enabled Grafana connection. If it does, Leapwork Go sends Graphite metric points to the configured ingest endpoint.

Example endpoint:

https://graphite-prod-43-prod-ap-south-1.grafana.net/graphite/metrics

For large payloads, Leapwork Go publishes in batches:

Metric catalog

Leapwork Go publishes the following metric groups.

Per-step terminal metrics

These metrics are emitted for each step in each selected track item after the run completes.

Metric Description
lp.run_results.requests_sent Total requests sent for the step
lp.run_results.errors Total failed requests for the step
lp.run_results.bytes_sent Total request body bytes sent
lp.run_results.bytes_received Total response bytes received
lp.run_results.latency.min_ms Minimum latency in milliseconds
lp.run_results.latency.avg_ms Average latency in milliseconds
lp.run_results.latency.median_ms Median latency in milliseconds
lp.run_results.latency.p90_ms P90 latency in milliseconds
lp.run_results.latency.p95_ms P95 latency in milliseconds
lp.run_results.latency.p99_ms P99 latency in milliseconds
lp.run_results.latency.max_ms Maximum latency in milliseconds

Run-level summary metrics

These metrics are emitted once per run from weighted summary data.

Metric Description
lp.run_results.run.latency.avg_ms Weighted run-wide average latency
lp.run_results.run.latency.p90_ms Weighted run-wide P90 latency
lp.run_results.run.latency.p95_ms Weighted run-wide P95 latency
lp.run_results.run.latency.p99_ms Weighted run-wide P99 latency
lp.run_results.run.peak_throughput Peak throughput for the run
lp.run_results.run.error_rate_pct Run-wide error rate percentage
lp.run_results.run.runtime_seconds Run duration in seconds
lp.run_results.run.peak_load Peak virtual users for the run

Track-item summary metrics

These metrics are emitted from aggregated track-item statistics.

Metric Description
lp.run_results.track_item.total_sequences_run Total sequences completed
lp.run_results.track_item.throughput Throughput for the run or track item
lp.run_results.track_item.current_virtual_users Current virtual users
lp.run_results.track_item.alive_agents Number of alive agents
lp.run_results.track_item.running_sequences Sequences still running
lp.run_results.track_item.vum_used Virtual User Minutes (VUM) consumed

Historical timeseries metrics

These metrics are emitted from historical run_data graph points. Use them to visualize a run over time in Grafana.

Metric Description
lp.run_results.timeseries.requests_per_second Requests over time for a track item
lp.run_results.timeseries.latency.avg_ms Average latency over time for a track item

Status-code breakdown metrics

These metrics are emitted from aggregated step status-code counts.

Metric Description
lp.run_results.status_code.count Count of responses for a specific HTTP status code

Tags added to metrics

Leapwork Go attaches Graphite tags to metrics so you can filter, group, and build dashboards.

Base tags

These tags appear on most or all published metrics.

Tag Description
run_id Leapwork Go run ID
run_status Terminal run status
company_id Leapwork Go company ID
company_name Company name
project_id Project ID
project_name Project name
timeline_asset_id Timeline asset ID
timeline_name Timeline title
run_name Timeline name plus UTC timestamp

Step-level tags

These tags appear on per-step metrics.

Tag Description
track_item_id Track item ID
step_id Step ID
step_title Step title
track_item_selected Whether the track item was selected for the run

Track-item and status-code tags

These tags appear where applicable.

Tag Description
geo_location Track item geo location
status_code HTTP status code, such as 200 or 500

Default tags

Any default tags you configure in the connection settings are also attached. For example:

Example metric points

Per-step metric example

name: lp.run_results.latency.p95_ms value: 821 time: 1713701900 tags: run_id=r8_ynth run_status=finished company_id=v_smt_rpx company_name=leapwork project_id=abc123 project_name=new_project timeline_asset_id=new_timeline timeline_name=new_timeline run_name=new_timeline_24042026083945 track_item_id=track1 step_id=step_login step_title=login track_item_selected=true geo_location=northeurope env=prod team=perf

Run summary metric example

name: lp.run_results.run.peak_throughput value: 642 time: 1713701900 tags: run_id=r8_ynth run_status=finished company_id=v_smt_rpx company_name=leapwork project_id=abc123 project_name=new_project timeline_asset_id=new_timeline timeline_name=new_timeline run_name=new_timeline_24042026083945

Status-code metric example

name: lp.run_results.status_code.count value: 638 time: 1713701900 tags: run_id=r8_ynth run_status=finished company_id=v_smt_rpx project_id=abc123 timeline_name=new_timeline track_item_id=track1 step_id=step_login step_title=login status_code=200 geo_location=northeurope

Validate that Leapwork Go is publishing

Check Leapwork Go logs

Look for these log entries in LeapworkGoRunner:

Success:

Failure:

Check Grafana Explore

  1. Open Explore in Grafana.
  2. Select the Graphite data source (not Prometheus).
  3. Run the following query:

seriesByTag('name=lp.run_results.run.latency.p95_ms')

Check the time range

If a query returns no data:

  1. Confirm the Graphite data source is selected.
  2. Widen the time range to Last 24 hours.
  3. Retry the query.

Query metrics in Grafana

Open Explore and select the Graphite data source.

Run-level queries

seriesByTag('name=lp.run_results.run.latency.p95_ms') seriesByTag('name=lp.run_results.run.latency.p99_ms') seriesByTag('name=lp.run_results.run.peak_throughput')

Filter by run

seriesByTag('name=lp.run_results.run.latency.p95_ms', 'run_id=u5t4tc5h')

Filter by timeline

seriesByTag('name=lp.run_results.run.latency.p95_ms', 'timeline_name=new_timeline')

Filter by run name

seriesByTag('name=lp.run_results.run.latency.p95_ms', 'run_name=new_timeline_24042026083945')

Per-step queries

seriesByTag('name=lp.run_results.latency.p95_ms') seriesByTag('name=lp.run_results.latency.p95_ms', 'step_id=8li77l9u')

Timeseries queries

seriesByTag('name=lp.run_results.timeseries.requests_per_second') seriesByTag('name=lp.run_results.timeseries.latency.avg_ms')

Status-code queries

seriesByTag('name=lp.run_results.status_code.count', 'status_code=401')

Create a Grafana dashboard

Create the dashboard

  1. Open Dashboards in Grafana.
  2. Select New dashboard.
  3. Select Add visualization.
  4. Choose the Graphite data source.
  5. Name the dashboard, for example Leapwork Go Dashboard.

Add recommended widgets

Widget 1: Run P95 latency

Widget 2: Run P99 latency

Widget 3: Run peak throughput

Widget 4: Run error rate

Widget 5: Track-item requests per second

Widget 6: Track-item latency over time

Widget 7: Status-code breakdown

Add recommended filters

Use query-level filters for more targeted results:

Examples:

seriesByTag('name=lp.run_results.latency.p95_ms', 'run_id=u5t4tc5h') seriesByTag('name=lp.run_results.latency.p95_ms', 'timeline_name=new_timeline', 'run_status=finished')

Understand Grafana table behavior

Grafana Graphite tables behave differently from relational query tables. Keep the following in mind:

Tip: For stable dashboards, use separate panels for major metric groups. For per-step tables, use fewer columns per panel.

Troubleshooting

Grafana connection is missing endpoint

Symptom: Error message Grafana connection is missing endpoint.

Cause: No Graphite ingest URL is saved in the connection.

Fix: Set the endpoint to https://<stack>.grafana.net/graphite/metrics.

Grafana connection is missing username

Symptom: Error message Grafana connection is missing username.

Cause: The Graphite username or instance ID was not saved.

Fix: Copy the User value from the Grafana Cloud Graphite setup page and save it in Leapwork Go.

Grafana connection is missing apiKey

Symptom: Error message Grafana connection is missing apiKey.

Cause: No access token is saved in the connection.

Fix: Create a token under a policy with metrics:write and save it in the connection.

Content-type error

Symptom: Error unknown content-type "application/json; charset=utf-8".

Cause: The request included an unexpected charset parameter.

Fix: Leapwork Go now sends application/json without charset. Rebuild or restart LeapworkGoRunner if you are on an older build.

Query returns no data

Symptom: A Grafana Explore query shows no results.

Check:

  1. Confirm the Graphite data source is selected (not Prometheus).
  2. Verify the endpoint ends with /graphite/metrics.
  3. Confirm the username is the Graphite instance ID.
  4. Verify the token has metrics:write permission.
  5. Check Leapwork Go logs for successful Grafana publish entries.
  6. Confirm the query uses the correct namespace, for example lp.run_results.
  7. Widen the time range to Last 24 hours.