Skip to content

Conversation

@tfishler1
Copy link

Updated the date and modified sections for clarity and accuracy regarding VM watch collectors.

Updated the date and modified sections for clarity and accuracy regarding VM watch collectors.
@prmerger-automator
Copy link
Contributor

@tfishler1 : Thanks for your contribution! The author(s) and reviewer(s) have been notified to review your proposed change.

@learn-build-service-prod
Copy link
Contributor

Learn Build status updates of commit 96bd0d7:

💡 Validation status: suggestions

File Status Preview URL Details
articles/virtual-machines/vm-watch-collector-suite.md 💡Suggestion Details

articles/virtual-machines/vm-watch-collector-suite.md

  • Line 38, Column 2: [Suggestion: column-header-missing - See documentation] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@prmerger-automator
Copy link
Contributor

PRMerger Results

Issue Description
File Change Percent This PR contains file(s) with more than 30% file change.

@v-dirichards
Copy link
Contributor

v-dirichards commented Jan 7, 2026

Hi @tfishler1 - This pull request was opened in the public repo. PMs should work in the private repo, per the Microsoft Docs contributor guide. We can keep this PR open for review and merge, but would you make future content updates in the private repo? Thank you!


@ofemifowode

Can you review the proposed changes?

Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.

@MicrosoftDocs/public-repo-pr-review-team

@v-dirichards v-dirichards added the aq-pr-triaged C+L Pull Request Review Team label label Jan 7, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR revises the VM watch collectors documentation by restructuring the content to reflect VMWatch's Infra-Plugin model architecture. The main changes include updating terminology from "Collectors" to "Plugins" and consolidating multiple tables into a single comprehensive table format.

Key Changes:

  • Updated document date and changed title to "VMwatch Plugin Collections"
  • Restructured documentation to explain the Infra-Plugin model architecture
  • Consolidated separate tables (one for groups/tags/signals and another for eligibility/behavior/parameters) into a single unified table with all information

Comment on lines +40 to +43
| outbound_connectivity| Verify the outbound connectivity to a remote URL from the VM. |Eligible if EnrironmentAttribute "OutboundConnectivityDisabled" is not set or set to "false"| Core|*Network|This Plugin is executed every 60s. In each execution, it sends an http GET request to http://www.msftconnecttest.com/connecttest.txt with a timeout of 30s.|<ul> <li>OUTBOUND_CONNECTIVITY_INTERVAL: the execution interval of the Collector. Default: 60s</li> <li>OUTBOUND_CONNECTIVITY_URLS: the URLs that this Collector sends http GET requests to. URLs are provided as a string using `,` as separator. Default: `http://www.msftconnecttest.com/connecttest.txt`</li> <li>OUTBOUND_CONNECTIVITY_TIMEOUT_IN_MILLISECONDS: the http GET request time-out in milliseconds. Default: 30000</li> <li>OUTBOUND_CONNECTIVITY_TOTAL_ATTEMPTS: the total number of attempts to send http request if the previous one fails. Default: 1</li> <li>OUTBOUND_CONNECTIVITY_RETRY_INTERVAL_IN_SECONDS: the retry interval in seconds if the previous http request fails. Default: 10</li> </ul>| *outbound_connectivity |LatencyInNanoSeconds|
| dns| Verify if the target DNS name can be resolved. |Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|
Copy link

Copilot AI Jan 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling error: "EnrironmentAttribute" should be "EnvironmentAttribute".

