zabbixapi 0.1.6 → 0.1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,21 +3,35 @@
3
3
  Simple and lightweight ruby module for work with zabbix api version 1.8.x
4
4
 
5
5
  You can:
6
- * Create host/template/application/items/triggers and screens;
6
+ * Create and delete host/template/application/items/triggers and screens;
7
7
  * Get info about all zabbix essences;
8
8
 
9
9
  == Installation
10
10
 
11
11
  gem install zabbixapi
12
12
 
13
- == Get Start.
13
+ == Get Start
14
14
 
15
- * Get hostid from zabbix api:
15
+ * Create host and get hostid from zabbix api:
16
16
 
17
- zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
18
- hostid = zbx.get_host_id('my.example.com')
17
+ zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
18
+ host_options = {
19
+ "ip" => '127.0.0.1',
20
+ "dns" => 'my.example.com',
21
+ "host" => 'my.example.com',
22
+ "useip" => 1,
23
+ "groups" => ['some_group']
24
+ }
25
+ if zbx.create_host(host_options)
26
+ puts zbx.get_host_id('my.example.com')
27
+ end
19
28
 
20
- p hostid
29
+ * Create hostgroup and get hostgroupid from zabbix api:
30
+
31
+ zbx = Zabbix::ZabbixApi.new('https://zabbix.example.com', 'login', 'password')
32
+ if zbx.add_group('some_group')
33
+ puts zbx.get_group_id('some_group')
34
+ end
21
35
 
22
36
  == Dependencies
23
37
 
@@ -11,7 +11,7 @@ mount_point = opt["m"]
11
11
  group_name = opt["g"]
12
12
  zabbix_env = opt["E"]
13
13
 
14
- if ( mount_point == "/" )
14
+ if mount_point == "/"
15
15
  template_name = "TMPL_Filesystem_root"
16
16
  app_name = "Filesystem_root"
17
17
  else
@@ -1,50 +1,33 @@
1
1
  module Zabbix
2
+
2
3
  class ZabbixApi
3
4
  def add_application(app_options)
4
-
5
5
  app_options_default = {
6
- 'hostid' => nil,
7
- 'name' => nil
6
+ 'hostid' => nil,
7
+ 'name' => nil
8
8
  }
9
-
10
9
  application = merge_opt(app_options_default, app_options)
11
10
  message = {
12
- 'method' => 'application.create',
13
- 'params' => application
11
+ 'method' => 'application.create',
12
+ 'params' => application
14
13
  }
15
-
16
14
  responce = send_request(message)
17
-
18
- unless responce.empty? then
19
- result = responce['applicationids'][0].to_i
20
- else
21
- result = nil
22
- end
23
-
24
- return result
15
+ responce.empty? ? nil : responce['applicationids'][0].to_i
25
16
  end
26
17
  end
27
18
 
28
19
  def get_app_id(host_id, app_name)
