Научная статья на тему 'ПОЛУЧЕНИЕ МЕТРИК JAVA-ПРИЛОЖЕНИЯ В КОНТЕЙНЕРАХ DOCKER'

ПОЛУЧЕНИЕ МЕТРИК JAVA-ПРИЛОЖЕНИЯ В КОНТЕЙНЕРАХ DOCKER Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
643
50
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВЕБ-ПРИЛОЖЕНИЕ / СБОР МЕТРИК / ПРОГРАММНЫЕ СРЕДСТВА ОБРАБОТКИ / АНАЛИТИКИ И ВИЗУАЛИЗАЦИИ ДАННЫХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Барабанов В. Ф., Донских А. К., Гребенникова Н. И., Кенин С. Л.

Объектами исследования являются: java-приложение с поддержкой JMX технологии; демон для сбора метрик Collectd; программный продукт для хранения временных рядов Graphite; система аналитики и визуализации данных Grafana. Актуальность разработки решения определяется тем, что в настоящее время веб-приложениям необходимо обрабатывать огромные потоки данных. Для решения этой проблемы используются высокомасштабируемые микросервисы, а для их управления контейнер Docker. Работа с Docker несколько отличается от работы с традиционными приложениями, однако в корпоративном сегменте имеется большой пласт классических наработок. Как следствие, на данный момент актуальной является разработка решения, которое будет работать с классическими решениями в контейнерах Docker. Приведено описание и особенности работы java-приложений в контейнерах Docker. Предлагается решение для сбора, хранения, обработки, анализа и визуализации метрик веб-приложений с помощью JMX, Collectd, Grafana и Graphite. Показано, как взаимодействуют между собой данные компоненты. Приведены примеры настройки java-приложения для работы с JMX, добавление плагина FastJMX в collectd, а также настройки для Grafana и Graphite. Результатом работы, описанным в статье, является система, отвечающая всем требованиям к системам для хранения и анализа больших объемов аналитических данных и имеющая все преимущества использования Docker. Полученное решение позволит сократить затраты на рабочую силу, а использование в разработке программного обеспечения с открытым исходным кодом позволяет еще больше снизить затраты на разработку и последующее использование

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Барабанов В. Ф., Донских А. К., Гребенникова Н. И., Кенин С. Л.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

RECEIVING THE JAVA APPLICATION METRICS IN DOCKER CONTAINERS

The objects of research are java-application with support of JMX technology, daemon for collecting metrics collectD; Graphite time series storage software, Grafana data analytics and visualization system. The relevance of developing the solution is determined by the fact that web applications currently need to process huge streams of data. To solve this problem, Docker is used. Working with Docker is somewhat different from working with traditional applications, although in the corporate segment, there is a large layer of classic developments. As a result, the development of a solution that will work with classic solutions in Docker containers is currently relevant. The article describes and features java-applications in Docker containers. A solution is proposed for collecting, storing, processing, analyzing and visualizing web application metrics using JMX, Collectd, Grafana and Graphite. It is shown how these components interact with each other. An example of configuring a java application to work with JMX, adding the FastJMX plugin to collectD, as well as settings for Grafana and Graphite are given. The result of the work described in the article is a system that meets all the requirements for systems for storing and analyzing large amounts of data, and has all the advantages of using Docker. The resulting solution will reduce labor costs, and the use of open source software in the development will further reduce the costs of development and subsequent use

Текст научной работы на тему «ПОЛУЧЕНИЕ МЕТРИК JAVA-ПРИЛОЖЕНИЯ В КОНТЕЙНЕРАХ DOCKER»

Информатика, вычислительная техника и управление

DOI 10.25987/VSTU.2020.16.2.001 УДК 004.4

ПОЛУЧЕНИЕ МЕТРИК JAVA-ПРИЛОЖЕНИЯ В КОНТЕЙНЕРАХ DOCKER В.Ф. Барабанов, А.К. Донских, Н.И. Гребенникова, С.Л. Кенин

Воронежский государственный технический университет, г. Воронеж, Россия

Аннотация: объектами исследования являются: java-приложение с поддержкой JMX технологии; демон для сбора метрик Collectd; программный продукт для хранения временных рядов Graphite; система аналитики и визуализации данных Grafana. Актуальность разработки решения определяется тем, что в настоящее время веб-приложениям необходимо обрабатывать огромные потоки данных. Для решения этой проблемы используются высокомасштабируе-мые микросервисы, а для их управления контейнер Docker. Работа с Docker несколько отличается от работы с традиционными приложениями, однако в корпоративном сегменте имеется большой пласт классических наработок. Как следствие, на данный момент актуальной является разработка решения, которое будет работать с классическими решениями в контейнерах Docker. Приведено описание и особенности работы java-приложений в контейнерах Docker. Предлагается решение для сбора, хранения, обработки, анализа и визуализации метрик веб-приложений с помощью JMX, Collectd, Grafana и Graphite. Показано, как взаимодействуют между собой данные компоненты. Приведены примеры настройки java-приложения для работы с JMX, добавление плагина FastJMX в collectd, а также настройки для Grafana и Graphite. Результатом работы, описанным в статье, является система, отвечающая всем требованиям к системам для хранения и анализа больших объемов аналитических данных и имеющая все преимущества использования Docker. Полученное решение позволит сократить затраты на рабочую силу, а использование в разработке программного обеспечения с открытым исходным кодом позволяет еще больше снизить затраты на разработку и последующее использование

Ключевые слова: веб-приложение, сбор метрик, программные средства обработки, аналитики и визуализации данных

Введение

Сбор метрик и данных аналитики приложения является важной частью разработки и поддержки веб-решений. Метрики могут варьироваться от замеров скорости обработки запросов до частоты их вызова и местоположений клиентов.

Для сбора метрик из Java-приложения в первую очередь необходимо создать приложение, которое будет отдавать определенные метрики. Затем требуется средство для получения этих метрик из приложения. Также нужно средство хранения полученных данных. И, наконец, метрики потребуется визуализировать.

Рассмотрим отдельные компоненты: JMX, Collectd, Grafana, Graphite и Docker.

JMX (Java Management Extensions) - это технология, являющаяся частью Java-платформы. Технология JMX предоставляет стандартный способ управления ресурсами. В качестве ресурсов могут выступать приложения, устройства или принтеры.

CollectD - это небольшой демон для Linux-систем, который периодически собирает метрики производительности системы и приложений и предоставляет механизмы для хранения этих метрик.

Graphite - это бесплатный программный продукт с открытым исходным кодом, который предназначен для сбора, хранения и отображения временных рядов.

Grafana является бесплатным программным продуктом с открытым исходным кодом. Grafana предназначена для аналитики и отображения данных, хранимых в Graphite. В отличие от средств визуализации Graphite, Grafana имеет намного больше возможностей для визуализации и поддержку расширяющих эти возможности плагинов.

Все вышеперечисленные компоненты будут находиться в контейнерах Docker.

Схема взаимодействия контейнеров и компонентов представлена на рис. 1.

© Барабанов В.Ф., Донских А.К., Гребенникова Н.И., Кенин С.Л., 2020

Рис. 1. Схема взаимодействия частей решения

Сбор, анализ и формализация требований к системе

В первую очередь, требуется Java-приложение, готовое передавать метрики. Для симуляции и проверки работы решения приложение будет «засыпать» на каждом шаге работы бесконечного цикла на определенное количество милисекунд, которое будет постоянно увеличиваться. Если визуализация загруженности системы будет схожа с графиком постоянно увеличивающейся функции (внешним видом напоминающей функцию y = Vx), значит, настройка проведена корректно.

Далее следует выделить самую важную часть: сбор метрик. В виртуальной машине Java для работы с технологией JMX необходимо определить интерфейс и его реализацию. Исходя из требований JMX, имя интерфейса должно заканчиваться на MBean. Для JMX не имеет значения реализация MBean интерфейса.

Для того чтобы JMX узнал о наличии MBean^, его следует зарегистрировать в MBean сервере.

Однако на этом конфигурация приложения не закончена. Необходимо определенным образом его запускать, чтобы виртуальная машина Java подготовила MBean сервер. Для этого к параметрам запуска приложения следует добавить следующие аргументы:

- Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=$ JMX_ PORT \

-Dcom.sun. management .j mxremote. rmi .port= $JMX PORT \

-Dcom.sun.management.j mxremote. local. only =false \

-Dcom.sun.management.jmxremote.authenticate =false \

-Dcom.sun.management.jmxremote.ssl=false