Suggested change
| outbound_connectivity| Verify the outbound connectivity to a remote URL from the VM. |Eligible if EnrironmentAttribute "OutboundConnectivityDisabled" is not set or set to "false"| Core|*Network|This Plugin is executed every 60s. In each execution, it sends an http GET request to http://www.msftconnecttest.com/connecttest.txt with a timeout of 30s.|<ul> <li>OUTBOUND_CONNECTIVITY_INTERVAL: the execution interval of the Collector. Default: 60s</li> <li>OUTBOUND_CONNECTIVITY_URLS: the URLs that this Collector sends http GET requests to. URLs are provided as a string using `,` as separator. Default: `http://www.msftconnecttest.com/connecttest.txt`</li> <li>OUTBOUND_CONNECTIVITY_TIMEOUT_IN_MILLISECONDS: the http GET request time-out in milliseconds. Default: 30000</li> <li>OUTBOUND_CONNECTIVITY_TOTAL_ATTEMPTS: the total number of attempts to send http request if the previous one fails. Default: 1</li> <li>OUTBOUND_CONNECTIVITY_RETRY_INTERVAL_IN_SECONDS: the retry interval in seconds if the previous http request fails. Default: 10</li> </ul>| *outbound_connectivity |LatencyInNanoSeconds|
| dns| Verify if the target DNS name can be resolved. |Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|
| outbound_connectivity| Verify the outbound connectivity to a remote URL from the VM. |Eligible if EnvironmentAttribute "OutboundConnectivityDisabled" is not set or set to "false"| Core|*Network|This Plugin is executed every 60s. In each execution, it sends an http GET request to http://www.msftconnecttest.com/connecttest.txt with a timeout of 30s.|<ul> <li>OUTBOUND_CONNECTIVITY_INTERVAL: the execution interval of the Collector. Default: 60s</li> <li>OUTBOUND_CONNECTIVITY_URLS: the URLs that this Collector sends http GET requests to. URLs are provided as a string using `,` as separator. Default: `http://www.msftconnecttest.com/connecttest.txt`</li> <li>OUTBOUND_CONNECTIVITY_TIMEOUT_IN_MILLISECONDS: the http GET request time-out in milliseconds. Default: 30000</li> <li>OUTBOUND_CONNECTIVITY_TOTAL_ATTEMPTS: the total number of attempts to send http request if the previous one fails. Default: 1</li> <li>OUTBOUND_CONNECTIVITY_RETRY_INTERVAL_IN_SECONDS: the retry interval in seconds if the previous http request fails. Default: 10</li> </ul>| *outbound_connectivity |LatencyInNanoSeconds|
| dns| Verify if the target DNS name can be resolved. |Eligible if EnvironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnvironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|

Copilot uses AI. Check for mistakes.
| process_cpu | Collect the top 3 processes using the most CPU resource. Report each process's CPU usage over the CPU core and machine. Also report the machine's total CPU usage.|Always eligible|Core |Proces|This Plugin is executed every 180s. In each execution, it selects the top 3 processes with the most CPU usage and reports the ProcessCoreUsage, ProcessMachineUsage and MachineTotalCpuUsage.|<ul> <li> PROCESS_CPU_INTERVAL: the execution interval of the Plugin. Default: 180s </li> </ul>||<ul> <li>ProcessCPUCoreUsage</li> <li>ProcessCPUMachineUsage</li> <li>MachineTotalCpuUsage</li></ul>||
| process_monitor | Verify if the selected process is running and collect its running time in seconds.|Always eligible|Optional|Process|Not executed.| <ul> <li>PROCESS_MONITOR_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>PROCESS_MONITOR_PROCESS_NAMES: the Regular Expression of process names to be monitored separated by `,`. No default value</li> </ul>|<ul> <li>process_monitor</li> </ul>|<ul> <li>UpTime</li> </ul>||
| system_error | Collect the error at system level event log (Windows only).|Eligible in Windows machine|Core|OS| The plugin is exeucted every 3 mins. In each execution, it subscribes to the "System" Channel of Windows EventLog and queries Events with Level defined in SystemData <=2 (including LOG_ALWAYS, Critital, Error). The measurementTarget is defined as Source_EventId_ShortHash of the EventLog using default Windows locale. A cap of no more than 10 different measurementTargets is applied in each collection.|<ul> <li>SYSTEM_ERROR_MEASUREMENT_TARGET_CAP: the cap of total different measurementTargets in each collection. Default: 10</li> </ul> ||<ul><li>SystemErrors</li> </ul>||
| az_storage_blob | Verify if the VM can have access to the selected Azure Storage Blob by using either Managed Identity or SAS token.|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"|Optional| *AzBlob|Not executed.|<ul> <li>AZ_STORAGE_BLOB_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>AZ_STORAGE_ACCOUNT_NAME: the Azure Storage account name. No default value</li> <li>AZ_STORAGE_CONTAINER_NAME: the Azure Storage Container name. No default value</li> <li>AZ_STORAGE_BLOB_NAME: the Azure Storage Blob name. No default value</li> <li>AZ_STORAGE_BLOB_DOMAIN_NAME: the Azure Storage domain name. No default value</li> <li>AZ_STORAGE_SAS_TOKEN_BASE64: the Base64 encoded Azure Storage SAS token. No default value</li> <li>AZ_STORAGE_USE_MANAGED_IDENTITY: if the managed identity will be used for authentication. Default: false</li> <li>AZ_STORAGE_MANAGED_IDENTITY_CLIENT_ID: the managed identity client ID for authentication. No default value</li> </ul>| <ul> <li>az_storage_blob</li> </ul>|
Copy link

Copilot AI Jan 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling error: "EnrironmentAttribute" should be "EnvironmentAttribute".

Suggested change
| az_storage_blob | Verify if the VM can have access to the selected Azure Storage Blob by using either Managed Identity or SAS token.|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"|Optional| *AzBlob|Not executed.|<ul> <li>AZ_STORAGE_BLOB_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>AZ_STORAGE_ACCOUNT_NAME: the Azure Storage account name. No default value</li> <li>AZ_STORAGE_CONTAINER_NAME: the Azure Storage Container name. No default value</li> <li>AZ_STORAGE_BLOB_NAME: the Azure Storage Blob name. No default value</li> <li>AZ_STORAGE_BLOB_DOMAIN_NAME: the Azure Storage domain name. No default value</li> <li>AZ_STORAGE_SAS_TOKEN_BASE64: the Base64 encoded Azure Storage SAS token. No default value</li> <li>AZ_STORAGE_USE_MANAGED_IDENTITY: if the managed identity will be used for authentication. Default: false</li> <li>AZ_STORAGE_MANAGED_IDENTITY_CLIENT_ID: the managed identity client ID for authentication. No default value</li> </ul>| <ul> <li>az_storage_blob</li> </ul>|
| az_storage_blob | Verify if the VM can have access to the selected Azure Storage Blob by using either Managed Identity or SAS token.|Eligible if EnvironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"|Optional| *AzBlob|Not executed.|<ul> <li>AZ_STORAGE_BLOB_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>AZ_STORAGE_ACCOUNT_NAME: the Azure Storage account name. No default value</li> <li>AZ_STORAGE_CONTAINER_NAME: the Azure Storage Container name. No default value</li> <li>AZ_STORAGE_BLOB_NAME: the Azure Storage Blob name. No default value</li> <li>AZ_STORAGE_BLOB_DOMAIN_NAME: the Azure Storage domain name. No default value</li> <li>AZ_STORAGE_SAS_TOKEN_BASE64: the Base64 encoded Azure Storage SAS token. No default value</li> <li>AZ_STORAGE_USE_MANAGED_IDENTITY: if the managed identity will be used for authentication. Default: false</li> <li>AZ_STORAGE_MANAGED_IDENTITY_CLIENT_ID: the managed identity client ID for authentication. No default value</li> </ul>| <ul> <li>az_storage_blob</li> </ul>|

Copilot uses AI. Check for mistakes.
Comment on lines +55 to +56
| hardware_health_monitor | Collect hardware health info from Windows event log, currently only disk related critical events are collected, including events with id 7, 500, 504, 505, 512 and 549. Those events include critical metrics about disk health status, for NVMe directly attached devices, it is exclusively available on the VM side only. With those metric it is possible to monitor and alert the disk status, thus to improve the VM service availabilities|Eligible in Windows machine|Optional|*Hardware |Not executed.|<ul> <li>HARDWARE_HEALTH_MONITOR_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>|| <ul> <li>hardware_health_monitor</li> </ul>|
| hardware_health_nvidia_smi | Collect GPU stats including memory and GPU usage, temp and other by running nvidia-smi command (Linux Ubuntu only)|Eligible in Linux Ubuntu machine|Optional |*Hardware |Not executed.| <ul> <li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the execution interval of the Collector. Default: 60s</li><li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the time-out of running /usr/bin/nvidia-smi command. Default: 10s</li> </ul>||<ul> <li>hardware_health_nvidia_smi</li> </ul>|
Copy link

Copilot AI Jan 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent formatting: Asterisks are used inconsistently before tag names (e.g., "Network", " Network"). The formatting should be consistent throughout the table. All tags should either have asterisks or not have them, and spacing should be consistent.

