Bug 40122 - Пакет Zabbix Agent 2
Summary: Пакет Zabbix Agent 2
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: zabbix-agent (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 enhancement
Assignee: Alexei Takaseev
QA Contact: qa-sisyphus
URL: https://www.zabbix.com/documentation/...
Keywords:
Depends on:
Blocks:
 
Reported: 2021-05-31 06:23 MSK by Сергей Сысоев
Modified: 2022-11-03 08:28 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Сергей Сысоев 2021-05-31 06:23:17 MSK
Добрый день.

Достаточно давно вышла версия Zabbix 5.0 (год назад).

Вместе с ней вышла новая версия агента Zabbix Agent 2, полностью переписанная на Go с элементами C.
Описание: https://www.zabbix.com/documentation/current/manual/concepts/agent2
Сравнение с первой версией: https://www.zabbix.com/documentation/current/manual/appendix/agent_comparison

Поддерживает плагины, в т.ч. сторонних производителей, как например для PostgreSQL (уже встроены в сам агент2):
https://habr.com/ru/company/postgrespro/blog/558512/

Из исходников собирается без особых проблем. Т.к. написан на Go, особых зависимостей нет.

Хотелось бы иметь готовый пакет Zabbix Agent 2 в P9 или хотя бы в Сизифе (тогда лучше бы чтобы он был собран статически, чтобы вообще без зависимостей и проблем спокойно ставить на P9).

Спасибо.
Comment 1 Andrey Cherepanov 2021-05-31 13:45:07 MSK
https://packages.altlinux.org/en/p9/srpms/zabbix/1:5.0.5-alt2.1.p9

Текущая версия в p9: 5.0.5-alt2.1.p9
Comment 2 Сергей Сысоев 2021-05-31 13:49:10 MSK
(Ответ для Andrey Cherepanov на комментарий #1)
> https://packages.altlinux.org/en/p9/srpms/zabbix/1:5.0.5-alt2.1.p9
> 
> Текущая версия в p9: 5.0.5-alt2.1.p9

В P9 Zabbix Agent, который больше особо не будет развиваться.
А в тикете идёт речь про Zabbix Agent 2 (вторая версия). Которой нет ни в P9, ни в Sisyphus
Comment 3 Andrey Cherepanov 2021-05-31 14:04:40 MSK
Тогда на Sisyphus. С уточнением версии zabbix.
Comment 4 Alexei Takaseev 2021-05-31 14:20:50 MSK
По части отсутствия особых зависимостей при сборке не все так радужно.

Продублирую из переписки:

=======================================
Добрый день!

----- Исходное сообщение -----
> От: "Евгений Большедворский" <jenya@basealt.ru>
> Кому: "taf" <taf@altlinux.org>
> Отправленные: Вторник, 11 Май 2021 г 21:08:32
> Тема: zabbix

> Добрый день
>
> У нас от клиентов приходят просьбы на zabbix_agent2:
>
> https://www.zabbix.com/documentation/current/ru/manual/appendix/agent_comparison
>
> Можно его тоже собирать ?

Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для сборки.
Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не готов.
========================================
Comment 5 Сергей Сысоев 2021-05-31 14:46:46 MSK
(Ответ для Alexei Takaseev на комментарий #4)
> По части отсутствия особых зависимостей при сборке не все так радужно.
> 
> Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для
> сборки.
> Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не
> готов.
> ========================================

Не знаком с процессом сборки в Сизифе (да и вообще в Альте). 

Но при ручной сборке бинарника в P9 версии zabbix agent2 5.4.0 (./configure --enable-agent2 --with-libpcre-include=/usr/include/pcre --enable-static && make) go сам вытягивает все зависимости и сам всё компилирует и линкует без проблем.

Или на сборочнице нет доступа в инет?
Comment 6 Andrey Cherepanov 2021-05-31 14:58:17 MSK
(Ответ для Сергей Сысоев на комментарий #5)
> (Ответ для Alexei Takaseev на комментарий #4)
> > По части отсутствия особых зависимостей при сборке не все так радужно.
> > 
> > Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для
> > сборки.
> > Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не
> > готов.
> > ========================================
> 
> Не знаком с процессом сборки в Сизифе (да и вообще в Альте). 
> 
> Но при ручной сборке бинарника в P9 версии zabbix agent2 5.4.0 (./configure
> --enable-agent2 --with-libpcre-include=/usr/include/pcre --enable-static &&
> make) go сам вытягивает все зависимости и сам всё компилирует и линкует без
> проблем.
> 
> Или на сборочнице нет доступа в инет?

Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы нет во избежание подмены или недоступности ресурсов.
Comment 7 Сергей Сысоев 2021-05-31 15:01:15 MSK
(Ответ для Andrey Cherepanov на комментарий #6)
> Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
> нет во избежание подмены или недоступности ресурсов.


Тогда самый просто вариант - собрать один раз на компе/сервере, где есть доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить все зависимости на сервер сборки.
Comment 8 Andrey Cherepanov 2021-05-31 15:38:08 MSK
(Ответ для Сергей Сысоев на комментарий #7)
> (Ответ для Andrey Cherepanov на комментарий #6)
> > Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
> > нет во избежание подмены или недоступности ресурсов.
> 
> 
> Тогда самый просто вариант - собрать один раз на компе/сервере, где есть
> доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить
> все зависимости на сервер сборки.

Эта технология называется "подготовим помойку забандленного заранее" и используется, если нет других вариантов. Правильнее компоненты собирать в виде пакетов для их выборочного обновления.
Comment 9 Alexey Shabalin 2021-06-01 03:09:04 MSK
Прошу посмотреть 
http://git.altlinux.org/people/shaba/packages/zabbix.git

Я вендоризировал go модули. По хорошему, надо бы апстрим просить вендоризировать, что бы обеспечить сборку без доступа в Интернет. Собирать систему мониторинга, когда из Интернет может что-то подтянуться неизвестное - плохая идея. Этим можно обосновать, что бы они сами следили за каталогом vendor и обновляли его по необходимости.
Для обновления каталога vendor, достаточно:
------------
cd src/go
rm -rf vendor
go mod vendor
git add -f vendor
git commit -m "Update go modules by go mod vendor"
------------

Запатчил секцию install для agent2. Потому что go install не сильно отличается от go build. При go install снова происходит повторная компиляция проекта agent2.
Плюс еще что-то поправил.
Могу послать на сборку в таком виде, но я не тестировал.
Или заберите мои коммиты выборочно, как считаете нужным.
Comment 10 Alexey Shabalin 2021-06-01 03:13:23 MSK
(Ответ для Andrey Cherepanov на комментарий #8)
> (Ответ для Сергей Сысоев на комментарий #7)
> > (Ответ для Andrey Cherepanov на комментарий #6)
> > > Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
> > > нет во избежание подмены или недоступности ресурсов.
> > 
> > 
> > Тогда самый просто вариант - собрать один раз на компе/сервере, где есть
> > доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить
> > все зависимости на сервер сборки.
> 
> Эта технология называется "подготовим помойку забандленного заранее" и
> используется, если нет других вариантов. Правильнее компоненты собирать в
> виде пакетов для их выборочного обновления.

Нет, для golang правильный путь - вендоризировать, используя команду go mod vendor. Не надо захламлять сизиф кучей ненужных пакетов.
Comment 11 Сергей Сысоев 2021-06-01 08:01:47 MSK
(Ответ для Andrey Cherepanov на комментарий #6)
> (Ответ для Сергей Сысоев на комментарий #5)
> Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
> нет во избежание подмены или недоступности ресурсов.

Подмена невозможна, потому что в /src/go/go.sum прописаны конкретные версии модулей с чексуммами.

(Ответ для Alexey Shabalin на комментарий #9)
> Прошу посмотреть 
> http://git.altlinux.org/people/shaba/packages/zabbix.git
> 
> Я вендоризировал go модули. По хорошему, надо бы апстрим просить
> вендоризировать, что бы обеспечить сборку без доступа в Интернет. Собирать
> систему мониторинга, когда из Интернет может что-то подтянуться неизвестное
> - плохая идея. Этим можно обосновать, что бы они сами следили за каталогом
> vendor и обновляли его по необходимости.

Спасибо за проделаннную работу. Сделал тикет про вендоринг модулей в джире Zabbix-а, посмотрим что ответят.

1. А по тому, что Вы сделали - когда можно будет увидеть готовый rpm?
2. Есть ли простые способы по готовым spec-файлам собирать пакеты? Хотелось бы собирать Agent2 версии 5.4.
Comment 12 Alexei Takaseev 2021-06-01 08:43:47 MSK
(Ответ для Alexey Shabalin на комментарий #9)
> Прошу посмотреть 
> http://git.altlinux.org/people/shaba/packages/zabbix.git
> 
> Я вендоризировал go модули. По хорошему, надо бы апстрим просить
> вендоризировать, что бы обеспечить сборку без доступа в Интернет. Собирать
> систему мониторинга, когда из Интернет может что-то подтянуться неизвестное
> - плохая идея. Этим можно обосновать, что бы они сами следили за каталогом
> vendor и обновляли его по необходимости.
> Для обновления каталога vendor, достаточно:
> ------------
> cd src/go
> rm -rf vendor
> go mod vendor
> git add -f vendor
> git commit -m "Update go modules by go mod vendor"
> ------------
> 
> Запатчил секцию install для agent2. Потому что go install не сильно
> отличается от go build. При go install снова происходит повторная компиляция
> проекта agent2.
> Плюс еще что-то поправил.
> Могу послать на сборку в таком виде, но я не тестировал.
> Или заберите мои коммиты выборочно, как считаете нужным.

Спасибо! Отправил на сборку.
Comment 13 Michael Shigorin 2021-06-03 10:22:43 MSK
На всякий обращаю внимание на то, что на эльбрусах golang пока что есть только
в ОС Эльбрус (с втаскиванием в альт есть вопросы) -- пока пришлось собирать
с --disable agent2 (спасибо, что сразу ручку сделали).
Comment 14 Сергей Сысоев 2022-11-03 07:00:57 MSK
(Ответ для Alexey Shabalin на комментарий #9)
> Я вендоризировал go модули. По хорошему, надо бы апстрим просить
> вендоризировать, что бы обеспечить сборку без доступа в Интернет. Собирать
> систему мониторинга, когда из Интернет может что-то подтянуться неизвестное
> - плохая идея. Этим можно обосновать, что бы они сами следили за каталогом
> vendor и обновляли его по необходимости.
https://support.zabbix.com/browse/ZBX-19496

> Starting with the upcoming release, Zabbix source tarball will contain 
> src/go/vendor directory, which should force golang to not download dependency 
> modules automatically, allowing for an offline build.

Новые релизы 6.0.10, 6.2.4 уже включают в себя вендоризированные пакеты go для сборки агента версии 2 оффлайн.
Как мне кажется, потребуется внести какие-либо изменения в сборку.
Comment 15 Alexei Takaseev 2022-11-03 08:28:27 MSK
(Ответ для Сергей Сысоев на комментарий #14)

> https://support.zabbix.com/browse/ZBX-19496
> 
> > Starting with the upcoming release, Zabbix source tarball will contain 
> > src/go/vendor directory, which should force golang to not download dependency 
> > modules automatically, allowing for an offline build.
> 
> Новые релизы 6.0.10, 6.2.4 уже включают в себя вендоризированные пакеты go
> для сборки агента версии 2 оффлайн.
> Как мне кажется, потребуется внести какие-либо изменения в сборку.

По ссылке речь идем именно о выложенном на сайте авторов тарболе. У нас сборка из git'а, и предложенный в #9 рецепт остается актуальным.