Important: NGINX Plus R33 requires NGINX Instance Manager 2.18 or later
To ensure uninterrupted traffic processing, upgrade to NGINX Instance Manager 2.18 or later if your NGINX data plane instances are running NGINX Plus R33. This upgrade is necessary to support usage reporting.

NGINX Plus R33 instances must send usage data to the F5 licensing endpoint or NGINX Instance Manager. If they don’t, they will stop processing traffic.

For more information about usage reporting and enforcement, see About solution licenses.

Report usage data to F5

Overview

In environments where NGINX Instance Manager has internet access but NGINX Plus doesn’t, NGINX Plus sends usage data to NGINX Instance Manager. NGINX Instance Manager will automatically send the usage reports to F5 for verification, or you can choose to send them manually.

If usage reporting fails, NGINX Plus will stop processing traffic. There’s an exception for previously reported instances — refer to handling outages for more details.

See the steps below to configure NGINX Plus to report usage data to NGINX Instance Manager and how to submit the report to F5 for verification.

For network-restricted environments:
If your deployment of NGINX Instance Manager doesn’t allow internet access, follow the steps in Report usage data in network-restricted environments to report usage data to F5.

Before you begin

Before submitting usage data to F5, first ensure that the appropriate network ports are open for NGINX Instance Manager to report to F5, and then configure NGINX Plus to report telemetry data to NGINX Instance Manager.

Configure network ports for reporting usage

To allow NGINX Instance Manager to report usage data to F5, make sure port 443 is open for these URLs:

  • https://product.apis.f5.com/
  • https://product-s.apis.f5.com/ee

Configure NGINX Plus to report usage to NGINX Instance Manager

To configure NGINX Plus (R33 and later) to report usage data to NGINX Instance Manger:

  1. Open port 443 for NGINX Instance Manager.

  2. On each NGINX Plus instance, update the usage_report directive in the mgmt block of the NGINX configuration (/etc/nginx/nginx.conf) to point to your NGINX Instance Manager host:

    mgmt {
      usage_report endpoint=<NGINX-INSTANCE-MANAGER-FQDN>;
    }
    
    Self-signed certificates
    For details on using self-signed certificates, see Configure SSL verification for usage reporting with self-signed certificates.
  3. Reload NGINX:

    nginx -s reload
    

Submit usage report to F5

Automatic reporting

When you add your JSON Web Token (JWT) to NGINX Instance Manager, usage reporting is enabled by default.

NGINX Instance Manager will automatically report subscription entitlement and usage data to F5 if internet access is available.

Manual reporting

Usage reporting requirement:
You need to report usage to F5 regularly. If usage isn’t reported for 180 days, NGINX Plus will stop processing traffic. For more details about the usage reporting process, see About subscription licenses.

If you prefer submitting usage reports to F5 manually, follow these steps:

  1. Log in to the NGINX Instance Manager web interface (https://<NIM-FQDN>/ui/).
  2. Select the Settings (gear) icon.
  3. On the Licenses > Overview page, turn off Enable Continuous Connection.
  4. To manually submit a usage report, select Send Usage to F5.

What’s reported

NGINX Plus automatically sends usage data to F5 every hour by default. This data is sent as a POST request and includes details like how much traffic is processed and how long the instance has been running. Here’s an example of the data that’s sent:

{
    "version": "<nginx_version>",
    "uuid": "<nginx_uuid>",
    "nap": "<active/inactive>", // status of NGINX App Protect
    "http": {
        "client": {
            "received": 0, // bytes received
            "sent": 0, // bytes sent
            "requests": 0 // number of HTTP requests processed
        },
        "upstream": {
            "received": 0, // bytes received
            "sent": 0 // bytes sent
        }
    },
    "stream": {
        "client": {
            "received": 0, // bytes received
            "sent": 0 // bytes sent
        },
        "upstream": {
            "received": 0, // bytes received
            "sent": 0 // bytes sent
        }
    },
    "workers": 0, // number of worker processes running
    "uptime": 0, // number of seconds the instance has been running
    "reloads": 0, // number of times the instance has been reloaded
    "start_time": "epoch", // start time of data collection for the report
    "end_time": "epoch" // end time of data collection for the report
}