Problem in configuring a Jaeger datasource - Grafana v12.1.1 (df5de8219b)

  • What Grafana version and what operating system are you using?

Grafana v12.1.1 (df5de8219b)

  • What are you trying to achieve?

Get traces through a Jaeger datasource

  • How are you trying to achieve it?

Configuration via Grafana UI

  • What happened?

The datasource gets configured, the save&test passes, and I can fetch the list of Service Names and Operation Names from Jaeger. However, once I select a Service and an Operation and click “Run Query”, I get a `400 Bad Request` error.

  • What did you expect to happen?

The datasource correctly running

  • Can you copy/paste the configuration(s) that you are having problems with?

The datasource is configured as follows:

{
    "id": 11,
    "uid": "[REDACTED]",
    "orgId": 1,
    "name": "jaeger-debug",
    "type": "jaeger",
    "typeLogoUrl": "public/plugins/jaeger/img/jaeger_logo.svg",
    "access": "proxy",
    "url": "[REDACTED]",
    "user": "",
    "database": "",
    "basicAuth": false,
    "basicAuthUser": "",
    "withCredentials": false,
    "isDefault": false,
    "jsonData": {
        "nodeGraph": {
            "enabled": true
        },
        "pdcInjected": false,
        "tlsSkipVerify": true,
        "tracesToMetrics": {
            "datasourceUid": "[REDACTED]"
        }
    },
    "secureJsonFields": {},
    "version": 5,
    "readOnly": false,
    "accessControl": {
        "alert.instances.external:read": true,
        "alert.instances.external:write": true,
        "alert.notifications.external:read": true,
        "alert.notifications.external:write": true,
        "alert.rules.external:read": true,
        "alert.rules.external:write": true,
        "datasources.id:read": true,
        "datasources:delete": true,
        "datasources:query": true,
        "datasources:read": true,
        "datasources:write": true
    },
    "apiVersion": ""
}

This is a cURL command I copied from the browser’s Developer Console to replicate the failing request:

curl 'http://[GRAFANA_URL]/api/ds/query?ds_type=jaeger&requestId=explore_r5i' \
  -H 'Accept-Language: en-US,en;q=0.9,it-IT;q=0.8,it;q=0.7' \
  -H 'Connection: keep-alive' \
  -b 'grafana_session=[REDACTED]; grafana_session_expiry=[REDACTED]' \
  -H 'Origin: http://[GRAFANA_URL]' \
  -H 'Referer: http://[GRAFANA_URL]/explore?...' \
  -H 'User-Agent: Mozilla/5.0 ...' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'content-type: application/json' \
  -H 'x-cache-skip: true' \
  -H 'x-datasource-uid: [REDACTED]' \
  -H 'x-grafana-device-id: [REDACTED]' \
  -H 'x-grafana-org-id: 1' \
  -H 'x-plugin-id: jaeger' \
  --data-raw '{"queries":[{"refId":"A","datasource":{"type":"jaeger","uid":"[REDACTED]"},"queryType":"search","service":"[REDACTED]","operation":"","minDuration":"","maxDuration":"","datasourceId":10,"intervalMs":2000,"maxDataPoints":1365}],"from":"[REDACTED]","to":"[REDACTED]"}' \
  --insecure


I get this as response:

{"results":{"A":{"error":"request failed: 404 Not Found","errorSource":"downstream","status":500}}}

I can’t honestly figure out if it’s a configuration issue on my end, a bug, or some incompatibility between Grafana and Jaeger versions. I know Jaeger V1 has been deprecated for several months now, but I still need to use it at this time.

Moreover, I can see that the API call never reaches Jaeger, or rather, the reverse proxy in front of it: it seems like Grafana does not issue the API call at all.

For comparison, an older version (v10.4.1) of Grafana successfully retrieves traces from the very same Jaeger instance. Here is the datasource JSON for the working configuration:

{
    "id": 83,
    "uid": "[REDACTED]",
    "orgId": 1,
    "name": "jaeger-debug",
    "type": "jaeger",
    "typeLogoUrl": "public/app/plugins/datasource/jaeger/img/jaeger_logo.svg",
    "access": "proxy",
    "url": "[REDACTED]",
    "user": "",
    "database": "",
    "basicAuth": false,
    "basicAuthUser": "",
    "withCredentials": false,
    "isDefault": false,
    "jsonData": {
        "nodeGraph": {
            "enabled": true
        },
        "tlsSkipVerify": true,
        "tracesToMetrics": {
            "datasourceUid": "[REDACTED]"
        }
    },
    "secureJsonFields": {},
    "version": 4,
    "readOnly": false,
    "accessControl": {
        "alert.instances.external:read": true,
        "alert.instances.external:write": true,
        "alert.notifications.external:read": true,
        "alert.notifications.external:write": true,
        "alert.rules.external:read": true,
        "alert.rules.external:write": true,
        "datasources.caching:read": true,
        "datasources.caching:write": true,
        "datasources.id:read": true,
        "datasources.permissions:read": true,
        "datasources.permissions:write": true,
        "datasources:delete": true,
        "datasources:query": true,
        "datasources:read": true,
        "datasources:write": true
    }
}

