Microsoft IIS

Metrics, Dashboards, Alerts and more for Microsoft IIS Integration in Sysdig Monitor.
Microsoft IIS

This integration is disabled by default. Please refer to Enable and Disable Integrations to enable it in your account.

This integration has 56 metrics.

The metrics in this integration are scraped from the Windows Exporter in the Windows integration. To enable the IIS metrics in the Windows Exporter, add the iis collector to its config.yaml file.

List of Alerts

AlertDescriptionFormat
[Microsoft IIS] Requests Temporarily Blocked Due To Bandwidth ThrottlingRequests have been temporarily blocked due to bandwidth throttling.Prometheus
[Microsoft IIS] Requests Rejected Due To Bandwidth ThrottlingRequests have been temporarily rejected due to bandwidth throttling.Prometheus
[Microsoft IIS] Too Many RecyclesThe application pool has been recycled too many times.Prometheus
[Microsoft IIS] Worker Processes CrashingThe worker processes have crashed too many times.Prometheus
[Microsoft IIS] Worker Processes Ping FailingThe Windows Process Activation Service (WAS) has failed multiple times to receive a response to ping messages sent to a worker process.Prometheus
[Microsoft IIS] Worker Processes Startup FailingThe Windows Process Activation Service (WAS) has failed multiple times to start a worker process.Prometheus
[Microsoft IIS] Worker Processes Shutdown FailingThe Windows Process Activation Service (WAS) has failed multiple times to shut down a worker process.Prometheus
[Microsoft IIS] High 4XX Error RateThe percentage of 4XX errors is high.Prometheus
[Microsoft IIS] High 5XX Error RateThe percentage of 5XX errors is high.Prometheus

List of Dashboards

Microsoft IIS - Overview

The dashboard provides an overview of the status and performance of the Microsoft IIS service. Microsoft IIS - Overview

Microsoft IIS - Application Pools and Workers

The dashboard provides information of the status and performance of the Microsoft IIS application pools and their workers. Microsoft IIS - Application Pools and Workers

List of Metrics

Metric name
windows_iis_anonymous_users_total
windows_iis_blocked_async_io_requests_total
windows_iis_cgi_requests_total
windows_iis_connection_attempts_all_instances_total
windows_iis_current_anonymous_users
windows_iis_current_application_pool_state
windows_iis_current_blocked_async_io_requests
windows_iis_current_cgi_requests
windows_iis_current_connections
windows_iis_current_isapi_extension_requests
windows_iis_current_non_anonymous_users
windows_iis_current_worker_processes
windows_iis_files_received_total
windows_iis_files_sent_total
windows_iis_ipapi_extension_requests_total
windows_iis_locked_errors_total
windows_iis_logon_attempts_total
windows_iis_non_anonymous_users_total
windows_iis_not_found_errors_total
windows_iis_received_bytes_total
windows_iis_recent_worker_process_failures
windows_iis_rejected_async_io_requests_total
windows_iis_requests_total
windows_iis_sent_bytes_total
windows_iis_server_file_cache_hits_total
windows_iis_server_file_cache_memory_bytes
windows_iis_server_file_cache_queries_total
windows_iis_server_metadata_cache_hits_total
windows_iis_server_metadata_cache_queries_total
windows_iis_server_output_cache_hits_total
windows_iis_server_output_cache_memory_bytes
windows_iis_server_output_cache_queries_total
windows_iis_server_uri_cache_hits_total
windows_iis_server_uri_cache_queries_total
windows_iis_total_application_pool_recycles
windows_iis_total_worker_process_failures
windows_iis_total_worker_process_ping_failures
windows_iis_total_worker_process_shutdown_failures
windows_iis_total_worker_process_startup_failures
windows_iis_worker_current_websocket_requests
windows_iis_worker_file_cache_hits_total
windows_iis_worker_file_cache_memory_bytes
windows_iis_worker_file_cache_queries_total
windows_iis_worker_metadata_cache_hits_total
windows_iis_worker_metadata_cache_queries_total
windows_iis_worker_output_cache_hits_total
windows_iis_worker_output_cache_memory_bytes
windows_iis_worker_output_queries_total
windows_iis_worker_request_errors_total
windows_iis_worker_requests_total
windows_iis_worker_threads
windows_iis_worker_uri_cache_hits_total
windows_iis_worker_uri_cache_queries_total
windows_iis_worker_websocket_connection_accepted_total
windows_iis_worker_websocket_connection_attempts_total
windows_iis_worker_websocket_connection_rejected_total

Prerequisites

None.

Installation

Installing an exporter is not required for this integration.

Monitoring and Troubleshooting Microsoft IIS

This document describes important metrics and queries that you can use to monitor and troubleshoot Microsoft IIS.

Server

Requests

Requests rate

Use the following query to get the requests per second by each site.

sum by (hostname, site)(rate(windows_iis_requests_total[2m]))

Use the following query to get the requests per second by each site and each method.

sum by (hostname, site, method)(rate(windows_iis_requests_total[2m]))
Request Errors

Use the following query to get the requests per second that have been made that were not satisfied by the server because the requested document was not found. These requests are usually reported as HTTP error 404.

rate(windows_iis_not_found_errors_total[2m])

Use the following query to get the requests per second that have been made that could not be satisfied by the server because the requested document was locked. These requests are usually reported as HTTP error 423.

rate(windows_iis_locked_errors_total[2m])

CGI, ISAPI and Async IO

CGI

Use the following query to get the number of CGI requests that are being processed simultaneously by the web service.

windows_iis_current_cgi_requests

Use the following query to get the number of CGI requests per second.

rate(windows_iis_cgi_requests_total[2m])
ISAPI

Use the following query to get the number of ISAPI extension requests that are being processed simultaneously by the web service.

windows_iis_current_isapi_extension_requests

Use the following query to get the number of ISAPI extension requests per second.

rate(windows_iis_ipapi_extension_requests_total[2m])
Async IO

Use the following query to get the number of current requests temporarily blocked due to bandwidth throttling settings.

windows_iis_current_blocked_async_io_requests

Use the following query to get the number of requests temporarily blocked due to bandwidth throttling settings per second.

rate(windows_iis_blocked_async_io_requests_total[2m])

Use the following query to get the number of requests rejected due to bandwidth throttling settings per second.

rate(windows_iis_rejected_async_io_requests_total[2m])

Connections and Users

Connections

Use the following query to get the current number of connections established with the web service.

windows_iis_current_connections

Use the following query to get the number of connections to the web service that have been attempted per second.

rate(windows_iis_connection_attempts_all_instances_total[2m])

Use the following query to get the number of attempts to log on to the web service that have occurred per second.

rate(windows_iis_logon_attempts_total[2m])
Users

Use the following query to get the current number of users who currently have an anonymous request pending with the web service.

windows_iis_current_anonymous_users

Use the following query to get the number of users who have established an anonymous request per second.

rate(windows_iis_anonymous_users_total[2m])

Use the following query to get the current number of users who currently have a non-anonymous request pending with the web service.

windows_iis_current_non_anonymous_users

Use the following query to get the number of users who have made non-anonymous requests to the web service per second.

rate(windows_iis_non_anonymous_users_total[2m])

Network

Data

Use the following query to get the number of data bytes that have been sent by the web service per second.

rate(windows_iis_sent_bytes_total[2m])

Use the following query to get the number of data bytes that have been received by the web service per second.

rate(windows_iis_received_bytes_total[2m])
Files

Use the following query to get the number of files that have been sent by the FTP service per second.

rate(windows_iis_files_sent_total[2m])

Use the following query to get the number of files that have been received by the FTP service per second.

rate(windows_iis_files_received_total[2m])

Server Cache

Use the following query to get the current number of bytes used by the file cache.

windows_iis_server_file_cache_memory_bytes

Use the following query to get the percentage of successful lookups in the user-mode file cache.

(
    rate(windows_iis_server_file_cache_hits_total[2m])
    /
    rate(windows_iis_server_file_cache_queries_total[2m])
) * 100

Use the following query to get the percentage of successful lookups in the URI cache.

(
    sum by (hostname)(rate(windows_iis_server_uri_cache_hits_total[2m]))
    /
    sum by (hostname)(rate(windows_iis_server_uri_cache_queries_total[2m]))
) * 100

Use the following query to get the current number of bytes used by the output cache.

windows_iis_server_output_cache_memory_bytes

Use the following query to get the percentage of successful lookups in the output cache.

(
    rate(windows_iis_server_output_cache_hits_total[2m])
    /
    rate(windows_iis_server_output_cache_queries_total[2m])
) * 100

Use the following query to get the percentage of successful lookups in the metadata cache.

(
    rate(windows_iis_server_metadata_cache_hits_total[2m])
    /
    rate(windows_iis_server_metadata_cache_queries_total[2m])
) * 100

Application Pools and Workers

Application Pools

Application Pools and Worker Processes

Use the following query to get the state of the application pools.

windows_iis_current_application_pool_state > 0

