Symptoms: The data_engine log shows frequent informational messages regarding metric ID changes for the sqlserver probe:
de: Metric id to be changed from [#######] to [#######] for qos=QOS_SQLSERVER_USER_CPU source=[Source] target=[Login_Name]de: Metric id to be changed from [#######] to [#######] for qos=QOS_SQLSERVER_USER_WAITS source=[Source] target=[Login_Name]
This behavior is a known limitation of the user_cpu and user_wait checkpoints. The sqlserver probe internally creates "sub-profiles" for each process found running under the given user and collects the CPU/wait value for each individual process.
If a single SQL login (e.g., NT SERVICE\SQLSERVERAGENT) is running mutiple processes, the data will be collected and submitted once for each matching process. The probe sends multiple QoS messages with the same Source and Target (the login name) but containing different data points.
The data_engine receives these conflicting data points for what it perceives as the same metric target and attempts to re-register the metric_id to maintain data integrity, resulting in the log noise.
This is currently a product limitation. Broadcom recommends to disable QoS collection for these checkpoints.
Instead, use the server_cpu checkpoint within the sqlserver probe or use the processes probe locally on the SQL Server to monitor the sqlservr.exe process. These methods provide more stable instance-level CPU metrics.
As the QoS is enabled by default which conflicts with this recommendation, Engineering is evaluating changes to the default checkpoint settings for a future release. (TBD)
See the sqlserver probe documentation for details.