Why Service Teams Should Monitor watsonx.ai With Instana
Picture a service desk assistant telling a customer their laptop order was cancelled. It wasn't. No alert fires: the API returned 200, the pods are healthy, the dashboard is green. Instana watsonx.ai tracing closes that gap by putting each call, token count and failure from your assistant into the same observability and incident flow as everything else you run.
Green dashboards, wrong answers
Classic monitoring answers "is the service up?" An AI assistant can be up and useless. A prompt that outgrows the context window, a call that times out under load, or a malformed prompt all arrive as "the assistant is being weird." With no trace, the on-call engineer has nothing to open except the complaint.
What Instana watsonx.ai tracing records
Instana's GenAI observability is built on OpenTelemetry and Traceloop's OpenLLMetry, and IBM lists watsonx.ai among the supported providers. According to IBM's GenAI observability page, it tracks latency, throughput, token usage and cost across models and services, and surfaces errors such as context-window limits, malformed prompts and timeouts. Traceloop's watsonx guide says calls to watsonx are logged with prompts and completions as separate spans.
That is a trace per request, a latency number per assistant and a cost line finance can ask about. Your service team already knows how to run all three.
Put assistant failures in your existing incident flow
The argument is about where the failure shows up, not about the model. If assistant problems live in a console only the AI team opens, they surface as tickets, and a ticket is the slowest alert system ever invented.
If they live in Instana next to the services the assistant calls, the same on-call rota, alert routing and trace view apply. Per IBM's tutorial, wrapping a function with a workflow decorator gives you a full trace of that workflow, so a slow answer can be pinned on the model call or on whatever ran around it. Naming each assistant also means the incident says service-desk-assistant, not "some LLM thing."
Set up Instana watsonx.ai tracing
This is the agent-based path, following Traceloop's guide and IBM's developer tutorial. IBM requires Python 3.10 or later.
Install the SDK and watsonx client
pip3 install traceloop-sdk langchain-ibm ibm-watsonx-ai
This adds the OpenLLMetry SDK and the LangChain wrapper for watsonx.ai.
Enable the OpenTelemetry plugin on the Instana agent
In /opt/instana/agent/etc/instana/configuration.yaml, add:
com.instana.plugin.opentelemetry:
enabled: true
grpc:
enabled: true
Then run systemctl restart instana-agent.service. On Kubernetes or OpenShift, the same block goes in the Instana ConfigMap, plus a volume mount described in Traceloop's Instana guide.
Point the SDK at the agent
export TRACELOOP_BASE_URL=<instana-agent-hostname>:4317
export WATSONX_URL=<your-watsonx-url>
export PROJECT_ID=<your-project-id>
export API_KEY=<your-api-key>
The agent accepts OpenTelemetry data on port 4317. Leave off the http:// prefix, as in the docs examples.
Instrument the assistant
import os
from langchain_ibm import WatsonxLLM
from traceloop.sdk import Traceloop
from traceloop.sdk.decorators import workflow
Traceloop.init(app_name="service-desk-assistant", disable_batch=True)
watsonx_llm = WatsonxLLM(
model_id="<your-model-id>",
url=os.environ["WATSONX_URL"],
apikey=os.environ["API_KEY"],
project_id=os.environ["PROJECT_ID"],
)
@workflow(name="answer_ticket_question")
def answer(question: str) -> str:
return watsonx_llm.invoke(question)
disable_batch=True sends spans immediately, which is documented for local work. Remove it in production.
Answering "it's one more tool" and "what about our prompts?"
One more tool. If you already run Instana, it isn't. IBM's announcement says the GenAI sensor is available to all Instana customers. If you don't, the case for Instana specifically is weaker, but the instrumentation is OpenTelemetry, so tracing assistants in your normal tooling still makes sense.
Prompt privacy. By default OpenLLMetry records prompts, completions and embeddings as span attributes, and ticket text is full of names and order numbers. Set TRACELOOP_TRACE_CONTENT=false and, per the Traceloop privacy docs, the SDK and its instrumentations respect it.
Gotchas
- IBM's tutorial pins older package versions (
traceloop-sdk0.38.7), so expect to adapt it. - A February 2026 post on the IBM community site describes the older OTel data collector for GenAI as deprecated, with pricing now managed in the Instana UI. Check IBM's getting-started page for your Instana version before copying a setup.
Take one assistant through staging first
Pick the assistant that generates the most tickets. Instrument it in staging with content tracing off, send one realistic request, then open the trace and check what it contains. Then route one alert on that app name, latency or error rate, to the on-call rota that already covers your other services.
When an AI assistant breaks in production, the team that fixes it fastest is the one that can see it on the same screen as everything else.