Как стать автором
Обновить

Автоматическое переименование хостов в Zabbix, по данным из snmp sysName

Время на прочтение2 мин
Количество просмотров20K
Цикл статей о 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 и запускаем по необходимости. Можно прописать этот скрипт в крон.

Есть вариант пойти дальше и чуть изменив скрипт выполнять его при действии автообнаружения самим забиксом, но только для той железки которую обнаружили. Сделать это не трудно, но не возникало необходимости.

Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн