What is IIS?

Microsoft Internet Information Services (IIS, formerly known as Internet Information Server) is extensible web server software created by Microsoft for use with the Windows family. IIS runs on Windows systems to serve requested HTML pages or files.

IIS supports various protocols, including HTTP, HTTP/2, HTTPS, FTP, FTPS, SMTP, and NNTP. Key benefits include componentization, extensibility and ASP.NET integration. IIS is widely used to host ASP.NET web applications and static websites. It can also be used as an FTP server, host WCF services, and be extended to host web applications built on other platforms such as PHP.

IIS has numerous extensibility features. Swappable interfaces, such as ISAPI and FastCGI make it possible to use IIS with a variety of backend technologies, from micro-frameworks such as Flask to runtimes such as Node.js, along with Windows technologies such as ASP.NET. Many organizations and businesses rely on IIS for their core web applications, so ensuring that these applications are performing well is critical.

How does IIS work?

The Microsoft Internet Information Services (IIS) web server works by handling incoming web requests and delivering web content to clients, typically web browsers. When a client initiates an HTTP request, IIS listens on specified ports (like 80 for HTTP and 443 for HTTPS) for incoming requests. It then follows a series of steps to determine how to process the request.

Initially, IIS verifies the client's identity through authentication methods such as Windows Authentication. It ensures that only authorized users can access specific resources. Next, IIS examines the requested URL to determine which web application or website should handle the request. URL routing helps direct requests to the correct destination. IIS may apply request filtering rules, blocking or allowing requests based on criteria like file extensions or request headers, to enhance security.

For optimized data transfer, IIS can compress response data before sending it to the client, reducing bandwidth usage and speeding up content delivery. Moreover, IIS utilizes caching mechanisms to store frequently requested resources, improving response times and reducing server processing.

Once IIS identifies the appropriate web application, it forwards the request to the corresponding application pool, isolating web applications for security and stability. Within the application pool, the web application's code is executed. This includes processing scripts, interacting with databases, generating dynamic content, and performing business logic.

The web application ultimately generates an HTTP response, including HTML, CSS, JavaScript, and resources required to render the requested web page, along with HTTP headers, cookies, and metadata. This response is then sent back to IIS, which enhances it by applying security policies, managing compression, and handling caching. Finally, IIS sends the processed HTTP response back to the client, where the web browser renders the web page or content.

Throughout these processes, IIS logs details about each request and response for monitoring and troubleshooting purposes.

What are popular alternatives to IIS? Why do people choose IIS above alternatives?

Popular alternatives to Microsoft IIS include many open-source options plus commercial offerings, including choices such as Apache technologies and Nginx.

The decision to choose Microsoft IIS rather than alternatives is usually influenced by factors such as:

  • Organizational dependence on the Windows Ecosystem: IIS is tightly integrated with the Windows operating system, making it a natural choice for organizations that predominantly use Windows-based servers and tools. It works seamlessly with technologies like .NET, ASP.NET, and Windows Authentication. IIS can take advantage of other Windows Server features like Active Directory for user authentication and authorization. It also integrates with Microsoft's cloud offerings, such as Azure. For developers using Visual Studio, IIS provides seamless integration, making it easy to develop, debug, and deploy web applications directly from the development environment.
  • Familiarity and skills availability: Many administrators and developers are already familiar with IIS due to its prevalence in Windows environments. This familiarity can lead to faster implementation and troubleshooting. As one of the most popular web server technologies in use, it is relatively easy to find skilled and experienced staff to deploy and maintain IIS deployments.
  • Good Commercial Support options: Many organizations prefer to have commercial support for their web server, and Microsoft offers strong support options for IIS through its enterprise support agreements.
  • Security: As a commercial offering Microsoft IIS offers one of the most secure choices.

For some, the fact that IIS only runs on Windows is a limitation, and the choice not to use IIS is often dictated by a need to run web servers on alternative operating systems, such as macOS, UNIX or Linux. Technically it is possible to run IIS on Linux and Macs using Mono, however this is not recommended and is likely be unstable and to exhibit poor performance.

What are the key metrics to monitor on an IIS server?

Broadly, the essential groups of IIS monitoring metrics to track are:

  • Monitor IIS Availability and Response Time
  • Monitor the workload on your IIS server and individual websites
  • Monitor the status codes returned by the server
  • Monitor the currently executing requests for each website
  • Monitor ASP.NET exceptions
  • Monitor .NET Processing Efficiency
  • Monitor .NET CLR Engine
  • Monitor Application Pools and Worker Processes
  • Monitor Windows Process Activation Service (WAS)
  • Track HTTP.sys Performance

Many of the above metric groups contain multiple individual metrics that are related to each other. More details about these metrics can be found here, Top 10 Microsoft IIS Monitoring Metric Groups.

Advice on troubleshooting IIS deployments is available in: The IIS Administrator's Troubleshooting Guide.

To monitor IIS metrics, you can use various tools and technologies, including Windows Performance Monitor (PerfMon), third-party monitoring solutions, log analyzers, and custom scripts. Implementing alerting and notification systems based on threshold values for these metrics will help you proactively address issues and maintain the optimal performance of your IIS server.

eG Enterprise is an out-of-the-box single console monitoring solution for IIS that removes the need to manually deploy monitoring and configure thresholds and alerting. The AIOps engine within eG Enterprise allows automatic real-time monitoring, alerting and root-cause diagnosis for IIS servers at large scale including in auto-scaled environments. Learn more: Microsoft IIS Monitoring for IIS Web Servers (eginnovations.com).

How to monitor IIS logs

eG Enterprise monitors IIS web server logs passively to proactively detect the early warning signs of issues before end users are affected. eG Enterprise tracks the workload to each website hosted on the web server, identifies whether there are errors occurring, and reports the URLs affected along with the website they correspond to. Proactive continual monitoring of IIS logs offers many advantages over retrospective parsing of logs to diagnose issues after they have occurred.

AIOps powered observability tools such as eG Enterprise will also correlate the metrics, logs and traces from IIS systems to provide end-to-end visibility. A description of the limitations of logs and how they relate to metrics and traces is available here: The Three Pillars of Observability: Metrics, Logs and Traces.