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. Кому нужен мониторинг?  Служба эксплуатации  SRE  Инженеры

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

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

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

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

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

     Просто и надёжно, ничего лишнего Monitoring - Utilization + Error Rate + Бизнес метрики  Логичная структура и качественные метрики Centralized logging - Система поиска по логам Всё остальное - телеметрия
  7. Тянуть или толкать?  push модель  приложение контролирует интенсивность

    пакетов с метриками  гибкая гранулярность метрик  приложение может завалить InfluxDB  pull модель  интервал опроса определяет система мониторинга  фиксированная гранулярность метрик  мониторинг может завалить приложение
  8. А что с логами? Умное логирование в Java  Ротация

    файлов  Запись в несколько файлов  Управление уровнями на лету А теперь нам надо просто стримить всё в сервис логов  Сервис имеет свои политики хранения  Тормозит  Не любит стек трейсы
  9. Логирование в облаках Адаптируйтесь с системе хранения логов  Проверяем

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

     Текст в свободной форме  Поисковые тэги Новый стиль – элементы лога это объекты  Информационные атрибуты  Поиск по атрибутам, не по тексту  Унификация сообщений
  11. Что такое “хорошая” метрика? “Хорошая” метрика  Понятная  В

    органиченом диапазоне  В критерием “качества”  Ожидаемое значение  Пороги 0 38
  12. Как найти хорошую метрики? “Хорошие” метрики нужно делать  Кому

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

    интересна метрика и почему?  Как её правильно нормировать?  С какой гранулярностью собирать? Правильно готовим  Собираем интегральные измерения  Диференцируем на дашборде
  14. Метрики JVM Prometheus - JMX Exporter https://github.com/prometheus/jmx_exporter  Универсальный 

    Ресурсоемкий Prometheus – Client Java https://github.com/prometheus/client_java  Ключевые метрики JVM  API для добавления метрик
  15. 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
  16. Строим мониторинг для Java  Prometheus + Grafana  Мониторинг

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

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

    Linux (Prometheus Node Exporter)  Метрики JVM + контейнера/Linux процесса  Метрики фреймворков  Бизнес метрики  Трассировка запросов
  19. Куда писать телеметрию? В мире статичных серверов  Расширенная телеметрия

    писалась на диск  Крэш дампы, spoil queue и прочее  По необходимости данные забирались с сервера для анализа Можно ли так делать в облаках?  Поиск нужного узла  Доступ к узлу  “Долговременное” хранение данных
  20. Java Flight Recorder  Диагностика встроенная в JVM  Лёгкое

    добавление собственных событий (API)  Низкие накладные расходы  Бинарный формат лога событий (JFR файлы)  Mission Control фроненд для работы с файлами  Гибкие настройки ротации / вытеснения Java 8 и выше – Open Source, доступен в OpenJDK
  21. Итоги  Новая культура логирования  Разделяйте health check и

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