Сборка своего RPM-пакета Prometheus Server с шаблоном для firewalld и автозапуском

Thank you for reading this post, don't forget to subscribe!

Наш собран­ный пакет позволит:

  • Быст­ро и без лиш­них уси­лий уста­но­вить бинар­ник Prometheus на систе­му CentOS.
  • Запус­кать систе­му мони­то­рин­га в каче­стве сервиса.
  • Раз­ре­шать пра­ви­ла бранд­мау­э­ра при помо­щи сервиса.

Предварительная подготовка

Что­бы не захла­мить систе­му, сто­ит выпол­нять сбор­ку в тесто­вом окру­же­нии или кон­тей­не­ре Docker.

Сто­ит иметь вви­ду, что про­цесс сбор­ки, если допу­стить ошиб­ку, может при­ве­сти к выпол­не­нию потен­ци­аль­но опас­ных команд. Сто­ит выпол­нять сбор­ку от поль­зо­ва­те­ля с обыч­ны­ми правами.

Так или ина­че, нам нуж­ны утилиты:

yum install rpmdevtools rpmlint

Перей­дем в ката­лог, в кото­ром мы будем выпол­нять сбор­ку, например:

cd /opt

Созда­дим струк­ту­ру ката­ло­гов для сборки:

rpmdev-setuptree

Наши систе­ма готова.

Сборка Prometheus

Сбор­ку выпол­ним в несколь­ко неболь­ших шагов.

1. Создаем файл SPEC:

vi rpmbuild/SPECS/prometheus.spec

Крат­кое опи­са­ние: в зави­си­мо­сти от пере­дан­ной сбор­щи­ку вер­сии, будет выбра­ны нуж­ные нам исход­ни­ки, в про­тив­ном слу­чае будет вер­сия 2.31.1 (самая све­жая на момент обнов­ле­ния инструк­ции). При сбор­ке будут извле­че­ны бинар­ни­ки и кон­фи­гу­ра­ци­он­ные фай­лы, так­же будут раз­ло­же­ны по местам шаб­лон для бранд­мау­э­ра и юни­та systemd.

2. Подготовка исходников

В нашем spec-фай­ле мы исполь­зу­ем 3 источ­ни­ка с исход­ни­ка­ми. Нам нуж­но их под­го­то­вить. Для нача­ла, ска­ча­ем архив Prometheus:

spectool -g -R rpmbuild/SPECS/prometheus.spec

Созда­ем каталоги:

mkdir rpmbuild/SOURCES/{firewalld,systemd}

Созда­ем файл с шаб­ло­ном для брандмауэра:

vi rpmbuild/SOURCES/firewalld/prometheus-server.xml

* в дан­ном при­ме­ре будет создан шаб­лон для откры­тия пор­та 9090, на кото­ром, по умол­ча­нию, рабо­та­ет prometheus.

Созда­ем файл с юни­том systemd:

vi rpmbuild/SOURCES/systemd/prometheus.service

Мож­но пере­хо­дить к самой сборке.

3. Сборка пакета

Выпол­ня­ем команду:

rpmbuild -bb rpmbuild/SPECS/prometheus.spec

Мы долж­ны уви­деть про­цесс сбор­ки, после чего в ката­ло­ге rpmbuild/RPMS/x86_64 мы долж­ны уви­деть собран­ный пакет, напри­мер, prometheus-2.31.1-20211125.el7.x86_64.rpm.

Установка

У нас есть несколь­ко спо­со­бов уста­но­вить собран­ный пакет:

  1. Ско­пи­ро­вать его в соб­ствен­ный репо­зи­то­рий, что­бы исполь­зо­вать коман­ду yum install prometheus.
  2. Ско­пи­ро­вать пакет на целе­вой ком­пью­тер и исполь­зо­вать коман­ду yum localinstall prometheus-2.31.1-20211125.el7.x86_64.rpm.

После уста­нов­ки запус­ка­ем сервис:

systemctl enable prometheus --now

Раз­ре­ша­ем пор­ты в брандмауэре:

firewall-cmd --permanent --add-service=prometheus-server

firewall-cmd --reload

Для теста рабо­ты служ­бы выполняем:

systemctl status prometheus

Для про­вер­ки запус­ка на пор­ту 9090 (порт рабо­ты prometheus по умолчанию):

ss -tunlp | grep :9090

Для рабо­ты веб-интер­фей­са откры­ва­ем бра­у­зер и пере­хо­дим по ссыл­ку http://<IP-адрес сервера>:9090