Вы здесь

Мониторинг php-fpm с помощью Zabbix

Для мониторинга обработчика PHP - PHP-FPM (в связке с nginx) я использую Zabbix, и шаблон для него, от китайского автора netkiller.

Ссылка на шаблон
Github

Файл шаблона zbx_export_templates.xml для Zabbix 3.2 у меня не загрузился, судя по всему из-за несоответствия версий (у меня стоит 3.4.6), поэтому нужные мне элементы я создал вручную. Мой шаблон можете скачать по ссылке внизу поста.

Настройка мониторинга PHP-FPM

1. В основном файле конфигурации PHP-FPM (по умолчанию - /etc/php-fpm.d/www.conf) нужно раскомментировать следующие строки (убрать ; перед началом строки):
pm.status_path = /status
ping/ping/ = /ping

и перезапустить php-fpm

systemctl reload php-fpm

2. Теперь в конфигурационный файл Nginx (/etc/nginx/nginx.conf ) нужно добавить два location, чтобы он проксировал статистику по адресу http://127.0.0.1/status (вместо локального адреса подставьте ваш IP или домен)

location /status {
        stub_status on;
        access_log   off;
        allow 127.0.0.1; # тут укажите IP хоста, с которого хотите смотреть или мониторить статистику. 
        deny all;
    }
    location ~ ^/(status|ping)$ {
        access_log off;
        allow 127.0.0.1;
        deny all;
        fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        include fastcgi_params;
    }

Обратите внимание что в директике allow нужно указать ip адреса хостов, с которых хотите смотреть статистику и мониторить.
Перечитываем конфиг nginx:

systemctl reload nginx

После вышеуказанных настроек у вас должен по адресу http://127.0.0.1/status окно статистики примерно такого вида:

pool:                 www
process manager:      ondemand
start time:           08/Aug/2018:18:14:19 +0000
start since:          479272
accepted conn:        1388458
listen queue:         0
max listen queue:     18
listen queue len:     128
idle processes:       11
active processes:     3
total processes:      14
max active processes: 23
max children reached: 0
slow requests:        0



Настройка Zabbix


Настройка Zabbix - агента

После установки агента на целевом хосте, в каталоге /etc/zabbix/ создаем папку scripts и в ней файл php-fpm.sh со следующим содержимым:

#!/bin/bash
##################################################
# AUTHOR: Neo <netkiller@msn.com>
# WEBSITE: http://www.netkiller.cn
# Description:zabbix 通过 status 模块监控 php-fpm
# Note:Zabbix 3.2
# DateTime: 2016-11-22
##################################################
 
HOST="localhost"
PORT="80"
status="status"
 
function query() {
	curl -s http://${HOST}:${PORT}/${status} | grep "$1" | cut -d : -f 2 | awk '{print $1}'
}
 
if [ $# == 0 ]; then
		echo $"Usage $0 \"{pool|process manager|start time|start since|accepted conn|listen queue|max listen queue|listen queue len|idle processes|active processes|total processes|max active processes|max children reached|slow requests}\""
		exit	
else		
	query "$1"
fi

Измените значение переменной HOST и PORT на свои.

Этот же файл на github.

Добавляем в /etc/zabbix/zabbix_agentd.conf в самый конец строки с нашими параметрами:

UserParameter=php.fpm.ping,/etc/zabbix/scripts/php-fpm.sh
UserParameter=php-fpm.status[*],/etc/zabbix/scripts/php-fpm.sh $1

и рестартуем агент.


Настройка Zabbix - сервера

Итак, после добавления узла в Zabbix, заходим в Настройки - Узлы сети, выбираем наш узел, переходим на вкладку Элементы данных, в правом углу жмём - Создать новый элемент.

Имя: php-fpm status $1
Тип: Zabbix-агент
Ключ: php-fpm.status[listen-queue]
Тип информации: Целое положительное

Остальные параметры можно оставить по умолчанию.
По аналогии создаем остальные элементы - меняется только значение в поле ключ, которое в квадратных скобках (listen-queue, max listen queue и т.д)

Таким образом, zabbix - агент будет запускать скрипт php-fpm.sh с нужным нам параметром, который указан в поле Ключ в квадратных скобках. Скрипт будет обращаться к странице нашего хоста по пути /status, парсить возвращенную xml - страницу, и передавать данные на сервер.

ВложениеРазмер
Файл Файл шаблона для Zabbix12.69 КБ

Также рекомендуем