всем привет!написал скрипт для инсерта данных по хостам напрямую(Ручками вколачивать поряка 100 машин уж очень Лень!!) в db Zabbix
Вижу все в вэб морде,Однако, при внесении, изменений (Добавление в группы,прикрепление к шаблонам) ругается на дублирующую запись!
Не могу понять zabbix где-то запоминает ID последнего добавленного hosta/группы?
сопсно скрипт:#!/bin/bash -x
FILE="/home/zabbix/bel/*"
empty="''"
IP=`grep '[0-9]\{1,4\}\.[0-9]\{1,4\}\.[0-9]\{1,4\}\.[0-9]\{1,4\}' $FILE|awk '{print$3}'|grep -v [a-z]`echo "insert into groups(groupid, name, internal) select coalesce(max(groupid), 0)+1, 'Belgorod', 0 from groups where not exists(select * from groups where name = 'Belgorod');"|mysql -s -u zabbix -pzabbix -Dzabbix
for item in $IP
do
#echo $item
echo "INSERT INTO hosts (hostid,ip,host,dns,status,error,ipmi_username,ipmi_password,ipmi_error,snmp_error) SELECT coalesce(max(hostid),0)+1,'$item','Host_$item',$empty,0,$empty,$empty,$empty,$empty,$empty from hosts where not exists(SELECT * FROM hosts where ip='$item');"|mysql -s -u zabbix -pzabbix -Dzabbixecho "insert into hosts_groups (hostgroupid,hostid,groupid) select coalesce(max(hostgroupid), 0)+1, (select max(hostid) from hosts), (select groupid from groups where name = 'Belgorod') from hosts_groups;"|mysql -s -u zabbix -pzabbix -Dzabbix
done
есть соображения по сабжу?
>[оверквотинг удален]
> #echo $item
> echo "INSERT INTO hosts (hostid,ip,host,dns,status,error,ipmi_username,ipmi_password,ipmi_error,snmp_error)
> SELECT coalesce(max(hostid),0)+1,'$item','Host_$item',$empty,0,$empty,$empty,$empty,$empty,$empty
> from hosts where not exists(SELECT * FROM hosts where ip='$item');"|mysql -s
> -u zabbix -pzabbix -Dzabbix
> echo "insert into hosts_groups (hostgroupid,hostid,groupid) select coalesce(max(hostgroupid),
> 0)+1, (select max(hostid) from hosts), (select groupid from groups where name
> = 'Belgorod') from hosts_groups;"|mysql -s -u zabbix -pzabbix -Dzabbix
> done
> есть соображения по сабжу?Не разбирался со структурой Zabbix, но мне почему то кажется что лучше все таки сделать эти операции через Zabbix API, если конечно у Вас версия 1.8 и выше. Если версия ниже то советую обновиться, благо это делается довольно просто. Zabbix API описан на сайте в разделе документации. Есть скрипты для работы на PHP и Python. Сам пока не освоил работу через API пока все делаю через импорт xml. Благо достаточно копи паста и небольшой правки.
> Не разбирался со структурой Zabbix, но мне почему то кажется что лучше
> все таки сделать эти операции через Zabbix API, если конечно у
> Вас версия 1.8 и выше. Если версия ниже то советую обновиться,
> благо это делается довольно просто. Zabbix API описан на сайте в
> разделе документации. Есть скрипты для работы на PHP и Python. Сам
> пока не освоил работу через API пока все делаю через импорт
> xml. Благо достаточно копи паста и небольшой правки.Пример подобного *.xml запостить можете?
>> Не разбирался со структурой Zabbix, но мне почему то кажется что лучше
>> все таки сделать эти операции через Zabbix API, если конечно у
>> Вас версия 1.8 и выше. Если версия ниже то советую обновиться,
>> благо это делается довольно просто. Zabbix API описан на сайте в
>> разделе документации. Есть скрипты для работы на PHP и Python. Сам
>> пока не освоил работу через API пока все делаю через импорт
>> xml. Благо достаточно копи паста и небольшой правки.
> Пример подобного *.xml запостить можете?А зачем?
Пример смотрите при экспорте из Zabbix.
Аналогично что бы потом загрузить выбираете импорт и все.
Очень удобно когда куча однотипных компов заводится, один завели, все прописали, после этого экспортировали его в xml. ну а дальше прошлись sed'ом кое-что поменяли и обратно импорт.
вот что происходит при добавлении пользователя:
12 Query begin
12 Query SELECT u.userid FROM users u WHERE u.alias='temp' AND ((u.userid BETWEEN 000000000000000 AND 099999999999999))
12 Query SELECT nextid FROM ids WHERE nodeid=0 AND table_name='users' AND field_name='userid'
12 Query UPDATE ids SET nextid=nextid+1 WHERE nodeid=0 AND table_name='users' AND field_name='userid'
12 Query SELECT nextid FROM ids WHERE nodeid=0 AND table_name='users' AND field_name='userid'
12 Query INSERT INTO users (userid, name, surname, alias, passwd, url, autologin, autologout, lang, theme,
refresh, rows_per_page, type) VALUES (16,'temp','temp','temp','3d801aa532c1cec3ee82d87a99fdf63f','',0,0,'en_gb','default.css',30,50,1)
12 Query commitт.е. надо править таблицу
echo 'select * from ids;' | mysql -t zabbix
+--------+--------------------+----------------+--------+
| nodeid | table_name | field_name | nextid |
+--------+--------------------+----------------+--------+
| 0 | acknowledges | acknowledgeid | 406 |
| 0 | actions | actionid | 13 |
| 0 | applications | applicationid | 190 |
| 0 | auditlog | auditid | 16972 |
| 0 | auditlog_details | auditdetailid | 10920 |
| 0 | conditions | conditionid | 78 |
| 0 | dchecks | dcheckid | 4 |
| 0 | drules | druleid | 4 |
| 0 | events | eventid | 64292 |
| 0 | functions | functionid | 15366 |
| 0 | groups | groupid | 15 |
| 0 | hostmacro | hostmacroid | 7 |
| 0 | hosts | hostid | 10175 |
| 0 | hosts_groups | hostgroupid | 476 |
| 0 | hosts_templates | hosttemplateid | 221 |
| 0 | housekeeper | housekeeperid | 17332 |
| 0 | httpstep | httpstepid | 15 |
| 0 | httpstepitem | httpstepitemid | 120 |
| 0 | httptest | httptestid | 14 |
| 0 | httptestitem | httptestitemid | 78 |
| 0 | items | itemid | 27250 |
| 0 | items_applications | itemappid | 4206 |
| 0 | media | mediaid | 10 |
| 0 | media_type | mediatypeid | 4 |
| 0 | operations | operationid | 49 |
| 0 | opmediatypes | opmediatypeid | 5 |
| 0 | profiles | profileid | 1405 |
| 0 | rights | rightid | 55 |
| 0 | triggers | triggerid | 15202 |
| 0 | users | userid | 16 |
| 0 | users_groups | id | 47 |
| 0 | user_history | userhistoryid | 7 |
| 0 | usrgrp | usrgrpid | 13 |
+--------+--------------------+----------------+--------+