zabbix_manager 5.1.4 → 5.1.5
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.
- checksums.yaml +4 -4
- data/lib/zabbix_manager/classes/graphs.rb +4 -4
- data/lib/zabbix_manager/classes/hosts.rb +22 -3
- data/lib/zabbix_manager/classes/httptests.rb +1 -1
- data/lib/zabbix_manager/classes/items.rb +8 -11
- data/lib/zabbix_manager/client.rb +3 -2
- data/lib/zabbix_manager/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72554dfff6fd4d60ac8be48bc766c9367e4b07f9fa2e3df7500cb21b49a6b033
|
4
|
+
data.tar.gz: 01bea1ff565779f4ce5dab0b9a53d1832e80f9581b58dcc2e9bc943e83da9a46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28bfea0b7a7bd6d99d394a0168a3399275af50fe139609141d03a996e6f488f484e8601529a58bf8710c492edd401514d66771e3b1411a53500898a05e8b6974
|
7
|
+
data.tar.gz: a25a5c306cffa53d2b601c6f281e5ab5afbfb72fd8cef106683668f7d4b907b047b5d4ab76fcc2aa1e62b9df979ba5129628443c53601effe0de95facb69dd90
|
@@ -38,11 +38,11 @@ class ZabbixManager
|
|
38
38
|
)
|
39
39
|
|
40
40
|
result.filter_map do |graph|
|
41
|
-
|
42
|
-
name
|
43
|
-
filter
|
41
|
+
graphid = graph["graphid"]
|
42
|
+
name = graph["name"]
|
43
|
+
filter = data[:filter]
|
44
44
|
|
45
|
-
|
45
|
+
graphid if filter.nil? || name.match?(/#{filter}/)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -64,17 +64,29 @@ class ZabbixManager
|
|
64
64
|
|
65
65
|
# 使用 Zabbix API 创建或更新 Zabbix 对象
|
66
66
|
def create_or_update(data)
|
67
|
+
# 输出调试日志,显示方法调用和参数信息
|
67
68
|
log "[DEBUG] 调用 #{method_name}.create_or_update 方法,参数: #{data.inspect}"
|
68
69
|
|
70
|
+
# 获取 Zabbix 对象的 ID
|
69
71
|
hostid = get_id(identify.to_sym => data[identify.to_sym])
|
72
|
+
# 如果不存在对应的对象ID,则创建新对象
|
70
73
|
return create(data) unless hostid
|
71
74
|
|
75
|
+
# 获取对象的接口 ID
|
72
76
|
interface_id = get_interfaceid(hostid)
|
77
|
+
# 如果接口 ID 不存在,抛出异常
|
73
78
|
raise ZbxError, "#{data.inspect} get_interfaceid 查无记录" unless interface_id
|
74
79
|
|
75
|
-
|
80
|
+
# 复制数据以避免修改原始数据
|
81
|
+
dump_data = data.dup
|
82
|
+
|
83
|
+
# 从数据中提取并删除 interfaces,并合并接口 ID
|
76
84
|
interfaces = dump_data.delete(:interfaces)&.merge(interfaceid: interface_id)
|
77
|
-
|
85
|
+
|
86
|
+
# 构建参数,包括 interfaces 和 Zabbix 对象的键值对
|
87
|
+
params = dump_data.merge(interfaces: interfaces).merge(key.to_sym => hostid.to_s)
|
88
|
+
|
89
|
+
# 更新对象
|
78
90
|
update(params)
|
79
91
|
end
|
80
92
|
|
@@ -86,7 +98,14 @@ class ZabbixManager
|
|
86
98
|
method: "hostinterface.get",
|
87
99
|
params: { output: "interfaceid", hostids: hostid }
|
88
100
|
)
|
89
|
-
|
101
|
+
|
102
|
+
# 使用 dig 方法获取深层嵌套的值
|
103
|
+
interface_id = result&.dig(0, "interfaceid")&.to_i
|
104
|
+
|
105
|
+
# 如果获取接口 ID 失败,提供更具体的错误信息
|
106
|
+
raise ZbxError, "无法获取 #{hostid} 的接口 ID" if interface_id.nil?
|
107
|
+
|
108
|
+
interface_id
|
90
109
|
end
|
91
110
|
|
92
111
|
# 在 Hosts 中使用 Zabbix API 取消关联/移除模板
|
@@ -23,7 +23,7 @@ class ZabbixManager
|
|
23
23
|
|
24
24
|
# 通过 Zabbix API 获取或创建 HttpTest 对象
|
25
25
|
def get_or_create(data)
|
26
|
-
log "[DEBUG]
|
26
|
+
log "[DEBUG] 使用参数调用 get_or_create: #{data.inspect}"
|
27
27
|
|
28
28
|
unless (id = get_id(name: data[:name], hostid: data[:hostid]))
|
29
29
|
id = create(data)
|
@@ -52,7 +52,7 @@ class ZabbixManager
|
|
52
52
|
|
53
53
|
# 通过 Zabbix API 获取或创建 Item 对象
|
54
54
|
def get_or_create(data)
|
55
|
-
log "[DEBUG]
|
55
|
+
log "[DEBUG] 调用 #{method_name}.get_or_create 方法,参数: #{data.inspect}"
|
56
56
|
|
57
57
|
if (id = get_id(name: data[:name], hostid: data[:hostid]))
|
58
58
|
id
|
@@ -80,19 +80,16 @@ class ZabbixManager
|
|
80
80
|
result = get_raw(
|
81
81
|
{
|
82
82
|
output: "extend",
|
83
|
-
hostids: hostid,
|
84
|
-
search: {
|
85
|
-
name: iface
|
86
|
-
}
|
83
|
+
hostids: [hostid],
|
84
|
+
search: { name: iface }
|
87
85
|
}
|
88
|
-
)
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
}
|
86
|
+
)
|
87
|
+
|
88
|
+
# 过滤结果,只保留符合正则表达式的项
|
89
|
+
filtered_result = result.select { |item| item["snmp_oid"].match?(/(1.3.6.1.2.1.31.1.1.1.(6|10|15)|1.3.6.1.2.1.2.2.1.8)./) }
|
93
90
|
|
94
91
|
# 如果结果为空,则返回 nil;否则,返回排序后的结果
|
95
|
-
|
92
|
+
filtered_result.empty? ? nil : filtered_result.sort_by { |item| item["key_"] }
|
96
93
|
end
|
97
94
|
end
|
98
95
|
end
|
@@ -60,7 +60,7 @@ class ZabbixManager
|
|
60
60
|
end
|
61
61
|
|
62
62
|
# 检查 Zabbix API 版本是否受支持
|
63
|
-
unless api_version.match?(/^
|
63
|
+
unless api_version.match?(/^[4-7]\.\d+\.\d+$/)
|
64
64
|
message = "Zabbix API版本:#{api_version} 不受此版本的 zabbix_manager 支持"
|
65
65
|
if @options[:ignore_version]
|
66
66
|
log "[WARNING] #{message}"
|
@@ -151,10 +151,12 @@ class ZabbixManager
|
|
151
151
|
if result["error"]
|
152
152
|
# 构建错误消息,包括服务器返回的错误信息和请求的详细信息
|
153
153
|
msg = <<~MOJO
|
154
|
+
|
154
155
|
---------------------------------------------------------------
|
155
156
|
Server answer API error: #{JSON.pretty_unparse(result["error"])}
|
156
157
|
on request: #{pretty_body(body)}
|
157
158
|
---------------------------------------------------------------
|
159
|
+
|
158
160
|
MOJO
|
159
161
|
|
160
162
|
# 抛出自定义异常 ZbxError,并传递错误消息和完整的响应结果
|
@@ -182,7 +184,6 @@ class ZabbixManager
|
|
182
184
|
# 通用的 API 调用发起方法
|
183
185
|
def api_request(body)
|
184
186
|
# 调用之前定义的 json_payload 方法,将请求信息转换为 JSON 字符串
|
185
|
-
# 然后调用之前定义的 _request 方法,发起 API 请求并解析响应结果
|
186
187
|
_request json_payload(body)
|
187
188
|
end
|
188
189
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbix_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.1.
|
4
|
+
version: 5.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WENWU YAN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|