IIS
Overview
This plugin collects runtime metrics from Microsoft IIS. The plugin requires Microsoft IIS Administration API to be installed and configured. Plugin gathers information about connections, requests, memory and network statistics, etc. for webserver, application pools and websites. For more information, please refer to IIS Administration API Monitoring.
This plugin is currently available for x86_64 Linux and Windows platforms.
Setup
The iis
plugin is included with the SolarWinds Snap Agent by default, please follow the directions below to enable it for a agent instance.
Prerequisites
This plugin require access token and optionally user credentials to gather status information using IIS Administration API. Refer to IIS Administration API documentation on how to configure API access.
To verify that IIS Administration API is configured properly, you should be able to query the API with the following PowerShell commands
> $cred = Get-Credential -Credential <API user>
> Invoke-WebRequest -Headers @{"Access-Token"="Bearer <API token>"} -Method GET https://localhost:55539/api/webserver/monitoring/ -Credential $cred | ConvertFrom-Json
If you need to automate creation of IIS Administration API tokens, please refer to PowerShell script.
Configuration
The agent provides an example configuration file to help you get started quickly. It defines the plugin and task file to be loaded by the agent, but requires you to provide the correct settings for authentication. To enable the plugin:
- Make a copy of the iis example configuration file
iis.yaml.example
, renaming it toiis.yaml
:
On Windows, using Explorer or PowerShell:
Copy> copy "C:\ProgramData\SolarWinds\Snap\plugins.d\iis.yaml.example" "C:\ProgramData\SolarWinds\Snap\plugins.d\iis.yaml"
On Linux using command line:
Copy$ sudo cp /opt/SolarWinds/Snap/etc/plugins.d/iis.yaml.example /opt/SolarWinds/Snap/etc/plugins.d/iis.yaml
- Update the
iis.yaml
configuration file with settings specific to your IIS instance, for example:
Copycollector:
iis:
all:
url: "https://localhost:55539"
token: "oolldxQpEvg3Vj_fRlhVF4-Z9IZgGf5bWM2M2cVEPi1TmOlzjFiGWw"
username: ""
password: ""
domain: ""
load:
plugin: snap-plugin-collector-aoiis.exe
task: task-aoiis.yaml
url
specifies URL to connect with IIS Administration APItoken
configured in IIS Administration API for authenticationusername
- if left empty, token only authentication will be used
- otherwise Microsoft Authentication will be used
password
valid password associated with usernamedomain
domain associated with username
- Restart the agent:
On Windows command line:
Copy> net stop swisnapd
> net start swisnapdOn Linux command line:
Copy$ sudo service swisnapd restart
- Enable the IIS plugin in the AppOptics UI
On the Integrations Page you will see the IIS plugin available if the previous steps were successful. If you do not see the plugin, see Troubleshooting Linux.
Select the IIS plugin to open the configuration menu in the UI, and enable the plugin.
You should soon see the
iis
metrics reported to your dashboard.
Metrics and Tags
The tables below outline the default set of metrics collected by the iis
plugin along with the optional metrics available.
All metrics are int64
values collected either as a counter, gauge or derivative.
Default Metrics
By default, plugin collects selected Web Server metrics.
Namespace | Description |
---|---|
iis.network.total_bytes_recv | The number of bytes received since the web server started |
iis.network.total_bytes_sent | The number of bytes sent since the web server started |
iis.network.total_connection_attempts | The number of client connections that have been attempted since the web server started |
iis.requests.total | The number of requests that have been served since the web server started |
iis.cpu.percent_usage | The percentage of CPU being used by web server processes |
iis.disk.io_write_operations_sec | The number of write operations performed by all webserver processes in the last second |
iis.disk.io_read_operations_sec | The number of read operations performed by all webserver processes in the last second |
iis.cache.output_cache_count | Current number of items is in the output cache |
iis.cache.file_cache_count | Current number of files whose content is in the user-mode cache |
iis.cache.uri_cache_count | Number of URI information blocks that are currently in the user-mode cache |
Default Metric Tags
All IIS metrics are tagged with hostname
. Instead of using that tag, we recommend using the @host
alias. Additionally, all IIS metrics are tagged with IIS webserver ID.
Application Pool and Websites metrics are additionally tagged respectively with AppPoolId
and WebSiteId
.
Optional Metrics
Optinal metrics can be activated by editing the task yaml. For more information please read the SolarWinds Snap Agent configuration article.
Web Server Metrics
Namespace | Description |
---|---|
iis.network.bytes_sent_sec | The number of bytes that the web server sent in the last second |
iis.network.bytes_recv_sec | The number of bytes that the web server received in the last second |
iis.network.connection_attempts_sec | The number of client connections that have been attempted in the last second |
iis.network.current_connections | The number of active connections that are open on the web server |
iis.requests.active | The number of requests that are currently being processed by the web server |
iis.requests.per_sec | The number of requests that have been served in the past second |
iis.memory.handles | The number of handles that are currently open in web server processes |
iis.memory.private_bytes | The total private bytes being used by all web server processes |
iis.memory.private_working_set | The total private working set being used by all web server processes |
iis.memory.system_in_use | The total memory in use by the entire system |
iis.memory.installed | The total installed memory |
iis.cpu.threads | The number of threads currently active in web server processes |
iis.cpu.processes | The number of processes being used by the web server to process requests |
iis.cpu.system_percent_usage | The percentage of CPU being used by the entire system |
iis.disk.page_faults_sec | The number of page faults experienced by all webserver processes in the last second |
iis.cache.file_cache_memory_usage | Current number of bytes used for the user-mode file cache |
iis.cache.file_cache_hits | Number of successful lookups in the user-mode file cache since the web server starte |
iis.cache.file_cache_misses | Number of unsuccessful look ups in the user-mode file cache since the web server started |
iis.cache.total_files_cached | Number of files whose content was ever added to the user-mode cache since the web server started. |
iis.cache.output_cache_memory_usage | Current number of bytes used for the output cache |
iis.cache.output_cache_hits | Number of successful lookups in the output cache since the web server started |
iis.cache.output_cache_misses | Number of unsuccessful lookups in the output cache since the web server started |
iis.cache.uri_cache_hits | Number of successful look ups in the user-mode URI cache since the web server started |
iis.cache.uri_cache_misses | Number of unsuccessful look ups in the user-mode URI cache since the web server started |
iis.cache.total_uris_cached | Number of URI information blocks that have been added to the user-mode cache since the web server started |
Website Metrics
Namespace | Description |
---|---|
iis.website.uptime | The number of seconds that have elapsed since the web site started |
iis.website.network.bytes_sent_sec | The number of bytes that the website sent in the last second |
iis.website.network.bytes_recv_sec | The number of bytes that the website received in the last second |
iis.website.network.total_bytes_recv | The number of bytes received since the website started |
iis.website.network.total_bytes_sent | The number of bytes sent since the website started |
iis.website.network.total_connection_attempts | The number of client connections that have been attempted since the website started |
iis.website.network.current_connections | The number of active connections that are open on the website |
iis.website.requests.active | The number of requests that are currently being processed by the website |
iis.website.requests.per_sec | The number of requests that have been served in the past second |
iis.website.requests.total | The number of requests that have been served since the website started |
iis.website.memory.handles | The number of handles that are currently open in website processes |
iis.website.memory.private_bytes | The total private bytes being used by all website processes |
iis.website.memory.private_working_set | The total private working set being used by all website processes |
iis.website.memory.system_in_use | The total memory in use by the entire system |
iis.website.memory.installed | The total installed memory |
iis.website.cpu.threads | The number of threads currently active in website processes |
iis.website.cpu.processes | The number of processes being used by the website to process requests |
iis.website.cpu.percent_usage | The percentage of CPU being used by website processes |
iis.website.disk.io_write_operations_sec | The number of write operations performed by all website processes in the last second |
iis.website.disk.io_read_operations_sec | The number of read operations performed by all website processes in the last second |
iis.website.disk.page_faults_sec | The number of page faults experienced by all website processes in the last second |
iis.website.cache.file_cache_memory_usage | Current number of bytes used for the user-mode file cache |
iis.website.cache.file_cache_hits | Number of successful lookups in the user-mode file cache since the website starte |
iis.website.cache.file_cache_misses | Number of unsuccessful look ups in the user-mode file cache since the website started |
iis.website.cache.file_cache_count | Current number of files whose content is in the user-mode cache |
iis.website.cache.total_files_cached | Number of files whose content was ever added to the user-mode cache since the website started. |
iis.website.cache.output_cache_memory_usage | Current number of bytes used for the output cache |
iis.website.cache.output_cache_hits | Number of successful lookups in the output cache since the website started |
iis.website.cache.output_cache_misses | Number of unsuccessful lookups in the output cache since the website started |
iis.website.cache.output_cache_count | Current number of items is in the output cache |
iis.website.cache.uri_cache_hits | Number of successful look ups in the user-mode URI cache since the website started |
iis.website.cache.uri_cache_misses | Number of unsuccessful look ups in the user-mode URI cache since the website started |
iis.website.cache.uri_cache_count | Number of URI information blocks that are currently in the user-mode cache |
iis.website.cache.total_uris_cached | Number of URI information blocks that have been added to the user-mode cache since the website started |
Application Pool Metrics
Namespace | Description |
---|---|
iis.app_pool.requests.active | The number of requests that are currently being processed by the application pool |
iis.app_pool.requests.per_sec | The number of requests that have been served in the past second |
iis.app_pool.requests.total | The number of requests that have been served since the application pool started |
iis.app_pool.memory.handles | The number of handles that are currently open in application pool processes |
iis.app_pool.memory.private_bytes | The total private bytes being used by all application pool processes |
iis.app_pool.memory.private_working_set | The total private working set being used by all application pool processes |
iis.app_pool.memory.system_in_use | The total memory in use by the entire system |
iis.app_pool.memory.installed | The total installed memory |
iis.app_pool.cpu.threads | The number of threads currently active in application pool processes |
iis.app_pool.cpu.processes | The number of processes being used by the application pool to process requests |
iis.app_pool.cpu.percent_usage | The percentage of CPU being used by application pool processes |
iis.app_pool.disk.io_write_operations_sec | The number of write operations performed by all application pool processes in the last second |
iis.app_pool.disk.io_read_operations_sec | The number of read operations performed by all application pool processes in the last second |
iis.app_pool.disk.page_faults_sec | The number of page faults experienced by all application pool processes in the last second |
iis.app_pool.cache.file_cache_memory_usage | Current number of bytes used for the user-mode file cache |
iis.app_pool.cache.file_cache_hits | Number of successful lookups in the user-mode file cache since the application pool starte |
iis.app_pool.cache.file_cache_misses | Number of unsuccessful look ups in the user-mode file cache since the application pool started |
iis.app_pool.cache.file_cache_count | Current number of files whose content is in the user-mode cache |
iis.app_pool.cache.total_files_cached | Number of files whose content was ever added to the user-mode cache since the application pool started. |
iis.app_pool.cache.output_cache_memory_usage | Current number of bytes used for the output cache |
iis.app_pool.cache.output_cache_hits | Number of successful lookups in the output cache since the application pool started |
iis.app_pool.cache.output_cache_misses | Number of unsuccessful lookups in the output cache since the application pool started |
iis.app_pool.cache.output_cache_count | Current number of items is in the output cache |
iis.app_pool.cache.uri_cache_hits | Number of successful look ups in the user-mode URI cache since the application pool started |
iis.app_pool.cache.uri_cache_misses | Number of unsuccessful look ups in the user-mode URI cache since the application pool started |
iis.app_pool.cache.uri_cache_count | Number of URI information blocks that are currently in the user-mode cache |
iis.app_pool.cache.total_uris_cached | Number of URI information blocks that have been added to the user-mode cache since the application pool started |
When the APM Integrated Experience is enabled, AppOptics shares a common navigation and enhanced feature set with the other integrated experiences' products. How you navigate AppOptics and access its features may vary from these instructions. For more information, go to the APM Integrated Experience documentation.
The scripts are not supported under any SolarWinds support program or service. The scripts are provided AS IS without warranty of any kind. SolarWinds further disclaims all warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The risk arising out of the use or performance of the scripts and documentation stays with you. In no event shall SolarWinds or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the scripts or documentation.