Skip to content

✨ Add exemplars to prometheus metrics #7644

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
2f441e3
factor out metrics creation
bisgaard-itis May 7, 2025
4b3dc93
factor out metrics into a separate dataclass
bisgaard-itis May 7, 2025
efb6559
factor out recording of metrics
bisgaard-itis May 7, 2025
a2a50d9
move comment to metrics file
bisgaard-itis May 7, 2025
29dbf31
add one histogram with lots of buckets and one with lots of labels
bisgaard-itis May 7, 2025
9751d8f
add tracing exemplars to metrics
bisgaard-itis May 7, 2025
8d675ca
dont add labels to histogram with lots of buckets
bisgaard-itis May 7, 2025
38ea330
add appname as label
bisgaard-itis May 7, 2025
c79a878
use new prometheus middleware in fastapi
bisgaard-itis May 7, 2025
7d435f1
prometheus_instrumentation.py -> monitoring.py
bisgaard-itis May 7, 2025
bd785d9
update imports prometheus_instrumentation -> monitoring
bisgaard-itis May 7, 2025
91ad16e
avoid calls to labels when no labels available
bisgaard-itis May 7, 2025
a743225
dont include /metrics in OAS
bisgaard-itis May 7, 2025
a883e6d
handle exceptions in fastapi prometheus middleware
bisgaard-itis May 7, 2025
d1b9e18
remove comment
bisgaard-itis May 7, 2025
0d9584f
@GitHK pr feedback
bisgaard-itis May 7, 2025
6481c9a
properly expose metrics so exemplars are available
bisgaard-itis May 7, 2025
89ae9e8
@sanderegg clean up monitoring middlewares
bisgaard-itis May 9, 2025
46f1ace
add test for fastapi prometheus middleware
bisgaard-itis May 9, 2025
de87f25
Merge branch '7635-add-exemplars-to-prometheus-metrics' of github.com…
bisgaard-itis May 9, 2025
7e100e4
ensure prometheus metrics are exposed in correct format
bisgaard-itis May 9, 2025
43092e2
fix comment
bisgaard-itis May 9, 2025
5344eb0
fix order of middlewares
bisgaard-itis May 9, 2025
1202325
append aiohttp prometheus middleware
bisgaard-itis May 9, 2025
6b9b592
add tests for aiohttp
bisgaard-itis May 9, 2025
3ad843a
remove fastapi instrumentor from .in file
bisgaard-itis May 9, 2025
65b8ecc
@sanderegg remove fastapi prometheus tool
bisgaard-itis May 9, 2025
97d0844
Merge branch 'master' into 7635-add-exemplars-to-prometheus-metrics
bisgaard-itis May 9, 2025
a13c9ae
fix pylint tests
bisgaard-itis May 9, 2025
04b947b
constrain on base requirements in servicelib
bisgaard-itis May 9, 2025
98244c4
fix tests
bisgaard-itis May 9, 2025
7ed533a
Merge branch 'master' into 7635-add-exemplars-to-prometheus-metrics
bisgaard-itis May 19, 2025
ce7fc72
@pcrespov remove comment
bisgaard-itis May 19, 2025
f346ab2
make pylint happy
bisgaard-itis May 19, 2025
5030332
fix tests
bisgaard-itis May 19, 2025
2df6b54
Merge branch 'master' into 7635-add-exemplars-to-prometheus-metrics
bisgaard-itis May 19, 2025
ef82189
raise from to make pylint happy
bisgaard-itis May 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/service-library/requirements/_aiohttp.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
#

--constraint ./_base.in
--constraint ./_base.txt

aiohttp
aiopg[sa]
Expand Down
70 changes: 41 additions & 29 deletions packages/service-library/requirements/_aiohttp.txt
Original file line number Diff line number Diff line change
@@ -1,52 +1,64 @@
aiohappyeyeballs==2.4.6
# via aiohttp
# via
# -c requirements/./_base.txt
# aiohttp
aiohttp==3.11.18
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# -c requirements/./_base.txt
# -r requirements/_aiohttp.in
aiopg==1.4.0
# via -r requirements/_aiohttp.in
aiosignal==1.3.2
# via aiohttp
# via
# -c requirements/./_base.txt
# aiohttp
async-timeout==4.0.3
# via aiopg
attrs==25.1.0
# via
# -c requirements/./_base.txt
# -r requirements/_aiohttp.in
# aiohttp
# jsonschema
# referencing
deprecated==1.2.18
# via
# -c requirements/./_base.txt
# opentelemetry-api
# opentelemetry-semantic-conventions
frozenlist==1.5.0
# via
# -c requirements/./_base.txt
# aiohttp
# aiosignal
greenlet==3.1.1
# via sqlalchemy
idna==3.10
# via yarl
# via
# -c requirements/./_base.txt
# yarl
importlib-metadata==8.5.0
# via opentelemetry-api
# via
# -c requirements/./_base.txt
# opentelemetry-api
jsonschema==4.23.0
# via -r requirements/_aiohttp.in
# via
# -c requirements/./_base.txt
# -r requirements/_aiohttp.in
jsonschema-specifications==2024.10.1
# via jsonschema
# via
# -c requirements/./_base.txt
# jsonschema
markupsafe==3.0.2
# via werkzeug
multidict==6.1.0
# via
# -c requirements/./_base.txt
# aiohttp
# yarl
opentelemetry-api==1.30.0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-aiohttp-server
Expand All @@ -55,6 +67,7 @@ opentelemetry-api==1.30.0
# opentelemetry-semantic-conventions
opentelemetry-instrumentation==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-aiohttp-server
# opentelemetry-instrumentation-aiopg
Expand All @@ -69,20 +82,25 @@ opentelemetry-instrumentation-dbapi==0.51b0
# via opentelemetry-instrumentation-aiopg
opentelemetry-semantic-conventions==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-aiohttp-server
# opentelemetry-instrumentation-dbapi
opentelemetry-util-http==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-aiohttp-server
packaging==24.2
# via opentelemetry-instrumentation
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation
prometheus-client==0.21.1
# via -r requirements/_aiohttp.in
propcache==0.3.0
# via
# -c requirements/./_base.txt
# aiohttp
# yarl
psycopg2-binary==2.9.10
Expand All @@ -91,38 +109,32 @@ psycopg2-binary==2.9.10
# sqlalchemy
referencing==0.35.1
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# -c requirements/./_base.txt
# jsonschema
# jsonschema-specifications
rpds-py==0.23.1
# via
# -c requirements/./_base.txt
# jsonschema
# referencing
sqlalchemy==1.4.54
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# aiopg
# via aiopg
werkzeug==3.1.3
# via -r requirements/_aiohttp.in
wrapt==1.17.2
# via
# -c requirements/./_base.txt
# deprecated
# opentelemetry-instrumentation
# opentelemetry-instrumentation-aiohttp-client
# opentelemetry-instrumentation-aiohttp-server
# opentelemetry-instrumentation-aiopg
# opentelemetry-instrumentation-dbapi
yarl==1.18.3
# via aiohttp
# via
# -c requirements/./_base.txt
# aiohttp
zipp==3.21.0
# via importlib-metadata
# via
# -c requirements/./_base.txt
# importlib-metadata
3 changes: 1 addition & 2 deletions packages/service-library/requirements/_fastapi.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#
#

