Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Мониторинг Java приложений в эпоху облаков

aragozin
October 30, 2020

Мониторинг Java приложений в эпоху облаков

Задача мониторинга приложений далеко не новая. Однако каждый виток развития IT инфраструктуры радикально меняет требования к мониторингу. Зачастую при этом культура мониторинга откатывается на годы назад.
Контейнеры, кubernetes, микросервисы - актуальные принципы построения IT систем сегодня.
• В должен включать в себя мониторинг приложений?
• Какие инструменты доступны для организации мониторинга сегодня?
• Что нужно мониторить в JVM?
• Как выглядит, идеальный стек мониторинг и телеметрии в эпоху облаков?
Это основные вопросы, которые будет освещены в рамках доклада.

aragozin

October 30, 2020
Tweet

More Decks by aragozin

Other Decks in Technology

Transcript

  1. Мониторинг Java приложений
    в эпоху облаков
    [email protected]
    Алексей Рагозин
    Ижевск, Октябрь 2020

    View full-size slide

  2. Спираль истории
    Web
    Сервера
    приложений
    Docker
    Микросервисы
    PaaS
    IaaS
    Standalone
    applications
    Kubernetes Serverless
    Service
    mesh

    View full-size slide

  3. Кому нужен мониторинг?
     Служба эксплуатации
     SRE
     Инженеры по
    производительности
     Разработчики
     Архитекторы

    View full-size slide

  4. Кому нужен мониторинг?
     Служба эксплуатации
     SRE
     Инженеры по
    производительности
     Разработчики
     Архитекторы
     Red/Green bulb
     Alerts

    View full-size slide

  5. Кому нужен мониторинг?
     Служба эксплуатации
     SRE
     Инженеры по
    производительности
     Разработчики
     Архитекторы
     Red/Green bulb
     Alerts
     Утилизация ресурсов
     Ошибки и сбои
     Бизнес метрики

    View full-size slide

  6. Кому нужен мониторинг?
     Служба эксплуатации
     SRE
     Инженеры по
    производительности
     Разработчики
     Архитекторы
     Red/Green bulb
     Alerts
     Утилизация ресурсов
     Ошибки и сбои
     Бизнес метрики
     Системные метрики
     Логи
     Трассировка запросов

    View full-size slide

  7. Кому нужен мониторинг?
     Служба эксплуатации
     SRE
     Инженеры по
    производительности
     Разработчики
     Архитекторы
     Red/Green bulb
     Alerts
     Утилизация ресурсов
     Ошибки и сбои
     Бизнес метрики
     Системные метрики
     Логи
     Трассировка запросов

    View full-size slide

  8. Нужно больше мониторингов
    Health check - Red/Green bulb + Alerts
     Просто и надёжно, ничего лишнего
    Monitoring - Utilization + Error Rate + Бизнес метрики
     Логичная структура и качественные метрики
    Centralized logging - Система поиска по логам
    Всё остальное - телеметрия

    View full-size slide

  9. Чем мониторить?

    View full-size slide

  10. Тянуть или толкать?
     push модель
     приложение контролирует
    интенсивность пакетов с
    метриками
     гибкая гранулярность метрик
     приложение может завалить
    InfluxDB
     pull модель
     интервал опроса определяет
    система мониторинга
     фиксированная
    гранулярность метрик
     мониторинг может завалить
    приложение

    View full-size slide

  11. А что с логами?
    Умное логирование в Java
     Ротация файлов
     Запись в несколько файлов
     Управление уровнями на лету
    А теперь нам надо просто стримить всё в сервис логов
     Сервис имеет свои политики хранения
     Тормозит
     Не любит стек трейсы

    View full-size slide

  12. Логирование в облаках
    Адаптируйтесь с системе хранения логов
     Проверяем читаемость,
     Убираем многострочность
     Настрайваем парсеры
    Экономьте место
    Пишите логи в файлы,
    а из файлов систему хранения

    View full-size slide

  13. Логирование по новому
    Старый стиль – элементы лога это тескт
     Текст в свободной форме
     Поисковые тэги
    Новый стиль – элементы лога это объекты
     Информационные атрибуты
     Поиск по атрибутам, не по тексту
     Унификация сообщений

    View full-size slide

  14. Что такое “хорошая” метрика?
    “Хорошая” метрика
     Понятная
     В органиченом диапазоне
     В критерием “качества”
     Ожидаемое значение
     Пороги
    0 38

    View full-size slide

  15. Как найти хорошую метрики?
    “Хорошие” метрики нужно делать
     Кому интересна метрика?
     Как её правильно нормировать?
     С какой гранулярностью собирать?

    View full-size slide

  16. Как найти хорошую метрики?
    “Хорошие” метрики нужно делать
     Кому интересна метрика и почему?
     Как её правильно нормировать?
     С какой гранулярностью собирать?
    Правильно готовим
     Собираем интегральные измерения
     Диференцируем на дашборде

    View full-size slide

  17. Строим мониторинг для Java
     Prometheus + Grafana

    View full-size slide

  18. Строим мониторинг для Java
     Prometheus + Grafana
     Мониторинг Linux (Prometheus Node Exporter)

    View full-size slide

  19. Строим мониторинг для Java
     Prometheus + Grafana
     Мониторинг Linux (Prometheus Node Exporter)
     Метрики JVM

    View full-size slide

  20. Метрики JVM
    Prometheus - JMX Exporter https://github.com/prometheus/jmx_exporter
     Универсальный
     Ресурсоемкий
    Prometheus – Client Java https://github.com/prometheus/client_java
     Ключевые метрики JVM
     API для добавления метрик

    View full-size slide

  21. JVM Metric baseline
    CPU & Threads
     Process CPU
     User / Kernel
     Non-Java usage
     Thread group
     Thread count
     CPU usage (cores)
     Allocation rate
     Block rate
     BLOCK %
     RUNNABLE %
     CPU usage %
    Memory & GC
     OS Memory
     RSS
     Stack memory
     JVM Memory
     Young + Old heap
     Heap allocation rate
     Direct memory
     GC (per type)
     Interval / Rate
     Average duration
     GC time %
    Stop_the_World
     Interval / Rate
     Average duration
     STW time %
    Classes & Compilation
     Total classes loaded
     Total classes unloaded
     Metaspace usage
     Code cache usage
     Compilation time
     Compiled methods
    Normal / OSR
     Methods invalidated

    View full-size slide

  22. Строим мониторинг для Java
     Prometheus + Grafana
     Мониторинг Linux (Prometheus Node Exporter)
     Метрики JVM + контейнера/Linux процесса

    View full-size slide

  23. Строим мониторинг для Java
     Prometheus + Grafana
     Мониторинг Linux (Prometheus Node Exporter)
     Метрики JVM + контейнера/Linux процесса
     Метрики фреймворков

    View full-size slide

  24. Строим мониторинг для Java
     Prometheus + Grafana
     Мониторинг Linux (Prometheus Node Exporter)
     Метрики JVM + контейнера/Linux процесса
     Метрики фреймворков
     Бизнес метрики
     Трассировка запросов

    View full-size slide

  25. Куда писать телеметрию?
    В мире статичных серверов
     Расширенная телеметрия писалась на диск
     Крэш дампы, spoil queue и прочее
     По необходимости данные забирались с сервера для анализа
    Можно ли так делать в облаках?
     Поиск нужного узла
     Доступ к узлу
     “Долговременное” хранение данных

    View full-size slide

  26. Java Flight Recorder
     Диагностика встроенная в JVM
     Лёгкое добавление собственных событий (API)
     Низкие накладные расходы
     Бинарный формат лога событий (JFR файлы)
     Mission Control фроненд для работы с файлами
     Гибкие настройки ротации / вытеснения
    Java 8 и выше – Open Source, доступен в OpenJDK

    View full-size slide

  27. Итоги
     Новая культура логирования
     Разделяйте health check и monitoring
    даже если они используют одинаковый стэк
     Стоимость инфраструктуры мониторинга снизилась
     Создание хороших метрик требует инвестиций
     Продумайте как собирать крэш дампы / телеметрию в
    вашей инфраструктуре

    View full-size slide

  28. Спасибо!
    Алексей Рагозин
    [email protected]
    https://blog.ragozin.info

    View full-size slide