В этой публикации я напишу небольшой чек-лист о том, как конфигурируется мониторинг Apache через Zabbix.
В качестве операционной системы для сервера Apache я использовал Ubuntu Server 22.04. Для RedHat подобных систем отличия будут минимальны.
Предварительные требования
По большому счету предварительное требование одно – наличие модуля status_module. Проверит его наличие можно следующей командой для Ubuntu Server:
sudo apache2ctl -M 2>/dev/null | grep status_module
root@srv-cloud:/home/admin# apache2ctl -M 2>/dev/null | grep status_module
status_module (shared)
root@srv-cloud:/home/admin#
Команда проверки модуля для RedHat систем:
sudo httpd -M 2>/dev/null | grep status_module
Мониторинг Apache через Zabbix
Теперь выполним настройку мониторинга Apache через Zabbix сервер:
1. Добавим в конфигурационный файл сервера Apache строку, которая активирует модуль статистики:
sudo nano /etc/apache2/apache2.conf
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1
</Location>
2. Сохраните внесенные изменения в конфигурационный файл сервера Apache.
3. Перезапустите сервера Apache:
sudo systemctl reload apache2
4. Проверим доступность модуля статистики непосредственно с сервера Apache:
curl -Lk http://127.0.0.1/server-status | grep -n2 connect
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 290 100 290 0 0 93608 0 --:--:-- --:--:-- --:--:-- 141k
29-"<b><code>K</code></b>" Keepalive (read),
30-"<b><code>D</code></b>" DNS Lookup,<br />
31:"<b><code>C</code></b>" Closing connection,
32-"<b><code>L</code></b>" Logging,
33-"<b><code>G</code></b>" Gracefully finishing,<br />
--
10212- <tr><th>Srv</th><td>Child Server number - generation</td></tr>
0 213- <tr><th>PID</th><td>OS process ID</td></tr>
18645 214: <tr><th>Acc</th><td>Number of accesses this connection / this child / this slot</td></tr>
215- <tr><th>M</th><td>Mode of operation</td></tr>
216-<tr><th>CPU</th><td>CPU usage, number of seconds</td></tr>
0--
1218- <tr><th>Req</th><td>Milliseconds required to process most recent request</td></tr>
86219- <tr><th>Dur</th><td>Sum of milliseconds required to process all requests</td></tr>
45 220: <tr><th>Conn</th><td>Kilobytes transferred this connection</td></tr>
0221- <tr><th>Child</th><td>Megabytes transferred this child</td></tr>
222- <tr><th>Slot</th><td>Total megabytes transferred this slot</td></tr>
--
243- <tr class="rowt"><td > </td><td >limit</td><td >current</td><td >wait rate</td><td >limit</td><td >current</td><td >wait rate</td><td >limit</td><td >current</td></tr>
244- <tr class="rows"><!--0--><td>/remote.php/dav</a></td><td>1000</td><td >0</td><td >0 ms</td><td>50</td><td >0</td><td>-</td><td>-</td><td>-</td></tr>
0 245: <tr class="rowt"><td colspan="9">connections</td></tr>
246- <tr class="rows"><!--0--><td colspan="6"><div title="QS_SrvMaxConnPerIP">free ip entries</div></td><td colspan="3">150</td></tr>
573k 0 --:--:-- --:--:-- --:--:-- 573k
247: <tr class="rows"><!--0--><td colspan="6"><div title="QS_SrvMaxConn|QS_SrvMaxConnClose">current connections</div></td><td colspan="3">2</td></tr>
248: <tr class="rows"><!--base--><td colspan="6"><div>total connections</div></td><td colspan="3">2</td></tr>
249: <tr class="rowt"><td colspan="9">connection settings</td></tr>
250: <tr class="rows"><td colspan="6"><div title="QS_SrvMaxConn">max connections</div></td><td colspan="3">-</td></tr>
251: <tr class="rows"><td colspan="6"><div title="QS_SrvMaxConnClose">max connections with keep-alive</div></td><td colspan="3">-</td></tr>
252: <tr class="rows"><td colspan="6"><div title="QS_SrvMaxConnPerIP">max connections per client ip</div></td><td colspan="3">-</td></tr>
253- <tr class="rows"><td colspan="6"><div title="QS_SrvMinDataRate|QS_SrvRequestRate">min. data rate (bytes/sec) (min/max/current)</div></td><td colspan="3">150/1200/166</td></tr>
254- <tr class="row"><td style="width:28%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td><td style="width:9%"></td></tr></tbody></table>
5. Последний шаг – это применить соответствующий шаблон мониторинга “Apache by Zabbix agent” для сервера с Apache:
6. При необходимости скорректируйте макросы. Например, в моем случае сервер Apache был доступен по HTTPS:
Проверка
Перейдите в раздел последних данных в навигационной панели сервера Zabbix и убедитесь, что данные сервера Apache доступны:
Если данные не доступны, то проверьте макросы для подключения к серверу Apache. Также есть смысл проверить журналы сервера Zabbix:
sudo less /var/log/zabbix/zabbix_server.log