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.


appmetrics collect typelog collect typesreader source
Nginxnginx_telnginx_accesslog, nginx_errorlogngx_http_stub_status_module (the basic status endpoint)
Apacheapache_telapache_access_log, apache_error_logmod_status (?auto)
HAProxyhaproxy_tel—the stats socket or HTTP stats page
IPVSipvs_tel—the Linux kernel’s IPVS (/proc/net/ip_vs-driven)

These are the collect types you pick when creating a task. Each writes to its own index, prefixed app_ — apache_tel writes to app_apache_tel — and each section below names it. The index does not always repeat the collect type letter for letter: Nginx’s nginx_accesslog writes to app_nginx_access_log. Search the index name, not the collect type.

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 app_nginx_tel (metrics), app_nginx_access_log and app_nginx_error_log.

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 app_ipvs_tel. Dashboards: IPVS Overview, IPVS Virtual Servers, IPVS Real Servers.