zabbix_manager 5.1.6 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -1
  3. data/README.md +69 -46
  4. data/lib/zabbix_manager/classes/actions.rb +3 -11
  5. data/lib/zabbix_manager/classes/applications.rb +2 -8
  6. data/lib/zabbix_manager/classes/configurations.rb +4 -9
  7. data/lib/zabbix_manager/classes/{drules.rb → discovery_rules.rb} +2 -8
  8. data/lib/zabbix_manager/classes/errors.rb +3 -0
  9. data/lib/zabbix_manager/classes/events.rb +2 -1
  10. data/lib/zabbix_manager/classes/graphs.rb +19 -15
  11. data/lib/zabbix_manager/classes/{hostgroups.rb → host_groups.rb} +5 -11
  12. data/lib/zabbix_manager/classes/host_interfaces.rb +261 -0
  13. data/lib/zabbix_manager/classes/hosts.rb +135 -89
  14. data/lib/zabbix_manager/classes/{httptests.rb → http_tests.rb} +2 -8
  15. data/lib/zabbix_manager/classes/items.rb +91 -87
  16. data/lib/zabbix_manager/classes/maintenance.rb +2 -1
  17. data/lib/zabbix_manager/classes/{mediatypes.rb → media_types.rb} +2 -7
  18. data/lib/zabbix_manager/classes/problems.rb +11 -40
  19. data/lib/zabbix_manager/classes/proxies.rb +5 -15
  20. data/lib/zabbix_manager/classes/proxy_groups.rb +16 -0
  21. data/lib/zabbix_manager/classes/roles.rb +13 -19
  22. data/lib/zabbix_manager/classes/screens.rb +11 -30
  23. data/lib/zabbix_manager/classes/scripts.rb +2 -8
  24. data/lib/zabbix_manager/classes/server.rb +1 -0
  25. data/lib/zabbix_manager/classes/templates.rb +2 -65
  26. data/lib/zabbix_manager/classes/triggers.rb +42 -45
  27. data/lib/zabbix_manager/classes/user_groups.rb +63 -0
  28. data/lib/zabbix_manager/classes/user_macros.rb +110 -0
  29. data/lib/zabbix_manager/classes/users.rb +15 -54
  30. data/lib/zabbix_manager/classes/value_maps.rb +52 -0
  31. data/lib/zabbix_manager/client.rb +148 -277
  32. data/lib/zabbix_manager/configuration.rb +107 -0
  33. data/lib/zabbix_manager/http_transport.rb +145 -97
  34. data/lib/zabbix_manager/log_sanitizer.rb +9 -19
  35. data/lib/zabbix_manager/monitoring/device.rb +393 -0
  36. data/lib/zabbix_manager/monitoring/expressions.rb +36 -0
  37. data/lib/zabbix_manager/monitoring/line.rb +175 -0
  38. data/lib/zabbix_manager/monitoring/line_items.rb +110 -0
  39. data/lib/zabbix_manager/monitoring/line_lifecycle.rb +169 -0
  40. data/lib/zabbix_manager/monitoring/line_plan.rb +113 -0
  41. data/lib/zabbix_manager/monitoring/thresholds.rb +182 -0
  42. data/lib/zabbix_manager/monitoring/traffic_items.rb +132 -0
  43. data/lib/zabbix_manager/monitoring/validation.rb +92 -0
  44. data/lib/zabbix_manager/monitoring.rb +216 -642
  45. data/lib/zabbix_manager/resource.rb +235 -0
  46. data/lib/zabbix_manager/traffic.rb +238 -0
  47. data/lib/zabbix_manager/version.rb +1 -1
  48. data/lib/zabbix_manager.rb +66 -179
  49. data/zabbix_manager.gemspec +6 -22
  50. metadata +41 -190
  51. data/lib/zabbix_manager/basic/basic_alias.rb +0 -42
  52. data/lib/zabbix_manager/basic/basic_func.rb +0 -55
  53. data/lib/zabbix_manager/basic/basic_init.rb +0 -50
  54. data/lib/zabbix_manager/basic/basic_logic.rb +0 -239
  55. data/lib/zabbix_manager/classes/hostinterfaces.rb +0 -189
  56. data/lib/zabbix_manager/classes/usergroups.rb +0 -75
  57. data/lib/zabbix_manager/classes/usermacros.rb +0 -222
  58. data/lib/zabbix_manager/classes/valuemaps.rb +0 -26