And this is the cURL for the working request which gets an HTTP 200 with traces as expected:

curl 'https://[REDACTED]/api/datasources/proxy/uid/[REDACTED]/api/traces?service=[REDACTED]&start=[REDACTED]&end=[REDACTED]&lookback=custom' \
  -H 'Accept-Language: en-US,en;q=0.9,it-IT;q=0.8,it;q=0.7' \
  -H 'Connection: keep-alive' \
  -b '[REDACTED]' \
  -H 'Referer: https://[REDACTED]/explore?...' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'User-Agent: Mozilla/5.0 ...' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'sec-ch-ua: "Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "[REDACTED]"' \
  -H 'x-grafana-device-id: [REDACTED]' \
  -H 'x-grafana-org-id: 1'
I can see the older Grafana call is quite different from the newer one, which makes sense given there are two major versions between them.
  • Did you receive any errors in the Grafana UI or in related logs? If so, please tell us exactly what they were.

Grafana does not show errors, even with log level set to DEBUG

  • Did you follow any online instructions? If so, what is the URL?

Jaeger data source | Grafana documentation

An update about the issue: the 400 Bad Request response comes from the reverse proxy that fronts the Grafana instance. I can see some logs there, one can clearly see that calls to retrieve Service or Operation Names end successfully, while the one to get traces returns the error

proxy - - [REDACTED_IP] [10/Oct/2025:13:02:16 +0000] [REDACTED_HOST] GET /api/datasources/uid/[REDACTED_UID]/resources/services HTTP/2.0 200 762 0.480 "https://[REDACTED_HOST]/explore?schemaVersion=1&panes=%7B%22r5i%22:%7B%22datasource%22:%22[REDACTED_UID]%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22datasource%22:%7B%22type%22:%22jaeger%22,%22uid%22:%22[REDACTED_UID]%22%7D,%22queryType%22:%22search%22,%22service%22:%22[REDACTED_SERVICE]%22%7D%5D,%22range%22:%7B%22from%22:%22now-1h%22,%22to%22:%22now%22%7D%7D%7D&orgId=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
[...]
proxy - - [REDACTED_IP] [10/Oct/2025:13:02:16 +0000] [REDACTED_HOST] GET /api/datasources/uid/[REDACTED_UID]/resources/services/[REDACTED_SERVICE]/operations HTTP/2.0 200 1119 0.460 "https://[REDACTED_HOST]/explore?schemaVersion=1&panes=%7B%22r5i%22:%7B%22datasource%22:%22[REDACTED_UID]%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22datasource%22:%7B%22type%22:%22jaeger%22,%22uid%22:%22[REDACTED_UID]%22%7D,%22queryType%22:%22search%22,%22service%22:%22[REDACTED_SERVICE]%22%7D%5D,%22range%22:%7B%22from%22:%22now-1h%22,%22to%22:%22now%22%7D%7D%7D&orgId=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"
[...]
proxy - - [REDACTED_IP] [10/Oct/2025:13:02:18 +0000] [REDACTED_HOST] POST /api/ds/query?ds_type=jaeger&requestId=explore_r5i HTTP/2.0 400 100 0.164 "https://[REDACTED_HOST]/explore?schemaVersion=1&panes=%7B%22r5i%22:%7B%22datasource%22:%22[REDACTED_UID]%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22datasource%22:%7B%22type%22:%22jaeger%22,%22uid%22:%22[REDACTED_UID]%22%7D,%22queryType%22:%22search%22,%22service%22:%22[REDACTED_SERVICE]%22%7D%5D,%22range%22:%7B%22from%22:%22now-1h%22,%22to%22:%22now%22%7D%7D%7D&orgId=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"

The problem is not related to the reverse proxy that is fronting Grafana, I can get the same error by port-forwarding Grafana 3000 port. It’s not easy at the moment to test with Jaeger v2, but I can try to arrange it as soon as I can. In the meantime, if you have any advice about how to proceed, it would be great! Thanks :slight_smile:

The problem has been solved by upgrading to Grafana v12.2.0 (92f1fba9b4). The older Grafana v12.1.1 (df5de8219b) version was failing even in a local k8s, so I tried updating and the v12.2.0 is working correctly