JMX_PORT - указывает, какой порт должен прослушивать JMX.

Также следует добавить, что если необходимо подключаться к JMX не из контейнера, а из машины-хоста, то к аргументам следует добавить:

- Djava.rmi.server.hostname=0.0.0.0

Для настройки collectd демон для сбора и передачи метрик можно использовать уже настроенные контейнеры из репозитория docker. Например, контейнер puckel/docker-collectd. Однако данный контейнер не будет работать с JMX, т.к. в нем не установлены jdk, переменные PATH и jar-файлы для работы java-плагинов.

Затем необходимо написать collectd конфигурацию для получения метрик из Java-приложения. Сначала следует загрузить плагин для работы с виртуальной машиной Java, затем в конфигурации этого плагина следует указать аргументы для Java-машины. В этих аргументах указывается FastJMX плагин. Далее идет конфигурация FastJMX плагина, которая содержит определения для всех MBean^, которые указаны в приложении. Здесь важно, чтобы поле ObjectName соответствовало имени, указанному при регистрации соответствующего бина. Затем в тегах Value указываются сами метрики. За объявлением всех MBean^ следует секция с объявлениями соединений к Java-приложению. После объявления Java-плагинов следует определить плагин write_graphite для передачи собранных метрик. На рис. 2 приведен исходный код конфиг-файла для collectd.

Docker репозиторий уже содержит в себе контейнер для Graphite и Grafana. Все, что остается, это настроить порты для его работы через конфигурацию докера.

Результат работы приложения представлен на рис. 3. Как можно видеть, результат работы схож с графиком функции y= Vx.

1 2

3

4 Н

5

6 7

S Н 9 10

11 В

12 Н

13

14- Н

15

16

17

18

19

20 Н

21 22

23

24

25

26

27 Н

28 Н

29

30

31

32

33

34

35

36

37 Н

38 В

39

40

41

42

43

44

45

46

TypesDB

"/иг'/ share/collectd/types.db"

LoadPlugin java <Plugin "java">

DVMArg "-verbose:jri" :VMArg "-Xmx512M"

DVMArg "-Djava.class.path=/jlib/collectd-api.jar:/jlib/collectd-fast-jnx-1.0.0.jar™ # DMX plugin initialization LoadPlugi n " con. e_gi nee r in g. collectd. F a stJMX" <Plugin "Fast]MX"> # MBean declarations section <MBean "jjc/jjcMetrics">

Ob j ectName "com.d a s ik.j j с:type=j j cMet ric s" <Value>

PluginNane "GenericDMX" Attribute "Avg" Type "gauge" InstancePrefix "Avg" </Value> < Value >

PluginNane "GenericJMX" Attribute "Last" Type "gauge" InstancePrefix "Last" </Value> </MBean> ;< JMX Connectors section <Connection "jjc">

ServiceURL "service:jinx:rmi:IIIjndi/rmi://jjc:49141/jrnxrnii" InstancePrefix "jjc" Collect "jjc/jjcMetrics" </Connection> </Plugin> # FastHMX plugin </Plugin> # java plugin #end of Dava plugin section LoadPlugin write_graphite < P lug in "wr it e_g ra ph ite"> <Carbon "dashboard"> Host "dashboard™ Port "2в03"

Prefix "jjc.tst.java.netrics" EscapeCharacter "_" LogSendErrors True </Carbon> </Plugin>

Рис. 2. Конфиг-файл для collectd

Metrics

4,0 s

1.0s 0 П5 J—

1130 12:00 1230 13:00 1330 14:00 — Avg —Last —calculated Aug 2019-06-21 14:19:00

-Avg: 1.7171

+ ADD ROW _ Last: 3J32'

— calculated Avg: 1.741s

Рис. 3. Визуализация метрик в Grafana Заключение

Как можно видеть, параметр Avg, полученный из приложения, совпадает с метрикой calculated Avg, которая была рассчитана средствами Grafana. Следует отметить, что среднее

значение, полученное из приложения, и рассчитанное среднее значение практически не отличаются. Из этого следует, что получение метрик из приложения выполняется корректно.

Литература

1. Analysis and Evaluation of Web Application Performance Enhancement Techniques. URL: https://link.springer.com/chapter/10.1007/978-3-319-08245-5_3.

