GrabDuck

Сборка Zabbix-агента для TBS MOI Plus — IT-артель «Сусоров и Ко»

:

Нам потребуется тулчейн под соответствующую архитектуру — брать здесь. Скачиваем, распаковываем — внутри архива лежит каталог arm-none-linux-gnueabi. Так же скачиваем исходники Zabbix актуальной версии. Далее, в переменной PATH указывается путь до директории arm-none-linux-gnueabi, в моем случае я распаковал архив в корне домашней директории пользователя и путь получился таким:

1
export PATH=/home/user/arm-none-linux-gnueabi/bin:$PATH

export PATH=/home/user/arm-none-linux-gnueabi/bin:$PATH

Переходим в директорию с исходниками Zabbix и конфигурируем, указываем что нам нужен только агент, статическая линковка библиотек и что архитектура у нас будет отличной от той, на которой происходит сборка:

1
./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi

./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi

Казалось бы и всё, однако из-за ошибок в configure-скрипте Zabbix’а конфигурация успехом не оканчивается:

1
2
3
checking for long long format... configure: error: in `/home/user/zabbix-2.2.6':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

checking for long long format... configure: error: in `/home/user/zabbix-2.2.6': configure: error: cannot run test program while cross compiling See `config.log' for more details

Копируем текст ошибки (cannot run test program while cross compiling), открываем configure в любимом текстовом редакторе, находим в скрипте текст ошибки. В моем случае это была строка номер 7331. И буквально тремя строками ранее мы должны обнаружить вот такое условие:

1
if test "$cross_compiling" = yes; then :

if test "$cross_compiling" = yes; then :

Дописываем в конце $cross_compiling пару нижних прочерков, приведя строку к такому виду:

1
if test "$cross_compiling__" = yes; then :

if test "$cross_compiling__" = yes; then :

Повторяем попытку:

1
./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi

./configure --disable-server --enable-agent --enable-static --host=arm-none-linux-gnueabi

И, ура-ура, получаем результат:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Configuration:
 
  Detected OS:           linux-gnueabi
  Install path:          /usr/local
  Compilation arch:      linux
 
  Compiler:              arm-none-linux-gnueabi-gcc
  Compiler flags:        -g -O2   
 
  Enable server:         no
 
  Enable proxy:          no
 
  Enable agent:          yes
  Agent details:
    Linker flags:          -rdynamic  -static    
    Libraries:             -lm -ldl -lrt  -lresolv    
 
  Enable Java gateway:   no
 
  LDAP support:          no
  IPv6 support:          no
 
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

Configuration: Detected OS: linux-gnueabi Install path: /usr/local Compilation arch: linux Compiler: arm-none-linux-gnueabi-gcc Compiler flags: -g -O2 Enable server: no Enable proxy: no Enable agent: yes Agent details: Linker flags: -rdynamic -static Libraries: -lm -ldl -lrt -lresolv Enable Java gateway: no LDAP support: no IPv6 support: no *********************************************************** * Now run 'make install' * * * * Thank you for using Zabbix! * * <http://www.zabbix.com> * ***********************************************************

Далее собираем с помощью волшебной команды make, находим собранные бинарники Zabbix-агента в директории ./src/zabbix_agent/, копируем их на TBS MOI Plus (так же неплохо было бы закинуть конфиг для агента) и далее используем по назначению. На MOI Plus бинарник агента благополучно запускается, но не работает, тонко намекая нам, что не стоит запускать его от имени root:

1
2
zabbix_agentd [32088]: user zabbix does not exist
zabbix_agentd [32088]: cannot run as root!

zabbix_agentd [32088]: user zabbix does not exist zabbix_agentd [32088]: cannot run as root!

Но это, как говорится, уже совсем другая история о другой проблеме, которую еще только предстоит решить 🙂

P.S.

Спасибо за помощь Андрею Дылдину, разработчику Астры, ПО для вещания IP-потоков.

Сборка Zabbix-агента для TBS MOI Plus