Советы и рецепты по Zabbix
Правка SNMP-коммунити на обнаруженных элементах данных
Бывает, что нужно сменить SNMP-коммунити на устройствах, но устройство поддерживает не более одного SNMP-коммунити, так что нельзя сначала добавить новое, а потом, спустя некоторое время, удалить старое. В таких случаях на узлах с большим количеством элементов данных, созданных низкоуровневым обнаружением, из-за большого количества не отвечающих элементов данных отключаются все SNMP-проверки. Из-за этого правила низкоуровневого обнаружения тоже не отрабатывают и не могут обновить обнаруженные элементы данных. Исправить подобные проблемы можно при помощи одного SQL-запроса:
UPDATE items
JOIN item_discovery ON item_discovery.itemid = items.itemid
AND item_discovery.key_ <> ''
JOIN items AS parent ON parent.itemid = item_discovery.parent_itemid
AND parent.status = 0
AND parent.snmp_community <> items.snmp_community
SET items.snmp_community = parent.snmp_community
WHERE items.status = 0;
Запрос находит все элементы данных, созданные низкоуровневым обнаружением, и у которых SNMP-коммунити отличается от SNMP-коммунити, прописанного в прототипе элемента данных. У всех таких элементов данных SNMP-коммунити заменяется SNMP-коммунити из прототипа.
Резервное копирование и восстановление БД
Слив неполного дампа, без таблиц истории и тенденций:
# mysqldump --single-transaction -uzabbix -pzabbix zabbix --ignore_table=zabbix.trends_uint --ignore-table=zabbix.history_uint --ignore-table=zabbix.history --ignore-table=zabbix.trends > drs.sql
Заливаем дамп:
> source /home/stupin/drs.sql
Решение проблемы при создании пустой БД
Проблема по ссылке Not possible to insert create.sql.gz on MariaDB 10.3.17 следующего вида:
$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
Решается выключением режима строгой проверки вставляемых данных:
SET SESSION innodb_strict_mode=OFF;
Установка Zabbix из порта
Внимание! В этой заметке описан процесс бэкпортирования порта с Zabbix 2.4 в более старую версию системы портов, имевшей актуальность во времена FreeBSD 8.2. Операционную систему и систему портов с момента установки на одном из серверов ни разу не обновляли, но появилась необходимость установить на сервер более свежую версию Zabbix, порт с которой был только для более свежей версии системы портов, не совместимой с системой портов на сервере.
Получение порта
Получить отдельные порты можно следующим образом:
$ svn checkout https://svn0.us-east.freebsd.org/ports/branches/2015Q4/net-mgmt/zabbix24-frontend/ zabbix24-frontend
$ svn checkout https://svn0.us-east.freebsd.org/ports/branches/2015Q4/net-mgmt/zabbix24-server/ zabbix24-server
$ svn checkout https://svn0.us-east.freebsd.org/ports/branches/2015Q4/net-mgmt/zabbix24-proxy/ zabbix24-proxy
$ svn checkout https://svn0.us-east.freebsd.org/ports/branches/2015Q4/net-mgmt/zabbix24-agent/ zabbix24-agent
Собрать их с имеющимися старыми портами напрямую нельзя, т.к. система портов развивается и меняется формат файлов портов. Нужно адаптировать свежий только что скачанный порт к системе портов, имеющейся в системе.
Адаптация порта
В файле Makefile заменим --with-iconv на --with-iconv=${PREFIX}
В файле Makefile убрерём во всех LIB_DEPENDS=
префиксы lib и суффиксы .so у всех библиотек
В файле Makefile заменим все конструкции такого вида:
MYSQL_CONFIGURE_WITH= mysql
MYSQL_USE= MYSQL=yes
На конструкции следующего вида:
.if ${PORT_OPTIONS:MMYSQL}
ZABBIX_REQUIRE= " mysql"
USE_MYSQL= yes
CONFIGURE_ARGS+= --with-mysql
.endif
В файлах pkg-plist и pkg-plist.agent заменим @dir на @dirrmtry
В Makefile порта zabbix24-frontend для наложения патча patch-frontend-ufanet понадобилось закомментировать опцию:
#PATCHDIR=
Адаптация патча (вариант 1)
Извлекаем исходники:
$ make clean
$ make extract
Переходим в каталог с распакованными исходниками и делаем их копию:
$ cd work/zabbix-2.4.6
$ cp -R src orig
Накладываем имеющийся патч:
$ patch -Np1 --ignore-whitespace -d src < ../../files/patch-snmp-timeout
Создаём новый патч:
$ diff -x '*.orig' -x '*.rej' -Naur orig src > ../../files/patch-snmp-timeout
$ cd ../..
Удаляем в текстовом редакторе из получившегося патча опции -x '.orig' -x '.rej'
$ vim files/pach-snmp-timeout
Затем удаляем распакованные исходники и собираем порт:
$ make clean
$ make
Адаптация патча (вариант 2)
Извлекаем исходники:
$ make clean
$ make extract
Переходим в каталог с распакованными исходниками и делаем их копию:
$ cd work/zabbix-2.4.6
Накладываем имеющийся патч:
$ patch -Np1 --ignore-whitespace -d src < ../../patch-snmp-timeout
Создаём новый патч:
$ make makepatch
$ cd ../..
В каталоге files будут созданы файлы с именами patch-*
для каждого изменяемого файла.
Затем удаляем распакованные исходники и собираем порт:
$ make clean
$ make