Установка и запуск 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

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

EnglishRussianUkrainian