Skip to content

Web servers and load balancers

Monitoring the edge — Nginx, Apache, HAProxy and Linux IPVS. Each is a shipping integration app with collection templates, repos and dashboards, following the same install-and-run pattern as the database and middleware apps.


app metrics logs reader source
Nginx nginx_tel nginx_accesslog, nginx_errorlog ngx_http_stub_status_module (the basic status endpoint)
Apache apache_tel apache_access_log, apache_error_log mod_status (?auto)
HAProxy haproxy_tel the stats socket or HTTP stats page
IPVS ipvs_tel the Linux kernel’s IPVS (/proc/net/ip_vs-driven)

Each metrics template is a 30s poll; logs are tailed by the agent. The dashboards (Nginx Overview, Apache Overview/Logs, HAProxy Overview, IPVS Overview/Virtual Servers/Real Servers) are installed with the apps, and the group paths now render under Web Servers / Load Balancing (the D7 dashboard translation).


Metrics need the status module. nginx_tel reads Nginx’s basic status (ngx_http_stub_status_module) — the stub_status endpoint exposing active connections, accepts/handled/requests, reading/writing/waiting. Enable the module in nginx.conf and point ${URL} at it (e.g. http://localhost/status). Basic auth and TLS are supported.

Access and error logs are separate collect types tailing the standard Nginx log files.

Data lands in nginx_tel (metrics), nginx_accesslog and nginx_errorlog.

Metrics need mod_status. Enable mod_status, add an ExtendedStatus On block with a /server-status location, restart Apache, and verify with curl http://127.0.0.1/server-status?auto (the ?auto machine-readable output is what the collector reads). apache_tel then polls ${URL} with optional basic auth.

Access and error logs are separate collect types. Data lands in app_apache_tel, app_apache_access_log, app_apache_error_log. Dashboards: Apache Overview, Apache Logs.

Metrics come from the stats socket or HTTP stats page. haproxy_tel reads the HAProxy stats endpoint configured in haproxy.cfg (default http://localhost:8404/stats or the Unix socket), with HTTP auth. It collects per-frontend and per-backend counters: active/backup servers, sessions, requests, response codes, connection errors, and the server weight values. keep_field_names keeps the plugin’s field names instead of HAProxy’s renames; single_sending emits one record per backend.

Data lands in app_haproxy_tel. Dashboard: HAProxy Overview.

Metrics come from the kernel, not a daemon. ipvs_tel reads the Linux kernel’s IPVS (IP Virtual Server) statistics directly — the virtual services and their real servers. It collects per-virtual-service and per-real-server counters: connections, packets and traffic in/out per second, active and inactive connections. This is the load-balancing layer under a keepalived or direct-routing setup; no daemon needs to expose anything.

Data lands in ipvs_tel. Dashboards: IPVS Overview, IPVS Virtual Servers, IPVS Real Servers.