Блог bitmanager

Сборка Zabbix-proxy для Synology

К чему все это


В рамках уплотнения и унификации инфраструктуры мы перевели все zabbix-proxy на Synology, установленные в офисах клиентов. Для этого у Synology есть специальный пакет. Для того, чтобы узнать архитектуру вашего Synology идете сюда и ищете свою модель. Но вот беда - эти пакеты собираются без прокси, хотя все необходимое окружение в пакете присутствует (скрипты запуска, файлы конфигурации, библиотеки). Ну что ж, если гора не идет к Магомету... Соберем прокси вручную.

Подготовка окружения


Внутри Synology находится Linux, но набор библиотек и бинарников нестандартный. Потому просто make install-ом не обойдешься, нужно ставить окружение. Благо это не так сложно - разработчики Synology о нас уже позаботились. Создаем папку для хранения окружения и переходим в нее. Внутри клонируем установочные скрипты.
bash
git clone https://github.com/SynologyOpenSource/pkgscripts-ng pkgscripts

С помощью этих скриптов разворачиваем окружение нужной архитектуры и версии. Версию можно посмотреть в самом Synology, а архитектуру - по ссылке выше.
   bash
   cd pkgscripts/
   ./EnvDeploy -v 6.2 -p apollolake

Переключаемся в установленное окружение.
   cd ../build_env/ds.apollolake-6.2/
   chroot

Сборка зависимостей


Перед сборкой самого прокси необходимо собрать все зависимости. Dev библиотек в Synology нет. Да еще и бинарники, и сами библиотеки могут размещаться в нестандартных местах. Поэтому к сборочным флагам надо отнестись внимательно. Также надо учитывать, что версии используемых библиотек должны совпадать с версиями, установленными на Synology. Всего надо собрать три зависимости:
  •    MySQL
  •    Net-SNMP
  •    cURL

Начнем по порядку.

Сборка MySQL
   wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.62.tar.gz --no-check-certificate
   tar -xzvf mysql-5.5.62.tar.gz
   cd mysql-5.5.62
   mkdir build
   cd build
   env CC=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-gcc \
   LD=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld \
   RANLIB=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ranlib \
   CFLAGS="-I/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include" \
   LDFLAGS="-L/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/lib" \
  cmake ..
  make
  make install
  cd ../..


Сборка Net-SNMP
   wget https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz --no-check-certificate
   tar -xzvf net-snmp-5.7.3.tar.gz
   cd net-snmp-5.7.3
   env CC=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-gcc \
   LD=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld \
   RANLIB=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ranlib \
   CFLAGS="-I/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include" \
   LDFLAGS="-L/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/lib" \
   ./configure
   make
   make install
   cd ..

Сборка cURL
   wget https://curl.haxx.se/download/curl-7.47.0.tar.gz --no-check-certificate
   tar -xzvf curl-7.47.0.tar.gz
   cd curl-7.47.0
   env CC=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-gcc \
   LD=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld \
   RANLIB=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ranlib \
   CFLAGS="-I/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include" \
   LDFLAGS="-L/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/lib" \
   LD_LIBRARY_PATH="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib" \
   ./configure
   env LD_LIBRARY_PATH="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib" make
   make install
   cd ..

Сборка Zabbix-proxy


Вот теперь, когда все готово, можно собирать и сам zabbix-proxy. Версия используемых исходников должна совпадать с версией в пакете.
   wget https://sourceforge.net/projects/zabbix/files/ZABBIX Latest Stable/4.4.4/zabbix-4.4.4.tar.gz --no-check-certificate
   tar -xzvf zabbix-4.4.4.tar.gz
   cd zabbix-4.4.4
   env CC=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-gcc \
   LD=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ld \
   RANLIB=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-ranlib \
   CFLAGS="-I/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/include" \
   LDFLAGS="-L/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/lib" \
   LD_LIBRARY_PATH="/usr/local/lib" \
   ./configure \
   --prefix=/usr/local/zabbix \
   --enable-proxy \
   --with-openssl \
   --with-net-snmp \
   --with-libcurl \
   --with-mysql=/usr/local/mysql/bin/mysql_config
   env LD_LIBRARY_PATH="/usr/local/lib" make

Установка Zabbix-proxy


Установка proxy достаточно тривиальна. Собранный бинарник надо скопировать на Synology по scp, туда же, где лежат и остальные бинарники Zabbix, потом настроить конфигурацию прокси и запустить его.
Записки сисадмина