zabbix_manager 5.0.5 → 5.0.6

Sign up to get free protection for your applications and to get access to all the features.
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: {