We were pleased to announce general availability (GA) for NGINX Controller, our centralized management platform for NGINX Plus instances, on June 26th. In our initial blog post for Controller, we outlined how NGINX Controller solves challenges faced by enterprises as they undertake their digital transformation journey.
This blog details key capabilities of NGINX Controller R1, which supports full lifecycle management of NGINX Plus load balancers – from initial deployment and validation to ongoing troubleshooting and maintenance.
NGINX Controller R1 features:
- Simplified configuration management – NGINX Controller enables management of NGINX Plus servers at scale, easily and across a multi-cloud environment. Using an intuitive, wizard-style interface, Controller provides a guided workflow to create new instances of NGINX Plus and centrally configure features such as HTTP routing by URL, load balancing, and SSL/TLS termination, all with just a few clicks.
- Monitoring, alerting, and troubleshooting – Controller provides deep visibility and critical insights into more than 200 advanced performance and transaction metrics for NGINX Plus instances. You can set thresholds for these metrics and receive alerts when there’s a breach. Built-in and customizable dashboards enable you to assess the health of your environment.
- Tagging – Tagging helps you organize and categorize all your NGINX Plus instances. You can use tags to monitor specific environments, such as staging or production, as well as public clouds, such as AWS, or private clouds hosted on-premise.
- Analyzer – Analyzer functionality provides actionable recommendations based on best practices from diverse customer environments, enabling you to fine-tune your configurations. These recommendations can also provide guidance on resolving performance and security issues.
- Instance inventory – Controller provides an inventory of all your NGINX Plus instances. This is very useful for asset management and auditing purposes.
- Multi-cloud support – NGINX Controller is delivered as a Docker package. You can deploy Controller on any public or private cloud to manage NGINX Plus instances operating across a multi-cloud environment.
- Rest API – You can export all performance metrics via the NGINX Controller REST API for seamless integration with any monitoring tool.
NGINX Controller features are powered by a small agent that’s installed on target NGINX Plus servers. Once the agent is installed and registered, NGINX Plus instances can be managed using NGINX Controller. This agent gathers performance data about these instances and sends it back to NGINX Controller for analysis. With the agent in place, Controller is able to carry out a wide range of reporting and management functions.
NGINX Controller Features in Detail
While NGINX Controller is easy to use, it incorporates both breadth and depth of functionality. Here, we describe Controller’s capabilities, but you will get the best feel for what it can do for you by using it in your own environment.
Simplified Configuration Management
Controller provides a wizard that helps you set up a new load balancer easily, in just five steps. Using an intuitive interface, you can create and edit commonly used load balancing configuration options, such as:
- Load balancing algorithms (five choices)
- Using SSL certificates
- Implementing health checks
- Specifying custom error pages
- Specific routes, with pattern-based matching, to specified sets of upstream servers
All of these configuration options include NGINX-recommended practices as default options.
Controller supports a policy-based approach to management. You can quickly create configurations for test, staging, production, or line-of-business-specific applications, enabling developers to deploy applications faster.
The figure shows a variety of configurations, including Staging and Production for AWS environments labeled AWS_USW_1_Staging and AWS_USW_2_Production, respectively. We created these using the wizard. The Staging configuration for www.nginxlab.com consists of two upstream servers, 10.2.3.10 and 10.2.3.11. This configuration will take effect on the NGINX Plus instance when you click the Push Configuration button.
Monitoring, Alerting, and Troubleshooting
Controller provides real-time visibility as well as historical trending for more than 200 health and performance metrics. These include:
- Advanced performance metrics – Metrics such as rate, bandwidth, errors, latency, health checks, all per server zone and/or per upstream, from the NGINX Plus API
- Transaction metrics – Response codes, rates, bandwidth, latency, cache, filtered by URI, host header, upstream, user agent, and others
- System performance metrics – From the host: CPU, disk, network, memory, and load; from NGINX: CPU, file descriptors, I/O, and memory
Monitoring these metrics will help you find the root cause of performance and security issues. Listed below are examples of some questions that Controller can help answer:
- What is the uptime of all my NGINX Plus instances?
- When do we see slowdowns?
- When are HTTP errors occurring?
- Are my upstream servers healthy?
- Is stale data getting purged? Is the cache warm, or cold?
The figure shows trending of connections per second and total number of connections over the last four hours for AWS_EC2_Instance_2 Configuration. You can see that NGINX is handling about 184 connections per second on 6/20/18 at 14:00.
You can set thresholds for these metrics and receive alerts via email when there’s a breach of a threshold.
NGINX Controller has a built-in Overview dashboard. This dashboard includes an Application Health Score, which is an aggregate measure of successful requests and the timeliness of requests. You can set low and high thresholds for request time.
While you should always strive toward maintaining a very high Application Health Score, the parameters that constitute this score are application-dependent. For instance, you may want client requests to be fulfilled within one second for an application that’s in production, but have a much higher request time window for an application running in test environment.
You can showcase application health to key stakeholders, such as senior management for your team, using this dashboard. You can also quickly create your own dashboards to help you focus on metrics that are of interest to you.
The figure shows KPIs that are necessary to assess the health of your environment. For this environment, Application Health Score is at 100% for 2K requests. There are no HTTP 5xx errors. There are no delays in fulfilling client requests. CPU is not stressed at all – CPU usage is very low at 2%.
Tagging is a powerful mechanism to organize and manage your configurations. You can create and assign tags to categorize and monitor your load balancers based on purpose, environment, location, or any characteristic you choose. You can filter dashboard views by tags, enabling you to monitor specific environments, such as production or staging.
Controller allows you to receive alerts about NGINX Plus instances that have specific tags. So you can prevent notification storms by applying specific tags to alerts – for instance, you may only be interested in receiving alerts about AWS, or about production environments.
Analyzer provides actionable best-practice recommendations based on our learnings from thousands of support cases, as well as from consulting engagements supporting complex deployments. We want you to benefit from the collective wisdom accumulated from our many customers over more than a decade of NGINX use in production.
Analyzer provides the following benefits:
- Validate – You can validate your configuration before moving to production
- Troubleshoot – Guidance provided by these recommendations could be the first step toward resolving performance and security issues
- Optimize (reconfigure) aging configurations – If a config has been used for a long time, it could be based on out-of-date standards
When a config has gotten too far out of date, using Controller can prompt you to start a fresh config from scratch, based on best practices. It helps you “knock the rust off” your existing NGINX infrastructure.
This figure shows two specific misconfigurations for the AWS-EC2_Instance_2 NGINX Plus instance. This configuration is missing default_server and server_name directives. Analyzer also provides guidance on how to resolve these issues.
This view facilitates a quick audit of all your NGINX Plus instances. You can track the status and software version of all your NGINX Plus instances. You can filter this view by hostname, uptime, or system metrics such as CPU usage and memory usage.
NGINX Controller is delivered as a Docker package. Docker offers complete flexibility in terms of deployment. You can deploy Controller in any environment that supports Docker containers – be it private or public cloud, virtual machines, or bare metal – to manage NGINX Plus instances operating across a multi-cloud environment.
All performance and health metrics can be exported via the NGINX Controller REST API for seamless integration with any monitoring tool. Upon providing the application name, and redirect URIs, an API key gets generated. A monitoring application can the use the API key to extract NGINX Plus performance metrics.
NGINX Controller makes your NGINX Plus deployment more effective and easier to manage. Attend our upcoming webinar to get an in–depth look and demo of NGINX Controller. Watch our video to see a quick overview of NGINX Controller. And attend NGINX Conf 2018 to learn more about the past, present, and future of NGINX Controller.