Skip to content

dashboards: add initial agentgateway dashboard#3

Merged
jenshu merged 2 commits into
kgateway-dev:mainfrom
howardjohn:dash/agw
Dec 18, 2025
Merged

dashboards: add initial agentgateway dashboard#3
jenshu merged 2 commits into
kgateway-dev:mainfrom
howardjohn:dash/agw

Conversation

@howardjohn

Copy link
Copy Markdown
Contributor

Description

add initial agentgateway dashboard

Change Type

/kind feature

Changelog

Added Agentgateway dashboard

Additional Notes

Signed-off-by: John Howard <john.howard@solo.io>
@howardjohn

Copy link
Copy Markdown
Contributor Author

cc @dhaifley

@dhaifley dhaifley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some issues trying to test this. The agentgateway_build_info metric is somehow getting turned into agentgateway_build when it hits prometheus in my test setup. Inspecting the output of /metrics HELP / TYPE:

# HELP agentgateway_build Agentgateway build information.
# TYPE agentgateway_build info
agentgateway_build_info{tag="0.10.5"} 1

And, the _info part is stripped resulting in queries not working for me.

"x": 0,
"y": 53
},
"id": 0,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Panel id's are all 0 and query refId's are all "", but that did not cause any errors for me, so just a nit.

"repeatDirection": "h",
"targets": [
{
"expr": "sum(label_replace(sum by (pod,namespace) (container_memory_working_set_bytes{image=\"\",namespace=~\"$namespace\"}), \"nsnameexists\", \"yes\", \"namespace\", \".*\") / on(pod, namespace, nsnameexists) label_replace(label_join(agentgateway_build_info, \"nsname\", \"/\", \"namespace\", \"gateway_networking_k8s_io_gateway_name\"), \"nsnameexists\", \"yes\", \"nsname\", \"$gateway\")) without (nsnameexists)",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The agentgateway_build_info metric does not seem to exist for me. I see just agentgateway_build. This is causing issues with several expressions and queries for me.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed in agentgateway/agentgateway#689, its a bug in agentgateway making prometheus fail to parse the metrics

"label": "Gateway",
"multi": true,
"name": "gateway",
"query": "query_result(label_join(agentgateway_build_info{namespace=~\"$namespace\"}, \"text\", \"/\", \"namespace\", \"gateway_networking_k8s_io_gateway_name\"))",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These variables don't have a default datasource and the query for gateway does not work in my test setup.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack, it worked for me sinec my install had a "default" data source set. I made it explicit

@howardjohn

Copy link
Copy Markdown
Contributor Author

I ran into some issues trying to test this. The agentgateway_build_info metric is somehow getting turned into agentgateway_build when it hits prometheus in my test setup. Inspecting the output of /metrics HELP / TYPE:

# HELP agentgateway_build Agentgateway build information.
# TYPE agentgateway_build info
agentgateway_build_info{tag="0.10.5"} 1

And, the _info part is stripped resulting in queries not working for me.

I think this is related to an issue in the openmetrics parsing in the kgateway otel stack setup. I have been meaning to debug this orthogonally to this dashboard. will report back

@howardjohn

Copy link
Copy Markdown
Contributor Author

hmm, there is one issue. The dashboard expects the pod labels, namely gateway_networking_k8s_io_gateway_name to be added to the labels. But my setup following https://kgateway.dev/docs/envoy/latest/observability/otel-stack/#prometheus doesn't have that. I expect we need to specify it in the podMonitor probably

Signed-off-by: John Howard <john.howard@solo.io>

@dhaifley dhaifley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@howardjohn

Copy link
Copy Markdown
Contributor Author

@timflannagan can you get this merged?

@jenshu jenshu added this pull request to the merge queue Dec 18, 2025
Merged via the queue into kgateway-dev:main with commit ed6c5b2 Dec 18, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants