天天看點

利用zabbix-api建立item

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<code>#!/usr/bin/python</code>

<code>#-*- coding:utf8 -*-</code>

<code>from zabbix_api </code><code>import</code> <code>ZabbixAPI</code>

<code>server = </code><code>"http://172.16.206.130/zabbix"</code>

<code>username = </code><code>"Admin"</code>

<code>password = </code><code>"zabbix"</code>

<code>zapi = ZabbixAPI(server=server, path=</code><code>""</code><code>, log_level=0)</code>

<code>zapi.login(username, password)</code>

<code>#通過主機名擷取hostid和interfaceid</code>

<code>def get_hostinfo():</code>

<code>    </code><code>host_info=zapi.host.get({</code><code>"selectInterfaces"</code><code>:[</code><code>"interfaceid"</code><code>],</code><code>"filter"</code><code>:{</code><code>"host"</code><code>:[</code><code>"Zabbix server"</code><code>]}})</code>

<code>    </code><code>hostid = host_info[0][</code><code>'hostid'</code><code>]</code>

<code>    </code><code>interfaceid =  host_info[0][</code><code>'interfaces'</code><code>][0][</code><code>'interfaceid'</code><code>]</code>

<code>    </code><code>return</code> <code>(hostid,interfaceid)</code>

<code>###建立item</code>

<code>def create_item():</code>

<code>    </code><code>###判斷主機上item是否存在,傳回值為True或者False</code>

<code>    </code><code>item_exist = zapi.item.exists({</code><code>"host"</code><code>: </code><code>"Zabbix server"</code><code>, </code><code>"key_"</code><code>: </code><code>"proc.num[,,,/etc/nginx/nginx.conf]"</code><code>})</code>

<code>    </code><code>if</code> <code>not item_exist:</code>

<code>        </code><code>a = get_hostinfo()</code>

<code>        </code><code>hostid = a[0]</code>

<code>        </code><code>interfaceid = a[1]</code>

<code>        </code><code>create_item=zapi.item.create(</code>

<code>            </code><code>{</code>

<code>                </code><code>"name"</code><code>:</code><code>"nginx service monitor"</code><code>,</code>

<code>                </code><code>"key_"</code><code>:</code><code>"proc.num[,,,/etc/nginx/nginx.conf]"</code><code>,</code>

<code>                </code><code>"hostid"</code><code>:hostid,</code>

<code>                </code><code>"type"</code><code>:7,</code>

<code>                </code><code>"value_type"</code><code>:3,</code>

<code>                </code><code>"interfaceid"</code><code>:interfaceid,</code>

<code>                </code><code>"date_type"</code><code>:0,</code>

<code>                </code><code>"delay"</code><code>:60,</code>

<code>                </code><code>"history"</code><code>:7,</code>

<code>                </code><code>"trends"</code><code>:90,</code>

<code>                </code><code>"status"</code><code>:0</code>

<code>            </code><code>}</code>

<code>        </code><code>)</code>

<code>        </code><code>return</code> <code>"item create success"</code>

<code>    </code><code>else</code><code>:</code>

<code>        </code><code>return</code> <code>"item exists"</code>

<code>if</code> <code>__name__ == </code><code>"__main__"</code><code>:</code>

<code>    </code><code>result=create_item()</code>

<code>    </code><code>print result</code>

腳本思路:

在主機上建立item必須擷取主機的hostid,interfaceid,而這兩個值必須通過zabbix API提供的host.get方法擷取到。然後定義一個函數get_hostinfo,該函數傳回這兩個hostid和interfaceid。再定義一個建立item的函數create_item,這個函數中先調用get_hostinfo函數,擷取到hostid,interfaceid。先判斷主機上item是存在,如果不存在,則執行create_item函數,來建立item。

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1836937,如需轉載請自行聯系原作者