Синхронизация Cacti и Zabbix Блог +Прошивка и разработка+ - Синхронизация Cacti и Zabbix

Блог +Прошивка и разработка+

Как добавлять устройства в cacti автоматически с zabbix
Пароль
Регистрация
Yandex Google Вконтакте Mail.ru Twitter Loginza WebMoney

Синхронизация Cacti и Zabbix

Дата публикации: 09.02.2017г.
Рейтинг 4.43 Голосов: 368

Синхронизация cacti с zabbix авто добавление свитчей

Синхронизация Cacti и Zabbix

Синхронизация cacti с zabbix авто добавление свитчей 2017-02-09 add-devices-cacti-and-zabbix 200 300 200 300 Блог +Прошивка и разработка+ Рейтинг 4.43 / 5 368

Синхронизация Cacti и Zabbix

Поделится: Поделиться В Контакте Поделиться в Моем Мире@Mail.Ru Добавить в Одноклассники Поделиться в Facebook

Синхронизация Cacti и Zabbix

Авто добавление устройств из Zabbix в Cacti

На днях столкнулся с тем что zabbix не справляется нормально с двумя сотнями свитчей... На каждом свитче 24-28 портов с каждого порта снимается трафик,пакеты,non пакеты и так далее...

Решил установить Cacti (так как стояла в другой сетке с сотней свитчей нормально). Но добавлять все 200 свитчей стало лень ;)

Посмотрев мануалы на "кактус" нашел интересную папку "cli" (полный пусть /usr/share/cacti/cli/), в ней лежат скрипты php которые предназначены для добавление устройств,графиков с консоли.

Нам понадобится:
1.Достать список свитчей с zabbix (адрес и IP)
2.Достать список свитчей c cacti который уже добавлены
3.Сделать цикл на добавление графиков и комплексных экранов

Достаем адрес и IP с zabbix 2.4:

mysql -uzabbix -pПАРОЛЬ zabbix -e"select distinct ip,host from zabbix.interface,zabbix.hosts where hosts.hostid=interface.hostid AND ip LIKE '192.168.1.%' ORDER BY name ASC;" > cacti_cron.log

Пароль и шаблон IP свитчей подставите свой!

Теперь у нас в документе "cacti_cron.log" есть список "pr.Lenina 1 192.168.1.100"
Теперь достанем список тех свитчей которые есть в базе cacti

Список устройств в базе cacti:

php /usr/share/cacti/cli/add_graphs.php --list-hosts |  cut -f 2 -d "	" > cacti_cron2.log

ВАЖНО! В КАВЫЧКАХ СТОИТ ТАБ

Теперь весь скрипт с описанием

Скрипт добавление в базу cacti:

#!/bin/bash
#список свитчей из zabbix
mysql -uzabbix -pПАРОЛЬ zabbix -e"select distinct ip,host from zabbix.interface,zabbix.hosts where hosts.hostid=interface.hostid AND ip LIKE '192.168.1.%' ORDER BY name ASC;" > cacti_cron.log
#спосок устройств из cacti
php /usr/share/cacti/cli/add_graphs.php --list-hosts |  cut -f 2 -d "	" > cacti_cron2.log
#подсчет строк
col=`cat cacti_cron.log | wc -l`
for i in $(seq 1 $col)
do
ip=`awk NR==$i cacti_cron.log | cut -f 1 -d "	"`
name=`awk NR==$i cacti_cron.log | cut -f 2 -d "	"`
x=`grep -x '$ip' cacti_cron2.log | wc -l`
if [ $x = 1 ];
then
#если найдено то пропускаем
echo naideno  > /dev/null 2>&1	
else
#если не найдено то проверить на корректность IP адреса
z=`echo $ip | grep -q -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\$" || echo '3'`
          
if [ '$z' = 3 ];
then
#если в IP адресе допущена ошибка пропустить
echo error  > /dev/null 2>&1
else
#сделаем префикс в начало имени свитча (последние цифры IP адреса)
pref=`echo "$ip" | cut -f 4 -d "."`
#добавить устройство
php /usr/share/cacti/cli/add_device.php --description="$pref"_"$name" --ip="$ip" --template=9 --notes='auto add by script'
#получаем ID с базы cacti нашего устройства 
id=`php /usr/share/cacti/cli/add_graphs.php --list-hosts | grep $ip |  cut -f 1 -d "	"`
   
#Добавить в комплексный экран
php /usr/share/cacti/cli/add_tree.php --node-type=host --host-id="$id" --host-group-style=1 --tree-id=2 --type=node

#количество портов
col_ports=`php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id="$id" --snmp-field=ifDescr | grep Port | wc -l`

for v in $(seq 1 $col_ports)
do
num=`php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id="$id" --snmp-field=ifDescr | grep Port | awk NR==$v`
#добавить стат трафика
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=2 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=14 --snmp-field=ifDescr --snmp-value="$num"

#non-Unicast
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=24 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=3 --snmp-field=ifDescr --snmp-value="$num"

#Unicast
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=23 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=4 --snmp-field=ifDescr --snmp-value="$num"

#error
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=22 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=2 --snmp-field=ifDescr --snmp-value="$num"

done
fi 
fi
done

Второй скрипт на добавление вручную по ID

У меня пару свитчей добавились без графиков... пришлось сделать второй скрипт.

Скрипт добавление в базу cacti:

#!/bin/bash
echo "Nomer ID"

read id
#Добавить в комплексный экран
php /usr/share/cacti/cli/add_tree.php --node-type=host --host-id="$id" --host-group-style=1 --tree-id=2 --type=node
#количество портов
col_ports=`php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id="$id" --snmp-field=ifDescr | grep Port | wc -l`

for v in $(seq 1 $col_ports)
do
num=`php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id="$id" --snmp-field=ifDescr | grep Port | awk NR==$v`
#добавить стат трафика
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=2 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=14 --snmp-field=ifDescr --snmp-value="$num"

#non-Unicast
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=24 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=3 --snmp-field=ifDescr --snmp-value="$num"

#Unicast
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=23 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=4 --snmp-field=ifDescr --snmp-value="$num"

#error
php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=22 --host-id="$id" --snmp-query-id=1 --snmp-query-type-id=2 --snmp-field=ifDescr --snmp-value="$num"

done

Еще пару полезных команд

Скрипт добавление в базу cacti:

php /usr/share/cacti/cli/add_device.php --list-host-templates

php /usr/share/cacti/cli/add_graphs.php --list-graph-templates

php /usr/share/cacti/cli/add_graphs.php --list-snmp-queries

php /usr/share/cacti/cli/add_graphs.php --list-query-types --snmp-query-id=1

php /usr/share/cacti/cli/add_graphs.php --list-snmp-fields --host-id=2

php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id=2 --snmp-field=ifDescr


И чуть не забыл срипт для удаление хостов.... Скачать скрипт удаление устройств

Пример удаления:

php /usr/share/cacti/cli/remove_device.php —device-id=2,34,145


Печать

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Copyright © 2016 zmap
    Использование любых материалов сайта возможно только с разрешения автора.