Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/apache_agent?at=release/7.0
Apache by Zabbix agent
Overview
This template is designed for the effortless deployment of Apache monitoring by Zabbix via Zabbix agent and doesn't require any external scripts.
The template Apache by Zabbix agent
- collects metrics by polling mod_status locally with Zabbix agent:
127.0.0.1
ServerVersion: Apache/2.4.41 (Unix)
ServerMPM: event
Server Built: Aug 14 2019 00:35:10
CurrentTime: Friday, 16-Aug-2019 12:38:40 UTC
RestartTime: Wednesday, 14-Aug-2019 07:58:26 UTC
ParentServerConfigGeneration: 1
ParentServerMPMGeneration: 0
ServerUptimeSeconds: 189613
ServerUptime: 2 days 4 hours 40 minutes 13 seconds
Load1: 4.60
Load5: 1.20
Load15: 0.47
Total Accesses: 27860
Total kBytes: 33011
Total Duration: 54118
CPUUser: 18.02
CPUSystem: 31.76
CPUChildrenUser: 0
CPUChildrenSystem: 0
CPULoad: .0262535
Uptime: 189613
ReqPerSec: .146931
BytesPerSec: 178.275
BytesPerReq: 1213.33
DurationPerReq: 1.9425
BusyWorkers: 7
IdleWorkers: 93
Processes: 4
Stopping: 0
BusyWorkers: 7
IdleWorkers: 93
ConnsTotal: 13
ConnsAsyncWriting: 0
ConnsAsyncKeepAlive: 5
ConnsAsyncClosing: 0
Scoreboard: ...
It also uses Zabbix agent to collect Apache
Linux process statistics such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- Apache 2.4.41
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
See the setup instructions for mod_status.
Check the availability of the module with this command line: httpd -M 2>/dev/null | grep status_module
This is an example configuration of the Apache web server:
<Location "/server-status">
SetHandler server-status
Require host example.com
</Location>
If you use another path, then do not forget to change the {$APACHE.STATUS.PATH}
macro.
Install and setup Zabbix agent.
Macros used
Name | Description | Default |
---|---|---|
{$APACHE.STATUS.HOST} | The hostname or IP address of the Apache status page. |
127.0.0.1 |
{$APACHE.STATUS.PORT} | The port of the Apache status page. |
80 |
{$APACHE.STATUS.PATH} | The URL path. |
server-status?auto |
{$APACHE.STATUS.SCHEME} | The request scheme, which may be either HTTP or HTTPS. |
http |
{$APACHE.RESPONSE_TIME.MAX.WARN} | The maximum Apache response time expressed in seconds for a trigger expression. |
10 |
{$APACHE.PROCESS_NAME} | The process name filter for the Apache process discovery. |
(httpd|apache2) |
{$APACHE.PROCESS.NAME.PARAMETER} | The process name of the Apache web server used in the item key |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Get status | Getting data from a machine-readable version of the Apache status page. For more information see Apache Module mod_status. |
Zabbix agent | web.page.get["{$APACHE.STATUS.SCHEME}://{$APACHE.STATUS.HOST}:{$APACHE.STATUS.PORT}/{$APACHE.STATUS.PATH}"] Preprocessing
|
Service ping | Zabbix agent | net.tcp.service[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"] Preprocessing
|
|
Service response time | Zabbix agent | net.tcp.service.perf[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"] | |
Total bytes | The total bytes served. |
Dependent item | apache.bytes Preprocessing
|
Bytes per second | It is calculated as a rate of change for total bytes statistics.
|
Dependent item | apache.bytes.rate Preprocessing
|
Requests per second | It is calculated as a rate of change for the "Total requests" statistics.
|
Dependent item | apache.requests.rate Preprocessing
|
Total requests | The total number of the Apache server accesses. |
Dependent item | apache.requests Preprocessing
|
Uptime | The service uptime expressed in seconds. |
Dependent item | apache.uptime Preprocessing
|
Version | The Apache service version. |
Dependent item | apache.version Preprocessing
|
Total workers busy | The total number of busy worker threads/processes. |
Dependent item | apache.workers_total.busy Preprocessing
|
Total workers idle | The total number of idle worker threads/processes. |
Dependent item | apache.workers_total.idle Preprocessing
|
Workers closing connection | The number of workers in closing state. |
Dependent item | apache.workers.closing Preprocessing
|
Workers DNS lookup | The number of workers in |
Dependent item | apache.workers.dnslookup Preprocessing
|
Workers finishing | The number of workers in finishing state. |
Dependent item | apache.workers.finishing Preprocessing
|
Workers idle cleanup | The number of workers in cleanup state. |
Dependent item | apache.workers.cleanup Preprocessing
|
Workers keepalive (read) | The number of workers in |
Dependent item | apache.workers.keepalive Preprocessing
|
Workers logging | The number of workers in logging state. |
Dependent item | apache.workers.logging Preprocessing
|
Workers reading request | The number of workers in reading state. |
Dependent item | apache.workers.reading Preprocessing
|
Workers sending reply | The number of workers in sending state. |
Dependent item | apache.workers.sending Preprocessing
|
Workers slot with no current process | The number of slots with no current process. |
Dependent item | apache.workers.slot Preprocessing
|
Workers starting up | The number of workers in starting state. |
Dependent item | apache.workers.starting Preprocessing
|
Workers waiting for connection | The number of workers in waiting state. |
Dependent item | apache.workers.waiting Preprocessing
|
Get processes summary | The aggregated data of summary metrics for all processes. |
Zabbix agent | proc.get[{$APACHE.PROCESS.NAME.PARAMETER},,,summary] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Host has been restarted | Uptime is less than 10 minutes. |
last(/Apache by Zabbix agent/apache.uptime)<10m |
Info | Manual close: Yes |
Version has changed | Apache version has changed. Acknowledge to close the problem manually. |
last(/Apache by Zabbix agent/apache.version,#1)<>last(/Apache by Zabbix agent/apache.version,#2) and length(last(/Apache by Zabbix agent/apache.version))>0 |
Info | Manual close: Yes |
LLD rule Event MPM discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Event MPM discovery | The discovery of additional metrics if the event Multi-Processing Module (MPM) is used. For more details see Apache MPM event. |
Dependent item | apache.mpm.event.discovery Preprocessing
|
Item prototypes for Event MPM discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Connections async closing | The number of asynchronous connections in closing state (applicable only to the event MPM). |
Dependent item | apache.connections[async_closing{#SINGLETON}] Preprocessing
|
Connections async keepalive | The number of asynchronous connections in keepalive state (applicable only to the event MPM). |
Dependent item | apache.connections[async_keep_alive{#SINGLETON}] Preprocessing
|
Connections async writing | The number of asynchronous connections in writing state (applicable only to the event MPM). |
Dependent item | apache.connections[async_writing{#SINGLETON}] Preprocessing
|
Connections total | The number of total connections. |
Dependent item | apache.connections[total{#SINGLETON}] Preprocessing
|
Bytes per request | The average number of client requests per second. |
Dependent item | apache.bytes[per_request{#SINGLETON}] Preprocessing
|
Number of async processes | The number of asynchronous processes. |
Dependent item | apache.process[num{#SINGLETON}] Preprocessing
|
LLD rule Apache process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Apache process discovery | The discovery of the Apache process summary. |
Dependent item | apache.proc.discovery |
Item prototypes for Apache process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
CPU utilization | The percentage of the CPU utilization by a process {#APACHE.NAME}. |
Zabbix agent | proc.cpu.util[{#APACHE.NAME}] |
Get process data | The summary metrics aggregated by a process {#APACHE.NAME}. |
Dependent item | apache.proc.get[{#APACHE.NAME}] Preprocessing
|
Memory usage (rss) | The summary of resident set size memory used by a process {#APACHE.NAME} expressed in bytes. |
Dependent item | apache.proc.rss[{#APACHE.NAME}] Preprocessing
|
Memory usage (vsize) | The summary of virtual memory used by a process {#APACHE.NAME} expressed in bytes. |
Dependent item | apache.proc.vmem[{#APACHE.NAME}] Preprocessing
|
Memory usage, % | The percentage of real memory used by a process {#APACHE.NAME}. |
Dependent item | apache.proc.pmem[{#APACHE.NAME}] Preprocessing
|
Number of running processes | The number of running processes {#APACHE.NAME}. |
Dependent item | apache.proc.num[{#APACHE.NAME}] Preprocessing
|
Trigger prototypes for Apache process discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Process is not running | last(/Apache by Zabbix agent/apache.proc.num[{#APACHE.NAME}])=0 |
High | ||
Service is down | last(/Apache by Zabbix agent/net.tcp.service[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"])=0 and last(/Apache by Zabbix agent/apache.proc.num[{#APACHE.NAME}])>0 |
Average | Manual close: Yes | |
Failed to fetch status page | Zabbix has not received any data for items for the last 30 minutes. |
nodata(/Apache by Zabbix agent/web.page.get["{$APACHE.STATUS.SCHEME}://{$APACHE.STATUS.HOST}:{$APACHE.STATUS.PORT}/{$APACHE.STATUS.PATH}"],30m)=1 and last(/Apache by Zabbix agent/apache.proc.num[{#APACHE.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
Service response time is too high | min(/Apache by Zabbix agent/net.tcp.service.perf[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"],5m)>{$APACHE.RESPONSE_TIME.MAX.WARN} and last(/Apache by Zabbix agent/apache.proc.num[{#APACHE.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums