Установка и запуск Zipkin в качестве сервиса

В двух словах, Zipkin позволяет визуализировать трассировки, которые, в свою очередь, являются усовершенствованными логами (имеют идентификатор запроса для отслеживания конкретных логов для конкретного запроса).
В официальной документации описан процесс запуска Zipkin без автозапуска. Данный подход не очень удобен, если мы заходим поднять сервер с Zipkin. Рассмотрим процесс установки необходимых компонентов для работы последнего и его автозапуск.
Подготовка системы
Выполним несколько предварительных действий.
1. Установка пакетов
Нам понадобиться пакет curl для загрузки Zipkin. В зависимости от типа Linux, команды будут отличаться.
a) Для систем на основе DEB (Debian / Ubuntu / Astra Linux):
apt update
apt install curl
б) Для систем на основе RPM (Rocky Linux / CentOS):
yum install curl
2. Настройка брандмауэра
Для обработки сетевых запросов, нам нужно убедиться, что брандмауэр будет разрешать порт 9411, на котором по умолчанию слушает Zipkin.
В зависимости от используемой утилиты управления брандмауэром, наши действия будут немного отличаться:
а) Iptables (как правило, для систем на базе DEB):
iptables -I INPUT -p tcp --dport 9411 -j ACCEPT
Для сохранения правила используем iptables-persistent:
apt install iptables-persistent
netfilter-persistent save
б) Firewalld (как правило, для систем на базе RPM):
firewall-cmd --permanent --add-port=9411/tcp
firewall-cmd --reload
Установка и запуск Zipkin
Приложение Zipkin представляет из себя jar-файл, который может быть запущен с помощью платформы Java. Таким образом наш процесс будет разбит на установку последней и загрузку самого Zipkin.
Установка OpenJDK
В зависимости от дистрибутива Linux наши команды будут немного отличаться.
а) Для систем на основе DEB:
apt install default-jdk
б) Для систем на основе RPM:
yum install java-11-openjdk-devel
OpenJDK установлен.
После смотрим версию java:
java -version
Мы должны увидеть что-то на подобие:
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
...
Загрузка и запуск Zipkin
Для этого выполняем две команды:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
Мы должны увидеть что-то на подобие:
oo
oooo
oooooo
oooooooo
oooooooooo
oooooooooooo
ooooooo ooooooo
oooooo ooooooo
oooooo ooooooo
oooooo o o oooooo
oooooo oo oo oooooo
ooooooo oooo oooo ooooooo
oooooo ooooo ooooo ooooooo
oooooo oooooo oooooo ooooooo
oooooooo oo oo oooooooo
ooooooooooooo oo oo ooooooooooooo
oooooooooooo oooooooooooo
oooooooo oooooooo
oooo oooo
________ ____ _ _____ _ _
|__ /_ _| _ \| |/ /_ _| \ | |
/ / | || |_) | ' / | || \| |
/ /_ | || __/| . \ | || |\ |
|____|___|_| |_|\_\___|_| \_|
:: version 2.24.0 :: commit 025fb71 ::
2022-12-22 11:42:07.180 INFO [/] 6310 --- [oss-http-*:9411] c.l.a.s.Server : Serving HTTP at /0:0:0:0:0:0:0:0%0:9411 - http://127.0.0.1:9411/
Открываем браузер и переходим по адресу http://<адрес сервера>:9411 — должна открыться страница для создания запросов:
Zipkin работает. Прервем его работу комбинацией Ctrl + С и настроим автозапуск.
Настройка systemd
Создаем пользователя, от которого будет работать наш сервис:
useradd -r -c 'Zipkin service' zipkin
Создадим рабочий каталог и перенесем в него ранее скачанный файл jar:
mkdir /opt/zipkin
mv zipkin.jar /opt/zipkin/
Зададим права на данный каталог:
chown -R zipkin:zipkin /opt/zipkin
Создадим файл:
vi /etc/systemd/system/zipkin.service
[Unit]
Description=Zipkin Service
Documentation=https://zipkin.io/
[Service]
User=zipkin
Group=zipkin
Type=simple
WorkingDirectory=/opt/zipkin
ExecStart=/usr/bin/java -jar zipkin.jar
#ExecStart=/bin/java -jar zipkin.jar
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Обратите внимание на опцию ExecStart — ее значение может отличаться в зависимости от дистрибутива Linux. Точный путь к файлу java смотрите командой:
which java
Разрешаем сервис и стартуем его:
systemctl enable zipkin --now
Проверим состояние командой:
systemctl status zipkin