zabbix_manager 5.0.5 → 5.0.6

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/vcs.xml +6 -0
  3. data/.idea/workspace.xml +2 -4
  4. data/.rubocop.yml +1 -1
  5. data/lib/zabbix_manager/basic/basic_alias.rb +2 -0
  6. data/lib/zabbix_manager/basic/basic_extend.rb +11 -9
  7. data/lib/zabbix_manager/basic/basic_func.rb +9 -5
  8. data/lib/zabbix_manager/basic/basic_init.rb +6 -4
  9. data/lib/zabbix_manager/basic/basic_logic.rb +7 -5
  10. data/lib/zabbix_manager/classes/actions.rb +6 -4
  11. data/lib/zabbix_manager/classes/applications.rb +4 -2
  12. data/lib/zabbix_manager/classes/configurations.rb +6 -4
  13. data/lib/zabbix_manager/classes/drules.rb +5 -3
  14. data/lib/zabbix_manager/classes/errors.rb +5 -3
  15. data/lib/zabbix_manager/classes/events.rb +4 -3
  16. data/lib/zabbix_manager/classes/graphs.rb +11 -9
  17. data/lib/zabbix_manager/classes/hostgroups.rb +13 -11
  18. data/lib/zabbix_manager/classes/hosts.rb +36 -34
  19. data/lib/zabbix_manager/classes/httptests.rb +4 -2
  20. data/lib/zabbix_manager/classes/items.rb +51 -49
  21. data/lib/zabbix_manager/classes/maintenance.rb +4 -2
  22. data/lib/zabbix_manager/classes/mediatypes.rb +15 -13
  23. data/lib/zabbix_manager/classes/problems.rb +31 -30
  24. data/lib/zabbix_manager/classes/proxies.rb +9 -7
  25. data/lib/zabbix_manager/classes/roles.rb +17 -15
  26. data/lib/zabbix_manager/classes/screens.rb +6 -4
  27. data/lib/zabbix_manager/classes/scripts.rb +6 -4
  28. data/lib/zabbix_manager/classes/server.rb +3 -1
  29. data/lib/zabbix_manager/classes/templates.rb +18 -16
  30. data/lib/zabbix_manager/classes/triggers.rb +41 -37
  31. data/lib/zabbix_manager/classes/unusable.rb +2 -0
  32. data/lib/zabbix_manager/classes/usergroups.rb +11 -9
  33. data/lib/zabbix_manager/classes/usermacros.rb +21 -19
  34. data/lib/zabbix_manager/classes/users.rb +11 -9
  35. data/lib/zabbix_manager/classes/valuemaps.rb +5 -3
  36. data/lib/zabbix_manager/client.rb +38 -28
  37. data/lib/zabbix_manager/version.rb +3 -1
  38. data/lib/zabbix_manager.rb +36 -35
  39. data/zabbix_manager-5.0.3.gem +0 -0
  40. data/zabbix_manager-5.0.4.gem +0 -0
  41. data/zabbix_manager-5.0.5.gem +0 -0
  42. metadata +9 -4
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Hosts < Basic
3
5
  # The method name used for interacting with Hosts via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'host'
9
+ "host"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific Host objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'host'
16
+ "host"
15
17
  end
16
18
 
17
19
  # Dump Host object data by key from Zabbix API
@@ -23,12 +25,12 @@ class ZabbixManager
23
25
  def dump_by_id(data)
24
26
  log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
25
27
  @client.api_request(
26
- method: 'host.get',
28
+ method: "host.get",
27
29
  params: {
28
30
  filter: {
29
31
  key.to_sym => data[key.to_sym]
30
32
  },
31
- output: 'extend',
33
+ output: "extend"
32
34
  # selectHosts: 'shorten'
33
35
  }
34
36
  )
@@ -39,23 +41,23 @@ class ZabbixManager
39
41
  # @return [Hash]
40
42
  def default_options
