مانیتور سرویس PHP-FPM
اگر سایت شما هم یکی از سایت های پربازدید است و در ساعات اوج ترافیک با کاهش سرعت و حتی داون شدن سایت خود مواجه شده اید، حتما باید به فکر مانیتورینگ سرویس های سرور خود باشید.
در این آموزش به بررسی مانیتورینگ سرویس PHP-FPM با استفاده از نتدیتا بر روی سنتوس ۷ میپردازیم. نت دیتا یکی از نرم افزارهای قدرتمند برای مانیتورینگ سرور است که در قابلیت مانیتورینگ سرویس های سرور از جمله PHP را هم دارا می باشد. کانفیگ مانیتورینگ PHP نیازمند تغییراتی در سرویس های نت دیتا و PHP است که در این مطلب آن می پردازیم. در پایان این آموزش قادر هستید که از نتدیتا برای مانیتورینگ PHP-FPM استفاده کنید.
برای ذخیره سازی اطلاعات مانیتورینگ نیازمند دیتابیس InfluxDB هستید. دیتابیس اینفلاکس یکی از مشهورترین پایگاه دادههای زمانی (time series) است که برای ذخیره دادههای مانیتورینگ هم استفاده میشود. همچنین برای نمایش گرافهای مانیتورینگ و تنظیم سیستم آلرت (هشدار)، داشبورد گرافانا (grafana) پیشنهاد میشود که در این مطلب از آن استفاده میکنیم.
مراحل نصب و پیکربندی مانیتورینگ PHP
پیش نیازها:
- سرور سنتوس ۷ یا سرور RHEL ۷
- نصب پی اچ پی و فعالسازی PHP-FPM
- نصب نتدیتا و فعالسازی مانیتورینگ برای دریافت وضعیت PHP-FPM
- نصب و کانفیگ دیتابیس InfluxDB برای ذخیره اطلاعات ماینتورینگ.
- داشبورد گرافانا برای نمایش و کانفیگ سیستم هشدار.
نصب PHP FPM
برای اطمینان از نصب و اجرا بودن سرویس PHP دستور زیر را وارد کنید:
[root@DevopsRoles vagrant]# netstat -nplt | grep php-fpmtcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4328/php-fpm: maste [root@DevopsRoles vagrant]# ps -ef | grep php
root 4328 1 0 21:50 ? 00:00:00 php-fpm: master process (/etc/opt/remi/php73/php-fpm.conf)
apache 4329 4328 0 21:50 ? 00:00:00 php-fpm: pool www
apache 4330 4328 0 21:50 ? 00:00:00 php-fpm: pool www
apache 4331 4328 0 21:50 ? 00:00:00 php-fpm: pool www
apache 4332 4328 0 21:50 ? 00:00:00 php-fpm: pool www
apache 4333 4328 0 21:50 ? 00:00:00 php-fpm: pool www
root 4381 3003 0 21:52 pts/0 00:00:00 grep –color=auto php
آدرس فایل پیکربندی Php-fpm معمولا به صورت زیر است:
etc/php/7.4/fpm/pool.d/www.conf
خط زیر را uncomment کرده و تغییرات را ذخیره کنید.
pm.status_path = /status
کانفیگ فایل Php-fpm را دوباره چک کنید و آن را ریستارت کنید.
$ sudo php-fpm -t
or
$ sudo systemctl restart php73-php-fpm
کانفیگ Nginx برای مانیتورینگ PHP FPM
یک کانفیگ جدید Nginx برای Php-fpm بسازید. این فایل باید شامل خطوط زیر باشد.
[root@DevopsRoles ~] # vi/etc/nginx/conf.d/php-fpm.conf
# The content as below:
server {
listen 80;
#listen [: :]:80 default_server;
server_name 127.0.0.1;
location /status {
access_log off;
allow 127.0.0.1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
deny all;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
برای اینکه تغییرات اعمال شوند، تنظیمات انجینایکس را دوباره لود کنید.
[root@DevopsRoles ~]# systemctl reload php73-php-fpm
[root@DevopsRoles ~] # systemctl reload nginx
حالا با استفاده از دستور curl وضعیت متریک های php-fpm را چک کنید.
root@DevopsRoles ~]# curl http://127.0.0.1/status
pool: www
process manager: dynamic
start time: 18/Jul/2020:10:16:17 +0700
start since: 878
accepted conn: 14
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
پیکربندی نت دیتا برای مانیتورینگ PHP
تنظیمات نتدیتا برای مانیتورینگ PHP در فولدر /etc/netdata/go.d/ قرار دارد در غیر این صورت میتوانید آن را با محتویات زیر بسازید.
/etc/netdata/go.d/phpfpm.conf
jobs:
- name: local
url: http://localhost/status?full&json
- name: local
url: http://127.0.0.1/status?full&json
- name: local
url: http://[::1]/status?full&json
سرویس نتدیتا را ریستارت کنید.
[root@adminzDevopsRoles ~]# systemctl restart netdata
برای مشاهده لحظه ای مانیتورینگ PHP میتوانید از داشبورد وب نتدیتا استفاده کنید:
http://NETDATA_SERVER_IP:19999
or
http://DOMAIN_NAME:19999
نتیجه بایستی مانند تصویری که مشاهده میکنید باشد:
اطلاعاتی که netdata از طریق متریکهای PHP نشان میدهد شامل موارد زیر است:
- تعداد پراسسهای اکتیو PHP
- تعداد پراسسهای idle
- تعداد ریکوئستها در لحظه
- مدت زمان هر ریکوئست
- تعداد بارهایی که پراسسها به حد مجاز رسیدهاند
- پردازنده مصرفی برای ریکوئستها
- رم مصرفی برای ریکوئستها
برای ذخیره دادهها برای مدت زمان بیشتر میتوانید از دیتابیس InfluxDB استفاده کرده و دادههای آن را با استفاده از گرافانا مشاهده کنید:
در صورت نیاز میتوانید برای پیاده سازی کامل سیستم مانیتورینگ سایت یا سرورهای خود با کارشناسان ما زمین هاست تماس بگیرید. همچنین با توجه به بار زیاد دیتابیس InfluxDB روی فضای ذخیرهسازی سرور، توصیه میشود از سرویس دیتابیس تخصصی مانند سرویس پایگاه داده پنکیک استفاده کنید.