zabbix_manager 5.1.3 → 5.1.4
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/basic/basic_alias.rb +3 -20
- data/lib/zabbix_manager/basic/basic_func.rb +24 -46
- data/lib/zabbix_manager/basic/basic_init.rb +8 -24
- data/lib/zabbix_manager/basic/basic_logic.rb +66 -104
- data/lib/zabbix_manager/classes/actions.rb +11 -21
- data/lib/zabbix_manager/classes/applications.rb +5 -19
- data/lib/zabbix_manager/classes/configurations.rb +5 -19
- data/lib/zabbix_manager/classes/drules.rb +6 -22
- data/lib/zabbix_manager/classes/errors.rb +19 -9
- data/lib/zabbix_manager/classes/events.rb +2 -6
- data/lib/zabbix_manager/classes/graphs.rb +16 -47
- data/lib/zabbix_manager/classes/hostgroups.rb +3 -9
- data/lib/zabbix_manager/classes/hostinterfaces.rb +7 -15
- data/lib/zabbix_manager/classes/hosts.rb +42 -76
- data/lib/zabbix_manager/classes/httptests.rb +7 -23
- data/lib/zabbix_manager/classes/items.rb +12 -68
- data/lib/zabbix_manager/classes/maintenance.rb +2 -6
- data/lib/zabbix_manager/classes/mediatypes.rb +20 -52
- data/lib/zabbix_manager/classes/problems.rb +38 -66
- data/lib/zabbix_manager/classes/proxies.rb +7 -26
- data/lib/zabbix_manager/classes/roles.rb +18 -57
- data/lib/zabbix_manager/classes/screens.rb +7 -21
- data/lib/zabbix_manager/classes/scripts.rb +7 -10
- data/lib/zabbix_manager/classes/server.rb +1 -6
- data/lib/zabbix_manager/classes/templates.rb +15 -49
- data/lib/zabbix_manager/classes/triggers.rb +15 -49
- data/lib/zabbix_manager/classes/unusable.rb +2 -1
- data/lib/zabbix_manager/classes/usergroups.rb +6 -28
- data/lib/zabbix_manager/classes/usermacros.rb +19 -113
- data/lib/zabbix_manager/classes/users.rb +7 -34
- data/lib/zabbix_manager/classes/valuemaps.rb +5 -26
- data/lib/zabbix_manager/client.rb +65 -69
- data/lib/zabbix_manager/version.rb +1 -2
- data/lib/zabbix_manager.rb +33 -46
- metadata +3 -3
@@ -2,16 +2,12 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Maintenance < Basic
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# @return [String]
|
5
|
+
# 用于通过 Zabbix API 与维护窗口对象交互的方法名称
|
8
6
|
def method_name
|
9
7
|
"maintenance"
|
10
8
|
end
|
11
9
|
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# @return [String]
|
10
|
+
# 用于通过 Zabbix API 识别特定维护窗口对象的 id 字段名称
|
15
11
|
def identify
|
16
12
|
"name"
|
17
13
|
end
|
@@ -2,64 +2,45 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Mediatypes < Basic
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# @return [String]
|
5
|
+
# 与 Zabbix API 交互的媒体类型方法名称
|
8
6
|
def method_name
|
9
7
|
"mediatype"
|
10
8
|
end
|
11
9
|
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# @return [String]
|
10
|
+
# 识别特定媒体类型对象的 id 字段名称
|
15
11
|
def identify
|
16
12
|
"name"
|
17
13
|
end
|
18
14
|
|
19
|
-
#
|
20
|
-
#
|
21
|
-
# @return [Hash]
|
15
|
+
# 默认选项,用于通过 Zabbix API 创建媒体类型对象
|
22
16
|
def default_options
|
23
17
|
{
|
24
|
-
name: "", #
|
25
|
-
description: "", #
|
26
|
-
type: 0, # 0 -
|
18
|
+
name: "", # 媒体类型名称
|
19
|
+
description: "", # 描述
|
20
|
+
type: 0, # 0 - 电子邮件,1 - 外部脚本,2 - 短信,3 - Jabber,100 - EzTexting
|
27
21
|
smtp_server: "",
|
28
22
|
smtp_helo: "",
|
29
|
-
smtp_email: "", #
|
30
|
-
exec_path: "", #
|
31
|
-
gsm_modem: "", #
|
32
|
-
username: "", #
|
33
|
-
passwd: "" #
|
23
|
+
smtp_email: "", # Zabbix 服务器的电子邮件地址
|
24
|
+
exec_path: "", # 外部脚本的名称
|
25
|
+
gsm_modem: "", # GSM modem 的串口设备名称
|
26
|
+
username: "", # Zabbix 服务器使用的 Jabber 用户名
|
27
|
+
passwd: "" # Zabbix 服务器使用的 Jabber 密码
|
34
28
|
}
|
35
29
|
end
|
36
30
|
|
37
|
-
#
|
38
|
-
# STDERR.puts
|
39
|
-
# STDERR.puts message.to_s
|
40
|
-
# STDERR.puts
|
41
|
-
# end
|
42
|
-
|
43
|
-
# Update MediaType object using API
|
44
|
-
#
|
45
|
-
# @param data [Hash] Should include object's id field name (identify) and id value
|
46
|
-
# @param force [Boolean] Whether to force an object update even if provided data matches Zabbix
|
47
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
48
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
49
|
-
# @return [Integer] The object id if a single object is created
|
50
|
-
# @return [Boolean] True/False if multiple objects are created
|
31
|
+
# 使用 API 更新媒体类型对象
|
51
32
|
def update(data, force = false)
|
52
|
-
log "[DEBUG]
|
33
|
+
log "[DEBUG] 调用 update 方法,参数: #{data.inspect}"
|
53
34
|
if data[key.to_sym].nil?
|
54
35
|
data[key.to_sym] = get_id(data)
|
55
|
-
log "[DEBUG]
|
36
|
+
log "[DEBUG] 用 ID 丰富数据: #{data.inspect}"
|
56
37
|
end
|
57
38
|
dump = {}
|
58
39
|
dump_by_id(key.to_sym => data[key.to_sym]).each do |item|
|
59
40
|
dump = symbolize_keys(item) if item[key].to_i == data[key.to_sym].to_i
|
60
41
|
end
|
61
42
|
if hash_equals?(dump, data) && !force
|
62
|
-
log "[DEBUG]
|
43
|
+
log "[DEBUG] 键 #{dump} 和 #{data} 相等,跳过更新"
|
63
44
|
data[key.to_sym].to_i
|
64
45
|
else
|
65
46
|
data_update = [data]
|
@@ -68,19 +49,12 @@ class ZabbixManager
|
|
68
49
|
end
|
69
50
|
end
|
70
51
|
|
71
|
-
#
|
72
|
-
#
|
73
|
-
# @param data [Hash]
|
74
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call or missing object's id field name (identify).
|
75
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
76
|
-
# @return [Integer, NilClass] Zabbix object id
|
52
|
+
# 从 API 获取媒体类型对象的 id
|
77
53
|
def get_id(data)
|
78
|
-
log "[DEBUG]
|
79
|
-
# symbolize keys if the user used string keys instead of symbols
|
54
|
+
log "[DEBUG] 调用 get_id 方法,参数: #{data.inspect}"
|
80
55
|
data = symbolize_keys(data) if data.key?(identify)
|
81
|
-
# raise an error if identify name was not supplied
|
82
56
|
name = data[identify.to_sym]
|
83
|
-
raise ZbxError, "#{identify}
|
57
|
+
raise ZbxError, "未提供 #{identify} 参数,#{data} (#{method_name})" if name.nil?
|
84
58
|
|
85
59
|
result = @client.api_request(
|
86
60
|
method: "#{method_name}.get",
|
@@ -94,15 +68,9 @@ class ZabbixManager
|
|
94
68
|
id
|
95
69
|
end
|
96
70
|
|
97
|
-
#
|
98
|
-
#
|
99
|
-
# @param data [Hash] Should include object's id field name (identify) and id value
|
100
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
101
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
102
|
-
# @return [Integer] The object id if a single object is created
|
103
|
-
# @return [Boolean] True/False if multiple objects are created
|
71
|
+
# 创建或更新媒体类型对象
|
104
72
|
def create_or_update(data)
|
105
|
-
log "[DEBUG]
|
73
|
+
log "[DEBUG] 调用 create_or_update 方法,参数: #{data.inspect}"
|
106
74
|
|
107
75
|
id = get_id(identify.to_sym => data[identify.to_sym])
|
108
76
|
id ? update(data.merge(key.to_sym => id.to_s)) : create(data)
|
@@ -5,93 +5,65 @@ class ZabbixManager
|
|
5
5
|
require "active_support"
|
6
6
|
require "active_support/core_ext/date/calculations"
|
7
7
|
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# @return [String]
|
8
|
+
# 与 Zabbix API 交互的问题方法名称
|
11
9
|
def method_name
|
12
10
|
"problem"
|
13
11
|
end
|
14
12
|
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# @return [String]
|
13
|
+
# 识别特定问题对象的 id 字段名称
|
18
14
|
def identify
|
19
15
|
"name"
|
20
16
|
end
|
21
17
|
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# @param data [Hash] Should include desired object's key and value
|
25
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
26
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
27
|
-
# @return [Hash]
|
18
|
+
# 通过键值对从 Zabbix API 转储问题对象数据
|
28
19
|
def dump_by_id(data)
|
29
|
-
log "[DEBUG]
|
20
|
+
log "[DEBUG] 调用 #{method_name}.dump_by_id 方法,参数: #{data.inspect}"
|
30
21
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
output: "extend"
|
38
|
-
}
|
39
|
-
)
|
22
|
+
get_raw({
|
23
|
+
filter: {
|
24
|
+
identify.to_sym => data[identify.to_sym]
|
25
|
+
},
|
26
|
+
output: "extend"
|
27
|
+
})
|
40
28
|
end
|
41
29
|
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# @param data [Hash] Should include object's id field name (identify) and id value
|
45
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
46
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
47
|
-
# @return [Hash]
|
30
|
+
# 从 Zabbix API 获取完整/扩展的问题数据
|
48
31
|
def get_full_data(data)
|
49
|
-
log "[DEBUG]
|
32
|
+
log "[DEBUG] 调用 #{method_name}.get_full_data 方法,参数: #{data.inspect}"
|
50
33
|
|
51
34
|
data = symbolize_keys(data)
|
52
35
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
selectSuppressionData: "extend"
|
77
|
-
}
|
78
|
-
)
|
36
|
+
get_raw({
|
37
|
+
filter: {
|
38
|
+
identify.to_sym => data[identify.to_sym]
|
39
|
+
},
|
40
|
+
eventids: data[:eventids] || nil,
|
41
|
+
groupids: data[:groupids] || nil,
|
42
|
+
hostids: data[:hostids] || nil,
|
43
|
+
objectids: data[:objectids] || nil,
|
44
|
+
applicationids: data[:applicationids] || nil,
|
45
|
+
tags: data[:tags] || nil,
|
46
|
+
time_from: data[:time_from] || nil,
|
47
|
+
time_till: data[:time_till] || nil,
|
48
|
+
eventid_from: data[:eventid_from] || nil,
|
49
|
+
eventid_till: data[:eventid_till] || nil,
|
50
|
+
recent: data[:recent] || false,
|
51
|
+
sortfield: data[:sortfield] || ["eventid"],
|
52
|
+
sortorder: data[:sortorder] || "DESC",
|
53
|
+
countOutput: data[:countOutput] || nil,
|
54
|
+
output: "extend",
|
55
|
+
selectAcknowledges: "extend",
|
56
|
+
selectTags: "extend",
|
57
|
+
selectSuppressionData: "extend"
|
58
|
+
})
|
79
59
|
end
|
80
60
|
|
81
|
-
#
|
82
|
-
#
|
83
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
84
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
85
|
-
# @return [Hash] Array of matching objects
|
61
|
+
# 获取所有问题对象的完整/扩展 Zabbix 数据
|
86
62
|
def all
|
87
63
|
get_full_data({})
|
88
64
|
end
|
89
65
|
|
90
|
-
#
|
91
|
-
# @note 自动确认14天前的问题单
|
92
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
93
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
94
|
-
# @return [Array, NilClass] Array of matching objects
|
66
|
+
# 根据给定参数自动确认问题
|
95
67
|
def ack_problem
|
96
68
|
time_from = 90.days.ago.at_beginning_of_day.to_i
|
97
69
|
time_till = 7.days.ago.at_beginning_of_day.to_i
|
@@ -107,7 +79,7 @@ class ZabbixManager
|
|
107
79
|
params: {
|
108
80
|
eventids: event_ids,
|
109
81
|
action: 2,
|
110
|
-
message: "
|
82
|
+
message: "本次告警符合自动刷新规则,已通过接口处理且刷新时间为:#{Time.now}"
|
111
83
|
}
|
112
84
|
)
|
113
85
|
result.empty? ? nil : result.map { |i| { eventids: i["eventids"] } }
|
@@ -2,48 +2,29 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Proxies < Basic
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# @return [String]
|
5
|
+
# 与 Zabbix API 交互的代理方法名称
|
8
6
|
def method_name
|
9
7
|
"proxy"
|
10
8
|
end
|
11
9
|
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# @return [String]
|
10
|
+
# 识别特定代理对象的 id 字段名称
|
15
11
|
def identify
|
16
12
|
"host"
|
17
13
|
end
|
18
14
|
|
19
|
-
#
|
20
|
-
#
|
21
|
-
# @param data [Array] Should include array of proxyid's
|
22
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
23
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
24
|
-
# @return [Integer, NilClass] The Proxy object id that was deleted
|
15
|
+
# 使用 Zabbix API 删除代理对象
|
25
16
|
def delete(data)
|
26
17
|
result = @client.api_request(method: "proxy.delete", params: data)
|
27
18
|
result.empty? ? nil : result["proxyids"][0].to_i
|
28
19
|
end
|
29
20
|
|
30
|
-
#
|
31
|
-
|
32
|
-
# @param data [Array] Should include array of proxyid's
|
33
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
34
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
35
|
-
# @return [Boolean] Returns true if the given proxies are readable
|
36
|
-
def isreadable(data)
|
21
|
+
# 检查代理对象是否可读
|
22
|
+
def is_readable(data)
|
37
23
|
@client.api_request(method: "proxy.isreadable", params: data)
|
38
24
|
end
|
39
25
|
|
40
|
-
#
|
41
|
-
|
42
|
-
# @param data [Array] Should include array of proxyid's
|
43
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
44
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
45
|
-
# @return [Boolean] Returns true if the given proxies are writable
|
46
|
-
def iswritable(data)
|
26
|
+
# 检查代理对象是否可写
|
27
|
+
def is_writable(data)
|
47
28
|
@client.api_request(method: "proxy.iswritable", params: data)
|
48
29
|
end
|
49
30
|
end
|
@@ -2,85 +2,51 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Roles < Basic
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# @return [String]
|
5
|
+
# 与 Zabbix API 交互的角色方法名称
|
8
6
|
def method_name
|
9
7
|
"role"
|
10
8
|
end
|
11
9
|
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# @return [String]
|
15
|
-
def key
|
16
|
-
"roleid"
|
17
|
-
end
|
18
|
-
|
19
|
-
# The id field name used for identifying specific Role objects via Zabbix API
|
20
|
-
#
|
21
|
-
# @return [String]
|
10
|
+
# 识别特定角色对象的 id 字段名称
|
22
11
|
def identify
|
23
12
|
"name"
|
24
13
|
end
|
25
14
|
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# @param data [Hash] Needs to include usrgrpids and hostgroupids along with permissions to set
|
29
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
30
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
31
|
-
# @return [Integer, NilClass] Zabbix object id (usergroup)
|
15
|
+
# 使用 Zabbix API 为用户组设置权限
|
32
16
|
def rules(data)
|
33
|
-
rules
|
17
|
+
rules = data[:rules] || 2
|
34
18
|
result = @client.api_request(
|
35
19
|
method: "role.update",
|
36
20
|
params: {
|
37
21
|
roleid: data[:roleid],
|
38
|
-
rules:
|
22
|
+
rules: data[:hostgroupids].map { |t| { permission: permission, id: t } }
|
39
23
|
}
|
40
24
|
)
|
41
25
|
result ? result["usrgrpids"][0].to_i : nil
|
42
26
|
end
|
43
27
|
|
44
|
-
#
|
45
|
-
#
|
46
|
-
# @deprecated Zabbix has removed massAdd in favor of update.
|
47
|
-
# @param data [Hash] Needs to include userids and usrgrpids to mass add users to groups
|
48
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
49
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
50
|
-
# @return [Integer] Zabbix object id (usergroup)
|
28
|
+
# 使用 Zabbix API 将用户添加到用户组
|
51
29
|
def add_user(data)
|
52
30
|
update_users(data)
|
53
31
|
end
|
54
32
|
|
55
|
-
#
|
56
|
-
#
|
57
|
-
# @param data [Hash] Should include desired object's key and value
|
58
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
59
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
60
|
-
# @return [Hash]
|
33
|
+
# 从 Zabbix API 中根据指定键和值获取角色对象的数据
|
61
34
|
def dump_by_id(data)
|
62
|
-
log "[DEBUG]
|
35
|
+
log "[DEBUG] 调用 dump_by_id 方法,参数: #{data.inspect}"
|
63
36
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
output: "extend",
|
37
|
+
get_raw(
|
38
|
+
{
|
39
|
+
output: "extend",
|
68
40
|
selectRules: "extend",
|
69
|
-
roleids:
|
41
|
+
roleids: data[:id]
|
70
42
|
}
|
71
43
|
)
|
72
44
|
end
|
73
45
|
|
74
|
-
#
|
75
|
-
#
|
76
|
-
# @param data [Hash] Should include host value to query for matching graphs
|
77
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
78
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
79
|
-
# @return [Array] Returns array of Graph ids
|
46
|
+
# 通过角色名称从 Zabbix API 获取角色 id
|
80
47
|
def get_ids_by_name(data)
|
81
|
-
result =
|
82
|
-
|
83
|
-
params: {
|
48
|
+
result = get_raw(
|
49
|
+
{
|
84
50
|
filter: {
|
85
51
|
name: data[:name]
|
86
52
|
},
|
@@ -93,20 +59,15 @@ class ZabbixManager
|
|
93
59
|
end
|
94
60
|
end
|
95
61
|
|
96
|
-
#
|
97
|
-
#
|
98
|
-
# @param data [Hash] Needs to include userids and usrgrpids to mass update users in groups
|
99
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
100
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
101
|
-
# @return [Integer, NilClass] Zabbix object id (usergroup)
|
62
|
+
# 使用 Zabbix API 更新用户角色中的用户
|
102
63
|
def update_users(data)
|
103
64
|
user_groups = data[:usrgrpids].map do |t|
|
104
65
|
{
|
105
66
|
usrgrpid: t,
|
106
|
-
userids:
|
67
|
+
userids: data[:userids]
|
107
68
|
}
|
108
69
|
end
|
109
|
-
result
|
70
|
+
result = @client.api_request(
|
110
71
|
method: "usergroup.update",
|
111
72
|
params: user_groups
|
112
73
|
)
|
@@ -21,37 +21,23 @@ class ZabbixManager
|
|
21
21
|
# SCREEN_RESOURCE_SYSTEM_STATUS => 15,
|
22
22
|
# SCREEN_RESOURCE_HOST_TRIGGERS => 16
|
23
23
|
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# @return [String]
|
24
|
+
# 与 Zabbix API 交互的屏幕方法名称
|
27
25
|
def method_name
|
28
26
|
"screen"
|
29
27
|
end
|
30
28
|
|
31
|
-
#
|
32
|
-
#
|
33
|
-
# @return [String]
|
29
|
+
# 用于通过 Zabbix API 标识特定屏幕对象的 ID 字段名称
|
34
30
|
def identify
|
35
31
|
"name"
|
36
32
|
end
|
37
33
|
|
38
|
-
#
|
39
|
-
#
|
40
|
-
# @param data [String, Array] Should include id's of the screens to delete
|
41
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
42
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
43
|
-
# @return [Integer, NilClass] Zabbix object id
|
34
|
+
# 删除 Zabbix API 中的屏幕对象
|
44
35
|
def delete(data)
|
45
36
|
result = @client.api_request(method: "screen.delete", params: [data])
|
46
37
|
result.empty? ? nil : result["screenids"][0].to_i
|
47
38
|
end
|
48
39
|
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# @param data [Hash] Needs to include screen_name and graphids to properly identify Screens via Zabbix API
|
52
|
-
# @raise [ZbxError] Error returned when there is a problem with the Zabbix API call.
|
53
|
-
# @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
|
54
|
-
# @return [Integer] Zabbix object id
|
40
|
+
# 使用 Zabbix API 为主机获取或创建屏幕对象
|
55
41
|
def get_or_create_for_host(data)
|
56
42
|
screen_name = data[:screen_name]
|
57
43
|
graphids = data[:graphids]
|
@@ -61,13 +47,13 @@ class ZabbixManager
|
|
61
47
|
halign = data[:halign] || 2
|
62
48
|
rowspan = data[:rowspan] || 1
|
63
49
|
colspan = data[:colspan] || 1
|
64
|
-
height = data[:height] || 320
|
65
|
-
width = data[:width] || 200
|
50
|
+
height = data[:height] || 320
|
51
|
+
width = data[:width] || 200
|
66
52
|
vsize = data[:vsize] || [1, (graphids.size / hsize).to_i].max
|
67
53
|
screenid = get_id(name: screen_name)
|
68
54
|
|
69
55
|
unless screenid
|
70
|
-
#
|
56
|
+
# 创建屏幕
|
71
57
|
graphids.each_with_index do |graphid, index|
|
72
58
|
screenitems << {
|
73
59
|
resourcetype: 0,
|
@@ -2,24 +2,20 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Scripts < Basic
|
5
|
+
# 与 Zabbix API 交互的方法名称
|
5
6
|
def method_name
|
6
7
|
"script"
|
7
8
|
end
|
8
9
|
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# @return [String]
|
10
|
+
# 用于通过 Zabbix API 标识特定脚本对象的 ID 字段名称
|
12
11
|
def identify
|
13
12
|
"name"
|
14
13
|
end
|
15
14
|
|
16
|
-
#
|
17
|
-
# data - A Hash containing the scriptid and hostid
|
18
|
-
#
|
19
|
-
# Example:
|
20
|
-
# execute({ scriptid: '12', hostid: '32 })
|
15
|
+
# 执行 Zabbix API 中特定主机上的脚本
|
21
16
|
#
|
22
|
-
#
|
17
|
+
# 示例:
|
18
|
+
# execute({ scriptid: '12', hostid: '32' })
|
23
19
|
def execute(data)
|
24
20
|
@client.api_request(
|
25
21
|
method: "script.execute",
|
@@ -30,7 +26,8 @@ class ZabbixManager
|
|
30
26
|
)
|
31
27
|
end
|
32
28
|
|
33
|
-
|
29
|
+
# 使用 Zabbix API 通过主机获取脚本
|
30
|
+
def get_scripts_by_host(data)
|
34
31
|
@client.api_request(method: "script.getscriptsbyhosts", params: data)
|
35
32
|
end
|
36
33
|
end
|
@@ -2,14 +2,9 @@
|
|
2
2
|
|
3
3
|
class ZabbixManager
|
4
4
|
class Server
|
5
|
-
# @return [String]
|
6
5
|
attr_reader :version
|
7
6
|
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# @param client [ZabbixManager::Client]
|
11
|
-
# @return [ZabbixManager::Client]
|
12
|
-
# @return [String] Zabbix API version number
|
7
|
+
# 初始化一个新的 Server 对象,使用 ZabbixManager 客户端,并获取 Zabbix 服务器 API 版本
|
13
8
|
def initialize(client)
|
14
9
|
@client = client
|
15
10
|
@version = @client.api_version
|