hostprofi.ru
Подобрать хостинг
Термин·буква М

Мониторинг сервера

краткое определение

Непрерывный сбор метрик CPU, RAM, диска и сервисов для обнаружения проблем и анализа производительности.

Мониторинг сервера — непрерывный сбор и анализ метрик работы инфраструктуры: CPU, RAM, диск, сеть, состояние сервисов. Позволяет обнаружить проблемы до отказа и исторически анализировать производительность.

Как работает

Система мониторинга состоит из трёх компонентов: агент (собирает метрики на сервере), хранилище временных рядов (time series database), визуализация и алертинг. Агент — node_exporter (Prometheus), Telegraf (InfluxDB) или Zabbix Agent — опрашивает /proc и /sys файловую систему Linux, получая данные о загрузке CPU, использовании памяти, дисковых операциях, сетевом трафике.

Метрики сохраняются с временными метками в TSDB: Prometheus хранит 15 дней по умолчанию, Victoria Metrics — более эффективно, Graphite/Whisper — классика. Alertmanager отправляет уведомления в Telegram, Slack, PagerDuty при превышении порогов.

Ключевые метрики

  • CPU: load average (1/5/15 мин), iowait (ожидание диска), steal (кража CPU гипервизором на VPS)
  • RAM: available memory, swap usage, OOM killer events
  • Диск: iops, throughput, latency, заполненность разделов и inodes
  • Сеть: bytes in/out, packets, errors, retransmit
  • Сервисы: статус Nginx, MariaDB, time to first byte, количество активных соединений

История

Мониторинг серверов начинался с простых shell-скриптов и Nagios (1999) — первой open-source системы с проверками доступности и алертами. Cacti (2001) добавил RRDtool-графики. Graphite (2008) и Grafana (2014) революционизировали визуализацию. Prometheus (2012, open-source с 2015) от SoundCloud стал стандартом для Kubernetes-экосистемы. В 2020-х Grafana Labs объединила Prometheus, Loki (логи) и Tempo (трейсинг) в единый observability-стек.

Стек Prometheus + Grafana

# docker-compose для запуска стека
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports: ["9090:9090"]

  node-exporter:
    image: prom/node-exporter
    pid: host
    ports: ["9100:9100"]

  grafana:
    image: grafana/grafana
    ports: ["3000:3000"]
    environment:
      GF_SECURITY_ADMIN_PASSWORD: secret

Алертинг

Пример alert-правил Prometheus для VPS:

# Диск заполнен на 90%
- alert: DiskAlmostFull
  expr: node_filesystem_free_bytes / node_filesystem_size_bytes < 0.1
  for: 5m
  annotations:
    summary: "Disk almost full on {{ $labels.instance }}"

# Сервис недоступен
- alert: NginxDown
  expr: up{job="nginx"} == 0
  for: 1m

На что обращать внимание

Мониторинг самого сервера мониторинга — классическая проблема. Если Prometheus упал, нет алертов об этом. Решение: внешний Icinga или Uptimerobot проверяет доступность основного стека снаружи. Хранение метрик на том же диске, что и основные данные, создаёт конкуренцию за IOPS — выделите отдельный диск или используйте Victoria Metrics с лучшим сжатием.

Для первоначального мониторинга VPS без сложной инфраструктуры подойдёт связка Netdata + Netdata Cloud: устанавливается за 1 минуту, Real-time метрики с историей за 14 дней, бесплатный облачный дашборд для нескольких серверов. Более зрелый стек Prometheus + Grafana требует настройки, но даёт полный контроль над хранением и алертингом. Icinga дополняет оба варианта внешними проверками доступности.

Другие термины