Suggested change
| hardware_health_monitor | Collect hardware health info from Windows event log, currently only disk related critical events are collected, including events with id 7, 500, 504, 505, 512 and 549. Those events include critical metrics about disk health status, for NVMe directly attached devices, it is exclusively available on the VM side only. With those metric it is possible to monitor and alert the disk status, thus to improve the VM service availabilities|Eligible in Windows machine|Optional|*Hardware |Not executed.|<ul> <li>HARDWARE_HEALTH_MONITOR_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>|| <ul> <li>hardware_health_monitor</li> </ul>|
| hardware_health_nvidia_smi | Collect GPU stats including memory and GPU usage, temp and other by running nvidia-smi command (Linux Ubuntu only)|Eligible in Linux Ubuntu machine|Optional |*Hardware |Not executed.| <ul> <li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the execution interval of the Collector. Default: 60s</li><li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the time-out of running /usr/bin/nvidia-smi command. Default: 10s</li> </ul>||<ul> <li>hardware_health_nvidia_smi</li> </ul>|
| hardware_health_monitor | Collect hardware health info from Windows event log, currently only disk related critical events are collected, including events with id 7, 500, 504, 505, 512 and 549. Those events include critical metrics about disk health status, for NVMe directly attached devices, it is exclusively available on the VM side only. With those metric it is possible to monitor and alert the disk status, thus to improve the VM service availabilities|Eligible in Windows machine|Optional|* Hardware |Not executed.|<ul> <li>HARDWARE_HEALTH_MONITOR_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>|| <ul> <li>hardware_health_monitor</li> </ul>|
| hardware_health_nvidia_smi | Collect GPU stats including memory and GPU usage, temp and other by running nvidia-smi command (Linux Ubuntu only)|Eligible in Linux Ubuntu machine|Optional |* Hardware |Not executed.| <ul> <li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the execution interval of the Collector. Default: 60s</li><li>HARDWARE_HEALTH_NVIDIA_SMI_INTERVAL: the time-out of running /usr/bin/nvidia-smi command. Default: 10s</li> </ul>||<ul> <li>hardware_health_nvidia_smi</li> </ul>|

Copilot uses AI. Check for mistakes.
# VMwatch Plugin Collections

VM watch collectors are designed to gather VM health data on various resources like disk and network, by running health checks within the VM. This suite of collectors aid in identifying issues, monitoring performance trends, and optimizing resources to enhance the overall user experience.
VMWatch is implemented with an Infra-Plugin model for functional scalability. VMWatch Infra is reponsible for the scheduling of each Plugin's execution, and each Plugin is targeted to measure the VM health of a spefic area and emit the VM health Signals (Check, Metric, Eventlog). Below is a summary of all the available Plugins in VMWatch, the Signals they emit and their parameter configurations.
Copy link

Copilot AI Jan 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling error: "reponsible" should be "responsible".

Suggested change
VMWatch is implemented with an Infra-Plugin model for functional scalability. VMWatch Infra is reponsible for the scheduling of each Plugin's execution, and each Plugin is targeted to measure the VM health of a spefic area and emit the VM health Signals (Check, Metric, Eventlog). Below is a summary of all the available Plugins in VMWatch, the Signals they emit and their parameter configurations.
VMWatch is implemented with an Infra-Plugin model for functional scalability. VMWatch Infra is responsible for the scheduling of each Plugin's execution, and each Plugin is targeted to measure the VM health of a spefic area and emit the VM health Signals (Check, Metric, Eventlog). Below is a summary of all the available Plugins in VMWatch, the Signals they emit and their parameter configurations.

Copilot uses AI. Check for mistakes.
Comment on lines +41 to +43
| dns| Verify if the target DNS name can be resolved. |Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|
Copy link

Copilot AI Jan 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling error: "EnrironmentAttribute" should be "EnvironmentAttribute".

