zabbixapi 0.1.6.3 → 0.1.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +2 -0
- data/lib/zabbixapi/application.rb +22 -15
- data/lib/zabbixapi/graph.rb +8 -1
- data/lib/zabbixapi/group.rb +7 -0
- data/lib/zabbixapi/item.rb +7 -0
- data/lib/zabbixapi/template.rb +21 -1
- data/lib/zabbixapi/trigger.rb +9 -2
- data/lib/zabbixapi/user.rb +0 -0
- data/spec/localhost.rb +30 -53
- data/spec/request.rb +130 -0
- data/zabbixapi.gemspec +1 -1
- metadata +4 -2
data/README.rdoc
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
Simple and lightweight ruby module for work with zabbix api version 1.8.x
|
4
4
|
|
5
|
+
{<img src="https://travis-ci.org/vadv/zabbixapi.png">}[https://travis-ci.org/vadv/zabbixapi]
|
6
|
+
|
5
7
|
You can:
|
6
8
|
* Create and delete host/template/application/items/triggers and screens;
|
7
9
|
* Get info about all zabbix essences;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Zabbix
|
2
|
-
|
3
2
|
class ZabbixApi
|
3
|
+
|
4
4
|
def add_application(app_options)
|
5
5
|
app_options_default = {
|
6
6
|
'hostid' => nil,
|
@@ -14,20 +14,27 @@ module Zabbix
|
|
14
14
|
responce = send_request(message)
|
15
15
|
responce.empty? ? nil : responce['applicationids'][0].to_i
|
16
16
|
end
|
17
|
-
end
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
'hostid' => host_id
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
responce = send_request(message)
|
30
|
-
responce.empty? ? nil : responce[0]['applicationid']
|
31
|
-
end
|
18
|
+
def add_or_get_application(host_id, app_options)
|
19
|
+
unless a_id = get_app_id(host_id, app_options['name'])
|
20
|
+
a_id = add_application(app_options)
|
21
|
+
end
|
22
|
+
return a_id
|
23
|
+
end
|
32
24
|
|
25
|
+
def get_app_id(host_id, app_name)
|
26
|
+
message = {
|
27
|
+
'method' => 'application.get',
|
28
|
+
'params' => {
|
29
|
+
'filter' => {
|
30
|
+
'name' => app_name,
|
31
|
+
'hostid' => host_id
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
responce = send_request(message)
|
36
|
+
responce.empty? ? nil : responce[0]['applicationid']
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
33
40
|
end
|
data/lib/zabbixapi/graph.rb
CHANGED
@@ -7,7 +7,7 @@ module Zabbix
|
|
7
7
|
'params' => graph
|
8
8
|
}
|
9
9
|
response = send_request(message)
|
10
|
-
response.empty? ? nil : response[
|
10
|
+
response.empty? ? nil : response['graphids'][0]
|
11
11
|
end
|
12
12
|
|
13
13
|
def get_graph_id(host_id, graph_name)
|
@@ -24,6 +24,13 @@ module Zabbix
|
|
24
24
|
response.empty? ? nil : response[0]['graphid']
|
25
25
|
end
|
26
26
|
|
27
|
+
def add_or_get_graph(host_id, graph)
|
28
|
+
unless g_id = get_graph_id(host_id, graph['name'])
|
29
|
+
g_id = add_graph(graph)
|
30
|
+
end
|
31
|
+
return g_id
|
32
|
+
end
|
33
|
+
|
27
34
|
def get_graphs(host_id)
|
28
35
|
message = {
|
29
36
|
'method' => 'graph.get',
|
data/lib/zabbixapi/group.rb
CHANGED
@@ -30,6 +30,13 @@ module Zabbix
|
|
30
30
|
response ? response['groupids'][0].to_i : nil
|
31
31
|
end
|
32
32
|
|
33
|
+
def add_or_get_group(groupname)
|
34
|
+
unless g_id = get_group_id([groupname])
|
35
|
+
g_id = add_group(groupname)
|
36
|
+
end
|
37
|
+
return g_id
|
38
|
+
end
|
39
|
+
|
33
40
|
def delete_group(groupname)
|
34
41
|
if group_id = get_group_id(groupname)
|
35
42
|
message = {
|
data/lib/zabbixapi/item.rb
CHANGED
@@ -80,6 +80,13 @@ module Zabbix
|
|
80
80
|
response.empty? ? nil : response[0]['itemid']
|
81
81
|
end
|
82
82
|
|
83
|
+
def add_or_get_item(host_id, item_options)
|
84
|
+
unless i_id = get_item_id(host_id, item_options['description'])
|
85
|
+
i_id = add_item(item_options)
|
86
|
+
end
|
87
|
+
return i_id
|
88
|
+
end
|
89
|
+
|
83
90
|
def item_exist?(host_id, item_name)
|
84
91
|
item_id = get_item_id(host_id, item_name)
|
85
92
|
item_id ? true : false
|
data/lib/zabbixapi/template.rb
CHANGED
@@ -16,6 +16,13 @@ module Zabbix
|
|
16
16
|
response.empty? ? nil : response['templateids'][0].to_i
|
17
17
|
end
|
18
18
|
|
19
|
+
def add_or_get_template(template_options)
|
20
|
+
unless t_id = get_template_id(template_options['host'])
|
21
|
+
t_id = add_template(template_options)
|
22
|
+
end
|
23
|
+
return t_id
|
24
|
+
end
|
25
|
+
|
19
26
|
def get_template_ids_by_host(host_id)
|
20
27
|
message = {
|
21
28
|
'method' => 'template.get',
|
@@ -72,7 +79,7 @@ module Zabbix
|
|
72
79
|
}
|
73
80
|
}
|
74
81
|
response = send_request(message)
|
75
|
-
response.empty? ? nil : response
|
82
|
+
response.empty? ? nil : response[0]['templateid'].to_i
|
76
83
|
end
|
77
84
|
|
78
85
|
def link_templates_with_hosts(templates_id, hosts_id)
|
@@ -104,5 +111,18 @@ module Zabbix
|
|
104
111
|
response.empty? ? nil : response['templateids'][0].to_i
|
105
112
|
end
|
106
113
|
|
114
|
+
def delete_template(template_name)
|
115
|
+
message = {
|
116
|
+
'method' => 'template.delete',
|
117
|
+
'params' => [
|
118
|
+
{
|
119
|
+
"templateid" => get_template_id(template_name)
|
120
|
+
}
|
121
|
+
]
|
122
|
+
}
|
123
|
+
response = send_request(message)
|
124
|
+
response.empty? ? nil : response['templateids'][0].to_i
|
125
|
+
end
|
126
|
+
|
107
127
|
end
|
108
128
|
end
|
data/lib/zabbixapi/trigger.rb
CHANGED
@@ -4,19 +4,26 @@ module Zabbix
|
|
4
4
|
def add_trigger(trigger)
|
5
5
|
message = {
|
6
6
|
'method' => 'trigger.create',
|
7
|
-
'params' => [trigger]
|
7
|
+
'params' => [ trigger ]
|
8
8
|
}
|
9
9
|
response = send_request(message)
|
10
10
|
response.empty? ? nil : response['triggerids'][0]
|
11
11
|
end
|
12
12
|
|
13
|
+
def add_or_get_trigger(host_id, trigger)
|
14
|
+
unless tr_id = get_trigger_id(host_id, trigger['description'])
|
15
|
+
tr_id = add_trigger(trigger)
|
16
|
+
end
|
17
|
+
return tr_id
|
18
|
+
end
|
19
|
+
|
13
20
|
def get_trigger_id(host_id, trigger_name)
|
14
21
|
message = {
|
15
22
|
'method' => 'trigger.get',
|
16
23
|
'params' => {
|
17
24
|
'filter' => {
|
18
25
|
'hostid' => host_id,
|
19
|
-
'description' => trigger_name
|
26
|
+
'description' => [ trigger_name ]
|
20
27
|
}
|
21
28
|
}
|
22
29
|
}
|
File without changes
|
data/spec/localhost.rb
CHANGED
@@ -2,7 +2,7 @@ require 'zabbixapi'
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
# settings
|
5
|
-
api_url = 'http://zabbix
|
5
|
+
api_url = 'http://localhost/zabbix/api_jsonrpc.php'
|
6
6
|
api_login = 'Admin'
|
7
7
|
api_password = 'zabbix'
|
8
8
|
|
@@ -10,120 +10,97 @@ api_password = 'zabbix'
|
|
10
10
|
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
11
11
|
#zbx.debug = true
|
12
12
|
|
13
|
-
# 01. Create group
|
14
13
|
describe Zabbix::ZabbixApi, "create_group" do
|
14
|
+
|
15
|
+
# 01. Create group
|
15
16
|
it "Create some group" do
|
16
17
|
result = zbx.add_group('some_group')
|
17
18
|
result.should be_kind_of(Integer)
|
18
19
|
end
|
19
|
-
end
|
20
20
|
|
21
|
-
# 02. Get group_id
|
22
|
-
describe Zabbix::ZabbixApi, "get_group_id" do
|
21
|
+
# 02. Get group_id
|
23
22
|
it "Get group_id" do
|
24
23
|
result = zbx.get_group_id('some_group')
|
25
24
|
result.should be_kind_of(Integer)
|
26
25
|
end
|
27
|
-
end
|
28
26
|
|
29
|
-
# 03. Get unknown group_id
|
30
|
-
describe Zabbix::ZabbixApi, "get_group_id" do
|
27
|
+
# 03. Get unknown group_id
|
31
28
|
it "Get unknown group" do
|
32
29
|
result = zbx.get_group_id('___some_group')
|
33
30
|
result.should be_nil
|
34
31
|
end
|
35
|
-
end
|
36
32
|
|
37
|
-
# 04. Create host
|
38
|
-
host_options = {
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
}
|
45
|
-
describe Zabbix::ZabbixApi, "create_host" do
|
33
|
+
# 04. Create host
|
34
|
+
host_options = {
|
35
|
+
"ip" => '127.0.0.1',
|
36
|
+
"dns" => 'my.example.com',
|
37
|
+
"host" => 'my.example.com',
|
38
|
+
"useip" => 1,
|
39
|
+
"groups" => [1]
|
40
|
+
}
|
46
41
|
it "Create host" do
|
47
42
|
result = zbx.add_host(host_options)
|
48
43
|
result.should be_kind_of(Integer)
|
49
44
|
end
|
50
|
-
end
|
51
45
|
|
52
|
-
# 05. Get host
|
53
|
-
describe Zabbix::ZabbixApi, "get_host" do
|
46
|
+
# 05. Get host
|
54
47
|
it "Get host by name" do
|
55
48
|
result = zbx.get_host_id('my.example.com')
|
56
49
|
result.should be_kind_of(Integer)
|
57
50
|
end
|
58
|
-
end
|
59
51
|
|
60
|
-
# 06. Get unknown host
|
61
|
-
describe Zabbix::ZabbixApi, "get_host" do
|
52
|
+
# 06. Get unknown host
|
62
53
|
it "Get unknown host by name" do
|
63
54
|
result = zbx.get_host_id('___my.example.com')
|
64
55
|
result.should be_nil
|
65
56
|
end
|
66
|
-
end
|
67
57
|
|
68
|
-
# 07. Delete host
|
69
|
-
describe Zabbix::ZabbixApi, "delete_host" do
|
58
|
+
# 07. Delete host
|
70
59
|
it "Delete host" do
|
71
60
|
result = zbx.delete_host('my.example.com')
|
72
61
|
result.should be_kind_of(Integer)
|
73
62
|
end
|
74
|
-
end
|
75
63
|
|
76
|
-
# 08. Delete unknown host
|
77
|
-
describe Zabbix::ZabbixApi, "delete_unknown_host" do
|
64
|
+
# 08. Delete unknown host
|
78
65
|
it "Delete unknown host" do
|
79
66
|
result = zbx.delete_host('__my.example.com')
|
80
67
|
result.should be_nil
|
81
68
|
end
|
82
|
-
end
|
83
69
|
|
84
|
-
# 09. Delete group
|
85
|
-
describe Zabbix::ZabbixApi, "delete_group" do
|
70
|
+
# 09. Delete group
|
86
71
|
it "Delete some group" do
|
87
72
|
result = zbx.delete_group('some_group')
|
88
73
|
result.should be_kind_of(Integer)
|
89
74
|
end
|
90
|
-
end
|
91
75
|
|
92
|
-
# 10. Delete unknown group
|
93
|
-
describe Zabbix::ZabbixApi, "delete_unknown_group" do
|
76
|
+
# 10. Delete unknown group
|
94
77
|
it "Delete unknown group" do
|
95
78
|
result = zbx.delete_group('___some_group')
|
96
79
|
result.should be_nil
|
97
80
|
end
|
98
|
-
end
|
99
81
|
|
100
|
-
# 11. Mediatype create
|
101
|
-
mediatype_options = {
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
}
|
108
|
-
describe Zabbix::ZabbixApi, "create_mediatype" do
|
82
|
+
# 11. Mediatype create
|
83
|
+
mediatype_options = {
|
84
|
+
'type' => '0', #email
|
85
|
+
'description' => 'example_mediatype',
|
86
|
+
'smtp_server' => 'test.company.com',
|
87
|
+
'smtp_helo' => 'test.company.com',
|
88
|
+
'smtp_email' => 'test@test.company.com',
|
89
|
+
}
|
109
90
|
it "Create mediatype" do
|
110
91
|
result = zbx.add_mediatype(mediatype_options)
|
111
92
|
result.should be_kind_of(Integer)
|
112
93
|
end
|
113
|
-
|
114
|
-
|
115
|
-
# 12. Mediatype unknown delete
|
116
|
-
describe Zabbix::ZabbixApi, "delete_unknown_mediatype" do
|
94
|
+
# 12. Mediatype unknown delete
|
117
95
|
it "Delete unknown mediatype" do
|
118
96
|
result = zbx.delete_mediatype('__example_mediatype')
|
119
97
|
result.should be_nil
|
120
98
|
end
|
121
|
-
end
|
122
99
|
|
123
|
-
# 13. Mediatype delete
|
124
|
-
describe Zabbix::ZabbixApi, "delete_mediatype" do
|
100
|
+
# 13. Mediatype delete
|
125
101
|
it "Delete mediatype" do
|
126
102
|
result = zbx.delete_mediatype('example_mediatype')
|
127
103
|
result.should be_kind_of(Integer)
|
128
104
|
end
|
105
|
+
|
129
106
|
end
|
data/spec/request.rb
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'zabbixapi'
|
2
|
+
require 'json'
|
3
|
+
require 'servers/server18'
|
4
|
+
|
5
|
+
# settings
|
6
|
+
api_url = 'http://somehost'
|
7
|
+
api_login = ''
|
8
|
+
api_password = ''
|
9
|
+
|
10
|
+
|
11
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
12
|
+
#zbx.debug = true
|
13
|
+
|
14
|
+
describe Zabbix::ZabbixApi do
|
15
|
+
|
16
|
+
before :each do
|
17
|
+
# stub auth tocken
|
18
|
+
Zabbix::ZabbixApi.any_instance.stub(:auth).and_return "a9a1f569d10d6339f23c4d122a7f5c46"
|
19
|
+
# stub resquest
|
20
|
+
@request = mock
|
21
|
+
Net::HTTP.any_instance.stub(:request).and_return @request
|
22
|
+
@request.stub(:code).and_return "200"
|
23
|
+
end
|
24
|
+
|
25
|
+
# 01. Create group
|
26
|
+
it "Create some group" do
|
27
|
+
@request.stub(:body).and_return Server18.hostgroup_create
|
28
|
+
result = zbx.add_group('some_group')
|
29
|
+
result.should equal(107819)
|
30
|
+
end
|
31
|
+
|
32
|
+
# 02. Get group_id
|
33
|
+
it "Get group_id" do
|
34
|
+
@request.stub(:body).and_return Server18.hostgroup_get
|
35
|
+
result = zbx.get_group_id('some_group')
|
36
|
+
result.should equal(100100000000002)
|
37
|
+
end
|
38
|
+
|
39
|
+
# 03. Get unknown group_id
|
40
|
+
it "Get unknown group" do
|
41
|
+
@request.stub(:body).and_return Server18.hostgroup_get_error
|
42
|
+
result = zbx.get_group_id('___some_group')
|
43
|
+
result.should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
# 04. Create host
|
47
|
+
host_options = {
|
48
|
+
"ip" => '127.0.0.1',
|
49
|
+
"dns" => 'my.example.com',
|
50
|
+
"host" => 'my.example.com',
|
51
|
+
"useip" => 1,
|
52
|
+
"groups" => [1]
|
53
|
+
}
|
54
|
+
it "Create host" do
|
55
|
+
@request.stub(:body).and_return Server18.host_create
|
56
|
+
result = zbx.add_host(host_options)
|
57
|
+
result.should equal(107819)
|
58
|
+
end
|
59
|
+
|
60
|
+
# 05. Get host
|
61
|
+
it "Get host by name" do
|
62
|
+
@request.stub(:body).and_return Server18.host_get
|
63
|
+
result = zbx.get_host_id('my.example.com')
|
64
|
+
result.should equal(100100000010017)
|
65
|
+
end
|
66
|
+
|
67
|
+
# 06. Get unknown host
|
68
|
+
it "Get unknown host by name" do
|
69
|
+
@request.stub(:body).and_return Server18.host_get_error
|
70
|
+
result = zbx.get_host_id('___my.example.com')
|
71
|
+
result.should be_nil
|
72
|
+
end
|
73
|
+
|
74
|
+
# 07. Delete host
|
75
|
+
it "Delete host" do
|
76
|
+
@request.stub(:body).and_return Server18.host_delete
|
77
|
+
result = zbx.delete_host('my.example.com')
|
78
|
+
result.should be_kind_of(Integer)
|
79
|
+
end
|
80
|
+
|
81
|
+
# 08. Delete unknown host
|
82
|
+
it "Delete unknown host" do
|
83
|
+
@request.stub(:body).and_return Server18.host_delete_error
|
84
|
+
result = zbx.delete_host('__my.example.com')
|
85
|
+
result.should be_nil
|
86
|
+
end
|
87
|
+
|
88
|
+
# 09. Delete group
|
89
|
+
it "Delete some group" do
|
90
|
+
@request.stub(:body).and_return Server18.hostgroup_delete
|
91
|
+
result = zbx.delete_group('some_group')
|
92
|
+
result.should be_kind_of(Integer)
|
93
|
+
end
|
94
|
+
|
95
|
+
# 10. Delete unknown group
|
96
|
+
it "Delete unknown group" do
|
97
|
+
@request.stub(:body).and_return Server18.hostgroup_delete_error
|
98
|
+
result = zbx.delete_group('___some_group')
|
99
|
+
result.should be_nil
|
100
|
+
end
|
101
|
+
|
102
|
+
# 11. Mediatype create
|
103
|
+
mediatype_options = {
|
104
|
+
'type' => '0', #email
|
105
|
+
'description' => 'example_mediatype',
|
106
|
+
'smtp_server' => 'test.company.com',
|
107
|
+
'smtp_helo' => 'test.company.com',
|
108
|
+
'smtp_email' => 'test@test.company.com',
|
109
|
+
}
|
110
|
+
it "Create mediatype" do
|
111
|
+
@request.stub(:body).and_return Server18.mediatype_create
|
112
|
+
result = zbx.add_mediatype(mediatype_options)
|
113
|
+
result.should equal(100100000214797)
|
114
|
+
end
|
115
|
+
|
116
|
+
# 12. Mediatype unknown delete
|
117
|
+
it "Delete unknown mediatype" do
|
118
|
+
@request.stub(:body).and_return Server18.mediatype_delete_error
|
119
|
+
result = zbx.delete_mediatype('__example_mediatype')
|
120
|
+
result.should be_nil
|
121
|
+
end
|
122
|
+
|
123
|
+
# 13. Mediatype delete
|
124
|
+
it "Delete mediatype" do
|
125
|
+
@request.stub(:body).and_return Server18.mediatype_delete
|
126
|
+
result = zbx.delete_mediatype('example_mediatype')
|
127
|
+
result.should be_kind_of(Integer)
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
data/zabbixapi.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbixapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.6.
|
4
|
+
version: 0.1.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Ruby module for work with zabbix api v1.8.
|
15
15
|
email: vadv.mkn@gmail.com
|
@@ -29,8 +29,10 @@ files:
|
|
29
29
|
- lib/zabbixapi/screen.rb
|
30
30
|
- lib/zabbixapi/template.rb
|
31
31
|
- lib/zabbixapi/trigger.rb
|
32
|
+
- lib/zabbixapi/user.rb
|
32
33
|
- lib/zabbixapi/usermacro.rb
|
33
34
|
- spec/localhost.rb
|
35
|
+
- spec/request.rb
|
34
36
|
- zabbixapi.gemspec
|
35
37
|
- README.rdoc
|
36
38
|
- examples/config.yml
|