Какие инструменты вы используете для мониторинга ресурсов серверов?

«Какие инструменты вы используете для мониторинга ресурсов серверов?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для комплексного мониторинга инфраструктуры я настраиваю стек на основе Prometheus и Grafana.

1. Сбор метрик (Prometheus):

  • На серверах запускается node_exporter, который собирает метрики CPU, памяти, дисков, сети.
  • Prometheus по pull-модели забирает эти метрики.
  • Для мониторинга приложений добавляются соответствующие экспортеры (например, для Nginx, PostgreSQL, Redis) или инструментация кода через клиентские библиотеки.

Пример правила оповещения (alert) в Prometheus для высокой загрузки CPU:

groups:
- name: host_alerts
  rules:
  - alert: HighCpuLoad
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High CPU load on {{ $labels.instance }}"

2. Визуализация и дашборды (Grafana): Создаю дашборды, которые отображают использование ресурсов в реальном времени, тренды и SLA.

3. Логирование: Для агрегации и анализа логов использую стек ELK (Elasticsearch, Logstash/Fluentd, Kibana) или более легковесный Grafana Loki. Настраиваю парсинг логов, создаю алерты на критические ошибки в Kibana или Grafana.

4. Для быстрой ad-hoc проверки на самом сервере использую:

  • htop — интерактивный просмотр процессов.
  • nmon или glances — для комплексного просмотра.
  • dstat — для анализа дискового и сетевого IO в реальном времени.