Настройка мониторинга серверов через Grafana и Prometheus

Ваш сайт на Laravel 11 под Nginx работает стабильно, пока не приходит пик трафика. Вместо страниц — 502 ошибка, а вы не знаете, что перегружено: PHP-FPM, база данных или диск. Без мониторинга поиск причины занимает часы, а простой обходится в десятки тысяч рублей в месяц. Наши инженеры с сертификата

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка мониторинга серверов через Grafana и Prometheus
Сложный
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1286
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    983
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    998

Ваш сайт на Laravel 11 под Nginx работает стабильно, пока не приходит пик трафика. Вместо страниц — 502 ошибка, а вы не знаете, что перегружено: PHP-FPM, база данных или диск. Без мониторинга поиск причины занимает часы, а простой обходится в десятки тысяч рублей в месяц. Наши инженеры с сертификатами Prometheus и опытом внедрения на 50+ проектах настраивают полноценный стек мониторинга на Grafana и Prometheus. Вы видите реальную картину: загрузку CPU, очередь PHP-FPM, активные транзакции PostgreSQL — где узкое место, сразу понятно. Получите консультацию — оценим ваш проект за 1 день.

Почему Prometheus, а не традиционные системы?

Prometheus использует pull-модель: он сам опрашивает экспортёры по расписанию, что упрощает обнаружение новых целей и повышает надёжность. Prometheus предоставляет мощный язык запросов PromQL и гибкие возможности алертинга (из официальной документации). По сравнению с Zabbix, Prometheus в 2 раза быстрее при сборе метрик с 10 000 экспортёров. Интеграция с Grafana даёт гибкие дашборды, а Alertmanager отправляет уведомления в Slack, PagerDuty, email при срабатывании алертов.

Что входит в настройку мониторинга серверов?

Настройка мониторинга серверов на Grafana и Prometheus включает установку экспортёров системных метрик (Node Exporter), специализированных экспортёров для PHP-FPM, Nginx, Redis, PostgreSQL, а также создание дашбордов в Grafana и конфигурацию алертов в Alertmanager. Мы разворачиваем стек через Docker Compose, настраиваем правила срабатывания (высокий CPU, низкая память, заполнение диска, очередь PHP-FPM) с маршрутизацией в Slack и PagerDuty. Интегрируем кастомные метрики приложения на примере Laravel. В результате — полная видимость инфраструктуры.

Как развернуть стек мониторинга за 4–6 дней?

Процесс разбит на этапы, каждый из которых можно выполнять параллельно для нескольких серверов:

  1. Аудит инфраструктуры и проектирование — 1 день.
  2. Развёртывание Prometheus, Node Exporter и Grafana — 1–2 дня.
  3. Настройка Alertmanager с интеграциями (Slack, PagerDuty) — +1 день.
  4. Подключение экспортёров PHP-FPM, Nginx, Redis, PostgreSQL — +1–2 дня.
  5. Разработка кастомных метрик приложения — +1–2 дня.
  6. Создание дашбордов и проверка — 1 день.
  7. Документация и обучение — 1 день.

Стек компонентов:

[Серверы] → [Node Exporter] ←── [Prometheus] ←── [Alertmanager] → [Slack/PagerDuty] [PHP-FPM] → [php-fpm_exporter] ↓ [Nginx] → [nginx-vts-exporter] [Grafana] [Redis] → [redis_exporter] [Postgres]→ [postgres_exporter] 
Пример конфигурации Docker Compose
# docker-compose.monitoring.yml services: prometheus: image: prom/prometheus:v2.50.1 volumes: - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml - ./monitoring/alerts:/etc/prometheus/alerts - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.retention.time=30d' - '--storage.tsdb.retention.size=20GB' - '--web.enable-lifecycle' ports: - "9090:9090" alertmanager: image: prom/alertmanager:v0.27.0 volumes: - ./monitoring/alertmanager.yml:/etc/alertmanager/alertmanager.yml ports: - "9093:9093" grafana: image: grafana/grafana:10.3.0 environment: GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD} GF_SERVER_ROOT_URL: https://grafana.example.com GF_SMTP_ENABLED: "true" GF_SMTP_HOST: smtp.example.com:587 volumes: - grafana_data:/var/lib/grafana - ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards - ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources ports: - "3000:3000" node-exporter: image: prom/node-exporter:v1.7.0 command: - '--path.rootfs=/host' - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' volumes: - /:/host:ro,rslave pid: host network_mode: host cadvisor: image: gcr.io/cadvisor/cadvisor:v0.49.1 volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - "8080:8080" volumes: prometheus_data: grafana_data: 

Конфигурация Prometheus и правила алертов

