Инструкция по установке мониторинга по метрикам на Linux-серверах Camel и ActiveMQArtemis.

К инструкции прилагаются конфигурационные файлы для приложения Prometheus, конфигурационные файлы для сервисов сбора метрик Telegraf, systemd-unit приложения Loki, архив агента для сбора логов Fluent-bit, systemd-unit агента Fluent-bit и файлы dashboard’ов для приложения мониторинга Grafana. В инструкции будет прописан ряд действий для каждого из прикрепленных файлов. Список файлов тут:

  • prometheus.service – systemd-unit нужный для запуска приложения Prometheus

  • prometheus.yml – конфиг, в котором прописывают target’ы (серверы, с которых будут собираться метрики)

  • telegraf.conf – конфиг для сервиса сбора метрик Telegraf, в котором прописываются плагины, с которых будут собираться метрики, и плагины, для которых будут конвертироваться собранные метрики

  • loki.service - systemd-unit нужный для запуска приложения Loki

  • loki-local-config.yaml - конфигурационный файл приложения Loki

  • fluent-bit.zip - архив с дистрибутивом и конфигурационными файлами агента для сбора логов Fluent-bit

  • fluentbit.service - systemd-unit нужный для запуска агента сбора логов Fluent-bit

  • 5 готовых dashboard’а для приложения мониторинга Grafana в формате json-файлов

Для подключения к серверам и проверки работы установленных по инструкции приложений потребуется Putty и любой браузер с последней версией обновлений. Для загрузки файлов на серверы потребуется приложение WinSCP.

Шаг 1. Установка Prometheus на сервер, выделенный для мониторинга.

  • Для того чтобы установить приложения Prometheus, нам потребуется команда «wget». Если такая команда не установлена на сервере, то устанавливаем её с помощью команды «yum»:

sudo yum install wget

После установки команды скачиваем архив с Prometheus следующей командой:

wget https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-amd64.tar.gz
  • Распаковываем архив командой «tar xvfz»:

sudo tar xvfz prometheus-2.11.1.linux-amd64.tar.gz
  • После распаковки удаляем архив командой «rm –rf»:

sudo rm –rf prometheus-2.11.1.linux-amd64.tar.gz
  • В папку «system» (путь: /etc/systemd/system) добавляем файл сервиса «prometheus.service» с помощью программы WinSCP.

  • Перезапускаем службу отвечающую за сервисы:

sudo systemctl daemon-reload
  • Запускаем добавленный нами сервис командой:

sudo systemctl start prometheus
  • Проверяем, что сервис запустился:

sudo systemctl status prometheus
  • Если статус приложения указан «active», то включаем сервис при каждом старте сервера:

sudo systemctl enable prometheus
  • После запуска сервиса необходимо создать пользователя Prometheus и назначить его владельцем папки prometheus (путь: /opt/prometheus) командами:

sudo useradd -m prometheus
cd /opt/
sudo chown -R prometheus. prometheus
  • В приложении Putty (по которому вы подключены к серверу) можно добавить туннель на адрес (ПКМ по окну Putty – Change settings – в открывшемся окне находим раздел Connection – раскрываем раздел SSH и находим там раздел Tunnels):

Source port – 9090
Destination – localhost:9090.

После внесения данных нажимаем на кнопку «Add» и «Apply».

При переходе на страницу localhost:9090 (порт 9090, на котором открывается Prometheus, формируется по умолчанию) в браузере, у вас должна открыться страница с приложением.

Шаг 2. Установка Grafana на сервер, выделенный для мониторинга.

  • Устанавливаем приложение командой «yum»:

sudo yum install https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
  • Или командами:

sudo wget https://dl.grafana.com/oss/release/grafana-6.2.5-1.x86_64.rpm
sudo yum localinstall grafana-6.2.5-1.x86_64.rpm
  • Добавляем сервис командой:

sudo service grafana-server start
  • Перезапускаем службу, отвечающую за сервисы:

sudo systemctl daemon-reload
  • Запускаем сервис:

sudo systemctl start grafana-server
  • Проверяем, что сервис запустился корректно:

sudo systemctl status grafana-server
  • Если статус приложения указан «active», то включаем сервис при каждом старте сервера:

sudo systemctl enable grafana-server
  • В приложении Putty можно добавить туннель на адрес (ПКМ по окну PuttyChange settings – в открывшемся окне находим раздел Connection – раскрываем раздел SSH и находим там раздел Tunnels):

Source port – 3000
Destination – localhost:3000.

После внесения данных нажимаем на кнопку «Add» и «Apply».

При переходе на страницу localhost:3000 (порт 3000, на котором открывается Grafana, формируется по умолчанию) в браузере, у вас должна открыться страница с приложением.

  • Для того чтобы войти в интерфейс мониторинга, нужно авторизоваться под пользователем admin/admin.

  • После авторизации добавляем «Data Source» установленный нами ранее – Prometheus.

  • Добавление dashboard’ов для мониторинга за серверами будет описано в разделе «Шаг 7. Установка dashboard’ов в приложении мониторинга Grafana».

Шаг 3. Установка Telegraf на серверах с ActiveMQ и Camel.

Сервис Telegraf нужен для того, чтобы на серверах собирались и отправлялись в Prometheus метрики по приёму/отправке сообщений и очередям сообщений в брокерах ActiveMQ и метрики по работе контекстов в Camel.

  • Скачиваем rpm-файл с сервисом Telegraf с помощью команды «wget»:

sudo wget https://dl.influxdata.com/telegraf/releases/telegraf-1.11.2-1.x86_64.rpm
  • Устанавливаем сервис командой:

sudo yum localinstall telegraf-1.11.2-1.x86_64.rpm
  • Перезапускаем службу, отвечающую за сервисы:

sudo systemctl daemon-reload
  • Запускаем сервис командой:

sudo systemctl start telegraf
  • Проверяем, что сервис запустился корректно:

sudo systemctl status telegraf
  • Если статус приложения указан «active», то включаем сервис при каждом старте сервера:

sudo systemctl enable telegraf
  • Далее добавляем соответствующий для приложений конфигурационный файл по пути /etc/telegraf/, удаляем там файл _«telegraf.conf» и загружаем наш конфиг: camel_telegraf.conf (для Camel) и camel_telegraf.conf (для ActiveMQ).

  • После добавления конфигурационного файла переименовываем его в telegraf.conf»

  • Перезапускаем сервис Telegraf командой:

sudo systemctl restart telegraf
  • Проверяем, что сервис запустился корректно (статус должен быть «active»)

sudo systemctl status telegraf

Шаг 4. Установка сервиса Node_Exporter.

Сервис Node_Exporter нужен для того чтобы на сервере собирались и отправлялись в Prometheus метрики о состоянии сервера (количество ядер процессора, размер оперативной памяти на сервере, загрузка ЦПУ, продолжительность работы сервера и т.д.).

  • Добавляем на сервере репозиторий с сервисом node_exporter командой:

 sudo curl -Lo /etc/yum.repos.d/_copr_ibotty-prometheus-exporters.repo https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/repo/epel-7/ibotty-prometheus-exporters-epel-7.repo
  • Устанавливаем сервис из репозитория командой:

sudo yum install node_exporter
  • Перезапускаем службу, отвечающую за сервисы:

sudo systemctl daemon-reload
  • Запускаем сервис:

sudo systemctl start node_exporter
  • Проверяем, что сервис запустился корректно:

systemctl status node_exporter
  • Если статус приложения указан «active», то включаем сервис при каждом старте сервера:

sudo systemctl enable node_exporter
  • Теперь метрики состояния сервера передаются по ip-адресу сервера и порт 9100.

Шаг 5. Настройка target’ов в конфиге Prometheus’а

  • На сервере с установленным Prometheus переходим в каталог /opt/prometheus/ и заменяем там файл «prometheus.yml» нашим конфигом с таким же названием.

  • Открываем конфиг в режиме редактирования, где видим все target’ы с метриками, на которые необходимо настроить Prometheus. Каждый блок (6 строчек) с target’ом выглядит, например, так:

- job_name: 'java-74'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s

    static_configs:
      - targets: ['192.168.122.74:7422']

Где «job_name» - это название target’а

«target» - его адрес состоящий из ip (например, 192.168.122.74) и порта (например, 7422).

Количество target’ов в конфиге неограниченно. В шаблоне конфига указано всего 14 target’ов (5 target’ов на сбор метрик с Java, 6 target’ов на сбор метрик о состоянии сервера, 2 target’а для сбора метрик с брокеров ActiveMQ и 1 target для сбора метрик с самого Prometheus’а, который прописан в конфиге по умолчанию и может быть удален).

  • Заполняем нужные нам target’ы в конфиге и сохраняем его. !Важно! Будьте внимательны при заполнении конфига. Делайте отступы, пробелы и пр. ровно так, как это сделано в шаблоне.

  • Перезапускаем сервис

sudo systemctl restart prometheus
  • Проверяем, что сервис запустился (должен быть «active»)

 sudo systemctl status prometheus
  • В приложении Putty (по которому вы подключены к серверу) можно добавить туннель на адрес (ПКМ по окну PuttyChange settings – в открывшемся окне находим раздел Connection – раскрываем раздел SSH и находим там раздел Tunnels):

Source port – 9090

Destination – localhost:9090.

После внесения данных нажимаем на кнопку «Add» и «Apply».

При переходе на страницу localhost:9090 в браузере, у вас должна открыться страница с приложением.

  • В верхней части экрана находим вкладку «Status». Нажимаем на неё и выбираем пункт «Targets» в выпавшем списке.

  • На открывшейся странице все target’ы должны быть в статусе «Up». Если у какого-либо target’а стоит статус «Down», то проверьте открыт ли порт на сервере, который прописан в этом target’е и правильно ли вы заполнили конфиги на этом target’е и в prometheus.yml.

