Добрый день. Достаточно давно вышла версия 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). Спасибо.
https://packages.altlinux.org/en/p9/srpms/zabbix/1:5.0.5-alt2.1.p9 Текущая версия в p9: 5.0.5-alt2.1.p9
(Ответ для 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
Тогда на Sisyphus. С уточнением версии zabbix.
По части отсутствия особых зависимостей при сборке не все так радужно. Продублирую из переписки: ======================================= Добрый день! ----- Исходное сообщение ----- > От: "Евгений Большедворский" <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-зависимости я не готов. ========================================
(Ответ для 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 сам вытягивает все зависимости и сам всё компилирует и линкует без проблем. Или на сборочнице нет доступа в инет?
(Ответ для Сергей Сысоев на комментарий #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 сам вытягивает все зависимости и сам всё компилирует и линкует без > проблем. > > Или на сборочнице нет доступа в инет? Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы нет во избежание подмены или недоступности ресурсов.
(Ответ для Andrey Cherepanov на комментарий #6) > Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы > нет во избежание подмены или недоступности ресурсов. Тогда самый просто вариант - собрать один раз на компе/сервере, где есть доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить все зависимости на сервер сборки.
(Ответ для Сергей Сысоев на комментарий #7) > (Ответ для Andrey Cherepanov на комментарий #6) > > Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы > > нет во избежание подмены или недоступности ресурсов. > > > Тогда самый просто вариант - собрать один раз на компе/сервере, где есть > доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить > все зависимости на сервер сборки. Эта технология называется "подготовим помойку забандленного заранее" и используется, если нет других вариантов. Правильнее компоненты собирать в виде пакетов для их выборочного обновления.
Прошу посмотреть 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. Плюс еще что-то поправил. Могу послать на сборку в таком виде, но я не тестировал. Или заберите мои коммиты выборочно, как считаете нужным.
(Ответ для Andrey Cherepanov на комментарий #8) > (Ответ для Сергей Сысоев на комментарий #7) > > (Ответ для Andrey Cherepanov на комментарий #6) > > > Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы > > > нет во избежание подмены или недоступности ресурсов. > > > > > > Тогда самый просто вариант - собрать один раз на компе/сервере, где есть > > доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить > > все зависимости на сервер сборки. > > Эта технология называется "подготовим помойку забандленного заранее" и > используется, если нет других вариантов. Правильнее компоненты собирать в > виде пакетов для их выборочного обновления. Нет, для golang правильный путь - вендоризировать, используя команду go mod vendor. Не надо захламлять сизиф кучей ненужных пакетов.
(Ответ для 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.
(Ответ для 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. > Плюс еще что-то поправил. > Могу послать на сборку в таком виде, но я не тестировал. > Или заберите мои коммиты выборочно, как считаете нужным. Спасибо! Отправил на сборку.
На всякий обращаю внимание на то, что на эльбрусах golang пока что есть только в ОС Эльбрус (с втаскиванием в альт есть вопросы) -- пока пришлось собирать с --disable agent2 (спасибо, что сразу ручку сделали).
(Ответ для 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 оффлайн. Как мне кажется, потребуется внести какие-либо изменения в сборку.
(Ответ для Сергей Сысоев на комментарий #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 рецепт остается актуальным.