<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>40122</bug_id>
          
          <creation_ts>2021-05-31 06:23:17 +0300</creation_ts>
          <short_desc>Пакет Zabbix Agent 2</short_desc>
          <delta_ts>2022-11-03 08:28:27 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>zabbix-agent</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://www.zabbix.com/documentation/current/manual/concepts/agent2</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Сергей Сысоев">sysoevsa</reporter>
          <assigned_to name="Alexei Takaseev">taf</assigned_to>
          <cc>cas</cc>
    
    <cc>mike</cc>
    
    <cc>shaba</cc>
    
    <cc>sysoevsa</cc>
    
    <cc>taf</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>198777</commentid>
    <comment_count>0</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2021-05-31 06:23:17 +0300</bug_when>
    <thetext>Добрый день.

Достаточно давно вышла версия 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).

Спасибо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198793</commentid>
    <comment_count>1</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2021-05-31 13:45:07 +0300</bug_when>
    <thetext>https://packages.altlinux.org/en/p9/srpms/zabbix/1:5.0.5-alt2.1.p9

Текущая версия в p9: 5.0.5-alt2.1.p9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198794</commentid>
    <comment_count>2</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2021-05-31 13:49:10 +0300</bug_when>
    <thetext>(Ответ для Andrey Cherepanov на комментарий #1)
&gt; https://packages.altlinux.org/en/p9/srpms/zabbix/1:5.0.5-alt2.1.p9
&gt; 
&gt; Текущая версия в p9: 5.0.5-alt2.1.p9

В P9 Zabbix Agent, который больше особо не будет развиваться.
А в тикете идёт речь про Zabbix Agent 2 (вторая версия). Которой нет ни в P9, ни в Sisyphus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198795</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2021-05-31 14:04:40 +0300</bug_when>
    <thetext>Тогда на Sisyphus. С уточнением версии zabbix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198796</commentid>
    <comment_count>4</comment_count>
    <who name="Alexei Takaseev">taf</who>
    <bug_when>2021-05-31 14:20:50 +0300</bug_when>
    <thetext>По части отсутствия особых зависимостей при сборке не все так радужно.

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

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

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

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

Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для сборки.
Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не готов.
========================================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198798</commentid>
    <comment_count>5</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2021-05-31 14:46:46 +0300</bug_when>
    <thetext>(Ответ для Alexei Takaseev на комментарий #4)
&gt; По части отсутствия особых зависимостей при сборке не все так радужно.
&gt; 
&gt; Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для
&gt; сборки.
&gt; Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не
&gt; готов.
&gt; ========================================

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

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

Или на сборочнице нет доступа в инет?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198801</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2021-05-31 14:58:17 +0300</bug_when>
    <thetext>(Ответ для Сергей Сысоев на комментарий #5)
&gt; (Ответ для Alexei Takaseev на комментарий #4)
&gt; &gt; По части отсутствия особых зависимостей при сборке не все так радужно.
&gt; &gt; 
&gt; &gt; Попробовал собрать, но в Сизифе для этого не хватает go-компонентов для
&gt; &gt; сборки.
&gt; &gt; Сейчас все сломалось на поиске gomemcached. Собирать все go-зависимости я не
&gt; &gt; готов.
&gt; &gt; ========================================
&gt; 
&gt; Не знаком с процессом сборки в Сизифе (да и вообще в Альте). 
&gt; 
&gt; Но при ручной сборке бинарника в P9 версии zabbix agent2 5.4.0 (./configure
&gt; --enable-agent2 --with-libpcre-include=/usr/include/pcre --enable-static &amp;&amp;
&gt; make) go сам вытягивает все зависимости и сам всё компилирует и линкует без
&gt; проблем.
&gt; 
&gt; Или на сборочнице нет доступа в инет?

Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы нет во избежание подмены или недоступности ресурсов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198802</commentid>
    <comment_count>7</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2021-05-31 15:01:15 +0300</bug_when>
    <thetext>(Ответ для Andrey Cherepanov на комментарий #6)
&gt; Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
&gt; нет во избежание подмены или недоступности ресурсов.


Тогда самый просто вариант - собрать один раз на компе/сервере, где есть доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить все зависимости на сервер сборки.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198804</commentid>
    <comment_count>8</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2021-05-31 15:38:08 +0300</bug_when>
    <thetext>(Ответ для Сергей Сысоев на комментарий #7)
&gt; (Ответ для Andrey Cherepanov на комментарий #6)
&gt; &gt; Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
&gt; &gt; нет во избежание подмены или недоступности ресурсов.
&gt; 
&gt; 
&gt; Тогда самый просто вариант - собрать один раз на компе/сервере, где есть
&gt; доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить
&gt; все зависимости на сервер сборки.

Эта технология называется &quot;подготовим помойку забандленного заранее&quot; и используется, если нет других вариантов. Правильнее компоненты собирать в виде пакетов для их выборочного обновления.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198822</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2021-06-01 03:09:04 +0300</bug_when>
    <thetext>Прошу посмотреть 
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 &quot;Update go modules by go mod vendor&quot;
------------

Запатчил секцию install для agent2. Потому что go install не сильно отличается от go build. При go install снова происходит повторная компиляция проекта agent2.
Плюс еще что-то поправил.
Могу послать на сборку в таком виде, но я не тестировал.
Или заберите мои коммиты выборочно, как считаете нужным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198823</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2021-06-01 03:13:23 +0300</bug_when>
    <thetext>(Ответ для Andrey Cherepanov на комментарий #8)
&gt; (Ответ для Сергей Сысоев на комментарий #7)
&gt; &gt; (Ответ для Andrey Cherepanov на комментарий #6)
&gt; &gt; &gt; Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
&gt; &gt; &gt; нет во избежание подмены или недоступности ресурсов.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Тогда самый просто вариант - собрать один раз на компе/сервере, где есть
&gt; &gt; доступ к Интернету. Потом оттуда из уже локального ~/go/pkg/mod/ вытащить
&gt; &gt; все зависимости на сервер сборки.
&gt; 
&gt; Эта технология называется &quot;подготовим помойку забандленного заранее&quot; и
&gt; используется, если нет других вариантов. Правильнее компоненты собирать в
&gt; виде пакетов для их выборочного обновления.

Нет, для golang правильный путь - вендоризировать, используя команду go mod vendor. Не надо захламлять сизиф кучей ненужных пакетов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198829</commentid>
    <comment_count>11</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2021-06-01 08:01:47 +0300</bug_when>
    <thetext>(Ответ для Andrey Cherepanov на комментарий #6)
&gt; (Ответ для Сергей Сысоев на комментарий #5)
&gt; Сборка должна быть воспроизводима и поэтому доступа к Интернету у сборочницы
&gt; нет во избежание подмены или недоступности ресурсов.

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

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

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

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

Спасибо! Отправил на сборку.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198884</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2021-06-03 10:22:43 +0300</bug_when>
    <thetext>На всякий обращаю внимание на то, что на эльбрусах golang пока что есть только
в ОС Эльбрус (с втаскиванием в альт есть вопросы) -- пока пришлось собирать
с --disable agent2 (спасибо, что сразу ручку сделали).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216882</commentid>
    <comment_count>14</comment_count>
    <who name="Сергей Сысоев">sysoevsa</who>
    <bug_when>2022-11-03 07:00:57 +0300</bug_when>
    <thetext>(Ответ для Alexey Shabalin на комментарий #9)
&gt; Я вендоризировал go модули. По хорошему, надо бы апстрим просить
&gt; вендоризировать, что бы обеспечить сборку без доступа в Интернет. Собирать
&gt; систему мониторинга, когда из Интернет может что-то подтянуться неизвестное
&gt; - плохая идея. Этим можно обосновать, что бы они сами следили за каталогом
&gt; vendor и обновляли его по необходимости.
https://support.zabbix.com/browse/ZBX-19496

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

Новые релизы 6.0.10, 6.2.4 уже включают в себя вендоризированные пакеты go для сборки агента версии 2 оффлайн.
Как мне кажется, потребуется внести какие-либо изменения в сборку.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216883</commentid>
    <comment_count>15</comment_count>
    <who name="Alexei Takaseev">taf</who>
    <bug_when>2022-11-03 08:28:27 +0300</bug_when>
    <thetext>(Ответ для Сергей Сысоев на комментарий #14)

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

По ссылке речь идем именно о выложенном на сайте авторов тарболе. У нас сборка из git&apos;а, и предложенный в #9 рецепт остается актуальным.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>