Шаг 6. Установка и настройка Loki и агента сбора логов Fluent-bit.

Шаг 6.1. Установка и настройка Loki на сервере мониторинга

  • На сервере мониторинга переходим в каталог /opt и создаем там папку loki:

 sudo mkdir loki
  • В созданную папку скачиваем Loki:

 sudo wget https://github.com/grafana/loki/releases/download/v2.2.1/loki-linux-amd64.zip
  • Распаковываем архив:

 sudo tar -xvf loki-linux-amd64.zip
  • Назначаем права на каталог с Loki:

sudo chmod 755 /opt/loki/loki-linux-amd64
  • Добавляем в каталог /opt/loki конфигурационный файл loki-local-config.yaml

  • В каталоге /etc/systemd/system добавляем файл сервиса loki.service

  • Перезапускаем службу юнитов:

 sudo systemctl daemon-reload
  • Включаем на автозапуск сервис Loki:

 sudo systemctl enable loki
  • Запускаем сервис Loki:

 sudo systemctl start loki
  • Проверяем его статус:

 systemctl status loki
  • Далее необходимо зарегистрировать Loki в Datasources в Grafana с адресом http://localhost:3100

Шаг 6.2. Установка и настройка Fluent-bit на серверах Camel и ActiveMQ

На серверах Camel и ActiveMQ, где необходимо собирать логи, устанавливаем легковесный агент для сбора логов Fluent-bit

  • В каталогах /opt на серверах Camel и ActiveMQ создаем папку fluent_bit:

sudo mkdir fluent_bit
  • В созданную папку добавляем архив fluent-bit.zip и распаковываем его:

sudo unzip fluent-bit.zip
  • Делаем файл fluent-bit исполняемым:

sudo chmod 777 fluent-bit
  • Открываем на редактирование конфигурационный файл fluentBit.conf:

sudo vim fluentBit.conf
  • Меняем в разделе [INPUT] пункт Path на путь до логов приложения:

Для _Camel_ это - /opt/karaf/data/log/karaf.log
Для _ActiveMQ_ это - /opt/brokers/broker1/log/artemis.log
  • Меняем в разделе [INPUT] пункт Parser на название приложения:

Для _Camel_ это - karaf
Для _ActiveMQ_ это - activemq
  • Меняем в разделе [OUTPUT] пункт lables job на название службы, который будет называться этот агент сбора логов:

Для _Camel_ это - karaf-1 (число после "-" ставится в зависимости от порядкового номера узла)
Для _ActiveMQ_ это - amq-1 (число после "-" ставится в зависимости от порядкового номера узла)
  • В каталоге /etc/systemd/system добавляем файл сервиса fluentbit.service

  • Перезапускаем службу юнитов:

 sudo systemctl daemon-reload
  • Включаем на автозапуск сервис Fluent-bit:

 sudo systemctl enable fluentbit
  • Запускаем сервис Fluent-bit:

 sudo systemctl start fluentbit
  • Проверяем его статус:

 systemctl status fluentbit

Шаг 7. Установка dashboard’ов в приложении мониторинга Grafana.

  • Открываем страницу с приложением Grafana

  • В левой части экрана находим панель быстрого доступа и наводим курсором на пиктограмму «+». Выбираем пункт «Import»

  • На открывшейся странице нажимаем на кнопку «Upload.json File» и выбираем json-файл из папки «Dashboards»

  • На открывшейся странице вводим нужные нам данные (имя, id таблицы и пр.) и нажимаем на кнопку «Import». Так необходимо проделать со всеми таблицами, которые приложены к этой инструкции

  • При открытии dashboard’а вам должны отобразиться таблицы с графиками о состоянии сервера, java и т.д. Каждый dashboard отвечает за определенные метрики, а именно:

Camel - dashboard с графиками, отображающими состояние пакетов и их прохождение (кол-во)

ActiveMQ - dashboard с графиками, отображающими состояние сообщений принятых/отправленных в брокере

Java - dashboard с графиками, отображающими состояние виртуальной машины, приложения которой используют Java

Node_Exporter_Full - dashboard с графиками, отображающими состояние виртуальной машины (CPU, RAM, Memory и т.д.)

Uniform_Service - dashboard с графиками, отображающими количество сообщений в логах Camel (send, get и acknowledge)

  • В случае, если какой-нибудь из графиков не отображает данные, необходимо открыть его, нажав на название графика, и выбрать пункт «Edit» в выпавшем списке. На открывшейся странице в поле с метрикой вы можете посмотреть правильно ли она введена и поменять её. Чтоб проверить существует (доступна) ли та или иная метрика, необходимо открыть приложение Prometheus. Перейти на вкладку «Graf». В поле «Expression» ввести метрику и нажать на кнопку «Execute». Полный перечень метрик можно посмотреть в поле «- insert metric at cursor -».