# prometheus.yml global: scrape_interval: 15s evaluation_interval: 15s external_labels: cluster: production region: eu-west-1 alerting: alertmanagers: - static_configs: - targets: ['alertmanager:9093'] rule_files: - /etc/prometheus/alerts/*.yml scrape_configs: - job_name: node static_configs: - targets: - web01:9100 - web02:9100 - db01:9100 relabel_configs: - source_labels: [__address__] target_label: instance - job_name: php-fpm static_configs: - targets: ['web01:9253', 'web02:9253'] - job_name: nginx static_configs: - targets: ['web01:9913', 'web02:9913'] - job_name: redis static_configs: - targets: ['redis:9121'] - job_name: postgres static_configs: - targets: ['db01:9187'] - job_name: myapp metrics_path: /metrics bearer_token: ${METRICS_TOKEN} static_configs: - targets: ['web01:8080', 'web02:8080'] 
# monitoring/alerts/servers.yml groups: - name: server.alerts rules: - alert: HighCPU expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85 for: 5m labels: severity: warning annotations: summary: "Высокая нагрузка CPU на {{ $labels.instance }}" description: "CPU: {{ $value | printf "%.1f" }}%" - alert: LowMemory expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 10 for: 2m labels: severity: critical annotations: summary: "Критически мало памяти на {{ $labels.instance }}" description: "Свободно: {{ $value | printf "%.1f" }}%" - alert: DiskSpaceLow expr: (node_filesystem_avail_bytes{fstype!~"tmpfs|fuse.lxcfs"} / node_filesystem_size_bytes) * 100 < 15 for: 5m labels: severity: warning annotations: summary: "Мало места на диске {{ $labels.instance }}:{{ $labels.mountpoint }}" - alert: HighPhpFpmQueue expr: phpfpm_listen_queue > 10 for: 1m labels: severity: warning annotations: summary: "PHP-FPM очередь заполнена: {{ $value }} запросов" - alert: PostgresDown expr: pg_up == 0 for: 1m labels: severity: critical annotations: summary: "PostgreSQL недоступен на {{ $labels.instance }}" - alert: SlowQueries expr: rate(pg_stat_activity_max_tx_duration{state="active"}[5m]) > 30 for: 2m labels: severity: warning annotations: summary: "Долгие запросы PostgreSQL (>30 сек)" 

Alertmanager настраивается на маршрутизацию уведомлений: критические алерты отправляются в PagerDuty, остальные — в Slack-каналы #monitoring и #incidents. Группировка по alertname и instance предотвращает спам.

Типичные ошибки при настройке алертов

При настройке алертов часто допускают ошибки. Неправильный scrape_interval: если интервал сбора слишком большой, алерт может сработать с опозданием — рекомендуем 15s. Игнорирование retention: по умолчанию Prometheus хранит данные 15 дней, для production стоит увеличить до 30 дней и ограничить размер. Отсутствие группировки алертов: без неё при массовом сбое придёт сотня уведомлений — Alertmanager должен группировать по alertname и instance.

Какие метрики критичны для веб-приложения?

Кроме системных, важно отслеживать метрики приложения, влияющие на Core Web Vitals: LCP (загрузка контента), TTFB (время ответа сервера), количество N+1 запросов. Наши дашборды включают панели с этими показателями, чтобы вы могли быстро оптимизировать производительность. Например, рост TTFB может сигнализировать о проблемах с PHP-FPM или базой данных, а увеличение LCP — об узких местах в рендеринге.

Кастомные метрики приложения (Laravel)

use Prometheus\CollectorRegistry; use Prometheus\RenderTextFormat; class MetricsController extends Controller { public function __invoke(CollectorRegistry $registry): Response { // Метрики Laravel $registry->getOrRegisterGauge('myapp', 'queue_size', 'Queue jobs count', ['queue']) ->set(Queue::size('emails'), ['emails']); $registry->getOrRegisterGauge('myapp', 'active_users', 'Active users in last 5 min') ->set(User::where('last_seen_at', '>', now()->subMinutes(5))->count()); $registry->getOrRegisterGauge('myapp', 'failed_jobs', 'Failed jobs total') ->set(DB::table('failed_jobs')->count()); $renderer = new RenderTextFormat(); return response($renderer->render($registry->getMetricFamilySamples()), 200) ->header('Content-Type', RenderTextFormat::MIME_TYPE); } } 

Основные метрики для мониторинга

Метрика Источник данных Экспортёр
Загрузка CPU /proc/stat Node Exporter
Использование памяти /proc/meminfo Node Exporter
Свободное место на диске Файловая система Node Exporter
Очередь PHP-FPM PHP-FPM status php-fpm_exporter
Запросы в секунду Nginx Nginx status nginx-vts-exporter
Количество команд Redis Redis INFO redis_exporter
Активные транзакции PostgreSQL postgres_exporter

Начните с системных метрик, затем добавьте основные службы. Мы поможем определить критические показатели для вашего проекта. Получите консультацию инженера по выбору экспортёров.

График работ и сроки

Этап Срок
Аудит инфраструктуры и проектирование 1 день
Развёртывание Prometheus + Node Exporter + Grafana 1–2 дня
Настройка Alertmanager + Slack/PagerDuty +1 день
Подключение экспортёров PHP-FPM, Nginx, Redis, PostgreSQL +1–2 дня
Разработка кастомных метрик приложения +1–2 дня
Создание дашбордов и проверка 1 день
Документация и обучение 1 день
Итого: полноценный production стек 4–6 дней

Свяжитесь с нами, чтобы обсудить детали внедрения мониторинга на вашем проекте. Наши инженеры с сертификатами Prometheus и опытом на 50+ проектах гарантируют стабильную работу и своевременное оповещение о проблемах. Закажите настройку мониторинга под ключ — оценим ваш проект за 1 день.