Инструкция по установке мониторинга по метрикам на 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, формируется по умолчанию) в браузере, у вас должна открыться страница с приложением.
-
Добавление серверов, с которых будет осуществляться сбор метрик, в конфиг prometheus.yml будет описано в разделе См. «Шаг 5. Настройка target’ов в конфиге 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 можно добавить туннель на адрес (ПКМ по окну Putty – Change 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
-
Настройка target’ов в Prometheus будет описана в разделе «Настройка target’ов в конфиге _Prometheus’а».
Шаг 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 (по которому вы подключены к серверу) можно добавить туннель на адрес (ПКМ по окну Putty – Change 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 -».