@@ -1,222 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ZabbixManager
4
- class Usermacros < Basic
5
- # 返回用于唯一识别用户宏的业务字段名。
6
- #
7
- # @return [String] 用户宏的业务标识字段名
8
- def identify
9
- "macro"
10
- end
11
-
12
- # 返回 Zabbix API 中用户宏对象的方法名前缀。
13
- #
14
- # @return [String] 用户宏对象的方法名前缀
15
- def method_name
16
- "usermacro"
17
- end
18
-
19
- # 按宏名称及主机条件查询主机宏 ID。
20
- #
21
- # @param data [Hash] 包含 macro 及可选主机过滤条件
22
- # @raise [ApiError] Zabbix API 调用失败或缺少标识字段时抛出
23
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
24
- # @return [Integer, nil] 主机宏 ID,未找到时返回 nil
25
- def get_id(data)
26
- log "[DEBUG] Call get_id with parameters: #{data.inspect}"
27
-
28
- # 兼容字符串键输入。
29
- data = data.deep_symbolize_keys if data.key?(identify)
30
- # 标识字段缺失时拒绝继续查询。
31
- name = data[identify.to_sym]
32
- raise Invalid, "#{identify} not supplied in call to get_id" if name.nil?
33
-
34
- result = request(data, "usermacro.get", "hostmacroid")
35
-
36
- !result.empty? && result[0].key?("hostmacroid") ? result[0]["hostmacroid"].to_i : nil
37
- end
38
-
39
- # 按宏名称查询全局宏 ID。
40
- #
41
- # @param data [Hash] 包含 macro 的全局宏过滤条件
42
- # @raise [ApiError] Zabbix API 调用失败或缺少标识字段时抛出
43
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
44
- # @return [Integer, nil] 全局宏 ID,未找到时返回 nil
45
- def get_id_global(data)
46
- log "[DEBUG] Call get_id_global with parameters: #{data.inspect}"
47
-
48
- # 兼容字符串键输入。
49
- data = data.deep_symbolize_keys if data.key?(identify)
50
- # 标识字段缺失时拒绝继续查询。
51
- name = data[identify.to_sym]
52
- raise Invalid, "#{identify} not supplied in call to get_id_global" if name.nil?
53
-
54
- result = request(data, "usermacro.get", "globalmacroid")
55
-
56
- !result.empty? && result[0].key?("globalmacroid") ? result[0]["globalmacroid"].to_i : nil
57
- end
58
-
59
- # 获取匹配主机宏的完整数据。
60
- #
61
- # @param data [Hash] 主机宏过滤条件
62
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
63
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
64
- # @return [Array<Hash>] 匹配的主机宏数据
65
- def get_full_data(data)
66
- log "[DEBUG] Call get_full_data with parameters: #{data.inspect}"
67
-
68
- request(data, "usermacro.get", "hostmacroid")
69
- end
70
-
71
- # 获取匹配全局宏的完整数据。
72
- #
73
- # @param data [Hash] 全局宏过滤条件
74
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
75
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
76
- # @return [Array<Hash>] 匹配的全局宏数据
77
- def get_full_data_global(data)
78
- log "[DEBUG] Call get_full_data_global with parameters: #{data.inspect}"
79
-
80
- request(data, "usermacro.get", "globalmacroid")
81
- end
82
-
83
- # 创建主机宏并返回首个新建宏的 ID。
84
- #
85
- # @param data [Hash] 包含 hostid、macro 和 value
86
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
87
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
88
- # @return [Integer, nil] 新建主机宏的 ID
89
- def create(data)
90
- request(data, "usermacro.create", "hostmacroids")
91
- end
92
-
93
- # 创建全局宏并返回首个新建宏的 ID。
94
- #
95
- # @param data [Hash] 包含 macro 和 value
96
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
97
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
98
- # @return [Integer, nil] 新建全局宏的 ID
99
- def create_global(data)
100
- request(data, "usermacro.createglobal", "globalmacroids")
101
- end
102
-
103
- # 删除指定主机宏并返回首个已删除宏的 ID。
104
- #
105
- # @param data [Hash, Integer, String] 要删除的 hostmacroid
106
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
107
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
108
- # @return [Integer, nil] 已删除主机宏的 ID
109
- def delete(data)
110
- data_delete = [data]
111
- request(data_delete, "usermacro.delete", "hostmacroids")
112
- end
113
-
114
- # 删除指定全局宏并返回首个已删除宏的 ID。
115
- #
116
- # @param data [Hash, Integer, String] 要删除的 globalmacroid
117
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
118
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
119
- # @return [Integer, nil] 已删除全局宏的 ID
120
- def delete_global(data)
121
- data_delete = [data]
122
- request(data_delete, "usermacro.deleteglobal", "globalmacroids")
123
- end
124
-
125
- # 更新主机宏并返回首个已更新宏的 ID。
126
- #
127
- # @param data [Hash] 包含 hostmacroid 及待更新字段
128
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
129
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
130
- # @return [Integer, nil] 已更新主机宏的 ID
131
- def update(data)
132
- request(data, "usermacro.update", "hostmacroids")
133
- end
134
-
135
- # 更新全局宏并返回首个已更新宏的 ID。
136
- #
137
- # @param data [Hash] 包含 globalmacroid 及待更新字段
138
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
139
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
140
- # @return [Integer, nil] 已更新全局宏的 ID
141
- def update_global(data)
142
- request(data, "usermacro.updateglobal", "globalmacroids")
143
- end
144
-
145
- # 按主机和宏名获取主机宏,不存在时创建。
146
- #
147
- # @param data [Hash] 包含 macro、hostid 及创建所需字段
148
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
149
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
150
- # @return [Integer] 主机宏 ID
151
- def get_or_create(data)
152
- log "[DEBUG] Call get_or_create with parameters: #{data.inspect}"
153
-
154
- unless (id = get_id(macro: data[:macro], hostid: data[:hostid]))
155
- id = create(data)
156
- end
157
- id
158
- end
159
-
160
- # 按宏名获取全局宏,不存在时创建。
161
- #
162
- # @param data [Hash] 包含 macro 及创建所需字段
163
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
164
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
165
- # @return [Integer] 全局宏 ID
166
- def get_or_create_global(data)
167
- log "[DEBUG] Call get_or_create_global with parameters: #{data.inspect}"
168
-
169
- unless (id = get_id_global(macro: data[:macro], hostid: data[:hostid]))
170
- id = create_global(data)
171
- end
172
- id
173
- end
174
-
175
- # 按主机和宏名创建或更新主机宏。
176
- #
177
- # @param data [Hash] 包含 macro、hostid 及宏属性
178
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
179
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
180
- # @return [Integer] 主机宏 ID
181
- def create_or_update(data)
182
- hostmacroid = get_id(macro: data[:macro], hostid: data[:hostid])
183
- hostmacroid ? update(data.merge(hostmacroid: hostmacroid)) : create(data)
184
- end
185
-
186
- # 按宏名创建或更新全局宏。
187
- #
188
- # @param data [Hash] 包含 macro 及宏属性
189
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
190
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
191
- # @return [Integer] 全局宏 ID
192
- def create_or_update_global(data)
193
- globalmacroid = get_id_global(macro: data[:macro], hostid: data[:hostid])
194
- globalmacroid ? update_global(data.merge(globalmacroid: globalmacroid)) : create_global(data)
195
- end
196
-
197
- private
198
-
199
- # 统一处理主机宏与全局宏请求,并按不同响应键提取结果。
200
- #
201
- # @param data [Hash, Array] Zabbix API 请求参数
202
- # @param method [String] 要调用的 Zabbix API 方法
203
- # @param result_key [String] 用于解析主机宏或全局宏结果的字段名
204
- # @raise [ApiError] Zabbix API 返回业务错误时抛出
205
- # @raise [TransportError] Zabbix 服务返回非成功 HTTP 状态时抛出
206
- # @return [Array<Hash>, Integer, nil] 查询结果或变更后的宏 ID
207
- def request(data, method, result_key)
208
- # Zabbix 查询与变更接口使用不同的响应格式。
209
- if method.include?(".get")
210
- if result_key.include?("global")
211
- @client.api_request(method: method, params: { globalmacro: true, filter: data })
212
- else
213
- @client.api_request(method: method, params: { filter: data })
214
- end
215
- else
216
- result = @client.api_request(method: method, params: data)
217
-
218
- result.key?(result_key) && !result[result_key].empty? ? result[result_key][0].to_i : nil
219
- end
220
- end
221
- end
222
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ZabbixManager
4
- class ValueMaps < Basic
5
- # 返回 Zabbix API 中值映射对象的方法名前缀。
6
- #
7
- # @return [String] 值映射对象的方法名前缀
8
- def method_name
9
- "valuemap"
10
- end
11
-
12
- # 返回值映射对象的主键字段名。
13
- #
14
- # @return [String] 值映射对象的主键字段名
15
- def key
16
- "valuemapid"
17
- end
18
-
19
- # 返回用于唯一识别值映射的业务字段名。
20
- #
21
- # @return [String] 值映射对象的业务标识字段名
22
- def identify
23
- "name"
24
- end
25
- end
26
- end