Suggested change
| dns| Verify if the target DNS name can be resolved. |Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnrironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|
| dns| Verify if the target DNS name can be resolved. |Eligible if EnvironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Network| This Plugin is executed every 180s. In each execution, it tries to resolve the DNS name www.msftconnecttest.com . The verification is marked as "Failed" if the DNS name cannot be resolved.|<ul> <li>DNS_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>DNS_NAMES: the domain names to be resolved separated by `,`. Default: `www.msftconnecttest.com`</li> </ul>| * dns ||
| tcp_stats | Collect the TCP statistics of the VM |Always eligible| Core | * Network|This Plugin is executed every 180s. In each execution, it collects the TCP statistics of the last 180s.| <ul> <li>TCP_STATS_INTERVAL: the execution interval of the Collector. Default: 180s</li>  </ul>||<ul> <li> SegmentsRetransmitted </li> <li> TCPSynRetransmits (Linux only) </li><li> NormalizedSegmentsRetransmitted </li><li> ConnectionResets </li><li> NormalizedConnectionResets </li><li> FailedConnectionAttempts </li><li> NormalizedFailedConnectionAttempts </li><li> ActiveConnectionOpenings</li><li> PassiveConnectionOpenings </li><li> CurrentConnections </li><li> SegmentsReceived </li><li> SegmentsSent </li></ul>||
| clock_skew | Verify the clock skew between the VM and the remote NTP server|Eligible if EnvironmentAttribute "OutboundConnectivityDisbled" is not set or set to "false"| Core| * Clock| This Plugin is executed every 180s. In each execution, it retrieves the clock offset between the remote NTP server time.windows.com and the VM. The verification is marked as "Failed" if the clock skew is larger than 5.0 seconds. In Windows VM, if connecting to remote NTP server fails, it fallbacks to check Windows Time Service with w32tm command. The verification is marked as "Failed" if the w32tm command returns "Leap Indicator: 3(not synchronized)".|<ul> <li>CLOCK_SKEW_INTERVAL: the execution interval of the Collector. Default: 180s</li> <li>CLOCK_SKEW_NTP_SERVER: the remote NTP server used to calculate clock skew. Default: time.windows.com</li> <li>CLOCK_SKEW_TIME_SKEW_THRESHOLD_IN_SECONDS: the threshold in seconds of clock offset to mark the verification as "Failed". Default: 5.0</li> </ul> |clockskew|

Copilot uses AI. Check for mistakes.
v-dirichards and others added 3 commits January 7, 2026 15:44
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@learn-build-service-prod
Copy link
Contributor

Learn Build status updates of commit 6f2f367:

💡 Validation status: suggestions

File Status Preview URL Details
articles/virtual-machines/vm-watch-collector-suite.md 💡Suggestion Details

articles/virtual-machines/vm-watch-collector-suite.md

  • Line 38, Column 2: [Suggestion: column-header-missing - See documentation] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod
Copy link
Contributor

Learn Build status updates of commit 1eefd98:

💡 Validation status: suggestions

File Status Preview URL Details
articles/virtual-machines/vm-watch-collector-suite.md 💡Suggestion Details

articles/virtual-machines/vm-watch-collector-suite.md

  • Line 38, Column 2: [Suggestion: column-header-missing - See documentation] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@prmerger-automator
Copy link
Contributor

PRMerger Results

Issue Description
File Change Percent This PR contains file(s) with more than 30% file change.

tfishler1 and others added 2 commits January 7, 2026 13:59
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@learn-build-service-prod
Copy link
Contributor

Learn Build status updates of commit f974de7:

💡 Validation status: suggestions

File Status Preview URL Details
articles/virtual-machines/vm-watch-collector-suite.md 💡Suggestion Details

articles/virtual-machines/vm-watch-collector-suite.md

  • Line 38, Column 2: [Suggestion: column-header-missing - See documentation] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod
Copy link
Contributor

Learn Build status updates of commit fe9fa29:

💡 Validation status: suggestions

File Status Preview URL Details
articles/virtual-machines/vm-watch-collector-suite.md 💡Suggestion Details

articles/virtual-machines/vm-watch-collector-suite.md

  • Line 38, Column 2: [Suggestion: column-header-missing - See documentation] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@prmerger-automator
Copy link
Contributor

PRMerger Results

Issue Description
File Change Percent This PR contains file(s) with more than 30% file change.

@github-actions
Copy link

This pull request has been inactive for at least 14 days. If you are finished with your changes, don't forget to sign off. See the contributor guide for instructions.
Get Help
Docs Support Teams Channel
Resolve Merge Conflict

@github-actions github-actions bot added the inactive This PR is inactive for more than 14 days label Jan 22, 2026
@v-dirichards
Copy link
Contributor

@ofemifowode Could you review this proposed update to your article and enter #sign-off in a comment if it's ready to merge?

Thanks!

@github-actions github-actions bot removed the inactive This PR is inactive for more than 14 days label Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants