Internet Information Services (IIS) is a flexible, secure, and extensible web server from Microsoft that helps you host anything on the web. Since it is capable of handling most demanding tasks, from media streaming to web applications, monitoring its performance and response time becomes vital.
IIS web server performance monitoring capabilities from Applications Manager helps you proactively monitor your IIS servers by providing complete visibility into the performance of your websites and web application pools that are running within. It keeps track of various key web server metrics such as response time, connection statistics, data and file transaction rate, along with the list of anonymous users that are currently using the website at regular intervals.
In this help document, you will learn how to get started with IIS web server performance monitoring using Applications Manager's IIS traffic monitor.
Prerequisites for monitoring IIS server metrics:Click here
Using the REST API to add a new IIS server monitor:Click here
To create an IIS traffic monitor, follow the steps given below:
Choose the preferred Mode of Monitoring: WinRM (default) or WMI to retrieve details about websites and application pools. Agent mode monitors are added automatically (see step 10).
Note: WinRM mode is only supported in Applications Manager versions 16820 and above.
Note: To collect data for Website Statistics and Application Pools, the host where the IIS Server is running should be monitored in WMI mode. (Applicable only for Applications Manager versions 15110 and below)
Go to the Monitors Category View by clicking the Monitors tab. Click on IIS Server under the Web Server / Services category. The IIS Server monitor bulk configuration view is distributed into three tabs:
Note: IIS Server monitoring is supported in Linux setup (Applicable only for Applications Manager versions 15120 and above), where you can monitor IIS URL Response time. However, IIS website statistics & Application Pool details are not available. To monitor the other metrics, use the Windows Server Agent (Agent mode). Refer here to know more.
Applications Manager's IIS traffic monitor provides complete visibility into your IIS web server environments altogether in a single window based on the following tabs:
IIS Server can be monitored in WMI or WinRM mode (agentless, where Applications Manager polls the IIS host remotely) or in Agent mode (the Windows Server Agent (FSO Agent) on the IIS host collects the metrics locally and pushes them to Applications Manager). The metric tables in this document have a column for each mode. A tick (
) means the metric is available in that mode, and a cross (
) means it is not supported (no data is shown).
Note: Agent-based IIS monitoring is supported from Applications Manager version 182700 and FSO Agent version 22.4.0.
The number of metrics shown for each mode is as follows:
| Mode | Overview | Sites | Applications | Application Pools | Total |
|---|---|---|---|---|---|
| WMI | 10 | 14 | 5 | 25 | 54 |
| WinRM | 10 | 14 | 5 | 24 | 53 |
| Agent | 9 | 3 | 28 | 23 | 63 |
Agent mode notes:
Note: The ASP.NET metrics on the Overview tab, the .NET CLR tables, and the Agent mode application metrics require the ASP.NET performance counters to be available on the IIS host. If ASP.NET is not installed, these metrics show no data.
| Parameter | Description | WMI | WinRM | Agent |
|---|---|---|---|---|
| RESPONSE TIME | ||||
| Response Time | Amount of time taken to connect to the server and provide a response (in ms). | ![]() | ![]() | ![]() |
| ASP.NET Requests | ||||
| Request Execution Time | Time taken to execute the most recent ASP.NET request (in ms). Displayed as a graph. | ![]() | ![]() | ![]() |
| Request Wait Time | Time the most recent ASP.NET request waited in the queue before it was executed (in ms). Displayed as a graph. | ![]() | ![]() | ![]() |
| Current Requests | Number of ASP.NET requests that are currently being handled, including those executing and those waiting. | ![]() | ![]() | ![]() |
| Queued Requests | Number of ASP.NET requests waiting in the queue to be processed. | ![]() | ![]() | ![]() |
| Rejected Requests | Number of ASP.NET requests rejected because the request queue was full. | ![]() | ![]() | ![]() |
| Cache Memory and Hits | ||||
| File Cache Memory Usage | Memory currently used by the IIS user-mode file cache (in bytes). | ![]() | ![]() | ![]() |
| File Cache Hits | Percentage of file cache lookups that were served from the cache (in %). Displayed as a graph. | ![]() | ![]() | ![]() |
| Metadata Cache Hits | Percentage of metadata (configuration) cache lookups that were served from the cache (in %). Displayed as a graph. | ![]() | ![]() | ![]() |
| URI Cache Hits | Percentage of URI cache lookups that were served from the cache (in %). Displayed as a graph. | ![]() | ![]() | ![]() |
| Parameter | Description | WMI | WinRM | Agent |
|---|---|---|---|---|
| Website Statistics | ||||
| Website Name | Name of the website hosted by the IIS server. | ![]() | ![]() | ![]() |
| Bindings | Bindings configured for the website, such as protocol, IP address, port, and host name. | ![]() | ![]() | ![]() |
| Current Connections | Number of connections that are currently established with the website. | ![]() | ![]() | ![]() |
| Maximum Connections | Maximum number of simultaneous connections that have been established with the website since the IIS service started. | ![]() | ![]() | ![]() |
| Bytes Sent/sec | Amount of bytes sent from the website per second. | ![]() | ![]() | ![]() |
| Bytes Received/sec | Amount of bytes received by the website per second. | ![]() | ![]() | ![]() |
| Bytes Transferred/sec | Total amount of bytes sent and received by the website per second. | ![]() | ![]() | ![]() |
| Files Sent/sec | Number of files sent from the website per second. | ![]() | ![]() | ![]() |
| Files Received/sec | Number of files received by the website per second. | ![]() | ![]() | ![]() |
| Files Transferred/sec | Total number of files sent and received by the website per second. | ![]() | ![]() | ![]() |
| Current Anonymous Users | Number of anonymous users that are currently connected to the website. | ![]() | ![]() | ![]() |
| Anonymous Users/sec | Number of anonymous users that are connected to the website per second. | ![]() | ![]() | ![]() |
| Current Non-Anonymous Users | Number of non-anonymous users that are currently connected to the website. | ![]() | ![]() | ![]() |
| Non-Anonymous Users/sec | Number of non-anonymous users that are connected to the website per second. | ![]() | ![]() | ![]() |
Website availability is shown for each website. A website is Up when it is running and Down when it is stopped. In Agent mode, the table is titled IIS Website Statistics.
In addition to the above metrics, the following is a list of graphs that are shown in this tab:
| Graph | Description | WMI | WinRM | Agent |
|---|---|---|---|---|
| Graphs | ||||
| Top Websites by Current Connections | Websites that have the highest number of current connections established. | ![]() | ![]() | ![]() |
| Top Websites by Bytes Transferred | Websites that have the highest number of bytes transferred per second. | ![]() | ![]() | ![]() |
| Top Websites by Files transferred | Websites that have the highest number of files transferred per second. | ![]() | ![]() | ![]() |
| Top Websites by Anonymous users | Websites that have the highest number of anonymous users connected per second. | ![]() | ![]() | ![]() |
| Top Websites by Non-Anonymous users | Websites that have the highest number of non-anonymous users connected per second. | ![]() | ![]() | ![]() |
This tab lists every IIS application (virtual application) configured under the websites. Each application has its own availability and health. In Agent mode, the availability is based on the application state reported by the agent. In WMI and WinRM modes, an application is Up only when both its website and its application pool are Up.
| Parameter | Description | WMI | WinRM | Agent |
|---|---|---|---|---|
| Application Configuration Details | ||||
| Application Name | Name of the IIS application. | ![]() | ![]() | ![]() |
| Pool Name | Name of the application pool in which the application runs. | ![]() | ![]() | ![]() |
| Site Name | Name of the website to which the application belongs. | ![]() | ![]() | ![]() |
| Protocol | Protocols enabled for the application, for example, http, https and net.tcp. | ![]() | ![]() | ![]() |
| Path | Virtual path of the application within the website. | ![]() | ![]() | ![]() |
| Active Application Details | ||||
| Requests/sec | Number of ASP.NET requests executed by the application per second. | ![]() | ![]() | ![]() |
| Total Failed Requests | Total number of requests to the application that failed, for example, due to errors, timeouts, or unauthorized access. | ![]() | ![]() | ![]() |
| Queued Requests | Number of requests waiting in the application's queue to be processed. | ![]() | ![]() | ![]() |
| Total Bytes Received | Total size of the requests received by the application (in KB). | ![]() | ![]() | ![]() |
| Total Bytes Sent | Total size of the responses sent by the application (in KB). | ![]() | ![]() | ![]() |
| Concurrent Requests | Number of requests being processed by the application at the same time. | ![]() | ![]() | ![]() |
| Application Request Details | ||||
| Total Number of Requests | Total number of requests received by the application since it started. | ![]() | ![]() | ![]() |
| Request Success | Number of requests that the application completed successfully. | ![]() | ![]() | ![]() |
| Request Timed Out (500) | Number of requests that timed out or ended with an HTTP 500 (internal server error) response. | ![]() | ![]() | ![]() |
| Request Not Found (404) | Number of requests that failed because the requested resource was not found (HTTP 404). | ![]() | ![]() | ![]() |
| Request Not Authorized (401) | Number of requests that failed because of missing or invalid authorization (HTTP 401). | ![]() | ![]() | ![]() |
| Request Rejected (503) | Number of requests rejected because the server or queue was too busy (HTTP 503). | ![]() | ![]() | ![]() |
| Requests Disconnected | Number of requests dropped because the client disconnected or communication failed. | ![]() | ![]() | ![]() |
| Anonymous Requests | Number of requests made by anonymous (unauthenticated) users. | ![]() | ![]() | ![]() |
| Application Session and Cache Details | ||||
| Active Sessions | Number of ASP.NET sessions that are currently active in the application. | ![]() | ![]() | ![]() |
| SQL Connections | Number of connections the application has made to a SQL Server session-state store. | ![]() | ![]() | ![]() |
| State Connections | Number of connections the application has made to an ASP.NET State Server session-state store. | ![]() | ![]() | ![]() |
| Connection Timeout | Number of sessions that timed out because they were inactive. | ![]() | ![]() | ![]() |
| Total Entries | Total number of entries in the application's ASP.NET cache. | ![]() | ![]() | ![]() |
| API Hit Ratio | Percentage of cache API lookups that were served from the cache (in %). | ![]() | ![]() | ![]() |
| Output Hits Ratio | Percentage of output cache requests that were served from the cache (in %). | ![]() | ![]() | ![]() |
| Memory Limit | Percentage of the cache memory limit that is currently used (in %). | ![]() | ![]() | ![]() |
| Turnover Rate/sec | Number of items added to or removed from the cache per second. | ![]() | ![]() | ![]() |
Note: Request, session, and cache metrics for individual IIS applications are collected only in Agent mode. In WMI and WinRM modes, only the application configuration details are available.
The process metrics (CPU, memory, I/O, and threads) are totals across all IIS worker processes (w3wp.exe) that belong to the application pool. Each application pool has its own availability. A pool is Up when it is started or starting and Down when it is stopped or stopping. In Agent mode, the table is titled IIS Application Pools.
| Parameter | Description | WMI | WinRM | Agent |
|---|---|---|---|---|
| Application Pools | ||||
| Application Pool Name | Name of the application pool. | ![]() | ![]() | ![]() |
| Runtime | .NET CLR version configured for the application pool, for example, v4.0. This is empty when the pool is set to No Managed Code. | ![]() | ![]() | ![]() |
| No. of Worker Process | The number of worker processes (different programs) assigned to a pool. | ![]() | ![]() | ![]() |
| Max Processes | Maximum number of worker processes allowed for the application pool (the web garden setting). | ![]() | ![]() | ![]() |
| Queue Length | Length of the HTTP. sys request queue of an application pool. | ![]() | ![]() | ![]() |
| Active Application Pool Details | ||||
| CPU Usage | Amount of CPU utilized by the worker processes of the application pool, as a share of the total CPU across all logical processors (in %). | ![]() | ![]() | ![]() |
| Memory Usage | Amount of memory (working set) utilized by the worker processes of the application pool, as a share of the total physical memory of the server (in %). | ![]() | ![]() | ![]() |
| Shared/Physical Memory | Physical memory (working set) currently used by the worker processes of the application pool, including memory shared with other processes (in MB). | ![]() | ![]() | ![]() |
| Private/Virtual Memory | Physical memory used only by the worker processes of the application pool and not shared with other processes; that is, the private working set (in MB). | ![]() | ![]() | ![]() |
| Private Bytes | Memory committed by the worker processes of the application pool that cannot be shared with other processes (in MB). | ![]() | ![]() | ![]() |
| I/O Operations/sec | Number of read and write operations performed by the worker processes of the application pool per second. | ![]() | ![]() | ![]() |
| Thread Count | Number of threads that are currently active in the worker processes of the application pool. | ![]() | ![]() | ![]() |
| Common Language Runtime (CLR) Data | ||||
| Loader Heap | Memory committed by the .NET class loader for the worker process (in MB). | ![]() | ![]() | ![]() |
| Assemblies | Number of .NET assemblies that are currently loaded. | ![]() | ![]() | ![]() |
| App Domains | Number of .NET application domains that are currently loaded. | ![]() | ![]() | ![]() |
| Exceptions/sec | Number of .NET exceptions thrown per second. | ![]() | ![]() | ![]() |
| Common Language Runtime (CLR) Memory Data | ||||
| Garbage Collection Time | Share of time spent on garbage collection since the last collection cycle (in %). | ![]() | ![]() | ![]() |
| Total Heap | Total memory used by all managed (.NET) heaps (in MB). | ![]() | ![]() | ![]() |
| Gen 0 Heap | Size of the Generation 0 heap, which holds short-lived objects (in MB). | ![]() | ![]() | ![]() |
| Gen 1 Heap | Size of the Generation 1 heap (in MB). | ![]() | ![]() | ![]() |
| Gen 2 Heap | Size of the Generation 2 heap, which holds long-lived objects (in MB). | ![]() | ![]() | ![]() |
| Large Object Heap | Size of the Large Object Heap, which holds objects of 85 KB or more (in MB). | ![]() | ![]() | ![]() |
| Common Language Runtime (CLR) Thread Data | ||||
| Physical Threads | Number of operating-system threads created and owned by the CLR. | ![]() | ![]() | ![]() |
| Logical Threads | Number of managed (.NET) thread objects that are currently in the process. | ![]() | ![]() | ![]() |
| Queued Threads | Number of threads waiting to acquire a managed lock. | ![]() | ![]() | ![]() |
Note: The Start, Stop, and Restart actions for websites and the Start, Stop, and Recycle actions for application pools are available only in WMI and WinRM modes, and only to Admin and Enterprise Admin users. The Agent mode tables do not show these actions.
It allows us to track crucial metrics such as response times, resource utilization, error rates, and transaction performance. The real-time monitoring alerts promptly notify us of any issues or anomalies, enabling us to take immediate action.
Reviewer Role: Research and Development