Observability
Robi AI exposes metrics that can be used to monitor the health and performance of the AI Service and AI MCP Server.
Accessing Metrics
Metrics are exposed by the AI Service through the following endpoints:
| Endpoint | URL | Description |
|---|---|---|
| Prometheus | http://localhost:8081/ai/actuator/prometheus | Prometheus-compatible metrics scrape endpoint |
| Health | http://localhost:8081/ai/actuator/health | Service health status |
| Info | http://localhost:8081/ai/actuator/info | Build and version information (also exposed by the MCP Server) |
Replace localhost:8081/ai with the actual host and context path of your AI Service deployment if different.
Info endpoint example
AI:
{
"app": {
"name": "Stonebranch AI",
"version": "1.0.0-build.15",
"description": "Stonebranch AI service providing LLM-backed chat and analysis capabilities",
"groupId": "com.stonebranch",
"artifactId": "ai",
"release": "1.0.0",
"build": "15",
"buildDate": "2026-03-30 11:47"
}
}
AI MCP:
{
"app": {
"name": "Stonebranch AI MCP Server",
"version": "1.0.0-build.15",
"description": "Stonebranch AI MCP Server - Model Context Protocol Server for Universal Controller",
"groupId": "com.stonebranch",
"artifactId": "ai-mcp",
"release": "1.0.0",
"build": "15",
"buildDate": "2026-03-30T11:47:11Z"
}
}
All three endpoints are unauthenticated and do not require an API key, to support Prometheus scrapers, load balancer health checks, and other operational tooling.
In addition to the custom sb_ai_* metrics listed below, the AI Service and AI MCP Server also expose native metrics provided automatically by the underlying frameworks (Spring Boot, Spring AI, HikariCP, and Tomcat).
Provided Metrics
The tables below list all available metrics, organized by category. Each set of metrics is paired with an example output.
Build Info Metric
| Metric | Type | Description |
|---|---|---|
sb_ai_build | Gauge | Stonebranch AI build information. Tags expose build metadata: |
Example output
# HELP sb_ai_build Stonebranch AI build information.
# TYPE sb_ai_build gauge
sb_ai_build{application="stonebranch-ai",artifact="ai",build="15",build_date="2026-03-30 11:47",name="Stonebranch AI",release="1.0.0"} 1.0
Tool Metrics
| Metric | Type | Description |
|---|---|---|
sb_ai_tool_invocations_total | Counter | Total tool invocations (tags: tool, type, status) |
sb_ai_tool_errors_total | Counter | Total tool errors (tags: tool, type, error_type) |
sb_ai_tool_duration_seconds | Histogram | Tool call duration (tags: tool, type) |
sb_ai_tool_duration_seconds_max | Gauge | Tool call duration (tags: tool, type) |
sb_ai_mcp_connection_status | Gauge | MCP server connection status (1=connected, 0=disconnected) |
Example output
# HELP sb_ai_mcp_connection_status MCP server connection status (1=connected, 0=disconnected)
# TYPE sb_ai_mcp_connection_status gauge
sb_ai_mcp_connection_status{application="stonebranch-ai"} 1.0
# HELP sb_ai_tool_invocations_total Total tool invocations
# TYPE sb_ai_tool_invocations_total counter
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="get_script",type="mcp"} 1.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="get_task_instance",type="mcp"} 5.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="get_task_instance_audit",type="mcp"} 1.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="get_workflow_instance",type="mcp"} 2.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="list_task_instance_variables",type="mcp"} 2.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="list_task_instances_by_name",type="mcp"} 2.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="list_task_instances_by_workflow_instance_id",type="mcp"} 2.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="rerun_task_instance",type="mcp"} 2.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="update_task_instance_fields",type="mcp"} 1.0
sb_ai_tool_invocations_total{application="stonebranch-ai",status="success",tool="update_task_instance_variable",type="mcp"} 1.0
# HELP sb_ai_tool_duration_seconds Tool call duration
# TYPE sb_ai_tool_duration_seconds histogram
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="get_script",type="mcp"} 1
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="get_script",type="mcp"} 0.1980616
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="get_task_instance",type="mcp"} 5
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="get_task_instance",type="mcp"} 0.741137
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="get_task_instance_audit",type="mcp"} 1
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="get_task_instance_audit",type="mcp"} 0.8646789
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="get_workflow_instance",type="mcp"} 2
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="get_workflow_instance",type="mcp"} 0.0928934
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="list_task_instance_variables",type="mcp"} 2
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="list_task_instance_variables",type="mcp"} 0.2317003
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="list_task_instances_by_name",type="mcp"} 2
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="list_task_instances_by_name",type="mcp"} 12.1190015
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="list_task_instances_by_workflow_instance_id",type="mcp"} 2
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="list_task_instances_by_workflow_instance_id",type="mcp"} 0.0490662
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="rerun_task_instance",type="mcp"} 2
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="rerun_task_instance",type="mcp"} 0.1108538
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="update_task_instance_fields",type="mcp"} 1
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="update_task_instance_fields",type="mcp"} 0.4105858
sb_ai_tool_duration_seconds_count{application="stonebranch-ai",tool="update_task_instance_variable",type="mcp"} 1
sb_ai_tool_duration_seconds_sum{application="stonebranch-ai",tool="update_task_instance_variable",type="mcp"} 0.030197
# HELP sb_ai_tool_duration_seconds_max Tool call duration
# TYPE sb_ai_tool_duration_seconds_max gauge
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="get_script",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="get_task_instance",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="get_task_instance_audit",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="get_workflow_instance",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="list_task_instance_variables",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="list_task_instances_by_name",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="list_task_instances_by_workflow_instance_id",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="rerun_task_instance",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="update_task_instance_fields",type="mcp"} 0.0
sb_ai_tool_duration_seconds_max{application="stonebranch-ai",tool="update_task_instance_variable",type="mcp"} 0.0
Conversation Metrics
| Metric | Type | Description |
|---|---|---|
sb_ai_conversations_active | Gauge | Number of active conversations |
sb_ai_conversation_messages_total | Counter | Total messages by role (tags: role) |
The delta between role="user" and role="assistant" counts indicates requests that did not receive a successful LLM response.
Example output
# HELP sb_ai_conversations_active Number of active conversations
# TYPE sb_ai_conversations_active gauge
sb_ai_conversations_active{application="stonebranch-ai"} 3.0
# HELP sb_ai_conversation_messages_total Total conversation messages by role
# TYPE sb_ai_conversation_messages_total counter
sb_ai_conversation_messages_total{application="stonebranch-ai",role="user"} 17.0
sb_ai_conversation_messages_total{application="stonebranch-ai",role="assistant"} 17.0
LLM Metrics
| Metric | Type | Description |
|---|---|---|
gen_ai_client_token_usage_total | Counter | Measures number of input and output tokens used (tags: gen_ai_operation_name, gen_ai_request_model, gen_ai_response_model, gen_ai_system, gen_ai_token_type) |
gen_ai_client_operation_seconds | Histogram | LLM call duration (tags: error, gen_ai_operation_name, gen_ai_request_model, gen_ai_response_model, gen_ai_system) |
gen_ai_client_operation_seconds_max | Gauge | LLM call max duration |
gen_ai_client_operation_active_seconds | GaugeHistogram | In-flight LLM calls (tags: gen_ai_operation_name, gen_ai_request_model, gen_ai_response_model, gen_ai_system) |
gen_ai_client_operation_active_seconds_gcount | Gauge | In-flight LLM calls count (non-monotonic) |
gen_ai_client_operation_active_seconds_gsum | Gauge | In-flight LLM calls duration sum (non-monotonic) |
gen_ai_client_operation_active_seconds_max | Gauge | In-flight LLM calls max duration |
Example output
Chat (gpt-4.1):
# HELP gen_ai_client_token_usage_total Measures number of input and output tokens used
# TYPE gen_ai_client_token_usage_total counter
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="input"} 809664.0
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="output"} 4365.0
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="total"} 814029.0
# HELP gen_ai_client_operation_seconds
# TYPE gen_ai_client_operation_seconds histogram
gen_ai_client_operation_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 45
gen_ai_client_operation_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 360.4285117
# HELP gen_ai_client_operation_seconds_max
# TYPE gen_ai_client_operation_seconds_max gauge
gen_ai_client_operation_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 0.0
# HELP gen_ai_client_operation_active_seconds
# TYPE gen_ai_client_operation_active_seconds histogram
gen_ai_client_operation_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="none",gen_ai_system="azure-openai"} 0.0
Embeddings (text-embedding-3-small):
# HELP gen_ai_client_token_usage_total Measures number of input and output tokens used
# TYPE gen_ai_client_token_usage_total counter
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="input"} 809664.0
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="output"} 4365.0
gen_ai_client_token_usage_total{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai",gen_ai_token_type="total"} 814029.0
# HELP gen_ai_client_operation_seconds
# TYPE gen_ai_client_operation_seconds histogram
gen_ai_client_operation_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 45
gen_ai_client_operation_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 360.4285117
# HELP gen_ai_client_operation_seconds_max
# TYPE gen_ai_client_operation_seconds_max gauge
gen_ai_client_operation_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="gpt-4.1-2025-04-14",gen_ai_system="azure-openai"} 0.0
# HELP gen_ai_client_operation_active_seconds
# TYPE gen_ai_client_operation_active_seconds histogram
gen_ai_client_operation_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="chat",gen_ai_request_model="gpt-4.1",gen_ai_response_model="none",gen_ai_system="azure-openai"} 0.0
Vector Store Metrics
| Metric | Type | Description |
|---|---|---|
db_vector_client_operation_seconds | Histogram | Vector store operation duration (tags: db_operation_name, db_system, error, spring_ai_kind) |
db_vector_client_operation_seconds_max | Gauge | Vector store operation max duration |
db_vector_client_operation_active_seconds | GaugeHistogram | In-flight vector store operations (tags: db_operation_name, db_system, spring_ai_kind) |
db_vector_client_operation_active_seconds_gcount | Gauge | In-flight vector store operations count (non-monotonic) |
db_vector_client_operation_active_seconds_gsum | Gauge | In-flight vector store operations duration sum (non-monotonic) |
db_vector_client_operation_active_seconds_max | Gauge | In-flight vector store operations max duration |
Example output
# HELP db_vector_client_operation_active_seconds
# TYPE db_vector_client_operation_active_seconds histogram
db_vector_client_operation_active_seconds_gcount{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",spring_ai_kind="vector_store"} 0
db_vector_client_operation_active_seconds_gsum{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",spring_ai_kind="vector_store"} 0.0
db_vector_client_operation_active_seconds_gcount{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",spring_ai_kind="vector_store"} 0
db_vector_client_operation_active_seconds_gsum{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",spring_ai_kind="vector_store"} 0.0
# HELP db_vector_client_operation_active_seconds_max
# TYPE db_vector_client_operation_active_seconds_max gauge
db_vector_client_operation_active_seconds_max{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",spring_ai_kind="vector_store"} 0.0
db_vector_client_operation_active_seconds_max{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",spring_ai_kind="vector_store"} 0.0
# HELP db_vector_client_operation_seconds
# TYPE db_vector_client_operation_seconds histogram
db_vector_client_operation_seconds_count{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 721
db_vector_client_operation_seconds_sum{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 3705.4109973
db_vector_client_operation_seconds_count{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 8
db_vector_client_operation_seconds_sum{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 12.1208294
# HELP db_vector_client_operation_seconds_max
# TYPE db_vector_client_operation_seconds_max gauge
db_vector_client_operation_seconds_max{application="stonebranch-ai",db_operation_name="add",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 0.0
db_vector_client_operation_seconds_max{application="stonebranch-ai",db_operation_name="query",db_system="pg_vector",error="none",spring_ai_kind="vector_store"} 0.0
ChatClient / Advisor Metrics
| Metric | Type | Description |
|---|---|---|
spring_ai_chat_client_seconds | Histogram | ChatClient call duration (tags: error, gen_ai_operation_name, gen_ai_system, spring_ai_chat_client_stream, spring_ai_kind) |
spring_ai_chat_client_seconds_max | Gauge | ChatClient call max duration |
spring_ai_chat_client_active_seconds | GaugeHistogram | In-flight ChatClient calls (tags: gen_ai_operation_name, gen_ai_system, spring_ai_chat_client_stream, spring_ai_kind) |
spring_ai_chat_client_active_seconds_gcount | Gauge | In-flight ChatClient calls count (non-monotonic) |
spring_ai_chat_client_active_seconds_gsum | Gauge | In-flight ChatClient calls duration sum (non-monotonic) |
spring_ai_chat_client_active_seconds_max | Gauge | In-flight ChatClient calls max duration |
spring_ai_advisor_seconds | Histogram | Advisor execution duration (tags: error, gen_ai_operation_name, gen_ai_system, spring_ai_advisor_name, spring_ai_kind) |
spring_ai_advisor_seconds_max | Gauge | Advisor execution max duration |
spring_ai_advisor_active_seconds | GaugeHistogram | In-flight advisor calls (tags: gen_ai_operation_name, gen_ai_system, spring_ai_advisor_name, spring_ai_kind) |
spring_ai_advisor_active_seconds_gcount | Gauge | In-flight advisor calls count (non-monotonic) |
spring_ai_advisor_active_seconds_gsum | Gauge | In-flight advisor calls duration sum (non-monotonic) |
spring_ai_advisor_active_seconds_max | Gauge | In-flight advisor calls max duration |
Example output
# HELP spring_ai_chat_client_seconds
# TYPE spring_ai_chat_client_seconds histogram
spring_ai_chat_client_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 27
spring_ai_chat_client_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 388.7094596
# HELP spring_ai_chat_client_seconds_max
# TYPE spring_ai_chat_client_seconds_max gauge
spring_ai_chat_client_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 0.0
# HELP spring_ai_chat_client_active_seconds
# TYPE spring_ai_chat_client_active_seconds histogram
spring_ai_chat_client_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 0
spring_ai_chat_client_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 0.0
# HELP spring_ai_chat_client_active_seconds_max
# TYPE spring_ai_chat_client_active_seconds_max gauge
spring_ai_chat_client_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_chat_client_stream="false",spring_ai_kind="chat_client"} 0.0
# HELP spring_ai_advisor_seconds
# TYPE spring_ai_advisor_seconds histogram
spring_ai_advisor_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 27
spring_ai_advisor_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 375.8408485
spring_ai_advisor_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 17
spring_ai_advisor_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 378.4018341
spring_ai_advisor_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 8
spring_ai_advisor_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 26.3400961
spring_ai_advisor_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 17
spring_ai_advisor_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 365.5811003
spring_ai_advisor_seconds_count{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 17
spring_ai_advisor_seconds_sum{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 378.3915906
# HELP spring_ai_advisor_seconds_max
# TYPE spring_ai_advisor_seconds_max gauge
spring_ai_advisor_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_seconds_max{application="stonebranch-ai",error="none",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 0.0
# HELP spring_ai_advisor_active_seconds
# TYPE spring_ai_advisor_active_seconds histogram
spring_ai_advisor_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 0
spring_ai_advisor_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 0
spring_ai_advisor_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 0
spring_ai_advisor_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 0
spring_ai_advisor_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_gcount{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 0
spring_ai_advisor_active_seconds_gsum{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 0.0
# HELP spring_ai_advisor_active_seconds_max
# TYPE spring_ai_advisor_active_seconds_max gauge
spring_ai_advisor_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="call",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="MessageChatMemoryAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="RetrievalAugmentationAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="DetailedPromptLoggerAdvisor",spring_ai_kind="advisor"} 0.0
spring_ai_advisor_active_seconds_max{application="stonebranch-ai",gen_ai_operation_name="framework",gen_ai_system="spring_ai",spring_ai_advisor_name="SimpleLoggerAdvisor",spring_ai_kind="advisor"} 0.0
Spring Boot Metrics
| Metric | Type | Description |
|---|---|---|
http_server_requests_seconds | Histogram | HTTP request duration (tags: error, exception, method, outcome, status, uri) |
http_server_requests_seconds_max | Gauge | HTTP request max duration |
http_server_requests_active_seconds | GaugeHistogram | In-flight HTTP requests (tags: exception, method, outcome, status, uri) |
http_server_requests_active_seconds_gcount | Gauge | In-flight HTTP requests count (non-monotonic) |
http_server_requests_active_seconds_gsum | Gauge | In-flight HTTP requests duration sum (non-monotonic) |
http_server_requests_active_seconds_max | Gauge | In-flight HTTP requests max duration |
Example output
# HELP http_server_requests_seconds
# TYPE http_server_requests_seconds histogram
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/chat"} 10
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/chat"} 55.4338725
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/analyze/taskinstance"} 7
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/analyze/taskinstance"} 334.0895135
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/api/conversation"} 3
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/api/conversation"} 0.0100497
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus"} 12
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus"} 9.0552656
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info"} 2
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info"} 0.1510503
http_server_requests_seconds_count{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="403",uri="UNKNOWN"} 2
http_server_requests_seconds_sum{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="403",uri="UNKNOWN"} 0.0087491
# HELP http_server_requests_seconds_max
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/chat"} 0.0
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/api/analyze/taskinstance"} 0.0
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/api/conversation"} 0.0
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus"} 0.3693929
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/actuator/info"} 0.0
http_server_requests_seconds_max{application="stonebranch-ai",error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="403",uri="UNKNOWN"} 0.0010114
# HELP http_server_requests_active_seconds
# TYPE http_server_requests_active_seconds histogram
http_server_requests_active_seconds_gcount{application="stonebranch-ai",exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0
http_server_requests_active_seconds_gsum{application="stonebranch-ai",exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.0
http_server_requests_active_seconds_gcount{application="stonebranch-ai",exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN"} 1
http_server_requests_active_seconds_gsum{application="stonebranch-ai",exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.3637065
http_server_requests_active_seconds_gcount{application="stonebranch-ai",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0
http_server_requests_active_seconds_gsum{application="stonebranch-ai",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.0
# HELP http_server_requests_active_seconds_max
# TYPE http_server_requests_active_seconds_max gauge
http_server_requests_active_seconds_max{application="stonebranch-ai",exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.0
http_server_requests_active_seconds_max{application="stonebranch-ai",exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.3637104
http_server_requests_active_seconds_max{application="stonebranch-ai",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN"} 0.0
Infrastructure Metrics
| Metric | Type | Description |
|---|---|---|
application_ready_time_seconds | Gauge | Time taken for the application to be ready to service requests |
application_started_time_seconds | Gauge | Time taken to start the application |
process_uptime_seconds | Gauge | The uptime of the Java virtual machine |
process_start_time_seconds | Gauge | Start time of the process since unix epoch |
process_cpu_usage | Gauge | The "recent cpu usage" for the Java Virtual Machine process |
process_cpu_time_ns_total | Counter | The "cpu time" used by the Java Virtual Machine process |
system_cpu_count | Gauge | The number of processors available to the Java virtual machine |
system_cpu_usage | Gauge | The "recent cpu usage" of the system the application is running in |
jvm_info | Gauge | JVM version info |
jvm_memory_used_bytes | Gauge | The amount of used memory (tags: area, id) |
jvm_memory_committed_bytes | Gauge | The amount of memory in bytes that is committed for the JVM to use (tags: area, id) |
jvm_memory_max_bytes | Gauge | The maximum amount of memory in bytes that can be used for memory management (tags: area, id) |
jvm_memory_usage_after_gc | Gauge | The percentage of long-lived heap pool used after the last GC event |
jvm_buffer_count_buffers | Gauge | An estimate of the number of buffers in the pool (tags: id) |
jvm_buffer_memory_used_bytes | Gauge | An estimate of the memory that the JVM is using for this buffer pool (tags: id) |
jvm_buffer_total_capacity_bytes | Gauge | An estimate of the total capacity of the buffers in this pool (tags: id) |
jvm_gc_pause_seconds | Summary | Time spent in GC pause (tags: action, cause) |
jvm_gc_live_data_size_bytes | Gauge | Size of long-lived heap memory pool after reclamation |
jvm_gc_max_data_size_bytes | Gauge | Max size of long-lived heap memory pool |
jvm_gc_memory_allocated_bytes_total | Counter | Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next |
jvm_gc_memory_promoted_bytes_total | Counter | Count of positive increases in the size of the old generation memory pool before GC to after GC |
jvm_gc_overhead | Gauge | An approximation of the percent of CPU time used by GC activities |
jvm_classes_loaded_classes | Gauge | The number of classes that are currently loaded in the JVM |
jvm_classes_unloaded_classes_total | Counter | The number of classes unloaded in the JVM |
jvm_compilation_time_ms_total | Counter | The approximate accumulated elapsed time spent in compilation |
jvm_threads_live_threads | Gauge | The current number of live threads including both daemon and non-daemon threads |
jvm_threads_daemon_threads | Gauge | The current number of live daemon threads |
jvm_threads_peak_threads | Gauge | The peak live thread count since the JVM started or peak was reset |
jvm_threads_started_threads_total | Counter | The total number of application threads started in the JVM |
jvm_threads_states_threads | Gauge | The current number of threads (tags: state) |
hikaricp_connections | Gauge | Total connections |
hikaricp_connections_active | Gauge | Active connections |
hikaricp_connections_idle | Gauge | Idle connections |
hikaricp_connections_max | Gauge | Max connections |
hikaricp_connections_min | Gauge | Min connections |
hikaricp_connections_pending | Gauge | Pending threads |
hikaricp_connections_timeout_total | Counter | Connection timeout total count |
hikaricp_connections_acquire_seconds | Summary | Connection acquire time |
hikaricp_connections_creation_seconds | Summary | Connection creation time |
hikaricp_connections_usage_seconds | Summary | Connection usage time |
jdbc_connections_active | Gauge | Current number of active connections that have been allocated from the data source |
jdbc_connections_idle | Gauge | Number of established but idle connections |
jdbc_connections_max | Gauge | Maximum number of active connections that can be allocated at the same time |
jdbc_connections_min | Gauge | Minimum number of idle connections in the pool |
logback_events_total | Counter | Number of log events that were enabled by the effective log level (tags: level) |
tomcat_connections_config_max_connections | Gauge | Maximum configured connections |
tomcat_connections_current_connections | Gauge | Current active connections |
tomcat_connections_keepalive_current_connections | Gauge | Current keep-alive connections |
tomcat_threads_busy_threads | Gauge | Busy threads in the Tomcat thread pool |
tomcat_threads_config_max_threads | Gauge | Maximum configured threads |
tomcat_threads_current_threads | Gauge | Current threads in the Tomcat thread pool |
tomcat_global_request_seconds | Summary | Total request processing time |
tomcat_global_request_max_seconds | Gauge | Maximum request processing time |
tomcat_global_error_total | Counter | Total error count |
tomcat_global_sent_bytes_total | Counter | Total bytes sent |
tomcat_global_received_bytes_total | Counter | Total bytes received |
tomcat_servlet_request_seconds | Summary | Servlet request processing time (tags: name) |
tomcat_servlet_request_max_seconds | Gauge | Servlet max request processing time (tags: name) |
tomcat_servlet_error_total | Counter | Servlet error count (tags: name) |
tomcat_cache_access_total | Counter | Cache access count |
tomcat_cache_hit_total | Counter | Cache hit count |
executor_active_threads | Gauge | The approximate number of threads that are actively executing tasks |
executor_completed_tasks_total | Counter | The approximate total number of tasks that have completed execution |
executor_pool_core_threads | Gauge | The core number of threads for the pool |
executor_pool_max_threads | Gauge | The maximum allowed number of threads in the pool |
executor_pool_size_threads | Gauge | The current number of threads in the pool |
executor_queue_remaining_tasks | Gauge | The number of additional elements that this queue can ideally accept without blocking |
executor_queued_tasks | Gauge | The approximate number of tasks that are queued for execution |