Цикл статей о Zabbix продолжает не зарегистрированный здесь пользователь. Первую статью можете прочитать тут.
Добавить новый хост в Zabbix можно двумя основными способами: автообнаружение и ручное добавление хоста. Когда мы имеем очень большое количество узлов добавление их в систему мониторинга ручками занимает большое время, отслеживание их количества и подержание их в актуальном состоянии тоже не легкая задача. В этом случае удобно использовать авто обнаружение. Как его использовать в этой статье описываться не будет (если кому будет интересно можно будет подготовить маленький обзор по основным функциям). Основной недостаток при авто обнаружении — добавленные хосты получают имя равное IP устройства. При большом количестве устройств разобраться, что где проблематично.
Как правило любое устройство контролируемое по snmp имеет стандартный OID .1.3.6.1.2.1.1.5.0 или system.sysName.0. Это и есть так называемый hostname железки. В качестве имени устройства использовать какое либо значение полученное по OID стандартными средствами в Zabbix невозможно.
Самый простой способ — использование внешних скриптов.
Зачем это нужно?
Добавить новый хост в Zabbix можно двумя основными способами: автообнаружение и ручное добавление хоста. Когда мы имеем очень большое количество узлов добавление их в систему мониторинга ручками занимает большое время, отслеживание их количества и подержание их в актуальном состоянии тоже не легкая задача. В этом случае удобно использовать авто обнаружение. Как его использовать в этой статье описываться не будет (если кому будет интересно можно будет подготовить маленький обзор по основным функциям). Основной недостаток при авто обнаружении — добавленные хосты получают имя равное IP устройства. При большом количестве устройств разобраться, что где проблематично.
Решение.
Как правило любое устройство контролируемое по snmp имеет стандартный OID .1.3.6.1.2.1.1.5.0 или system.sysName.0. Это и есть так называемый hostname железки. В качестве имени устройства использовать какое либо значение полученное по OID стандартными средствами в Zabbix невозможно.
Самый простой способ — использование внешних скриптов.
Для PostgresSQL:
#!/bin/bash
PGSQL="psql -d <имя БД> -h <ип сервера БД> -U <имя пользователя БД> -W -c"
$PGSQL"SELECT ip FROM hosts where ip ILIKE '192.168.1.%'" | while read line
do
arr=($line)
x=`snmpwalk -Ou -Oq -v2c -c <community string> ${arr[0]} system.sysName.0 2> /dev/null | awk '{print$2}' | tr "[:upper:]" "[:lower:] " `
[[ -n $x ]] && $PGSQL"UPDATE hosts SET host = '$x' WHERE ip ='${arr[0]}'"
done
* This source code was highlighted with Source Code Highlighter.
Для MYSQL:
#!/bin/bash
MYSQL="mysql --connect_timeout 10 <имя БД> -h <ип сервера БД> -u <имя пользователя БД> --password=<пароль> --skip-column-names -B -e"
$MYSQL "SELECT ip FROM hosts where ip like '192.168.1.%'" | while read line
do
arr=($line)
x=`snmpwalk -Ou -Oq -v2c -c <community string> ${arr[0]} system.sysName.0 2> /dev/null | awk '{print$2}' | tr "[:upper:]" "[:lower:] " `
[[ -n $x ]] && $MYSQL "UPDATE hosts SET host = '$x' WHERE ip ='${arr[0]}'"
done
* This source code was highlighted with Source Code Highlighter.
Вместо '192.168.1.%' подставляем нужный диапазон ip адресов железок.
Скрипт сохраняем в удобном для использования месте, делаем chmod +X и запускаем по необходимости. Можно прописать этот скрипт в крон.
Есть вариант пойти дальше и чуть изменив скрипт выполнять его при действии автообнаружения самим забиксом, но только для той железки которую обнаружили. Сделать это не трудно, но не возникало необходимости.