Apache performance and understanding /server-status metrics
Apache Statistics Module: mod_status
Understanding website performance and Apache uptime should begin with external monitoring, i.e. Zabbix, which allows you to discover problems from a user’s perspective. Such problems involve:
- Response timeout – no timely response from the server;
- HTTP errors instead of a response;
- Slow response – say, comparing to the last month’s average.
With new preprocessing steps added to Zabbix in nearly every release, it became obvious that it’s impossible to predict every business case, so we had to come up with a universal solution. This, in turn, raised an important question – which embedded scripting language/engine to use.
There are a few ways one can gather custom metrics with Zabbix, for example, via user parameters or Zabbix sender protocol. While either method can work for simple metrics, creating a more wholesome approach (with data collectors, persistent connections etc) and interfacing it with Zabbix may not be as trivial.
With the HTTP agent item Zabbix can natively connect to RESTful web services, but the new pre-processing options, “Check for error” and the “Custom on fail”, take it a big step further. This allows us to create web services that can be directly used by Zabbix. To demonstrate we will create a very simple MySQL monitoring web service, returning the number of active and maximum connections.
Macros are variables that can resolve to a specific value depending on the context and location inside Zabbix. Effective use of macros allows to save time and make Zabbix configuration more transparent.