The Datadog Agent can collect many metrics from NGINX instances, including (but not limited to)::
- Total requests
- Connections (e.g. accepted, handled, active)
For users of NGINX Plus, the commercial version of NGINX, the Agent can collect the significantly more metrics that NGINX Plus provides, like:
- Errors (e.g. 4xx codes, 5xx codes)
- Upstream servers (e.g. active connections, 5xx codes, health checks, etc.)
- Caches (e.g. size, hits, misses, etc.)
- SSL (e.g. handshakes, failed handshakes, etc.)
The NGINX check is included in the Datadog Agent package, so you don't need to install anything else on your NGINX servers.
The NGINX check pulls metrics from a local NGINX status endpoint, so your nginx binaries need to have been compiled with one of two NGINX status modules:
- stub status module - for open source NGINX
- http status module - only for NGINX Plus
If you use open source NGINX, your instances may lack the stub status module. Verify that your nginx binary includes the module before proceeding to Configuration:
$ nginx -V 2>&1| grep -o http_stub_status_module
http_stub_status_module
If the command output does not include http_stub_status_module, you must install an NGINX package that includes the module. You can compile your own NGINX-enabling the module as you compile it-but most modern Linux distributions provide alternative NGINX packages with various combinations of extra modules built in. Check your operating system's NGINX packages to find one that includes the stub status module.
NGINX Plus packages prior to release 13 include the http status module. For NGINX Plus release 13 and above, the status module is deprecated and you must use the new Plus API instead. See the announcement for more information.
On each NGINX server, create a status.conf file in the directory that contains your other NGINX configuration files (e.g. /etc/nginx/conf.d/).
server {
listen 81;
server_name localhost;
access_log off;
allow 127.0.0.1;
deny all;
location /nginx_status {
# Choose your status module
# freely available with open source NGINX
stub_status;
# for open source NGINX < version 1.7.5
# stub_status on;
# available only with NGINX Plus
# status;
}
}
NGINX Plus can also use stub_status, but since that module provides fewer metrics, you should use status if you're a Plus user.
Reload NGINX to enable the status endpoint. (There's no need for a full restart)
-
Set the
nginx_status_urlparameter tohttp://localhost:81/nginx_status/in yournginx.d/conf.yamlfile to start gathering your NGINX metrics. See the sample nginx.d/conf.yaml for all available configuration options. Note: If you are using the NGINX Plus, for releases 13 and above, set the parameteruse_plus_apitotruein yournginx.d/conf.yamlconfiguration file. -
Optional - If you are using the NGINX
vhost_traffic_status module, set the parameteruse_vtstotruein yournginx.d/conf.yamlconfiguration file. -
Restart the Agent to start sending NGINX metrics to Datadog.
Available for Agent >6.0
-
Collecting logs is disabled by default in the Datadog Agent, you need to enable it in
datadog.yaml:logs_enabled: true -
Add this configuration block to your
nginx.d/conf.yamlfile to start collecting your NGINX Logs:
logs:
- type: file
path: /var/log/nginx/access.log
service: nginx
source: nginx
sourcecategory: http_web_access
- type: file
path: /var/log/nginx/error.log
service: nginx
source: nginx
sourcecategory: http_web_access
Change the service and path parameter values and configure them for your environment.
See the sample nginx.d/conf.yaml for all available configuration options.
Learn more about log collection in the log documentation
Run the Agent's status subcommand and look for nginx under the Checks section.
See metadata.csv for a full list of provided metrics by this integration.
Not all metrics shown are available to users of open source NGINX. Compare the module reference for stub status (open source NGINX) and http status (NGINX Plus) to understand which metrics are provided by each module.
A few open-source NGINX metrics are named differently in NGINX Plus; they refer to the exact same metric, though:
| NGINX | NGINX Plus |
|---|---|
| nginx.net.connections | nginx.connections.active |
| nginx.net.conn_opened_per_s | nginx.connections.accepted |
| nginx.net.conn_dropped_per_s | nginx.connections.dropped |
| nginx.net.request_per_s | nginx.requests.total |
These metrics don't refer exactly to the same metric, but they are somewhat related:
| NGINX | NGINX Plus |
|---|---|
| nginx.net.waiting | nginx.connections.idle |
Finally, these metrics have no good equivalent:
| nginx.net.reading | The current number of connections where nginx is reading the request header. |
| nginx.net.writing | The current number of connections where nginx is writing the response back to the client. |
The NGINX check does not include any events.
nginx.can_connect:
Returns CRITICAL if the Agent cannot connect to NGINX to collect metrics, otherwise OK.
Need help? Contact Datadog support.
Learn more about how to monitor NGINX performance metrics thanks to our series of posts. We detail the key performance metrics, how to collect them, and how to use Datadog to monitor NGINX.
