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