41
43
  {
42
- host: nil,
43
- interfaces: {
44
- main: 1,
45
- useip: 1,
46
- type: 2,
47
- ip: nil,
48
- dns: "",
49
- port: 161,
44
+ host: nil,
45
+ interfaces: {
46
+ main: 1,
47
+ useip: 1,
48
+ type: 2,
49
+ ip: nil,
50
+ dns: "",
51
+ port: 161,
50
52
  details: {
51
- version: 2,
53
+ version: 2,
52
54
  community: "transsion"
53
55
  }
54
56
  },
55
- status: 0,
56
- available: 1,
57
- groups: [],
58
- proxy_hostid: nil,
57
+ status: 0,
58
+ available: 1,
59
+ groups: [],
60
+ proxy_hostid: nil,
59
61
  inventory_mode: 1
60
62
  }
61
63
  end
@@ -68,9 +70,9 @@ class ZabbixManager
68
70
  # @return [Boolean]
69
71
  def unlink_templates(data)
70
72
  result = @client.api_request(
71
- method: 'host.massRemove',
73
+ method: "host.massRemove",
72
74
  params: {
73
- hostids: data[:hosts_id],
75
+ hostids: data[:hosts_id],
74
76
  templates: data[:templates_id]
75
77
  }
76
78
  )
@@ -120,19 +122,19 @@ class ZabbixManager
120
122
  # 测试数据
121
123
  def update_mojo
122
124
  data = {
123
- name: "SZX1-16-SW3111111111",
124
- groups: [
125
- {
126
- groupid: 22
127
- }
128
- ],
129
- templates: [
130
- {
131
- templateid: 10227
132
- }
133
- ],
125
+ name: "SZX1-16-SW3111111111",
126
+ groups: [
127
+ {
128
+ groupid: 22
129
+ }
130
+ ],
131
+ templates: [
132
+ {
133
+ templateid: 10_227
134
+ }
135
+ ],
134
136
  inventory_mode: 1,
135
- hostid: 15951
137
+ hostid: 15_951
136
138
  }
137
139
 
138
140
  # 请求后端接口
@@ -142,7 +144,7 @@ class ZabbixManager
142
144
  # 根据主机名查询 hostid
143
145
  def get_host_id(name)
144
146
  result = @client.api_request(
145
- method: 'host.get',
147
+ method: "host.get",
146
148
  params: {
147
149
  output: "extend",
148
150
  filter: {
@@ -158,7 +160,7 @@ class ZabbixManager
158
160
  # 根据可见名称查询 hostid
159
161
  def get_hostid_by_name(name)
160
162
  result = @client.api_request(
161
- method: 'host.get',
163
+ method: "host.get",
162
164
  params: {
163
165
  output: "extend",
164
166
  filter: {
@@ -210,7 +212,7 @@ class ZabbixManager
210
212
  # 新增监控对象
211
213
  create data
212
214
  end
213
- rescue => e
215
+ rescue StandardError => e
214
216
  puts "创建或新增主机 #{data[:host]} 异常,异常信息:#{e}"
215
217
  # raise NotImplementedError
216
218
  end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class HttpTests < Basic
3
5
  # The method name used for interacting with HttpTests via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'httptest'
9
+ "httptest"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific HttpTest objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'name'
16
+ "name"
15
17
  end
16
18
 
17
19
  # The default options used when creating HttpTest objects via Zabbix API
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Items < Basic
3
5
  # The method name used for interacting with Items via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'item'
9
+ "item"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific Item objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'name'
16
+ "name"
15
17
  end
16
18
 
17
19
  # The default options used when creating Item objects via Zabbix API
@@ -19,38 +21,38 @@ class ZabbixManager
19
21
  # @return [Hash]
20
22
  def default_options
21
23
  {
22
- name: nil,
23
- key_: nil,
24
- hostid: nil,
25
- delay: 60,
26
- history: 3600,
27
- status: 0,
28
- type: 7,
29
- snmp_community: '',
30
- snmp_oid: '',
31
- value_type: 3,
32
- data_type: 0,
33
- trapper_hosts: 'localhost',
34
- snmp_port: 161,
35
- units: '',
36
- multiplier: 0,
37
- delta: 0,
38
- snmpv3_securityname: '',
39
- snmpv3_securitylevel: 0,
40
- snmpv3_authpassphrase: '',
41
- snmpv3_privpassphrase: '',
42
- formula: 0,
43
- trends: 86400,
44
- logtimefmt: '',
45
- valuemapid: 0,
46
- delay_flex: '',
47
- authtype: 0,
48
- username: '',
49
- password: '',
50
- publickey: '',
51
- privatekey: '',
52
- params: '',
53
- ipmi_sensor: ''
24
+ name: nil,
25
+ key_: nil,
26
+ hostid: nil,
27
+ delay: 60,
28
+ history: 3600,
29
+ status: 0,
30
+ type: 7,
31
+ snmp_community: "",
32
+ snmp_oid: "",
33
+ value_type: 3,
34
+ data_type: 0,
35
+ trapper_hosts: "localhost",
36
+ snmp_port: 161,
37
+ units: "",
38
+ multiplier: 0,
39
+ delta: 0,
40
+ snmpv3_securityname: "",
41
+ snmpv3_securitylevel: 0,
42
+ snmpv3_authpassphrase: "",
43
+ snmpv3_privpassphrase: "",
44
+ formula: 0,
45
+ trends: 86_400,
46
+ logtimefmt: "",
47
+ valuemapid: 0,
48
+ delay_flex: "",
49
+ authtype: 0,
50
+ username: "",
51
+ password: "",
52
+ publickey: "",
53
+ privatekey: "",
54
+ params: "",
55
+ ipmi_sensor: ""
54
56
  }
55
57
  end
56
58
 
@@ -83,19 +85,19 @@ class ZabbixManager
83
85
  # 根据设备名称和接口名字查询监控项 | 15809 | GigabitEthernet1/0/12
84
86
  def get_interface_items(hostid, name)
85
87
  # 自动剔除收尾空白字串
86
- _name = name&.gsub(%r"[^\/0-9]", "")&.strip
88
+ _name = name&.gsub(%r{[^/0-9]}, "")&.strip
87
89
  iface = "#{_name}("
88
90
 
89
91
  # 模糊查询接口下所有监控项,同时过滤出特定的 snmp_oid
90
92
  result = @client.api_request(
91
- method: 'item.get',
93
+ method: "item.get",
92
94
  params: {
93
95
  # output: ["itemid", "name", "snmp_oid", "key_", "triggerids"],
94
- output: 'extend',
96
+ output: "extend",
95
97
  hostids: hostid,
96
- search: {
98
+ search: {
97
99
  name: iface
98
- },
100
+ }
99
101
  }
100
102
  ).select { |item| item["snmp_oid"].match?(/1.3.6.1.2.1.31.1.1.1.(6|10)./) }
101
103
 
@@ -111,34 +113,34 @@ class ZabbixManager
111
113
 
112
114
  # 请求绑定 dns 监控项到特定的 hostid
113
115
  result = @client.api_request(
114
- method: 'item.create',
116
+ method: "item.create",
115
117
  params: {
116
118
  hostid: hostid,
117
- name: item_name,
118
- key_: item_key_,
119
+ name: item_name,
120
+ key_: item_key_,
119
121
  # 代表 zabbix_agent
120
122
  type: 0,
121
123
  # 代表字符串
122
124
  value_type: 1,
123
125
  # 固定参数
124
- delay: "1m",
125
- history: "90d",
126
+ delay: "1m",
127
+ history: "90d",
126
128
  lifetime: "30d",
127
- timeout: "3s",
129
+ timeout: "3s"
128
130
  }
129
131
  )
130
132
  p "成功创建 dns监控 #{dns_name}"
131
- rescue
133
+ rescue StandardError
132
134
  p "创建 dns监控 #{dns_name} 异常"
133
135
  end
134
136
 
135
137
  # 查询某个监控项具体信息
136
138
  def get_item_info
137
139
  result = @client.api_request(
138
- method: 'item.get',
140
+ method: "item.get",
139
141
  params: {
140
- output: "extend",
141
- hostids: "16914",
142
+ output: "extend",
143
+ hostids: "16914"
142
144
  }
143
145
  )
144
146
  end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Maintenance < Basic
3
5
  # The method name used for interacting with Maintenances via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'maintenance'
9
+ "maintenance"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific Maintenance objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'name'
16
+ "name"
15
17
  end
16
18
  end
17
19
  end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Mediatypes < Basic
3
5
  # The method name used for interacting with MediaTypes via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'mediatype'
9
+ "mediatype"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific MediaType objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'name'
16
+ "name"
15
17
  end
16
18
 
17
19
  # The default options used when creating MediaType objects via Zabbix API
@@ -19,16 +21,16 @@ class ZabbixManager
19
21
  # @return [Hash]
20
22
  def default_options
21
23
  {
22
- name: '', # Name
23
- description: '', # Description
24
+ name: "", # Name
25
+ description: "", # Description
24
26
  type: 0, # 0 - Email, 1 - External script, 2 - SMS, 3 - Jabber, 100 - EzTexting
25
- smtp_server: '',
26
- smtp_helo: '',
27
- smtp_email: '', # Email address of Zabbix server
28
- exec_path: '', # Name of external script
29
- gsm_modem: '', # Serial device name of GSM modem
30
- username: '', # Jabber user name used by Zabbix server
31
- passwd: '' # Jabber password used by Zabbix server
27
+ smtp_server: "",
28
+ smtp_helo: "",
29
+ smtp_email: "", # Email address of Zabbix server
30
+ exec_path: "", # Name of external script
31
+ gsm_modem: "", # Serial device name of GSM modem
32
+ username: "", # Jabber user name used by Zabbix server
33
+ passwd: "" # Jabber password used by Zabbix server
32
34
  }
33
35
  end
34
36
 
@@ -78,12 +80,12 @@ class ZabbixManager
78
80
  data = symbolize_keys(data) if data.key?(identify)
79
81
  # raise an error if identify name was not supplied
80
82
  name = data[identify.to_sym]
81
- raise ManagerError.new("#{identify} not supplied in call to get_id, #{data} (#{method_name})") if name.nil?
83
+ raise ManagerError, "#{identify} not supplied in call to get_id, #{data} (#{method_name})" if name.nil?
82
84
 
83
85
  result = @client.api_request(
84
86
  method: "#{method_name}.get",
85
87
  params: {
86
- filter: {name: name},
88
+ filter: { name: name },
87
89
  output: [key, identify]
88
90
  }
89
91
  )
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Problems < Basic
3
5
  # The method name used for interacting with Hosts via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'problem'
9
+ "problem"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific Problem objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'name'
16
+ "name"
15
17
  end
16
18
 
17
19
  # The key field name used for Problem objects via Zabbix API
@@ -19,7 +21,7 @@ class ZabbixManager
19
21
  #
20
22
  # @return [String]
21
23
  def key
22
- 'problemid'
24
+ "problemid"
23
25
  end
24
26
 
25
27
  # Returns the object's plural id field name (identify) based on key
@@ -27,7 +29,7 @@ class ZabbixManager
27
29
  #
28
30
  # @return [String]
29
31
  def keys
30
- 'problemids'
32
+ "problemids"
31
33
  end
32
34
 
33
35
  # Dump Problem object data by key from Zabbix API
@@ -40,12 +42,12 @@ class ZabbixManager
40
42
  log "[DEBUG] Call dump_by_id with parameters: #{data.inspect}"
41
43
 
42
44
  @client.api_request(
43
- method: 'problem.get',
45
+ method: "problem.get",
44
46
  params: {
45
47
  filter: {
46
48
  identify.to_sym => data[identify.to_sym]
47
49
  },
48
- output: 'extend'
50
+ output: "extend"
49
51
  }
50
52
  )
51
53
  end
@@ -64,27 +66,27 @@ class ZabbixManager
64
66
  @client.api_request(
65
67
  method: "#{method_name}.get",
66
68
  params: {
67
- filter: {
69
+ filter: {
68
70
  identify.to_sym => data[identify.to_sym]
69
71
  },
70
- eventids: data[:eventids] || nil,
71
- groupids: data[:groupids] || nil,
72
- hostids: data[:hostids] || nil,
73
- objectids: data[:objectids] || nil,
74
- applicationids: data[:applicationids] || nil,
75
- tags: data[:tags] || nil,
76
- time_from: data[:time_from] || nil,
77
- time_till: data[:time_till] || nil,
78
- eventid_from: data[:eventid_from] || nil,
79
- eventid_till: data[:eventid_till] || nil,
80
- recent: data[:recent] || false,
81
- sortfield: data[:sortfield] || ['eventid'],
82
- sortorder: data[:sortorder] || 'DESC',
83
- countOutput: data[:countOutput] || nil,
84
- output: 'extend',
85
- selectAcknowledges: 'extend',
86
- selectTags: 'extend',
87
- selectSuppressionData: 'extend'
72
+ eventids: data[:eventids] || nil,
73
+ groupids: data[:groupids] || nil,
74
+ hostids: data[:hostids] || nil,
75
+ objectids: data[:objectids] || nil,
76
+ applicationids: data[:applicationids] || nil,
77
+ tags: data[:tags] || nil,
78
+ time_from: data[:time_from] || nil,
79
+ time_till: data[:time_till] || nil,
80
+ eventid_from: data[:eventid_from] || nil,
81
+ eventid_till: data[:eventid_till] || nil,
82
+ recent: data[:recent] || false,
83
+ sortfield: data[:sortfield] || ["eventid"],
84
+ sortorder: data[:sortorder] || "DESC",
85
+ countOutput: data[:countOutput] || nil,
86
+ output: "extend",
87
+ selectAcknowledges: "extend",
88
+ selectTags: "extend",
89
+ selectSuppressionData: "extend"
88
90
  }
89
91
  )
90
92
  end
@@ -118,16 +120,15 @@ class ZabbixManager
118
120
 
119
121
  def ack_event(eventids)
120
122
  # 请求后端
121
- result = @client.api_request(
123
+ @client.api_request(
122
124
  method: "event.acknowledge",
123
125
  params: {
124
126
  eventids: eventids,
125
- action: 2,
126
- message: "由 RUBY SCRIPT 自动关闭"
127
+ action: 2,
128
+ message: "由 RUBY SCRIPT 自动关闭"
127
129
  }
128
130
  )
129
131
  # 返回运行结果
130
- result
131
132
  end
132
133
  end
133
- end
134
+ end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ZabbixManager
2
4
  class Proxies < Basic
3
5
  # The method name used for interacting with Proxies via Zabbix API
4
6
  #
5
7
  # @return [String]
6
8
  def method_name
7
- 'proxy'
9
+ "proxy"
8
10
  end
9
11
 
10
12
  # The id field name used for identifying specific Proxy objects via Zabbix API
11
13
  #
12
14
  # @return [String]
13
15
  def identify
14
- 'host'
16
+ "host"
15
17
  end
16
18
 
17
19
  # Delete Proxy object using Zabbix API
@@ -21,8 +23,8 @@ class ZabbixManager
21
23
  # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
22
24
  # @return [Integer] The Proxy object id that was deleted
23
25
  def delete(data)
24
- result = @client.api_request(method: 'proxy.delete', params: data)
25
- result.empty? ? nil : result['proxyids'][0].to_i
26
+ result = @client.api_request(method: "proxy.delete", params: data)
27
+ result.empty? ? nil : result["proxyids"][0].to_i
26
28
  end
27
29
 
28
30
  # Check if a Proxy object is readable using Zabbix API
@@ -32,7 +34,7 @@ class ZabbixManager
32
34
  # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
33
35
  # @return [Boolean] Returns true if the given proxies are readable
34
36
  def isreadable(data)
35
- @client.api_request(method: 'proxy.isreadable', params: data)
37
+ @client.api_request(method: "proxy.isreadable", params: data)
36
38
  end
37
39
 
38
40
  # Check if a Proxy object is writable using Zabbix API
@@ -42,7 +44,7 @@ class ZabbixManager
42
44
  # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK.
43
45
  # @return [Boolean] Returns true if the given proxies are writable
44
46
  def iswritable(data)
45
- @client.api_request(method: 'proxy.iswritable', params: data)
47
+ @client.api_request(method: "proxy.iswritable", params: data)
46
48
  end
47
49
 
48
50
  # 新增代理服务器查询接口
@@ -52,7 +54,7 @@ class ZabbixManager
52
54
 
53
55
  # 请求后端接口,只支持单个代理节点
54
56
  result = @client.api_request(
55
- method: 'proxy.get',
57
+ method: "proxy.get",
56
58
  params: {
57
59
  output: "extend",
58
60
  filter: {