Skip to content

Observability

Genkit Java provides comprehensive observability through OpenTelemetry integration. All actions (models, tools, flows) are automatically instrumented.

All actions are automatically traced with rich metadata:

AttributeDescription
genkit:nameAction name (e.g., openai/gpt-4o-mini)
genkit:typeaction, flow, flowStep, util
genkit:metadata:subtypemodel, tool, flow, embedder, etc.
genkit:pathFull execution path
genkit:inputFull request data
genkit:outputFull response data
genkit:sessionIdSession identifier for multi-turn conversations

Example trace span:

genkit:name = "openai/gpt-4o-mini"
genkit:type = "action"
genkit:metadata:subtype = "model"
genkit:path = "/{myFlow,t:flow}/{openai/gpt-4o-mini,t:action,s:model}"
genkit:sessionId = "user-123"

The SDK exposes OpenTelemetry metrics for monitoring:

MetricDescription
genkit/ai/generate/requestsRequest count
genkit/ai/generate/latencyLatency (ms)
genkit/ai/generate/input/tokensInput token count
genkit/ai/generate/output/tokensOutput token count
genkit/ai/generate/input/charactersInput character count
genkit/ai/generate/output/charactersOutput character count
genkit/ai/generate/input/imagesInput image count
genkit/ai/generate/output/imagesOutput image count
genkit/ai/generate/thinking/tokensThinking/reasoning token count
MetricDescription
genkit/tool/requestsTool execution request count
genkit/tool/latencyTool execution latency (ms)
genkit/feature/requestsFlow request count
genkit/feature/latencyFlow latency (ms)
genkit/action/requestsGeneral action request count
genkit/action/latencyGeneral action latency (ms)

All metrics include attributes: modelName, featureName, path, status (success/failure), and source (java).

Model responses include detailed usage statistics:

ModelResponse response = genkit.generate(options);
Usage usage = response.getUsage();
System.out.println("Input tokens: " + usage.getInputTokens());
System.out.println("Output tokens: " + usage.getOutputTokens());
System.out.println("Latency: " + response.getLatencyMs() + "ms");

For production deployments, the Firebase plugin can export telemetry to Google Cloud:

FirebasePlugin.builder()
.projectId("my-project")
.enableTelemetry(true) // Cloud Trace, Monitoring, Logging
.forceDevExport(true) // Also export in dev mode
.build()