Monitor Stonebranch Universal Automation Center (UAC) via OpenTelemetry.
This extension collects UAC metrics via Dynatrace ActiveGate and turns them into a UC-aware view inside Dynatrace. It discovers Universal Controllers, OMS servers, Universal Agents, workflows, and business services from metric labels and maps them into a topology with dedicated Unified Analysis Screens and example dashboards.
IT Ops, SREs, and platform teams can use this extension to:
All of this is done through metric scraping—no custom scripting is required.
Overview of your entire UAC environment: Get an overview of one or more Universal Controllers with an all-in-one view inside of Dynatrace.
Controller and OMS health monitoring: Detect controller node or OMS issues early using status and connection metrics.
Automation workload visibility: Monitor execution counts, active instances, and outcome distributions across workflows and task types.
License and capacity management: Track usage of agents, nodes, executions, and tasks against license quotas to avoid overages.
Workflow- and agent-centric views: Use workflow and Universal Agent entity screens to understand where tasks run, how they perform, and which business services they belong to.
Integrated troubleshooting inside Dynatrace: Use dashboards, entity screens, and alerts to quickly isolate whether a problem is in the automation logic, the controller, the agents, or the underlying infrastructure.
Install and activate the extension from the Dynatrace Hub.
Configure the metric endpoint. Point the extension to your Universal Controller Prometheus metrics endpoint.
Configure authentication. Make sure that the UC user (or the equivalent service user) has the ops_service role.
recommended Enable workflow and business context labels. For deeper insights into workflows, agents, and business services, configure additional labels in uc.properties so they appear in metrics such as uc_history_total.
For example
task_name (workflow/task name)security_business_services (business service names)agent_idcluster_node_idThese labels are used in topology mapping (Workflows, Business Services, Universal Agents), workflow/agent dashboards, and entity screens.
For more details, see:
The extension uses Dynatrace ActiveGate to scrape Prometheus-format metrics from one or more Universal Controllers. Metrics are grouped into feature sets, including
Universal Controller metrics
Standard process metrics
These are based on metrics like process_cpu_seconds_total, process_virtual_memory_bytes.
Examples include
JVM metrics
Universal Agent and OMS metrics
License and capacity metrics
uc_monthly_executions for current-month execution countThese metrics provide a high-level view of the UAC.
The extension maps metric dimensions into Dynatrace entities and relationships, allowing you to navigate your automation landscape visually. For example, you can navigate from a controller to the workflows running on it, down to the agents executing them.
Entity types
The extension ships with
Universal Controller Overview dashboard for high-level monitoring
Unified Analysis Screens for
Example views include
The extension includes predefined alert configurations, which are saved as alert templates. These are available for
These alerts are based purely on metrics and can be adjusted or extended in Dynatrace as needed.
There is no charge to use the extension. You are only charged for the data that the extension ingests.
The Stonebranch Universal Automation Center extension ingests custom metrics, which consume Davis Data Units (DDUs) (Dynatrace classic license) or Metrics powered by Grail (DPS), according to your license model.
The following formula provides the number of metric data points per minute, assuming all feature sets are enabled.
(( 1 * number of UC Cluster Nodes )+ ( 46 * number of Universal Controllers )+ ( 1 * number of OMS )+ ( 4 * number of Universal Agents )+ ( 5 * number of unique Task Names ))
In the Dynatrace Platform Subscription, metric ingestion consumes Metrics powered by Grail according to the number of ingested metric data points.
To calculate the approximate yearly consumption, apply the following calculation: <metric data points per minute> * 60 minutes * 24 hours * 365 days.
In the classic licensing model, metric ingestion consumes Davis Data Units (DDUs) at the rate of .001 DDUs per metric data point. Multiply the above formula for annual data points by .001 to estimate annual DDU usage.
The DDU cost above does not include any possible log events or custom events that are triggered by the extension. For more information, see DDU events.
When activating your extension using a monitoring configuration, you can limit monitoring to one of the feature sets. To work properly, the extension has to collect at least one metric after the activation.
In highly segmented networks, feature sets can reflect the segments of your environment. Then, when you create a monitoring configuration, you can select a feature set and a corresponding ActiveGate group that can connect to this particular segment.
All metrics that aren't categorized into any feature set are considered to be the default and are always reported.
A metric inherits the feature set of a subgroup, which in turn inherits the feature set of a group. Also, the feature set defined on the metric level overrides the feature set defined on the subgroup level, which in turn overrides the feature set defined on the group level.
| Metric name | Metric key | Description |
|---|---|---|
| Process CPU Seconds Total | stonebranch.process_cpu_seconds_total.count | Total CPU time consumed by the process in seconds |
| Process Virtual Memory Bytes | stonebranch.process_virtual_memory_bytes | Size of virtual memory used by the process in bytes |
| Process Resident Memory Bytes | stonebranch.process_resident_memory_bytes | Resident set size of memory used by the process in bytes |
| Process Start Time Seconds | stonebranch.process_start_time_seconds | Start time of the process since epoch in seconds |
| Process Open FDs | stonebranch.process_open_fds | Number of open file descriptors by the process |
| Process Max FDs | stonebranch.process_max_fds | Maximum file descriptor limit for the process |
| Metric name | Metric key | Description |
|---|---|---|
| JVM Memory Objects Pending Finalization | stonebranch.jvm_memory_objects_pending_finalization | Number of Java objects awaiting finalization |
| JVM Memory Used Bytes | stonebranch.jvm_memory_used_bytes | Amount of memory currently used by the JVM in bytes |
| JVM Memory Committed Bytes | stonebranch.jvm_memory_committed_bytes | Amount of memory guaranteed to be available to the JVM in bytes |
| JVM Memory Max Bytes | stonebranch.jvm_memory_max_bytes | Maximum memory that can be used by the JVM in bytes |
| JVM Memory Init Bytes | stonebranch.jvm_memory_init_bytes | Initial memory allocation for the JVM in bytes |
| JVM Memory Pool Bytes Used | stonebranch.jvm_memory_pool_bytes_used_bytes | Memory used by the JVM memory pool in bytes |
| JVM Memory Pool Bytes Committed | stonebranch.jvm_memory_pool_bytes_committed_bytes | Memory committed for the JVM memory pool in bytes |
| JVM Memory Pool Bytes Max | stonebranch.jvm_memory_pool_bytes_max_bytes | Maximum memory for the JVM memory pool in bytes |
| JVM Memory Pool Init Bytes | stonebranch.jvm_memory_pool_init_bytes | Initial memory for the JVM memory pool in bytes |
| JVM Memory Pool Collection Used Bytes | stonebranch.jvm_memory_pool_collection_used_bytes | Memory used by the JVM memory pool collection in bytes |
| JVM Memory Pool Collection Committed Bytes | stonebranch.jvm_memory_pool_collection_committed_bytes | Memory committed for the JVM memory pool collection in bytes |
| JVM Memory Pool Collection Max Bytes | stonebranch.jvm_memory_pool_collection_max_bytes | Maximum memory for the JVM memory pool collection in bytes |
| JVM Memory Pool Collection Init Bytes | stonebranch.jvm_memory_pool_collection_init_bytes | Initial memory for the JVM memory pool collection in bytes |
| JVM Memory Pool Allocated Bytes Total | stonebranch.jvm_memory_pool_allocated_bytes_total.count | Total bytes allocated by the JVM memory pool |
| JVM Buffer Pool Used Bytes | stonebranch.jvm_buffer_pool_used_bytes | Bytes used by the JVM buffer pool |
| JVM Buffer Pool Capacity Bytes | stonebranch.jvm_buffer_pool_capacity_bytes | Capacity of the JVM buffer pool in bytes |
| JVM Buffer Pool Used Buffers | stonebranch.jvm_buffer_pool_used_buffers | Number of buffers used in the JVM buffer pool |
| JVM GC Collection Seconds | stonebranch.jvm_gc_collection_seconds | Time spent in JVM garbage collection in seconds |
| JVM Threads Current | stonebranch.jvm_threads_current | Current number of live threads in the JVM |
| JVM Threads Daemon | stonebranch.jvm_threads_daemon | Number of daemon threads in the JVM |
| JVM Threads Peak | stonebranch.jvm_threads_peak | Peak live thread count since JVM start |
| JVM Threads Started Total | stonebranch.jvm_threads_started_total.count | Total threads started since JVM start |
| JVM Threads Deadlocked | stonebranch.jvm_threads_deadlocked | Number of threads currently deadlocked |
| JVM Threads Deadlocked Monitor | stonebranch.jvm_threads_deadlocked_monitor | Number of threads deadlocked waiting for monitor |
| JVM Threads State | stonebranch.jvm_threads_state | Gauge measure of threads per state in the JVM |
| JVM Classes Currently Loaded | stonebranch.jvm_classes_currently_loaded | Number of classes currently loaded in the JVM |
| JVM Classes Loaded Total | stonebranch.jvm_classes_loaded_total.count | Total number of classes loaded since JVM start |
| JVM Classes Unloaded Total | stonebranch.jvm_classes_unloaded_total.count | Total number of classes unloaded since JVM start |
| JVM Runtime Info | stonebranch.jvm_runtime_info | Gauge of JVM runtime info (e.g., version, vendor) |
| Metric name | Metric key | Description |
|---|---|---|
| UC Agent Status | uc_agent_status | Current status of the Universal Controller agent |
| UC OMS Server Last Connection Time Seconds | uc_oms_server_last_connected_time_seconds | Timestamp of the last connection to OMS server since epoch in seconds |
| UC OMS Server Status | uc_oms_server_status | Current status of the UC OMS server |
| UC OMS Server Session Status | uc_oms_server_session_status | Current session status on the UC OMS server |
| Metric name | Metric key | Description |
|---|---|---|
| AI Service Build Info | sb_ai_build | Stonebranch AI Service version and build information |
| AI Tool Invocations Total | sb_ai_tool_invocations_total.count | Total number of AI tool invocations by tool name and status |
| AI Tool Errors Total | sb_ai_tool_errors_total.count | Total number of AI tool errors by tool name and error type |
| AI Tool Duration | sb_ai_tool_duration_seconds | Duration of AI tool executions in seconds |
| AI MCP Connection Status | sb_ai_mcp_connection_status | Status of the AI MCP server connection (1 = connected, 0 = disconnected) |
| Active AI Conversations | sb_ai_conversations_active | Number of currently active AI conversations |
| AI Conversation Messages Total | sb_ai_conversation_messages_total.count | Total number of AI conversation messages by role |
| Gen AI Token Usage Total | gen_ai_client_token_usage_total.count | Total LLM token usage by model and token type |
| Gen AI Operation Duration | gen_ai_client_operation_seconds | Duration of LLM operations in seconds |
| Vector Store Operation Duration | db_vector_client_operation_seconds | Duration of vector store operations in seconds |
| HTTP Server Request Duration | http_server_requests_seconds | Duration of HTTP server requests in seconds |
| Metric name | Metric key | Description |
|---|---|---|
| UC License Agents Distributed Used | uc_license_agents_distributed_used | Number of distributed agents currently used under license |
| UC License Agents Distributed Max | uc_license_agents_distributed_max | Maximum number of distributed agents allowed by license |
| UC License Agents z/OS Used | uc_license_agents_zos_used | Number of z/OS agents currently used under license |
| UC License Agents z/OS Max | uc_license_agents_zos_max | Maximum number of z/OS agents allowed by license |
| UC License Cluster Nodes Used | uc_license_cluster_nodes_used | Number of cluster nodes currently used under license |
| UC License Cluster Nodes Max | uc_license_cluster_nodes_max | Maximum number of cluster nodes allowed by license |
| UC License Monthly Executions Used | uc_license_monthly_executions_used | Number of monthly executions currently used under license |
| UC License Monthly Executions Max | uc_license_monthly_executions_max | Maximum number of monthly executions allowed by license |
| UC License Task Definitions Used | uc_license_task_definitions_used | Number of task definitions currently used under license |
| UC License Task Definitions Max | uc_license_task_definitions_max | Maximum number of task definitions allowed by license |
| UC Monthly Executions | uc_monthly_executions | Number of UC executions in the current month |
| Metric name | Metric key | Description |
|---|---|---|
| UC History Total | uc_history_total.count | Total number of Universal Controller history events |
| UC Build Info | uc_build_info | Universal Controller Version information |
| UC Task Instance Active | uc_task_instance_active | Number of currently active UC task instances |
| UC Task Instance Launch Total | uc_task_instance_launch_total.count | Total number of UC task instance launches |
| UC Task Instance Late Finish Total | uc_task_instance_late_finish_total.count | Total number of UC task instances that finished late |
| UC Task Instance Late Start Total | uc_task_instance_late_start_total.count | Total number of UC task instances that started late |
| UC Task Instance Early Finish Total | uc_task_instance_early_finish_total.count | Total number of UC task instances that finished early |
| UC Task Instance Duration Seconds | uc_task_instance_duration_seconds | Duration of UC task instances in seconds |
| UC Universal Event Total | uc_universal_event_total.count | Total number of universal events processed by UC |
| UC Database Connection Pool Active | uc_database_connection_pool_active | Current number of active connections in the UC database pool |
| UC Database Connection Pool Idle | uc_database_connection_pool_idle | Current number of idle connections in the UC database pool |
| UC Database Connection Pool Idle Min | uc_database_connection_pool_idle_min | Minimum idle connections allowed in the UC database pool |
| UC Database Connection Pool Idle Max | uc_database_connection_pool_idle_max | Maximum idle connections allowed in the UC database pool |
| UC Database Connection Pool Allocated | uc_database_connection_pool_allocated | Total number of allocated connections in the UC database pool |
| UC Database Connection Pool Max | uc_database_connection_pool_max | Maximum allowed connections in the UC database pool |
| Metric name | Metric key | Description |
|---|---|---|
| — | ue.cdt.rclone.duration | — |
| — | ue.cdt.rclone.speed | — |
| — | ue.cdt.rclone.transfers | — |
| UC Extension Bedrock Input Tokens | ue.bedrock.input_tokens | Number of input tokens processed by Bedrock extension |
| UC Extension Bedrock Output Tokens | ue.bedrock.output_tokens | Number of output tokens generated by Bedrock extension |
| UC Extension Bedrock Total Tokens | ue.bedrock.total_tokens | Total number of tokens processed by Bedrock extension |
No. This extension focuses on metrics-based monitoring and topology. Traces and logs can be added separately using UAC's OpenTelemetry or log forwarding capabilities.
Yes. The shipped examples and alert templates are meant as a starting point. You can clone and adapt them in Dynatrace.
If some tiles do not show data, check if the user has access to read the metrics endpoint of the Universal Controller or if you have the optional metrics enabled in your uc.properties.