اگر سایت شما هم یکی از سایت های پربازدید است و در ساعات اوج ترافیک با کاهش سرعت و حتی داون شدن سایت خود مواجه شده اید، حتما باید به فکر مانیتورینگ سرویس های سرور خود باشید.

در این آموزش به بررسی مانیتورینگ سرویس 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-fpm
tcp 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@DevopsRoles ~]# systemctl restart netdata 


برای مشاهده لحظه ای مانیتورینگ PHP میتوانید از داشبورد وب نت‌دیتا استفاده کنید:

http://NETDATA_SERVER_IP:19999
or
http://DOMAIN_NAME:19999


نتیجه بایستی مانند تصویری که مشاهده می‌کنید باشد:

اطلاعاتی که netdata از طریق متریک‌های PHP نشان می‌دهد شامل موارد زیر است:

  • تعداد پراسس‌های اکتیو PHP
  • تعداد پراسس‌های idle
  • تعداد ریکوئست‌ها در لحظه
  • مدت زمان هر ریکوئست
  • تعداد بارهایی که پراسس‌ها به حد مجاز رسیده‌اند
  • پردازنده مصرفی برای ریکوئست‌ها
  • رم مصرفی برای ریکوئست‌ها


برای ذخیره داده‌ها برای مدت زمان بیشتر می‌توانید از دیتابیس InfluxDB استفاده کرده و داده‌های آن را با استفاده از گرافانا مشاهده کنید:

در صورت نیاز می‌توانید برای پیاده سازی کامل سیستم مانیتورینگ سایت یا سرورهای خود با کارشناسان ما زمین هاست تماس بگیرید. هم‌چنین با توجه به بار زیاد دیتابیس InfluxDB روی فضای ذخیره‌سازی سرور، توصیه می‌شود از سرویس دیتابیس تخصصی مانند سرویس پایگاه داده پنکیک استفاده کنید.