terminal_services: fix swapped cpu_time labels, pending broker gauge, shared PDH query and series caching (#2687)

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
Jan-Otto Kröpke
2026-10-11 20:41:28 +02:00
committed by GitHub
co-authored by Claude
parent 1f96f71a7c
commit 08bcab7f9a
5 changed files with 167 additions and 76 deletions
+6 -5
View File
@@ -19,7 +19,8 @@ None
| Name | Description | Type | Labels |
|------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------------|
| `windows_terminal_services_session_info` | Info about active WTS sessions | gauge | `session_name`, `user`, `host`, `state`, `id` |
| `windows_terminal_services_connection_broker_performance_total`* | The total number of connections handled by the Connection Brokers since the service started. | counter | `connection` |
| `windows_terminal_services_connection_broker_performance_total`* | The number of connections handled by the Connection Broker since the service started, by result (`Successful`, `Failed`). | counter | `connection` |
| `windows_terminal_services_connection_broker_pending_connections`* | The number of redirected connections pending completion from the Remote Desktop Session Host servers in the farm. | gauge | None |
| `windows_terminal_services_handles` | Total number of handles currently opened by this process. This number is the sum of the handles currently opened by each thread in this process. | gauge | `session_name` |
| `windows_terminal_services_page_fault_total` | Rate at which page faults occur in the threads executing in this process. A page fault occurs when a thread refers to a virtual memory page that is not in its working set in main memory. The page may not be retrieved from disk if it is on the standby list and therefore already in main memory. The page also may not be retrieved if it is in use by another process which shares the page. | counter | `session_name` |
| `windows_terminal_services_page_file_bytes` | Current number of bytes this process has used in the paging file(s). Paging files are used to store pages of memory used by the process that are not contained in other files. Paging files are shared by all processes, and lack of space in paging files can prevent other processes from allocating memory. | gauge | `session_name` |
@@ -34,7 +35,7 @@ None
| `windows_terminal_services_working_set_bytes` | Current number of bytes in the working set of this process. The working set is the set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the working set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from working sets. If they are needed, they are then soft-faulted back into the working set before they leave main memory. | gauge | `session_name` |
| `windows_terminal_services_working_set_bytes_peak` | Maximum number of bytes in the working set of this process at any point in time. The working set is the set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the working set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from working sets. If they are needed, they are then soft-faulted back into the working set before they leave main memory. | gauge | `session_name` |
`* windows_terminal_services_connection_broker_performance_total` only collected if server has `Remote Desktop Connection Broker` role.
`*` The `connection_broker_*` metrics are only collected if the server has the `Remote Desktop Connection Broker` role and its performance counters can be read. If the counters can't be read, the collector logs a warning and still exports the session metrics.
### Example metric
@@ -43,9 +44,9 @@ None
windows_remote_fx_net_udp_packets_sent_total{session_name="RDP-Tcp 0"} 0
# HELP windows_terminal_services_cpu_time_seconds_total Total elapsed time that this process's threads have spent executing code.
# TYPE windows_terminal_services_cpu_time_seconds_total counter
windows_terminal_services_cpu_time_seconds_total{mode="RDP-Tcp 0",session_name="privileged"} 98.4843739
windows_terminal_services_cpu_time_seconds_total{mode="RDP-Tcp 0",session_name="processor"} 620.4687488999999
windows_terminal_services_cpu_time_seconds_total{mode="RDP-Tcp 0",session_name="user"} 521.9843741
windows_terminal_services_cpu_time_seconds_total{mode="privileged",session_name="RDP-Tcp 0"} 98.4843739
windows_terminal_services_cpu_time_seconds_total{mode="processor",session_name="RDP-Tcp 0"} 620.4687488999999
windows_terminal_services_cpu_time_seconds_total{mode="user",session_name="RDP-Tcp 0"} 521.9843741
# HELP windows_terminal_services_handles Total number of handles currently opened by this process. This number is the sum of the handles currently opened by each thread in this process.
# TYPE windows_terminal_services_handles gauge
windows_terminal_services_handles{session_name="RDP-Tcp 0"} 20999