Skip to content

Commit 60a6322

Browse files
authored
feat(chatbot): report status to OpAMP server (open-telemetry#3808)
* feat(chatbot): report status to OpAMP server Assisted-by: GPT-5.5 * docs(chatbot): update OpAMP changelog link Assisted-by: GPT-5.5 * fix(chatbot): harden OpAMP transport * fix(chatbot): scope OpAMP compose settings * fix(chatbot): keep OpAMP config in agentic layer Assisted-by: GPT-5.6 Sol
1 parent 18f4ce5 commit 60a6322

6 files changed

Lines changed: 350 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ the release.
2323
* [cart] Report health to the demo's OpAMP server when running with the
2424
observability stack.
2525
([#3656](https://github.com/open-telemetry/opentelemetry-demo/pull/3656))
26+
* [chatbot] Report health to the demo's OpAMP server when running with the
27+
agentic and observability stacks.
28+
([#3808](https://github.com/open-telemetry/opentelemetry-demo/pull/3808))
2629
* [payment] Add `error.type` attribute to error spans in `charge.js` and
2730
`index.js` to align with OpenTelemetry Semantic Conventions for errors
2831
([#3758](https://github.com/open-telemetry/opentelemetry-demo/issues/3758))

compose.agent.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,13 @@ services:
114114
- OTEL_SERVICE_NAME=chatbot
115115
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
116116
- OTEL_EXPORTER_OTLP_INSECURE=true
117+
- OPAMP_SERVER_ENDPOINT=https://${OPAMP_SERVER_HOST}:4320/v1/opamp
118+
- OPAMP_SERVER_TLS_INSECURE_SKIP_VERIFY=true
117119
depends_on:
118120
agent:
119121
condition: service_started
122+
opamp-server:
123+
condition: service_healthy
120124
logging:
121125
driver: "json-file"
122126
options:

src/chatbot/requirements.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ fastapi==0.141.1
55
gradio==6.24.0
66
opentelemetry-api==1.44.0
77
opentelemetry-sdk==1.44.0
8+
opentelemetry-opamp-client==0.3b0
89
opentelemetry-exporter-otlp-proto-http==1.44.0
910
opentelemetry-instrumentation-requests==0.65b0
1011
opentelemetry-instrumentation-httpx==0.65b0
12+
websocket-client==1.9.0

src/chatbot/requirements.txt

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,7 @@ opentelemetry-api==1.44.0 \
606606
# opentelemetry-instrumentation
607607
# opentelemetry-instrumentation-httpx
608608
# opentelemetry-instrumentation-requests
609+
# opentelemetry-opamp-client
609610
# opentelemetry-sdk
610611
# opentelemetry-semantic-conventions
611612
opentelemetry-exporter-otlp-proto-common==1.44.0 \
@@ -630,6 +631,10 @@ opentelemetry-instrumentation-requests==0.65b0 \
630631
--hash=sha256:1d601548f89236d5ab373c7208a2e1e162a8d6462b5b972f9ad8fb0ed82d7438 \
631632
--hash=sha256:91688ec0d4d1fed75ea8d026ef2c66274ed9868c22b6be211ef85d832d16f957
632633
# via -r requirements.in
634+
opentelemetry-opamp-client==0.3b0 \
635+
--hash=sha256:b78c9e47438647941181e18c1695ee69a7497e75aaf7eb0b99046e96a7407159 \
636+
--hash=sha256:e49e4a49e5177fa20feef6a96760aeae4f84060ce2058a8da29a43354b74ee7d
637+
# via -r requirements.in
633638
opentelemetry-proto==1.44.0 \
634639
--hash=sha256:898b155a0e1557afd867478fb6158e8122a46329ca0bb8dc53cc55e98f017f56 \
635640
--hash=sha256:c547a79c2f8c0c515d31509154682e5921c7cfd5ca67b70e1f9266e2c3e103f3
@@ -899,6 +904,7 @@ protobuf==6.33.6 \
899904
--hash=sha256:f443a394af5ed23672bc6c486be138628fbe5c651ccbc536873d7da23d1868cf
900905
# via
901906
# googleapis-common-protos
907+
# opentelemetry-opamp-client
902908
# opentelemetry-proto
903909
pydantic==2.12.4 \
904910
--hash=sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac \
@@ -1208,10 +1214,110 @@ urllib3==2.7.0 \
12081214
--hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \
12091215
--hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897
12101216
# via requests
1217+
uuid-utils==0.17.0 \
1218+
--hash=sha256:03815cea572c8a693cab5475b9d750cc161470961c7defa27e9286cad62f38f5 \
1219+
--hash=sha256:04452640d8b6920c480c16e5afe91ff896d236e0c972830f9247e0898d38c803 \
1220+
--hash=sha256:09a55b7a5ae764985cb46467496a1787678d0a1400356157a080ad95b1a36869 \
1221+
--hash=sha256:0ab4a66e7a035ad6625cfc1fbdb34f5c2d25a80ae1ef4bfee458ea2036333c6d \
1222+
--hash=sha256:0bc4c431ccd59c764080ceb43b126043325fe17861b87759d026a0cdd8423bb2 \
1223+
--hash=sha256:0f3729e839209f3457d0d8b6a35a376fdf65577a5aecaf4cc3587d3305759ba6 \
1224+
--hash=sha256:0fcca4e838af9ac9243b3358d7c14afa4dca286a87781124c272d6c4cad9c968 \
1225+
--hash=sha256:1019476b6bdc047216ef7414be5babe0fa5ccfde977c0cac4fd6c75ddec66ff7 \
1226+
--hash=sha256:14dc2f46abb1091260c0d203fcbdf4e045042cc07e49183fd3b255904b95eb70 \
1227+
--hash=sha256:1776a80d16369999b21627028cc5dbce819be83e1e079fdd7a51b587d2916db9 \
1228+
--hash=sha256:1edf2f8732e4ed95bd7b65f2658f4aa072efaaff321144f4e0d4bf6a22709263 \
1229+
--hash=sha256:1fd6f0e8a162dc0e9255b6aebe3cd175e76c33202f1bf39da9e6294b93db0099 \
1230+
--hash=sha256:21c79b61ff750abcf057163dd764ccb6196cde7a26cda1b31b45cd97769e03b3 \
1231+
--hash=sha256:220b52746d99e11964badac3c0869016e0c24bafb70a7dd5c2c072a6be3da9cc \
1232+
--hash=sha256:237722b6581bb5b4eb4cefbcbe5c6e2980a440aabe781fbe50ebf1cb71eee4cc \
1233+
--hash=sha256:239d8a281fe10bae33205b5d43185834d556b18434e0a113b5dc1dfb2fd97e91 \
1234+
--hash=sha256:29179ffb7b317239b6d6afb100d14c439c728770460718280b9c0a42d2561ec2 \
1235+
--hash=sha256:2db386941cfdecdd0b5a8ceeed5cf7479c83d1730dcf64a48d43cfa018cc3310 \
1236+
--hash=sha256:2dd4a21baaac9a88486f0dd166c5793feb101a0bb9f006f2c401657fff5a1343 \
1237+
--hash=sha256:309a35f12d99dde19032bc2259cda6431c85eeac0879134dc777cc3087d7e1cb \
1238+
--hash=sha256:3150d836290c88f1d26eb59c4db280d87417dd3bfaadd2889c77416c8f0ff6fa \
1239+
--hash=sha256:32abaafc8e91928b3d9f4d82e42d2094041e38ad6bb964066faadff28e4162f1 \
1240+
--hash=sha256:32df1944808877702ceea398c103881c09a679bb672a215e01c2a84231266bf9 \
1241+
--hash=sha256:344f7c755e280ea0ba6aeb08022190d867a80000b1715cacded54fc4b5633607 \
1242+
--hash=sha256:351462debd866f1f25e4d4f5c7fac89525b52151f0102a1bdfe94a999b046f5f \
1243+
--hash=sha256:375cde148430d60a4a07c03abaa0774c4fddfdd90de99b4ba02f24088bc9d750 \
1244+
--hash=sha256:387cf7437c94ddec08651a0f1081381299c7075bc48a6251d8922bf39973378a \
1245+
--hash=sha256:3dac0ad0cd9a2818d1775215365a4e8c2f8ada215529dd26f3f8cceeb67a6988 \
1246+
--hash=sha256:405233a5f625b3d995648f4647fa6befa4567cf3f74e1f6b9837e16f7310f0e0 \
1247+
--hash=sha256:4134353bfe3026ddab8e886002dc52bc5a0ab04611aabb0eaae23c32e6e57f64 \
1248+
--hash=sha256:42275ebd0e8e74e32cdbfb8bd88fc99576567d51d54a508020611fd8f4f463a0 \
1249+
--hash=sha256:4441600447d340ae103a353f01dbcd22ff680e5ee1a22988efe8d7b791d8fdb3 \
1250+
--hash=sha256:46a73cacdf512f473a81f65dbf84186e08cfe6e9118fa582b6c6b33a8288a30d \
1251+
--hash=sha256:4bf4d9cd1e80e73922073b9b27c143bedeb109d65f94cd12712e2c87118f2b7d \
1252+
--hash=sha256:4e2ac1c0b56f2c91b6f158e29ed96b1503223fe8aa6e79b1be1dc55bd8a5131c \
1253+
--hash=sha256:52db0e471d3d2632d35445af352591f40a8f32959a412981d9f51e068bb9514b \
1254+
--hash=sha256:53ce348ef4c6e98c02c19c522af01334fe94476ce9af0db8c4482f9f142ae9c1 \
1255+
--hash=sha256:5641071337eb11d61a001ea08793bf72216f3241f0a433ed2764804b2a3e3cc7 \
1256+
--hash=sha256:5670c52a438e21483ce715776144914a4e2a2a5c62d9dee15f8a3e90cf128ae6 \
1257+
--hash=sha256:56aa6488b931246fae11924e4bd0e2b32677e63945eecb71c29e3c2ca0dc3131 \
1258+
--hash=sha256:570db214f6d8507587a8faa968a3fe65e957daeb7bc48b27dc7f69bc3ecdd6f1 \
1259+
--hash=sha256:58838921e377791ef22c64cc92141bfae030f43651ff9272f0f28a208a9e6a5a \
1260+
--hash=sha256:589d9da7de8fa7f739bb970ac4632c9a268213117d634e1c4a58c1c1e821ca05 \
1261+
--hash=sha256:5a4370089c8b2e42f1db51d76408c7fa8eaa2934bf854d17983d16179c07c098 \
1262+
--hash=sha256:622cdde768300591ac79bfcd7bb3468e4b191b1105d5dbfe8d87c39d8f63dd46 \
1263+
--hash=sha256:673d89cc434cc9b97a0b4cf61272f6fca70a81f64eb0afbface2a0d9f77f06cd \
1264+
--hash=sha256:6a019a31bc4db89a0903a3e4f6b218571f3a6ff0ad4b3d3fe1c8f91a05ff6e3e \
1265+
--hash=sha256:6c142bd0cb4dba31c10babe00d59f7ef6460f0ef55eaa9c1a9da270684af996a \
1266+
--hash=sha256:6f29689a76fe7a49cbd629a794d0ec1eab48814e323a00a146a741b0195bde68 \
1267+
--hash=sha256:75d7411e8eb9259764dd60310738540649057cda4509b4af14b36b7f663bfeb0 \
1268+
--hash=sha256:793229621e1ad6cac55f015cfa9f4eff102accbc3da25d607b91c6b0bec167fb \
1269+
--hash=sha256:7a49f47ac26df3e431c56b825c1bae8e6d3d591fdbb7438c227cc9845a7e3d73 \
1270+
--hash=sha256:7b9044ce4acbf392d4b3a503fe377641f4deff82e6c341c36ef27af0dea76cdf \
1271+
--hash=sha256:7c89359affecebe2e39e6a116d069b363c936511a9572b308402489a26957d89 \
1272+
--hash=sha256:84ed3a2d5cd3ae6db87af20bfed3331116195ba4757ad7177fc8f12c1bbce2a9 \
1273+
--hash=sha256:89a0980d49683c00539c59cd9f46b1908c538e6b5b0a48ad12187bb856d0f391 \
1274+
--hash=sha256:8b72c2002202038666bf647f9a790906214c7c11cd0d6efef77b7d07bef3034a \
1275+
--hash=sha256:8eb3e5caca8d3a6f72ea4cce024583f989f6f2e9186f98800213fff0176e8bcc \
1276+
--hash=sha256:9082e709014946b1f6e96ae6ecd93652efca2d2a6a3ab67dbe151c8b4bf193a4 \
1277+
--hash=sha256:9205068badf453d2f0821fd5d340389b4679992d7ff79d4f3e5608996dd1b287 \
1278+
--hash=sha256:9472a8de37faf8bd216c628e0e68c8f6bef730d3ba0a5060f3b0fa460c992ac2 \
1279+
--hash=sha256:967955620df45e6cffe2e9950cb9903cb455649396f896b26b04363a91a5054b \
1280+
--hash=sha256:975c17da26c5b9d46c336b03c52a057ac28378d6f9d98b58d32a038589bb3912 \
1281+
--hash=sha256:981cc10163988defea96e8d6c507df151eab8f483e7df9ae543d5a41a4be073b \
1282+
--hash=sha256:98c88d3edd08e7245562e9815996dbc6f0bd4745e1c76462f24af5ae4e187dd1 \
1283+
--hash=sha256:9a91c4814c7150a4d798da691b7804eacd78c4b84fb392a60fa0de21341861eb \
1284+
--hash=sha256:9e311f908d2f842fca4c7dcebc4f10306b8089b204ef04cf6704b4332c9ff6ff \
1285+
--hash=sha256:9e753e81457241e2200c56a898e268e8fa25796271af0489c608f24d8e631eed \
1286+
--hash=sha256:a46bedc273b6f58f11dee816ff74999625ef8d007890f411b7a4975bf1c89330 \
1287+
--hash=sha256:abb5667a36119019b3fa320c4d10c21ebccfcc87c8a739e6a0056cee7f48dde2 \
1288+
--hash=sha256:b3131a82d0c7611f0aa480a6d36929e001a3f54ba0fc029a8118a5863cce513c \
1289+
--hash=sha256:b5d11cccba076a32321ef1380dea956821f0b51794ef59df64e58fb1cd543aae \
1290+
--hash=sha256:b6c5d2d71e1f17329150ad9427d27f4a3f29a01792e7ecdc64a98ac5368fc4d5 \
1291+
--hash=sha256:b776c7fc8755c7de06dd5a22b47c40ae84f67d13277ebb233cc84933ba4dcbcd \
1292+
--hash=sha256:c00d182e31034250690f417b9068b78eab423c10d76766664e82d9860c340479 \
1293+
--hash=sha256:c351737e2e65497c7200ab4ffb8af97e9f48be6488309abdd265fe08d66ee92f \
1294+
--hash=sha256:c4f845166b09acc65c5213a35551a7f81c17fa010ab467229b5813f79d17fe13 \
1295+
--hash=sha256:c589f5023d471ce75dd2cce61acb25ed6347e562041588a1a366808f22d7176c \
1296+
--hash=sha256:cee808b405e9095506f4e4e89924bec7ea77eac3129b6fe36eda04364b3b343b \
1297+
--hash=sha256:d11a7bc1e02da8984d32e6de9e0826c6edac00eac17de270f372bf32f9a0af63 \
1298+
--hash=sha256:d27c531edb8d1f38ca2eddaa1fa24913a460aeb721f2efd4ef42a124ce94e354 \
1299+
--hash=sha256:d2d9a63a9e6f2416ace8c109043a9280d6b34f34bb2e5421903e149403db40a6 \
1300+
--hash=sha256:d561a4c5747a1e6c7fa7c49a0292e78b4e8c456332caa084fc7abad8de828652 \
1301+
--hash=sha256:d63010803d7c368963bbe6f7ec379593e76dd581d7db0f29118d88713c9e0354 \
1302+
--hash=sha256:dd741c73440b328f937dc53b344ecadc46bc4f0cec0333a8f42b55f3468ce7ec \
1303+
--hash=sha256:de1064663aa7c839286488a319d2b3b478ca5ab5b2091ade888ed0eeca11a98a \
1304+
--hash=sha256:e252db239eb41c32248e096e0d170bce5896a4fd3405556362bc3dd83d912206 \
1305+
--hash=sha256:e288a06cbbbcd01b44386e767985c9e21d2ad9bf59829aa7058d9a2a494804ab \
1306+
--hash=sha256:e59b60a0a4cb7541480e02090d37dc2df3b72df4c2e776fff64ce3a4e3dd4637 \
1307+
--hash=sha256:e671b2322ef09106ecb1ca0f4c398b134d5e2c1f80d7a4f3336847a3072c0e94 \
1308+
--hash=sha256:e7b04935a79c03c41ad08d0a5f390aac968bfb561f1268897bc5b0f077971efd \
1309+
--hash=sha256:f7e9b8728ba07a3cb2f29d5aa1a266c2664eb8ef0fd43afa34627c92f7fac8f0 \
1310+
--hash=sha256:f9b093cb3b6c9d6233ef45a05cab064d2aa0a8cb3c5777084c9e20fcb77c2371 \
1311+
--hash=sha256:fae8b282f0cb22a5de222999f7723f4e5ec04f6fcdf4aaef879b5b36625ae2b0
1312+
# via opentelemetry-opamp-client
12111313
uvicorn==0.49.0 \
12121314
--hash=sha256:ba3d14c3ee7e41c6c654c46c9eb489d33213cdd30aa1696eab1374337c13f68f \
12131315
--hash=sha256:ebf4271aa580d9de97f93192d4595176df6e91f9aae919ca73e4fc07df1e66a3
12141316
# via gradio
1317+
websocket-client==1.9.0 \
1318+
--hash=sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98 \
1319+
--hash=sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef
1320+
# via -r requirements.in
12151321
wrapt==1.17.3 \
12161322
--hash=sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56 \
12171323
--hash=sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828 \

src/chatbot/run.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from opentelemetry.sdk.trace import TracerProvider
1616
from opentelemetry.sdk.trace.export import BatchSpanProcessor
1717
from src.chat_interface.chat_interface import ChatAgentUI, get_chat_ui_config
18+
from src.opamp import start_opamp_agent, stop_opamp_agent
1819

1920
logging.basicConfig(level=logging.INFO)
2021

@@ -35,13 +36,17 @@ def _configure_tracing() -> None:
3536

3637
async def start_servers():
3738
"""Runs chatbot server"""
39+
opamp_agent = start_opamp_agent()
3840
tasks = []
3941

4042
chat_ui_config = get_chat_ui_config()
4143
chat_interface = ChatAgentUI(chat_ui_config)
4244
tasks.append(asyncio.to_thread(chat_interface.launch))
4345

44-
await asyncio.gather(*tasks)
46+
try:
47+
await asyncio.gather(*tasks)
48+
finally:
49+
stop_opamp_agent(opamp_agent)
4550

4651

4752
if __name__ == "__main__":

0 commit comments

Comments
 (0)