--constraint ./_base.in
--constraint ./_base.txt


fastapi
Expand All @@ -12,5 +12,4 @@ httpx
opentelemetry-instrumentation-fastapi
opentelemetry-instrumentation-httpx
prometheus-client
prometheus-fastapi-instrumentator
uvicorn
74 changes: 34 additions & 40 deletions packages/service-library/requirements/_fastapi.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
annotated-types==0.7.0
# via pydantic
# via
# -c requirements/./_base.txt
# pydantic
anyio==4.8.0
# via
# -c requirements/./_base.txt
# httpx
# starlette
asgiref==3.8.1
# via opentelemetry-instrumentation-asgi
certifi==2025.1.31
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# -c requirements/./_base.txt
# httpcore
# httpx
click==8.1.8
# via uvicorn
# via
# -c requirements/./_base.txt
# uvicorn
deprecated==1.2.18
# via
# -c requirements/./_base.txt
# opentelemetry-api
# opentelemetry-semantic-conventions
fastapi==0.115.11
Expand All @@ -35,29 +36,27 @@ h11==0.14.0
httpcore==1.0.7
# via httpx
httpx==0.28.1
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# -r requirements/_fastapi.in
# via -r requirements/_fastapi.in
idna==3.10
# via
# -c requirements/./_base.txt
# anyio
# httpx
importlib-metadata==8.5.0
# via opentelemetry-api
# via
# -c requirements/./_base.txt
# opentelemetry-api
opentelemetry-api==1.30.0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-fastapi
# opentelemetry-instrumentation-httpx
# opentelemetry-semantic-conventions
opentelemetry-instrumentation==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-fastapi
# opentelemetry-instrumentation-httpx
Expand All @@ -69,48 +68,40 @@ opentelemetry-instrumentation-httpx==0.51b0
# via -r requirements/_fastapi.in
opentelemetry-semantic-conventions==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-fastapi
# opentelemetry-instrumentation-httpx
opentelemetry-util-http==0.51b0
# via
# -c requirements/./_base.txt
# opentelemetry-instrumentation-asgi
# opentelemetry-instrumentation-fastapi
# opentelemetry-instrumentation-httpx
packaging==24.2
# via opentelemetry-instrumentation
prometheus-client==0.21.1
# via
# -r requirements/_fastapi.in
# prometheus-fastapi-instrumentator
prometheus-fastapi-instrumentator==7.0.2
# -c requirements/./_base.txt
# opentelemetry-instrumentation
prometheus-client==0.21.1
# via -r requirements/_fastapi.in
pydantic==2.10.6
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# -c requirements/./_base.txt
# fastapi
pydantic-core==2.27.2
# via pydantic
# via
# -c requirements/./_base.txt
# pydantic
sniffio==1.3.1
# via anyio
starlette==0.46.0
# via
# -c requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/models-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../packages/common-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
# -c requirements/../../../requirements/constraints.txt
# fastapi
# prometheus-fastapi-instrumentator
# -c requirements/./_base.txt
# anyio
starlette==0.46.0
# via fastapi
typing-extensions==4.12.2
# via
# -c requirements/./_base.txt
# anyio
# fastapi
# pydantic
Expand All @@ -119,8 +110,11 @@ uvicorn==0.34.0
# via -r requirements/_fastapi.in
wrapt==1.17.2
# via
# -c requirements/./_base.txt
# deprecated
# opentelemetry-instrumentation
# opentelemetry-instrumentation-httpx
zipp==3.21.0
# via importlib-metadata
# via
# -c requirements/./_base.txt
# importlib-metadata
Loading
Loading