python3 使用zabbix api的一些案例。。具体可以去zabbix官网找API借口,替换一下就可以。
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<code>#!/usr/bin/env python</code>
<code># -*- coding: utf-8 -*-</code>
<code>import</code> <code>urllib.request</code>
<code>import</code> <code>json</code>
<code>import</code> <code>re</code>
<code>url </code><code>=</code> <code>'http://xxxxxxxxxxxxxxxx/api_jsonrpc.php'</code>
<code>username </code><code>=</code> <code>'xxxxxxxxxxxxxxx'</code>
<code>password </code><code>=</code> <code>'xxxxxx'</code>
<code># 登陆</code>
<code>def</code> <code>requestJson(url, values):</code>
<code> </code><code>data </code><code>=</code> <code>json.dumps(values).encode(</code><code>'utf-8'</code><code>)</code>
<code> </code><code>req </code><code>=</code> <code>urllib.request.Request(url, data, {</code><code>'Content-Type'</code><code>: </code><code>'application/json-rpc'</code><code>})</code>
<code> </code><code>response </code><code>=</code> <code>urllib.request.urlopen(req, data)</code>
<code> </code><code>a </code><code>=</code> <code>response.read().decode(encoding</code><code>=</code><code>'utf-8'</code><code>)</code>
<code> </code><code>output </code><code>=</code> <code>json.loads(a)</code>
<code> </code><code># print output</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>message </code><code>=</code> <code>output[</code><code>'result'</code><code>]</code>
<code> </code><code>except</code><code>:</code>
<code> </code><code>message </code><code>=</code> <code>output[</code><code>'error'</code><code>][</code><code>'data'</code><code>]</code>
<code> </code><code>print</code><code>(message)</code>
<code> </code><code>quit()</code>
<code> </code><code>return</code> <code>output[</code><code>'result'</code><code>]</code>
<code>##登陆的API</code>
<code>def</code> <code>authenticate(url, username, password):</code>
<code> </code><code>values </code><code>=</code> <code>{</code><code>'jsonrpc'</code><code>: </code><code>'2.0'</code><code>,</code>
<code> </code><code>'method'</code><code>: </code><code>'user.login'</code><code>,</code>
<code> </code><code>'params'</code><code>: {</code>
<code> </code><code>'user'</code><code>: username,</code>
<code> </code><code>'password'</code><code>: password</code>
<code> </code><code>},</code>
<code> </code><code>'id'</code><code>: </code><code>'0'</code>
<code> </code><code>}</code>
<code> </code><code>idvalue </code><code>=</code> <code>requestJson(url, values)</code>
<code> </code><code>return</code> <code>idvalue</code>
<code># auth的值</code>
<code>auth </code><code>=</code> <code>authenticate(url, username, password)</code>
<code>##查询组ID {'groupid': '8', 'name': 'Switch'}</code>
<code>def</code> <code>groups(auth):</code>
<code> </code><code>values </code><code>=</code> <code>{</code>
<code> </code><code>"jsonrpc"</code><code>: </code><code>"2.0"</code><code>,</code>
<code> </code><code>"method"</code><code>: </code><code>"hostgroup.get"</code><code>,</code>
<code> </code><code>"params"</code><code>: {</code>
<code> </code><code>"output"</code><code>: [</code><code>"groupid"</code><code>, </code><code>"name"</code><code>],</code>
<code> </code><code>},</code>
<code> </code><code>'auth'</code><code>: auth,</code>
<code> </code><code>'id'</code><code>: </code><code>'1'</code>
<code> </code><code>}</code>
<code> </code><code>output </code><code>=</code> <code>requestJson(url, values)</code>
<code> </code><code>return</code> <code>output</code>
<code># b = groups(auth)</code>
<code># print(b)</code>
<code>##查询主机 {'hostid': '10108',</code>
<code>def</code> <code>hosts(auth):</code>
<code> </code><code>"method"</code><code>: </code><code>"host.get"</code><code>,</code>
<code> </code><code>"groupids"</code><code>: </code><code>"8"</code><code>,</code>
<code>host </code><code>=</code> <code>hosts(auth)</code>
<code>host1 </code><code>=</code> <code>[]</code>
<code>host2 </code><code>=</code> <code>[]</code>
<code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>len</code><code>(host)):</code>
<code> </code><code>host1.append(host[i][</code><code>'name'</code><code>])</code>
<code> </code><code>host2.append(host[i][</code><code>'hostid'</code><code>])</code>
<code>host3 </code><code>=</code> <code>dict</code><code>(</code><code>zip</code><code>(host1, host2))</code>
<code>##查询主机项目 {'key_': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'itemid': '26399'}</code>
<code>def</code> <code>item(auth):</code>
<code> </code><code>"method"</code><code>: </code><code>"item.get"</code><code>,</code>
<code> </code><code>"output"</code><code>: [</code><code>"itemids"</code><code>, </code><code>"key_"</code><code>],</code>
<code> </code><code>"hostids"</code><code>: </code><code>"10108"</code><code>,</code>
<code># print(item(auth))</code>
<code>##查询项目的历史值 'lastvalue': '-14760.0000'</code>
<code>def</code> <code>his(auth, itemids):</code>
<code> </code><code>"output"</code><code>: </code><code>"extend"</code><code>,</code>
<code> </code><code>"history"</code><code>: </code><code>0</code><code>,</code>
<code> </code><code>"itemids"</code><code>: itemids,</code>
<code> </code><code>"sortfield"</code><code>: </code><code>"itemid"</code><code>,</code>
<code> </code><code>"sortorder"</code><code>: </code><code>"DESC"</code><code>,</code>
<code> </code><code>"limit"</code><code>: </code><code>1</code>
<code># print(his(auth,26399))</code>
<code>##查询触发项目值和监控项目 {'description': 'xxxxxxxxxxxxxxx', 'hostname': 'xxxxxxxxxxxxxxx', 'items': [{'itemid': '26399'}], 'triggerid': '17030'}</code>
<code>def</code> <code>trigger(auth, hostid):</code>
<code> </code><code>"method"</code><code>: </code><code>"trigger.get"</code><code>,</code>
<code> </code><code>"output"</code><code>: [</code>
<code> </code><code>"description"</code><code>,</code>
<code> </code><code>],</code>
<code> </code><code>"filter"</code><code>: {</code>
<code> </code><code>"hostid"</code><code>: hostid,</code>
<code> </code><code>},</code>
<code> </code><code>"selectItems"</code><code>: "",</code>
<code> </code><code>"sortfield"</code><code>: </code><code>"hostname"</code><code>,</code>
<code> </code><code>"sortorder"</code><code>: </code><code>"DESC"</code>
<code> </code><code>###简单使用案例,可查考,根据触发器查找历史。</code>
<code> </code><code>t1 </code><code>=</code> <code>trigger(auth, host3[msg[</code><code>'Content'</code><code>]])</code>
<code> </code><code>t2 </code><code>=</code> <code>[]</code>
<code> </code><code>t3 </code><code>=</code> <code>[]</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>len</code><code>(t1)):</code>
<code> </code><code>t5 </code><code>=</code> <code>t1[i][</code><code>'items'</code><code>][</code><code>0</code><code>] </code><code>## 'items': [{'itemid': '26399'}]</code>
<code> </code><code>t6 </code><code>=</code> <code>his(auth, t5[</code><code>'itemid'</code><code>]) </code><code>## his(auth,26399)</code>
<code> </code><code>t2.append(t1[i][</code><code>'description'</code><code>]) </code><code>##监控项目描述</code>
<code> </code><code>t3.append(</code><code>round</code><code>(</code><code>float</code><code>(t6[</code><code>0</code><code>][</code><code>'lastvalue'</code><code>])) </code><code>/</code> <code>1000</code><code>) </code><code>##项目ID 的值</code>
<code> </code><code>t4 </code><code>=</code> <code>dict</code><code>(</code><code>zip</code><code>(t2, t3))</code>
<code> </code><code>t8 </code><code>=</code> <code>[]</code>
<code> </code><code>for</code> <code>k </code><code>in</code> <code>t4:</code>
<code> </code><code>t7 </code><code>=</code> <code>k </code><code>+</code> <code>":"</code> <code>+</code> <code>"{}"</code><code>.</code><code>format</code><code>(t4[k]) </code><code>+</code> <code>"db"</code>
<code> </code><code>t8.append(t7)</code>
<code> </code><code>t9 </code><code>=</code> <code>"\n"</code><code>.join(t8)</code>
本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1904261,如需转载请自行联系原作者