Kā izmantot PHP-FPM eksportētāju

Izvietojot serverī vienu no lietotnēm, kuru izstrādāju, es saskāros ar ļoti dīvainu php-fpm procesa uzvedību. Šīs uzvedības reproducēšana varēja aizņemt vairākas stundas, tāpēc „muļķīgā mēģini-un-gaidi“ metode būtu prasījusi pārāk daudz laika, lai to novērstu. Pirmais, ko izdarīju, bija uzstādīt monitoringu, jo tas ļauj sekot līdzi tam, kas notiek serverī, kamēr jūs guļat.

Man ļoti patīk Prometheus un Grafana, tāpēc bija diezgan skaidrs, ka izvēlēšos tieši šos rīkus.

Ja lasāt šo ceļvedi, visticamāk, jums ir radušās problēmas ar uzstādīšanu, taču pieņemšu, ka Prometheus jums jau ir uzstādīts.

Uzstādīšana

Sāksim. Pieņemšu, ka jūs jau esat pieslēdzies pa SSH serverim vai konteinerim, kuru vēlaties monitorēt. Izmantošu PHP FPM Exporter no šī repozitorija.

Lejupielādējiet eksportētāju un pārvietojiet to uz /usr/local/bin (jo tā ir parasta, nevis ar distributīva pakotņu pārvaldnieku pārvaldīta pakotne), izmantojot šo komandu:

wget https://github.com/hipages/php-fpm_exporter/releases/download/v2.2.0/php-fpm_exporter_2.2.0_linux_amd64
mv php-fpm_exporter_* /usr/local/bin/php-fpm_exporter
chmod 755 /usr/local/bin/php-fpm_exporter

Konfigurācija

Šī daļa man sagādāja zināmas grūtības (mans attaisnojums — bija jau vēls), kas mani pamudināja uzrakstīt šo ceļvedi nākamajā rītā pēc uzstādīšanas.

  1. Atveriet savu PHP-FPM konfigurāciju (nomainiet 8.3 pret savu PHP versiju):
    vi /etc/php/8.3/fpm/pool.d/www.conf
    
  2. Veiciet šādas izmaiņas:
    1. Atkomentējiet listen režīma iestatījumu:
      listen.mode = 0660
      
    2. Atkomentējiet statusa URI:
      pm.status_path = /status
      
    3. Pārliecinieties, ka soketa konfigurācija norāda uz pareizo ceļu (ja nepieciešams, nomainiet 8.3 pret savu PHP versiju):
      listen = /run/php/php8.3-fpm.sock
      
  3. Saglabājiet izmaiņas un izejiet no redaktora.
  4. Restartējiet PHP-FPM pakalpojumu, lai piemērotu konfigurāciju:
    systemctl restart php8.3-fpm
    
    

Tagad jūsu PHP-FPM instance ir konfigurēta tā, lai padarītu metrikas pieejamas caur /status ceļu definētajā soketā.

Pakalpojums

Tālāk izveidosim pakalpojumu PHP-FPM eksportētājam, lai tas varētu darboties fonā un automātiski startēt sistēmas ieslēgšanās brīdī.

Atveriet jaunu pakalpojuma failu eksportētājam:

vi /etc/systemd/system/php-fpm_exporter.service

Pievienojiet failam šādu saturu:

# Service file for PHP-FPM Exporter:
[Unit]
Description=PHP-FPM Exporter Service
After=network.target

[Service]
User=www-data
Group=www-data
Type=simple
ExecStart=/usr/local/bin/php-fpm_exporter server --phpfpm.fix-process-count=true --phpfpm.scrape-uri "unix:///run/php/php8.3-fpm.sock;/status"

[Install]
WantedBy=multi-user.target

Pakalpojuma startēšana un iespējošana

Pārlādējiet systemd dēmonu, lai tas uztvertu jauno pakalpojuma konfigurāciju:

sudo systemctl daemon-reload

Iespējojiet PHP-FPM eksportētāja pakalpojumu, lai tas automātiski startētu sistēmas ieslēgšanās brīdī

sudo systemctl enable php-fpm_exporter

Startējiet PHP-FPM eksportētāja pakalpojumu:

sudo systemctl start php-fpm_exporter

Pārbaudiet pakalpojuma statusu, lai pārliecinātos, ka tas darbojas pareizi:

sudo systemctl status php-fpm_exporter

Ja viss ir uzstādīts pareizi, jums vajadzētu redzēt, ka pakalpojums ir norādīts kā active (running). Ja rodas kādas problēmas, žurnālus varat pārbaudīt šādi:

journalctl -u php-fpm_exporter -f

Metriku vākšana

Tagad, kad PHP-FPM eksportētājs darbojas, ir pienācis laiks konfigurēt Prometheus, lai tas vāktu metrikas.

  1. Atveriet savu Prometheus konfigurācijas failu (parasti prometheus.yml).
  2. Pievienojiet šādu darba (job) konfigurāciju:
    - job_name: 'php-fpm-exporter'
      scrape_interval: 15s  # Adjust based on your needs
      static_configs:
        - targets: ['ip_of_your_server:9253']
    
  3. Saglabājiet izmaiņas un restartējiet Prometheus:
    sudo systemctl restart prometheus
    
  4. Pārliecinieties, ka Prometheus vāc metrikas, apmeklējot mērķu (targets) lapu: http://<your-prometheus-server>:9090/targets. Jums vajadzētu redzēt, ka php-fpm-exporter mērķis ir norādīts kā up. Ja tā nav, pārliecinieties, ka eksportētājs darbojas un ka ugunsmūra noteikumi nebloķē savienojumu.

Uzstādījuma pārbaude Grafanā

Kad Prometheus veiksmīgi vāc metrikas, varat izveidot vizualizācijas Grafanā.

Prometheus pievienošana kā datu avots

  1. Piesakieties savā Grafana instancē.
  2. Dodieties uz Settings → Data Sources.
  3. Noklikšķiniet uz Add Data Source un izvēlieties Prometheus.
  4. Norādiet Prometheus URL (piemēram, http://<your-prometheus-server>:9090).
  5. Noklikšķiniet uz Save & Test, lai apstiprinātu savienojumu.

Ja viss darbojas, jums vajadzētu redzēt ziņojumu, ka datu avots ir veiksmīgi pievienots.

Veiksmīgu monitoringu