The state of the application pools can be one of the following:

  • Uninitialized
  • Initialized
  • Running
  • Disabling
  • Disabled
  • Shutdown Pending
  • Delete Pending

Use the following query to get the current number of worker processes that are running in the application pool.

windows_iis_current_worker_processes

Use the following query to get the number of times that the application pool has been recycled per second.

rate(windows_iis_total_application_pool_recycles[2m])
Worker Processes Failures

Use the following query to get the number of times that worker processes for the application pool failed during the rapid-fail protection interval.

windows_iis_recent_worker_process_failures

Use the following query to get the number of times that worker processes have crashed per second.

rate(windows_iis_total_worker_process_failures[2m])

Use the following query to get the number of times that the Windows Process Activation Service did not receive a response to ping messages sent to a worker process per second.

rate(windows_iis_total_worker_process_ping_failures[2m])

Use the following query to get the number of times that the Windows Process Activation Service failed to start a worker process per second.

rate(windows_iis_total_worker_process_startup_failures[2m])

Use the following query to get the number of times that Windows Process Activation Service failed to shut down a worker process per second.

rate(windows_iis_total_worker_process_shutdown_failures[2m])

Worker Requests

HTTP Requests and Threads

Use the following query to get the number of HTTP requests served by the application pool per second.

sum by (hostname, app)(rate(windows_iis_worker_requests_total[2m]))

Use the following query to get the number of HTTP requests that returned an error per second.

sum by (hostname, app, status_code)(rate(windows_iis_worker_request_errors_total[2m]))

Use the following query to get the percentage of HTTP requests that returned a 4XX error.

(
    sum by (hostname, app)(rate(windows_iis_worker_request_errors_total{status_code=~'4..'}[2m]))
    /
    sum by (hostname, app)(rate(windows_iis_worker_requests_total[2m]))
) * 100

Use the following query to get the percentage of HTTP requests that returned a 4XX error.

(
    sum by (hostname, app)(rate(windows_iis_worker_request_errors_total{status_code=~'5..'}[2m]))
    /
    sum by (hostname, app)(rate(windows_iis_worker_requests_total[2m]))
) * 100

Use the following query to get the number of threads actively processing requests in the the application pool.

sum by (hostname, app, state)(windows_iis_worker_threads)
Websocket Requests

Use the following query to get the number of active websocket requests in the the application pool.

sum by (hostname, app)(windows_iis_worker_current_websocket_requests[2m])

Use the following query to get the number of accepted websocket requests in the the application pool per second.

sum by (hostname, app)(rate(windows_iis_worker_websocket_connection_accepted_total[2m]))

Use the following query to get the number of rejected websocket requests in the the application pool per second.

sum by (hostname, app)(rate(windows_iis_worker_websocket_connection_rejected_total[2m]))

Use the following query to get the percentage of websocket rejected requests.

(
    sum by (hostname, app)(rate(windows_iis_worker_websocket_connection_rejected_total[2m]))
    /
    sum by (hostname, app)(rate(windows_iis_worker_websocket_connection_attempts_total[2m]))
) * 100

Worker Cache

Use the following query to get the current number of bytes used by user-mode file cache.

avg by (hostname, app)(windows_iis_worker_file_cache_memory_bytes)

Use the following query to get the percentage of successful lookups in the user-mode file cache.

(
    avg by (hostname, app)(rate(windows_iis_worker_file_cache_hits_total[2m]))
    /
    avg by (hostname, app)(rate(windows_iis_worker_file_cache_queries_total[2m]))
) * 100

Use the following query to get the percentage of successful lookups in the user-mode URI cache.

(
    avg by (hostname, app)(rate(windows_iis_worker_uri_cache_hits_total[2m]))
    /
    avg by (hostname, app)(rate(windows_iis_worker_uri_cache_queries_total[2m]))
) * 100

Use the following query to get the current number of bytes used by the output cache.

avg by (hostname, app)(windows_iis_worker_output_cache_memory_bytes)

Use the following query to get the percentage of successful lookups in the output cache.

(
    avg by (hostname, app)(rate(windows_iis_worker_output_cache_hits_total[2m]))
    /
    avg by (hostname, app)(rate(windows_iis_worker_output_queries_total[2m]))
) * 100

Use the following query to get the percentage of successful lookups in the user-mode metadata cache.

(
    avg by (hostname, app)(rate(windows_iis_worker_metadata_cache_hits_total[2m]))
    /
    avg by (hostname, app)(rate(windows_iis_worker_metadata_cache_queries_total[2m]))
) * 100

Agent Configuration

This integration has no default agent job.