29
-
30
20
  message = {
31
- 'method' => 'application.get',
32
- 'params' => {
33
- 'filter' => {
34
- 'name' => app_name,
35
- 'hostid' => host_id
21
+ 'method' => 'application.get',
22
+ 'params' => {
23
+ 'filter' => {
24
+ 'name' => app_name,
25
+ 'hostid' => host_id
26
+ }
36
27
  }
37
- }
38
28
  }
39
-
40
29
  responce = send_request(message)
30
+ responce.empty? ? nil : responce[0]['applicationid']
31
+ end
41
32
 
42
- unless responce.empty? then
43
- result = responce[0]['applicationid']
44
- else
45
- result = nil
46
- end
47
-
48
- return result
49
- end
50
33
  end
@@ -25,7 +25,7 @@ module Zabbix
25
25
 
26
26
  attr_accessor :debug
27
27
 
28
- def initialize ( api_url, api_user, api_password )
28
+ def initialize (api_url, api_user, api_password)
29
29
  @api_url = api_url
30
30
  @api_user = api_user
31
31
  @api_password = api_password
@@ -45,7 +45,7 @@ module Zabbix
45
45
  uri = URI.parse(@api_url)
46
46
  http = Net::HTTP.new(uri.host, uri.port)
47
47
 
48
- if ( uri.scheme == "https" ) then
48
+ if uri.scheme == "https"
49
49
  http.use_ssl = true
50
50
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
51
51
  end
@@ -74,6 +74,11 @@ module Zabbix
74
74
 
75
75
  response_body_hash = JSON.parse(response.body)
76
76
 
77
+ if @debug
78
+ puts "[ZBXAPI] : INFO : Response body"
79
+ puts response_body_hash.inspect
80
+ end
81
+
77
82
  if error = response_body_hash['error']
78
83
  error_message = error['message']
79
84
  error_data = error['data']
@@ -82,17 +87,15 @@ module Zabbix
82
87
  e_message = "Code: [" + error_code.to_s + "]. Message: [" + error_message +\
83
88
  "]. Data: [" + error_data + "]."
84
89
 
85
- case error_code.to_s
86
- when '-32602'
87
- raise Zabbix::AlreadyExist.new(e_message)
88
- else
89
- raise Zabbix::ResponseError.new(e_message)
90
+ case error_code.to_s
91
+ when '-32602'
92
+ raise Zabbix::AlreadyExist.new(e_message)
93
+ else
94
+ raise Zabbix::ResponseError.new(e_message)
90
95
  end
91
96
  end
92
97
 
93
- result = response_body_hash['result']
94
-
95
- return result
98
+ return response_body_hash['result']
96
99
  end
97
100
 
98
101
  def send_request(message)
@@ -101,33 +104,29 @@ module Zabbix
101
104
  end
102
105
 
103
106
  def auth()
104
-
105
107
  auth_message = {
106
- 'auth' => nil,
107
- 'method' => 'user.authenticate',
108
- 'params' => {
109
- 'user' => @api_user,
110
- 'password' => @api_password,
111
- '0' => '0'
112
- }
108
+ 'auth' => nil,
109
+ 'method' => 'user.authenticate',
110
+ 'params' => {
111
+ 'user' => @api_user,
112
+ 'password' => @api_password,
113
+ '0' => '0'
114
+ }
113
115
  }
114
-
115
- auth_id = do_request(auth_message)
116
-
117
- return auth_id
116
+ do_request(auth_message)
118
117
  end
119
118
 
120
119
  # Utils.
120
+
121
121
  def merge_opt(a, b)
122
122
  c = {}
123
-
124
123
  b.each_pair do |key, value|
125
124
  if a.has_key?(key) then
126
125
  c[key] = value
127
126
  end
128
- end
129
-
127
+ end
130
128
  return a.merge(c)
131
129
  end
130
+
132
131
  end
133
132
  end
@@ -3,64 +3,50 @@ module Zabbix
3
3
 
4
4
  def add_graph(graph)
5
5
  message = {
6
- 'method' => 'graph.create',
7
- 'params' => graph
6
+ 'method' => 'graph.create',
7
+ 'params' => graph
8
8
  }
9
-
10
9
  response = send_request(message)
11
-
12
10
  return 0
13
11
  end
14
12
 
15
13
  def get_graph_id(host_id, graph_name)
16
-
17
14
  message = {
18
- 'method' => 'graph.get',
19
- 'params' => {
20
- 'filter' => {
21
- 'name' => graph_name,
22
- 'hostid' => host_id
15
+ 'method' => 'graph.get',
16
+ 'params' => {
17
+ 'filter' => {
18
+ 'name' => graph_name,
19
+ 'hostid' => host_id
20
+ }
23
21
  }
24
- }
25
22
  }
26
-
27
23
  response = send_request(message)
28
-
29
- unless ( response.empty? ) then
30
- result = response[0]['graphid']
31
- else
32
- result = nil
33
- end
24
+ response.empty? ? nil : response[0]['graphid']
34
25
  end
35
26
 
36
27
  def get_graphs(host_id)
37
-
38
28
  message = {
39
- 'method' => 'graph.get',
40
- 'params' => {
41
- 'extendoutput' => '1',
42
- 'filter' => {
43
- 'hostid' => host_id
29
+ 'method' => 'graph.get',
30
+ 'params' => {
31
+ 'extendoutput' => '1',
32
+ 'filter' => {
33
+ 'hostid' => host_id
34
+ }
44
35
  }
45
- }
46
36
  }
47
-
48
37
  response = send_request(message)
49
-
50
- unless ( response.empty? ) then
38
+ if response.empty?
39
+ result = nil
40
+ else
51
41
  result = {}
52
-
53
42
  response.each() do |graph|
54
43
  graph_id = graph['graphid']
55
44
  graph_name = graph['name']
56
-
57
45
  result[graph_id] = graph_name
58
46
  end
59
- else
60
- result = nil
61
47
  end
62
-
63
48
  return result
64
49
  end
50
+
65
51
  end
66
52
  end
@@ -1,78 +1,58 @@
1
1
  module Zabbix
2
-
3
2
  class ZabbixApi
4
- def get_group_id(pattern)
5
3
 
4
+ def get_group_id(pattern)
6
5
  message = {
7
- 'method' => 'hostgroup.get',
8
- 'params' => {
9
- 'filter' => {
10
- 'name' => pattern
6
+ 'method' => 'hostgroup.get',
7
+ 'params' => {
8
+ 'filter' => {
9
+ 'name' => pattern
10
+ }
11
11
  }
12
- }
13
12
  }
14
-
15
13
  response = send_request(message)
16
-
17
- if not ( response.empty? ) then
18
- result = response[0]['groupid']
19
- else
20
- result = nil
21
- end
22
-
23
- return result
14
+ response.empty? ? nil : response[0]['groupid']
24
15
  end
25
16
 
26
17
  def group_exist?(pattern)
27
-
28
18
  group_id = get_groups_id(pattern)
29
-
30
- if ( group_id ) then
31
- return true
32
- else
33
- return false
34
- end
19
+ group_id ? true : false
35
20
  end
36
21
 
37
22
  def add_group(groupname)
38
-
39
23
  message = {
40
- 'method' => 'hostgroup.create',
41
- 'params' => {
42
- 'name' => groupname
43
- }
24
+ 'method' => 'hostgroup.create',
25
+ 'params' => {
26
+ 'name' => groupname
27
+ }
44
28
  }
45
-
46
29
  response = send_request(message)
30
+ response ? response['groupids'][0].to_i : nil
31
+ end
47
32
 
48
- if ( response ) then
49
- result = response['groupids'][0].to_i
50
- else
51
- result = nil
52
- end
53
-
54
- return result
33
+ def delete_group(groupname)
34
+ group_id = get_group_id(groupname)
35
+ message = {
36
+ 'method' => 'hostgroup.delete',
37
+ 'params' => {
38
+ 'groupid' => group_id
39
+ }
40
+ }
41
+ response = send_request(message)
42
+ response ? response['groupids'][0].to_i : nil
55
43
  end
56
44
 
57
45
  def add_host_to_group(host_id, group_id)
58
-
59
46
  message = {
60
- 'method' => 'hostgroup.massAdd',
61
- 'params' => {
62
- 'groups' => [ group_id ],
63
- 'hosts' => [ host_id ]
64
- }
47
+ 'method' => 'hostgroup.massAdd',
48
+ 'params' => {
49
+ 'groups' => [group_id],
50
+ 'hosts' => [host_id]
51
+ }
65
52
  }
66
-
67
53
  response = send_request(message)
68
-
69
- if not ( response.empty? ) then
70
- result = true
71
- else
72
- result = false
73
- end
74
-
75
- return result
54
+ response.empty? ? false : true
76
55
  end
56
+
77
57
  end
78
58
  end
@@ -1,86 +1,68 @@
1
1
  module Zabbix
2
-
3
2
  class ZabbixApi
3
+
4
4
  def update_host(host_id, host_options)
5
5
  host = host_options
6
6
  host['hostid'] = host_id
7
-
8
- message = {
9
- 'method' => 'host.update',
10
- 'params' => host
11
- }
12
-
7
+ message = {
8
+ 'method' => 'host.update',
9
+ 'params' => host
10
+ }
13
11
  responce = send_request(message)
14
-
15
- if not ( responce.empty? ) then
16
- result = responce['hostids'][0].to_i
17
- else
18
- result = nil
19
- end
20
-
21
- return result
22
- end
12
+ responce.empty? ? nil : responce['hostids'][0].to_i
13
+ end
23
14
 
24
15
  def add_host(host_options)
25
-
26
16
  host_default = {
27
- 'host' => nil,
28
- 'port' => 10050,
29
- 'status' => 0,
30
- 'useip' => 0,
31
- 'dns' => '',
32
- 'ip' => '0.0.0.0',
33
- 'proxy_hostid' => 0,
34
- 'groups' => [],
35
- 'useipmi' => 0,
36
- 'ipmi_ip' => '',
37
- 'ipmi_port' => 623,
38
- 'ipmi_authtype' => 0,
39
- 'ipmi_privilege' => 0,
40
- 'ipmi_username' => '',
41
- 'ipmi_password' => ''
17
+ 'host' => nil,
18
+ 'port' => 10050,
19
+ 'status' => 0,
20
+ 'useip' => 0,
21
+ 'dns' => '',
22
+ 'ip' => '0.0.0.0',
23
+ 'proxy_hostid' => 0,
24
+ 'groups' => [],
25
+ 'useipmi' => 0,
26
+ 'ipmi_ip' => '',
27
+ 'ipmi_port' => 623,
28
+ 'ipmi_authtype' => 0,
29
+ 'ipmi_privilege' => 0,
30
+ 'ipmi_username' => '',
31
+ 'ipmi_password' => ''
42
32
  }
43
-
44
- host_options['groups'].map! { |group_id| {'groupid' => group_id} }
45
-
33
+ host_options['groups'].nil? || host_options['groups'].map! { |group_id| {'groupid' => get_group_id(group_id)} }
46
34
  host = merge_opt(host_default, host_options)
47
-
48
35
  message = {
49
- 'method' => 'host.create',
50
- 'params' => host
36
+ 'method' => 'host.create',
37
+ 'params' => host
51
38
  }
52
-
53
39
  response = send_request(message)
54
-
55
- unless response.empty? then
56
- result = response['hostids'][0].to_i
57
- else
58
- result = nil
59
- end
60
-
61
- return result
40
+ response.empty? ? nil : response['hostids'][0].to_i
62
41
  end
63
42
 
64
43
  def get_host_id(hostname)
65
-
66
44
  message = {
67
- 'method' => 'host.get',
68
- 'params' => {
69
- 'filter' => {
70
- 'host' => hostname
45
+ 'method' => 'host.get',
46
+ 'params' => {
47
+ 'filter' => {
48
+ 'host' => hostname
49
+ }
71
50
  }
72
- }
73
51
  }
74
-
75
52
  response = send_request(message)
53
+ response.empty? ? nil : response[0]['hostid'].to_i
54
+ end
76
55
 
77
- unless response.empty? then
78
- result = response[0]['hostid'].to_i
79
- else
80
- result = nil
81
- end
82
-
83
- return result
56
+ def delete_host(hostname)
57
+ host_id = get_host_id(hostname)
58
+ message = {
59
+ 'method' => 'host.delete',
60
+ 'params' => {
61
+ 'hostid' => host_id
62
+ }
63
+ }
64
+ send_request(message)
84
65
  end
66
+
85
67
  end
86
68
  end