How-to enable Nginx status monitoring

How-to enable Nginx status monitoring

This check uses data from the NGINX stub status module, fetched by the nginx_status agent plugin.

LAST TESTED ON CHECKMK 2.3.0P1

Table of Contents

Step-by-step guide

After installing and configuring Nginx, you can follow these steps to monitor Nginx status.

  1. Nginx stub status module

    Make sure that the server process is configured with the stub status module. Use the command:

    root@linux:~$ nginx -V 2>&1 | grep -o with-http_stub_status_module with-http_stub_status_module

    If the stub status module is not installed, you can follow this guide for the installation: How to Enable NGINX Status Page

  2. Add a new server block configuration inside /etc/nginx/sites-enabled/default

    server { listen 8081; listen [::]:8081; server_name _; root /var/www/html; index index.html; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }

    .

  3. Restart nginx service

    root@linux:~$ systemctl restart nginx

    .

  4. Now the URL 127.0.0.1:8081/nginx_status should be available

    root@linux:~$ wget -qO - http://127.0.0.1:8081/nginx_status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0

    .

  5. Configure nginx_status

    • Manually
      You must install the agent plugin nginx_status into your agent's plugins directory (usually /usr/lib/check_mk_agent/plugins). The plugin tries to autodetect all running NGINX servers. If that fails, you must create the configuration file /etc/check_mk/nginx_status.cfg. Here is one example:

      servers = [{'address': '127.0.0.1', 'page': 'nginx_status', 'port': 8081, 'protocol': 'http'}]

       

    • via Bakery
      Setup → Agents → Windows, Linux, Solaris... → Agent rules →NGINX webservers (Linux)

      • Autodetect instances expect HTTPS on the following ports
        nginx_status will try to autodetect all running NGINX servers.

      • Specific list of instances
        You can specify NGINX instances



  6. Test the plugin

Now you can execute the plugin manually and see if it works:

MK_CONFDIR=/etc/check_mk /usr/lib/check_mk_agent/plugins/nginx_status <<<nginx_status>>> 127.0.0.1 8081 Active connections: 1 127.0.0.1 8081 server accepts handled requests 127.0.0.1 8081 380 380 380 127.0.0.1 8081 Reading: 0 Writing: 1 Waiting: 0

 

Check_MK will create one service for each web server.


Debugging

Port Checking

root@linux:~$ netstat -tulpen |grep 8081 tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 0 43044 1353/nginx: master tcp6 0 0 :::8081 :::* LISTEN 0 43045 1353/nginx: master

 

Nginx Service

root@linux:~$ systemctl status nginx


Stub status module

root@linux:~$ nginx -V 2>&1 | grep -o with-http_stub_status_module with-http_stub_status_module

 

Checking the status page

root@linux:~$ wget -qO - http://127.0.0.1:8081/nginx_status Active connections: 1 server accepts handled requests 398 398 398 Reading: 0 Writing: 1 Waiting: 0

 

We also have detailed documentation about nginx_status: Check manual page of nginx_status.

Do you want to learn more about monitoring web servers? Check out our blog page: Monitoring web servers with Checkmk.

 

Related articles