NGINX monitoring from stub_status to access logs
Atatus reads Nginx stub_status for connections and requests, and parses access and error logs into fields you can search. One Infrastructure agent does both, with no code changes.
10.40.30.255 - - [22/Oct/2026:14:03:11 +0000] "GET /api/products/219 HTTP/1.1" 200 3543 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X)"
- clientIp
- 10.40.30.255
- urlMethod
- GET
- urlPath
- /api/products/219
- statusCode
- 200
- browser
- Mobile Safari
- os
- iOS
- device
- iPhone
sample data
Connections and requests, live.
Every number comes straight from stub_status.
- reading6
- writing41
- waiting212
Rates from nginx.stubstatus.requests and .accepts · sample data
Access and error logs. Same agent.
Requests per minute, split by status class. Click the spike to read the lines behind it.
source:nginx AND statusCode:>=50013:52:00 → 13:53:00- 7,887requests
- 6,6992xx
- 6323xx
- 1444xx
- 4125xx
- 502POST /api/checkout10.2.4.181.240s
- 200GET /api/cart10.2.7.410.096s
- 504POST /api/checkout10.2.9.1260.001s
- 502POST /api/checkout10.2.4.181.238s
- 200GET /api/products/21910.2.1.770.048s
- errorupstream timed out (110: Connection timed out) while reading response header from upstream, request: "POST /api/checkout HTTP/1.1"
- errorconnect() failed (111: Connection refused) while connecting to upstream, upstream: "http://10.0.3.12:8080/api/checkout"
- warnan upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/1/00/0000000001
Click a minute, or use the arrow keys · sample data
Search, patterns and pipelines for these logs: Log management
Already in the agent. Switch it on.
Tick what you have done. Each signal lights up once its files and a restart are in place.
- Metricsneeds a restartwaiting
- error.logneeds logs_enabled: truewaiting
- access.logneeds logs_enabled: truewaiting
# /etc/atatus-infra-agent/atatus.yml license_key: "lic_infra_****" logs_enabled: false
# /etc/atatus-infra-agent/conf.d/nginx.d/nginx.yml metrics: - hosts: ["http://127.0.0.1"] #status_path: "nginx_status"
Questions about Nginx monitoring
Pricing, deployment, data and the agent. If something is missing, a person will answer it on a demo call.
NGINX monitoring tracks the health of NGINX web servers, reverse proxies and load balancers: active, reading, writing and waiting connections, accepted, handled and dropped connections, total requests, and the access and error logs that show status codes, paths and upstream errors.
The NGINX plugin ships with the Atatus Infrastructure agent. Copy nginx.yml.template to nginx.yml, point it at your stub_status page (the default path is nginx_status) and restart the agent. For logs, set logs_enabled: true in atatus.yml and add the error and access log types. No code changes.
Eight metrics from stub_status: accepted, handled and dropped client connections, total client requests, and active, reading, writing and waiting connections. They arrive as nginx.stubstatus.accepts, .handled, .dropped, .requests, .active, .reading, .writing and .waiting.
Yes. Access log lines become fields you can filter on, such as clientIp, urlMethod, urlPath, statusCode, browser, os and device, and both logs carry source:nginx. If your logs are not in the default place, set paths, source and service for each log type in nginx.yml.