В рамках уплотнения и унификации инфраструктуры мы перевели все 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, потом настроить конфигурацию прокси и запустить его.