Расскажи про набор инструментов, который используешь для осмотра системы

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

Ответ

Мой подход к диагностике системы — идти от общего к частному, используя многоуровневый стек инструментов.

1. Общая картина (Dashboard-ы): Первым делом открываю Grafana-дашборды, которые дают мгновенный обзор:

  • Кластерный дашборд: Здоровье нод Kubernetes (CPU, Memory, Disk I/O), статус подов, сетевой трафик.
  • Бизнес-метрики: Rate, latency, error rate ключевых сервисов (часто на основе RED-метрик).
  • Дашборд по базам данных: Запросы в секунду, активные соединения, latency запросов.

2. Детальный осмотр и анализ: Если на дашбордах видна аномалия, перехожу к конкретным инструментам.

  • Для Kubernetes-кластера:
    # Быстрый снимок состояния
    kubectl get nodes -o wide
    kubectl top nodes
    kubectl get pods -A --sort-by='{.status.startTime}' | tail -20 # Смотреть последние запущенные поды
    kubectl describe pod <problem-pod> # Детали пода и события
    kubectl logs <pod-name> --tail=100 -f # Просмотр логов в реальном времени
    kubectl exec -it <pod-name> -- /bin/sh # При необходимости зайти в контейнер
  • Для анализа метрик и алертов: Использую Prometheus UI для ad-hoc-запросов, чтобы глубже исследовать проблему, выявленную на дашборде.
  • Для поиска по логам: Использую Grafana с плагином Loki. Типовой запрос: {app="api-service", level="error"} |= "timeout".

3. Инструменты уровня ОС/хоста (если проблема на конкретной ноде): Подключаюсь к ноде и использую стандартный набор:

  • Процессы и ресурсы: htop, vmstat 1, iostat -xz 1.
  • Сеть: ss -tlnp (современная замена netstat), tcpdump -i any -n port 80 для сниффинга трафика, mtr для диагностики сетевых путей.
  • Диски: df -h, lsblk, iotop.

4. Специализированные утилиты:

  • k9s: Терминальный UI для Kubernetes, незаменим для быстрой навигации по ресурсам, просмотра логов и описаний.
  • stern: Агрегатор логов из нескольких подов по лейблу, например stern -n production app=frontend.
  • jq: Для парсинга JSON-ответов API (например, от Kubernetes API или внутренних сервисов).

Мой принцип — максимально использовать централизованные инструменты (Grafana, Prometheus, Loki), чтобы минимизировать необходимость прямого доступа к продакшен-серверам.