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

Когда серверы работают без сбоев, вы об этом не задумываетесь. Но стоит пику трафика превратить сайт в 502-ю ошибку, и каждый час простоя бьёт по бизнесу. Мы настраиваем мониторинг на Grafana и Prometheus, чтобы вы видели реальную картину нагрузки и узкие места. Наша команда реализует проект под ключ — от установки экспортёров до алертов в мессенджеры, с последующей поддержкой.

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

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

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

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

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1471
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1322
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1021
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1280
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1021
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1020

Ваш сайт на Laravel 11 под Nginx работает стабильно, пока не приходит пик трафика. Вместо страниц — 502 ошибка, а вы не знаете, что перегружено: PHP-FPM, база данных или диск. Без мониторинга поиск причины занимает часы, а простой обходится в около $90–130 в месяц. Наши инженеры с сертификатами 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 день.