2. Web performance testing: Top 12 free and open source tools to consider. URL: https://techbeacon.com/web-performancetesting-top-12-free-open-source-tools-consider.

3. Server Virtualization and OS Trends. URL: https://community.spiceworks.com/networking/articles/2462-Server-virtualization-andos-trends.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Ботыгин И.А., Каликин К.А. Исследование методов увеличения производительности WEB-приложений // Известия Томского политехнического университета. 2008. Т. 312. № 5. С. 109-114.

Поступила 03.03.2020; принята к публикации 27.03.2020

9

Информация об авторах

Барабанов Владимир Федорович - д-р техн. наук, профессор кафедры автоматизированных и вычислительных систем, Воронежский государственный технический университет (394026, Россия, г. Воронеж, Московский проспект, 14), e-mail: [email protected]

Донских Андрей Константинович - аспирант, Воронежский государственный технический университет (394026, Россия, г. Воронеж, Московский проспект, 14), e-mail: [email protected]

Гребенникова Наталия Ивановна - канд. техн. наук, доцент кафедры автоматизированных и вычислительных систем, Воронежский государственный технический университет (394026, Россия, г. Воронеж, Московский проспект, 14), e-mail: [email protected]

Кенин Сергей Леонидович - аспирант, Воронежский государственный технический университет (394026, Россия, г Воронеж, Московский проспект, 14), e-mail: [email protected]

RECEIVING THE JAVA APPLICATION METRICS IN DOCKER CONTAINERS V.F. Barabanov, A.K. Donskikh, N.I. Grebennikova, S.L. Kenin

Voronezh State Technical University, Voronezh, Russia

Abstract: the objects of research are java-application with support of JMX technology, daemon for collecting metrics collectD; Graphite time series storage software, Grafana data analytics and visualization system. The relevance of developing the solution is determined by the fact that web applications currently need to process huge streams of data. To solve this problem, Docker is used. Working with Docker is somewhat different from working with traditional applications, although in the corporate segment, there is a large layer of classic developments. As a result, the development of a solution that will work with classic solutions in Docker containers is currently relevant. The article describes and features java-applications in Docker containers. A solution is proposed for collecting, storing, processing, analyzing and visualizing web application metrics using JMX, Collectd, Grafana and Graphite. It is shown how these components interact with each other. An example of configuring a java application to work with JMX, adding the FastJMX plugin to collectD, as well as settings for Grafana and Graphite are given. The result of the work described in the article is a system that meets all the requirements for systems for storing and analyzing large amounts of data, and has all the advantages of using Docker. The resulting solution will reduce labor costs, and the use of open source software in the development will further reduce the costs of development and subsequent use

Key words: web application, metric collection, data processing, analytics and visualization software

References

1. "Analysis and evaluation of web application performance enhancement techniques", available at: https://link.springer.com/chapter/10.1007/978-3-319-08245-5_3.

2. "Web performance testing: Top 12 free and open source tools to consider", available at: https://techbeacon.com/web-performancetesting-top-12-free-open-source-tools-consider.

3. "Server virtualization and OS trends", available at: https://community.spiceworks.com/networking/articles/2462-server-virtualization-andos-trends.

4. Botygin I.A., Kalikin K.A. "Study of methods for increasing the productivity of WEB applications", News of Tomsk Polytechnic University (Izvestiya Tomskogo politekhnicheskogo universiteta), 2008, vol. 312, no. 5, pp.109-114

Submitted 03.03.2020; revised 27.03.2020

Information about the authors

Vladimir F. Barabanov, Dr. Sc. (Technical), Professor, Voronezh State Technical University (14 Moskovskiy prospekt, Voronezh 394026, Russia), e-mail: [email protected]

Andrey K. Donskikh, Graduate student, Voronezh State Technical University (14 Moskovskiy prospekt, Voronezh 394026, Russia), e-mail: [email protected]

Nataliya I. Grebennikova, Cand. Sc. (Technical), Associate Professor, Voronezh State Technical University (14 Moskovskiy prospekt, Voronezh 394026, Russia), e-mail: [email protected]

Sergey L. Kenin, Graduate student, Voronezh State Technical University (14 Moskovskiy prospekt, Voronezh 394026, Russia), e-mail: [email protected]

i Надоели баннеры? Вы всегда можете отключить рекламу.