天天看点

利用zabbix api 带入 组ID 和 监控项目键值 获取所有主机的值

1

2

3

<code>def</code>  <code>chaxun(groupid,items_value):  是自己写的,带入组</code><code>ID</code> <code>和 监控项目键值,返回 主机和值的结果。</code>

<code>做了判断,如果这个主机没有想要的监控项目,就去除掉。</code>

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

172

173

174

175

<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>'Admin'</code>

<code>password </code><code>=</code> <code>'XXXXX'</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>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>=</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>output </code><code>=</code> <code>requestJson(url,values)</code>

<code>    </code><code>return</code> <code>output</code>

<code>##查询主机</code>

<code>def</code> <code>hosts(auth,a):</code>

<code>            </code><code>"method"</code><code>:</code><code>"host.get"</code><code>,</code>

<code>                    </code><code>"groupids"</code><code>: a,</code>

<code>##查询主机项目</code>

<code>def</code> <code>items(auth,a):</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>: a,</code>

<code>                  </code><code>},</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>##查询触发项目值和监控项目</code>

<code>def</code> <code>trigger(auth):</code>

<code>              </code><code>"jsonrpc"</code><code>:</code><code>"2.0"</code><code>,</code>

<code>              </code><code>"method"</code><code>: </code><code>"trigger.get"</code><code>,</code>

<code>              </code><code>"params"</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>: </code><code>"10108"</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>def</code>  <code>chaxun(groupid,items_value):</code>

<code>    </code><code>host </code><code>=</code> <code>hosts(auth, groupid) </code><code>##获取所有主机</code>

<code>    </code><code>host_name </code><code>=</code> <code>[]</code>

<code>    </code><code>host_id </code><code>=</code> <code>[]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>host:</code>

<code>        </code><code>host_id.append(i[</code><code>'hostid'</code><code>])</code>

<code>        </code><code>host_name.append(i[</code><code>'name'</code><code>])</code>

<code>    </code><code>hostall </code><code>=</code> <code>dict</code><code>(</code><code>zip</code><code>(host_id, host_name))  </code><code>## 所有主机     '10118': '云主机:10.8.8.65','10119': '云主机:10.8.8.66',</code>

<code>    </code><code>host_names </code><code>=</code> <code>[]</code>

<code>    </code><code>host_ids </code><code>=</code> <code>[]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>host_id:    </code><code>##筛选,  有监控项目的   符合要求的主机ID,和主机名字</code>

<code>        </code><code>host_id_value </code><code>=</code> <code>items(auth, i) </code><code>## [{'itemid': '29272', 'key_': 'BiosDate'},{'itemid': '29272', 'key_': 'BiosDate'}]</code>

<code>        </code><code>for</code> <code>index, value </code><code>in</code> <code>enumerate</code><code>(host_id_value):</code>

<code>            </code><code>for</code> <code>k, v </code><code>in</code> <code>value.items():</code>

<code>                </code><code>if</code>  <code>items_value  </code><code>in</code> <code>v:           </code><code>## items_value</code>

<code>                    </code><code>host_ids.append(host_id_value[index][</code><code>'itemid'</code><code>])</code>

<code>                    </code><code>host_names.append(i)</code>

<code>                    </code> 

<code>    </code><code>host_names_list </code><code>=</code> <code>[]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code>   <code>host_names:  </code><code>## 用符合要求的主机  获取它的名字</code>

<code>        </code><code>for</code> <code>k, v </code><code>in</code> <code>hostall.items():</code>

<code>            </code><code>if</code> <code>i </code><code>in</code> <code>k:</code>

<code>                </code><code>host_names_list.append(v)</code>

<code>    </code><code>history_value </code><code>=</code> <code>[]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>host_ids:         </code><code>##查询主机ID的最新历史值</code>

<code>        </code><code>history </code><code>=</code> <code>his(auth, i)</code>

<code>        </code><code>history_value.append(history[</code><code>0</code><code>][</code><code>'lastvalue'</code><code>])</code>

<code>    </code><code>host_value </code><code>=</code> <code>dict</code><code>(</code><code>zip</code><code>(host_names_list, history_value))</code>

<code>    </code><code>return</code>  <code>host_value  </code><code>#返回主机和值的对应关系</code>

<code>ret </code><code>=</code> <code>chaxun(</code><code>5</code><code>, </code><code>"ProcThreadCount.[2]"</code><code>)</code><code>#  组ID 和 想要查询的监控项目</code>

<code>print</code><code>(ret)</code>

本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1955480,如需转载请自行联系原作者

继续阅读