Данные JMX в эластичный стек (ELK)

Данные JMX в эластичный стек (ELK)

1. обзор

В этом кратком руководстве мы рассмотрим, как отправлять данные JMX с нашего сервера Tomcat в Elastic Stack (ранее известный как ELK).

Мы обсудим, как настроить Logstash для чтения данных из JMX и отправки их в Elasticsearch.

2. Установите эластичный стек

Сначала нам нужно установить эластичный стек (Elasticsearch -Logstash -Kibana)

Затем, чтобы убедиться, что все подключено и работает правильно, мы отправим данные JMX в Logstash и визуализируем их в Kibana.

2.1. Тестовый Logstash

Сначала мы перейдем в каталог установки Logstash, который зависит от операционной системы (в нашем случае Ubuntu):

cd /opt/logstash

Мы можем установить простую конфигурацию Logstash из командной строки:

bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost:9200"] } }'

Затем мы можем просто ввести некоторые образцы данных в консоль и использовать команду CTRL-D, чтобы закрыть конвейер, когда мы закончим.

2.2. Проверить Elasticsearch

После добавления примера данных в Elasticsearch должен быть доступен индекс Logstash, который мы можем проверить следующим образом:

curl -X GET 'http://localhost:9200/_cat/indices'

Пример вывода:

yellow open logstash-2017.11.10 5 1 3531 0 506.3kb 506.3kb
yellow open .kibana             1 1    3 0   9.5kb   9.5kb
yellow open logstash-2017.11.11 5 1 8671 0   1.4mb   1.4mb

2.3. Тест Кибана

Kibana по умолчанию работает на порту 5601 - мы можем получить доступ к домашней странице по адресу:

http://localhost:5601/app/kibana

Мы должны иметь возможность создать новый индекс с шаблоном «logstash-*» - и увидеть там наши образцы данных.

3. Настроить Tomcat

Затем нам нужно включить JMX, добавив вCATALINA_OPTS следующее:

-Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=9000
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false

Обратите внимание, что:

  • Вы можете настроитьCATALINA_OPTS, изменивsetenv.sh

  • Для пользователей Ubuntusetenv.sh можно найти в «/ usr / share / tomcat8 / bin»

4. Подключите JMX и Logstash

Теперь давайте подключим наши метрики JMX к Logstash - для этого нам потребуется установить там подключаемый модуль ввода JMX (подробнее об этом позже).

4.1. Настроить метрики JMX

Во-первых, нам нужно настроить метрики JMX, которые мы хотим сохранить; мы предоставим конфигурацию в формате JSON.

Вот нашjmx_config.json:

{
  "host" : "localhost",
  "port" : 9000,
  "alias" : "reddit.jmx.elasticsearch",
  "queries" : [
  {
    "object_name" : "java.lang:type=Memory",
    "object_alias" : "Memory"
  }, {
    "object_name" : "java.lang:type=Threading",
    "object_alias" : "Threading"
  }, {
    "object_name" : "java.lang:type=Runtime",
    "attributes" : [ "Uptime", "StartTime" ],
    "object_alias" : "Runtime"
  }]
}

Обратите внимание, что:

  • Мы использовали тот же порт для JMX изCATALINA_OPTS

  • Мы можем предоставить столько файлов конфигурации, сколько захотим, но нам нужно, чтобы они находились в одном каталоге (в нашем случае мы сохранилиjmx_config.json в «/ monitor / jmx /»)

4.2. Плагин ввода JMX

Затем давайте установим подключаемый модуль ввода JMX, выполнив следующую команду в каталоге установки Logstash:

bin/logstash-plugin install logstash-input-jmx

Затем нам нужно создать файл конфигурации Logstash (jmx.conf), где входными данными являются метрики JMX, а выходными данными направляются в Elasticsearch:

input {
  jmx {
    path => "/monitor/jmx"
    polling_frequency => 60
    type => "jmx"
    nb_thread => 3
  }
}

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

Наконец, нам нужно запустить Logstash и указать наш файл конфигурации:

bin/logstash -f jmx.conf

Обратите внимание, что наш файл конфигурации Logstashjmx.conf сохраняется в домашнем каталоге Logstash (в нашем случае/opt/logstash)

5. Визуализировать показатели JMX

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

Сначала мы создадим новый поиск, чтобы получить показатели, связанные с использованием памяти кучи:

  • Нажмите на иконку «Новый поиск» в строке поиска.

  • Введите следующий запрос

    metric_path:reddit.jmx.elasticsearch.Memory.HeapMemoryUsage.used
  • нажмите Ввод

  • Обязательно добавьте поля «metric_path» и «metric_value_number» на боковой панели.

  • Нажмите на значок «Сохранить поиск» в строке поиска.

  • Назовите поиск "использованная память"

Если какие-либо поля на боковой панели помечены как неиндексированные, перейдите на вкладку «Настройки» и обновите список полей в индексе «logstash-*».

5.2. Создать линейную диаграмму

Затем мы создадим простую линейную диаграмму для отслеживания использования памяти кучи с течением времени:

  • Перейти на вкладку «Визуализация»

  • Выберите «Линейный график»

  • Выберите «Из сохраненного поиска»

  • Выберите поиск «использованной памяти», который мы создали ранее

Для оси Y обязательно выберите:

  • Агрегация: средняя

  • Поле:metric_value_number

Для оси X выберите «Гистограмма даты» - затем сохраните визуализацию.

5.3. Использовать поле сценария

Поскольку использование памяти выражается в байтах, это не очень удобно для чтения. Мы можем преобразовать тип и значение метрики, добавив поле сценария в Kibana:

  • В «Настройках» перейдите к индексам и выберите индекс «logstash-*»

  • Перейдите на вкладку «Сценарии» и нажмите «Добавить поле с сценариями»

  • Имя:metric_value_formatted

  • Формат: байты

  • Для скрипта мы просто будем использовать значение «metric_value_number»:

    doc['metric_value_number'].value

Теперь вы можете изменить свой поиск и визуализацию, чтобы использовать поле «metric_value_formatted» вместо «metric_value_number» - и данные будут отображаться правильно.

Вот как выглядит эта очень простая панель инструментов:

image

6. Заключение

И мы сделали. Как видите, настройка не представляет особой сложности, а отображение данных JMX в Kibana позволяет нам выполнять много интересной работы по визуализации для создания фантастической панели мониторинга производственного процесса.

Related