Setting up 1C-Bitrix performance monitoring

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    745
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Setting up performance monitoring for 1C-Bitrix

Performance monitoring is not a one-time diagnosis, but continuous control: when degradation started, what changed, where the critical point is. Without monitoring, the customer discovers the problem, not the team.

Built-in Bitrix monitoring

The "Performance" module (perfmon) keeps a log of slow pages. Settings: Settings → Performance → Performance Monitor.

Default threshold — 2 seconds. Pages slower than the threshold get logged with details: SQL time, query count, component time. Table b_perf_hit — you can query directly for aggregation.

SELECT URL, AVG(SQL_TIME) avg_sql, AVG(QUERIES_COUNT) avg_queries, COUNT(*) hits
FROM b_perf_hit
WHERE HIT_DATETIME > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY URL
ORDER BY avg_sql DESC
LIMIT 20;

PHP-FPM status

Add to PHP-FPM pool config:

pm.status_path = /fpm-status

In nginx:

location /fpm-status {
    allow 127.0.0.1;
    deny all;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Endpoint /fpm-status shows active/waiting workers. active processes close to max_children — PHP saturated.

Prometheus + Grafana

Stack for professional monitoring. In 3–4 hours of setup you get dashboards with history.

Exporters:

  • node_exporter — CPU, RAM, disk, network
  • mysqld_exporter — MySQL/MariaDB metrics
  • php-fpm_exporter — PHP-FPM metrics from /fpm-status
  • redis_exporter — Redis metrics

Key metrics for Bitrix in Grafana:

  • php_fpm_active_processes / php_fpm_max_active_processes — PHP-FPM load
  • mysql_global_status_slow_queries — slow query count
  • redis_memory_used_bytes — Redis memory usage
  • node_load1 / node_load5 — system load

Alerting

Set up notifications for critical events:

Condition Threshold Channel
PHP-FPM active > 85% max 5 minutes Telegram
MySQL slow queries > 10/min Email
Disk I/O wait > 30% 3 minutes Telegram
Site response time > 3 s 2 minutes Telegram + call
Errors 5xx > 1% requests Telegram

Simple external availability monitoring: UptimeRobot (free, checks every 5 minutes) or Betteruptime. Checks HTTP status and notifies on downtime.