zabbixapi 0.1.4 → 0.1.5a1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +16 -3
- data/examples/config.yml +4 -0
- data/examples/zabbix_availability +73 -0
- data/examples/zabbix_disk_io +152 -0
- data/examples/zabbix_filesystem +249 -0
- data/examples/zabbix_la +101 -0
- data/examples/zabbix_memory +276 -0
- data/examples/zabbix_net +82 -0
- data/lib/{application.rb → zabbixapi/application.rb} +25 -4
- data/lib/zabbixapi/base.rb +133 -0
- data/lib/{graph.rb → zabbixapi/graph.rb} +8 -10
- data/lib/zabbixapi/group.rb +78 -0
- data/lib/zabbixapi/host.rb +86 -0
- data/lib/zabbixapi/item.rb +169 -0
- data/lib/zabbixapi/screen.rb +166 -0
- data/lib/{template.rb → zabbixapi/template.rb} +22 -26
- data/lib/zabbixapi/trigger.rb +95 -0
- data/lib/zabbixapi/usermacro.rb +74 -0
- data/lib/zabbixapi.rb +10 -10
- data/spec/item.rb +60 -0
- data/zabbixapi.gemspec +4 -5
- metadata +39 -49
- data/lib/base.rb +0 -126
- data/lib/group.rb +0 -78
- data/lib/host.rb +0 -98
- data/lib/item.rb +0 -128
- data/lib/screen.rb +0 -169
- data/lib/trigger.rb +0 -98
- data/lib/usermacro.rb +0 -75
@@ -0,0 +1,74 @@
|
|
1
|
+
module Zabbix
|
2
|
+
|
3
|
+
class ZabbixApi
|
4
|
+
def add_macro(host_id, macro_name, macro_value)
|
5
|
+
|
6
|
+
message = {
|
7
|
+
'method' => 'Usermacro.create',
|
8
|
+
'params' => {
|
9
|
+
'hostid' => host_id,
|
10
|
+
'macro' => macro_name,
|
11
|
+
'value'=> macro_value
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
response = send_request(message)
|
16
|
+
|
17
|
+
if hostmacroids = response['hostmacroids'] then
|
18
|
+
result = hostmacroids
|
19
|
+
else
|
20
|
+
result = nil
|
21
|
+
end
|
22
|
+
|
23
|
+
return result
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_macro(host_id, macro_name)
|
27
|
+
|
28
|
+
message = {
|
29
|
+
'method' => 'Usermacro.get',
|
30
|
+
'params' => {
|
31
|
+
'hostids' => host_id,
|
32
|
+
'macros' => macro_name,
|
33
|
+
'extendoutput' => '1'
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
response = send_request(message)
|
38
|
+
|
39
|
+
unless response.empty? then
|
40
|
+
if hostmacroid = response[0]['hostmacroid'] then
|
41
|
+
macro_id = hostmacroid
|
42
|
+
macro_value = response[0]['value']
|
43
|
+
|
44
|
+
result = {
|
45
|
+
'id' => macro_id,
|
46
|
+
'value'=> macro_value
|
47
|
+
}
|
48
|
+
else
|
49
|
+
result = nil
|
50
|
+
end
|
51
|
+
else
|
52
|
+
result = nil
|
53
|
+
end
|
54
|
+
|
55
|
+
return result
|
56
|
+
end
|
57
|
+
|
58
|
+
def set_macro_value(host_id, macro_name, macro_value)
|
59
|
+
|
60
|
+
message = {
|
61
|
+
'method' => 'usermacro.updateValue',
|
62
|
+
'params' => {
|
63
|
+
'hostid' => host_id,
|
64
|
+
'macro' => macro_name,
|
65
|
+
'value' => macro_value
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
response = send_request(message)
|
70
|
+
|
71
|
+
return true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/zabbixapi.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
7
|
-
require '
|
8
|
-
require '
|
9
|
-
require '
|
10
|
-
require '
|
1
|
+
require 'zabbixapi/application'
|
2
|
+
require 'zabbixapi/base'
|
3
|
+
require 'zabbixapi/graph'
|
4
|
+
require 'zabbixapi/group'
|
5
|
+
require 'zabbixapi/host'
|
6
|
+
require 'zabbixapi/item'
|
7
|
+
require 'zabbixapi/screen'
|
8
|
+
require 'zabbixapi/template'
|
9
|
+
require 'zabbixapi/trigger'
|
10
|
+
require 'zabbixapi/usermacro'
|
data/spec/item.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'zabbixapi'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require 'webmock/rspec'
|
5
|
+
include WebMock::API
|
6
|
+
|
7
|
+
# settings
|
8
|
+
api_url = 'http://zabbix.local/api_jsonrpc.php'
|
9
|
+
api_login = 'admin'
|
10
|
+
api_password = 'zabbix'
|
11
|
+
|
12
|
+
# 01. Add item
|
13
|
+
auth_response = '{"jsonrpc":"2.0","result":"a82039d56baba1f92311aa917af9939b","id":83254}'
|
14
|
+
add_item_response = '{"jsonrpc":"2.0","result":{"itemids":["19541"]},"id":80163}'
|
15
|
+
item_options = {
|
16
|
+
'description' => "Description",
|
17
|
+
'key_' => "key[,avg1]",
|
18
|
+
'hostid' => '10160',
|
19
|
+
'applications' => [ 393 ],
|
20
|
+
'history' => 7,
|
21
|
+
'trends' => 30,
|
22
|
+
'delay' => 60,
|
23
|
+
'value_type' => 0
|
24
|
+
}
|
25
|
+
|
26
|
+
stub_request(:post, api_url).with(:body => /"method":"user\.authenticate"/).to_return(:body => auth_response)
|
27
|
+
stub_request(:post, api_url).with(:body => /"method":"item\.create"/).to_return(:body => add_item_response)
|
28
|
+
|
29
|
+
describe Zabbix::ZabbixApi, "add_item" do
|
30
|
+
it "Create item" do
|
31
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
32
|
+
result = zbx.add_item(item_options)
|
33
|
+
result.should eq("19541")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# 02. Delete item
|
38
|
+
auth_response = '{"jsonrpc":"2.0","result":"a82039d56baba1f92311aa917af9939b","id":83254}'
|
39
|
+
delete_item_response = ''
|
40
|
+
item_options = {
|
41
|
+
'description' => "Description",
|
42
|
+
'key_' => "key[,avg1]",
|
43
|
+
'hostid' => '10160',
|
44
|
+
'applications' => [ 393 ],
|
45
|
+
'history' => 7,
|
46
|
+
'trends' => 30,
|
47
|
+
'delay' => 60,
|
48
|
+
'value_type' => 0
|
49
|
+
}
|
50
|
+
|
51
|
+
stub_request(:post, api_url).with(:body => /"method":"user\.authenticate"/).to_return(:body => auth_response)
|
52
|
+
stub_request(:post, api_url).with(:body => /"method":"item\.create"/).to_return(:body => add_item_response)
|
53
|
+
|
54
|
+
describe Zabbix::ZabbixApi, "add_item" do
|
55
|
+
it "Create item" do
|
56
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
57
|
+
result = zbx.add_item(item_options)
|
58
|
+
result.should eq("19541")
|
59
|
+
end
|
60
|
+
end
|
data/zabbixapi.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
2
3
|
require 'rake'
|
3
|
-
require 'echoe'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
|
7
|
-
spec.version = '0.1.
|
7
|
+
spec.version = '0.1.5a1'
|
8
8
|
spec.name = 'zabbixapi'
|
9
9
|
spec.summary = 'Ruby module for work with zabbix api.'
|
10
10
|
|
@@ -16,6 +16,5 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.has_rdoc = true
|
17
17
|
spec.extra_rdoc_files = 'README.rdoc'
|
18
18
|
|
19
|
-
|
20
|
-
spec.files = FileList["lib/*.rb", "bin/*", "spec/*", 'zabbixapi.gemspec', 'README.rdoc'].to_a
|
19
|
+
spec.files = FileList["lib/*.rb", "lib/zabbixapi/*.rb", "bin/*", "spec/*", 'zabbixapi.gemspec', 'README.rdoc', "examples/*"].to_a
|
21
20
|
end
|
metadata
CHANGED
@@ -1,76 +1,66 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: zabbixapi
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
version: 0.1.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5a1
|
5
|
+
prerelease: 5
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Eduard Snesarev
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2011-03-28 00:00:00 +04:00
|
18
|
-
default_executable:
|
12
|
+
date: 2012-06-18 00:00:00.000000000Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
|
-
description: "Ruby module for work with zabbix api. "
|
14
|
+
description: ! 'Ruby module for work with zabbix api. '
|
22
15
|
email: verm666@gmail.com
|
23
16
|
executables: []
|
24
|
-
|
25
17
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
18
|
+
extra_rdoc_files:
|
28
19
|
- README.rdoc
|
29
|
-
files:
|
30
|
-
- lib/application.rb
|
31
|
-
- lib/base.rb
|
32
|
-
- lib/graph.rb
|
33
|
-
- lib/group.rb
|
34
|
-
- lib/host.rb
|
35
|
-
- lib/item.rb
|
36
|
-
- lib/screen.rb
|
37
|
-
- lib/template.rb
|
38
|
-
- lib/trigger.rb
|
39
|
-
- lib/usermacro.rb
|
20
|
+
files:
|
40
21
|
- lib/zabbixapi.rb
|
22
|
+
- lib/zabbixapi/application.rb
|
23
|
+
- lib/zabbixapi/base.rb
|
24
|
+
- lib/zabbixapi/graph.rb
|
25
|
+
- lib/zabbixapi/group.rb
|
26
|
+
- lib/zabbixapi/host.rb
|
27
|
+
- lib/zabbixapi/item.rb
|
28
|
+
- lib/zabbixapi/screen.rb
|
29
|
+
- lib/zabbixapi/template.rb
|
30
|
+
- lib/zabbixapi/trigger.rb
|
31
|
+
- lib/zabbixapi/usermacro.rb
|
32
|
+
- spec/item.rb
|
41
33
|
- zabbixapi.gemspec
|
42
34
|
- README.rdoc
|
43
|
-
|
35
|
+
- examples/config.yml
|
36
|
+
- examples/zabbix_availability
|
37
|
+
- examples/zabbix_disk_io
|
38
|
+
- examples/zabbix_filesystem
|
39
|
+
- examples/zabbix_la
|
40
|
+
- examples/zabbix_memory
|
41
|
+
- examples/zabbix_net
|
44
42
|
homepage: http://github.com/verm666/RubyZabbixApi
|
45
43
|
licenses: []
|
46
|
-
|
47
44
|
post_install_message:
|
48
45
|
rdoc_options: []
|
49
|
-
|
50
|
-
require_paths:
|
46
|
+
require_paths:
|
51
47
|
- lib
|
52
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
49
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
|
59
|
-
version: "0"
|
60
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
55
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
66
|
-
- 0
|
67
|
-
version: "0"
|
56
|
+
requirements:
|
57
|
+
- - ! '>'
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 1.3.1
|
68
60
|
requirements: []
|
69
|
-
|
70
61
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.
|
62
|
+
rubygems_version: 1.8.10
|
72
63
|
signing_key:
|
73
64
|
specification_version: 3
|
74
65
|
summary: Ruby module for work with zabbix api.
|
75
66
|
test_files: []
|
76
|
-
|
data/lib/base.rb
DELETED
@@ -1,126 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
require 'net/http'
|
5
|
-
require 'net/https'
|
6
|
-
|
7
|
-
module Zabbix
|
8
|
-
|
9
|
-
class JsonMessage < RuntimeError
|
10
|
-
end
|
11
|
-
|
12
|
-
class ResponceCodeError < RuntimeError
|
13
|
-
end
|
14
|
-
|
15
|
-
class ResponceBodyHash < RuntimeError
|
16
|
-
end
|
17
|
-
|
18
|
-
class InvalidAnswerId < RuntimeError
|
19
|
-
end
|
20
|
-
|
21
|
-
class Error < RuntimeError
|
22
|
-
end
|
23
|
-
|
24
|
-
class ZabbixApi
|
25
|
-
|
26
|
-
def initialize ( api_url, api_user, api_password )
|
27
|
-
@api_url = api_url
|
28
|
-
@api_user = api_user
|
29
|
-
@api_password = api_password
|
30
|
-
end
|
31
|
-
|
32
|
-
def do_request(message)
|
33
|
-
|
34
|
-
id = rand 100_000
|
35
|
-
|
36
|
-
message['id'] = id
|
37
|
-
message['jsonrpc'] = '2.0'
|
38
|
-
|
39
|
-
message_json = JSON.generate(message)
|
40
|
-
|
41
|
-
# puts message.inspect
|
42
|
-
|
43
|
-
uri = URI.parse(@api_url)
|
44
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
45
|
-
|
46
|
-
if ( uri.scheme == "https" ) then
|
47
|
-
http.use_ssl = true
|
48
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
49
|
-
end
|
50
|
-
|
51
|
-
request = Net::HTTP::Post.new(uri.request_uri)
|
52
|
-
request.add_field('Content-Type', 'application/json-rpc')
|
53
|
-
request.body=(message_json)
|
54
|
-
|
55
|
-
# TODO сделать проверку невозможности подключения.
|
56
|
-
responce = http.request(request)
|
57
|
-
|
58
|
-
if ( responce.code != "200" ) then
|
59
|
-
raise Zabbix::ResponceCodeError.new("Responce code from [" + @api_url + "] is " + responce.code)
|
60
|
-
end
|
61
|
-
|
62
|
-
responce_body_hash = JSON.parse(responce.body)
|
63
|
-
|
64
|
-
#if not ( responce_body_hash['id'] == id ) then
|
65
|
-
# raise Zabbix::InvalidAnswerId.new("Wrong ID in zabbix answer")
|
66
|
-
#end
|
67
|
-
|
68
|
-
|
69
|
-
# Check errors in zabbix answer. If error exist - raise exception Zabbix::Error
|
70
|
-
|
71
|
-
# puts responce_body_hash.inspect
|
72
|
-
|
73
|
-
if ( error = responce_body_hash['error'] ) then
|
74
|
-
error_message = error['message']
|
75
|
-
error_data = error['data']
|
76
|
-
error_code = error['code']
|
77
|
-
|
78
|
-
e_message = "Code: [" + error_code.to_s + "]. Message: [" + error_message +\
|
79
|
-
"]. Data: [" + error_data + "]."
|
80
|
-
|
81
|
-
raise Zabbix::Error.new(e_message)
|
82
|
-
end
|
83
|
-
|
84
|
-
result = responce_body_hash['result']
|
85
|
-
|
86
|
-
return result
|
87
|
-
end
|
88
|
-
|
89
|
-
def send_request(message)
|
90
|
-
message['auth'] = auth()
|
91
|
-
do_request(message)
|
92
|
-
end
|
93
|
-
|
94
|
-
def auth()
|
95
|
-
|
96
|
-
auth_message = {
|
97
|
-
'auth' => nil,
|
98
|
-
'method' => 'user.authenticate',
|
99
|
-
'params' => {
|
100
|
-
'user' => @api_user,
|
101
|
-
'password' => @api_password,
|
102
|
-
'0' => '0'
|
103
|
-
}
|
104
|
-
}
|
105
|
-
|
106
|
-
auth_id = do_request(auth_message)
|
107
|
-
|
108
|
-
return auth_id
|
109
|
-
end
|
110
|
-
|
111
|
-
def merge_opt(a, b)
|
112
|
-
|
113
|
-
c = {}
|
114
|
-
|
115
|
-
b.each_pair do |key, value|
|
116
|
-
|
117
|
-
if ( a.has_key?(key) ) then
|
118
|
-
c[key] = value
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|
122
|
-
|
123
|
-
return a.merge(c)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
data/lib/group.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
module Zabbix
|
2
|
-
|
3
|
-
class ZabbixApi
|
4
|
-
def get_group_id(pattern)
|
5
|
-
|
6
|
-
message = {
|
7
|
-
'method' => 'hostgroup.get',
|
8
|
-
'params' => {
|
9
|
-
'filter' => {
|
10
|
-
'name' => pattern
|
11
|
-
}
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
responce = send_request(message)
|
16
|
-
|
17
|
-
if not ( responce.empty? ) then
|
18
|
-
result = responce[0]['groupid']
|
19
|
-
else
|
20
|
-
result = nil
|
21
|
-
end
|
22
|
-
|
23
|
-
return result
|
24
|
-
end
|
25
|
-
|
26
|
-
def group_exist?(pattern)
|
27
|
-
|
28
|
-
group_id = get_groups_id(pattern)
|
29
|
-
|
30
|
-
if ( group_id ) then
|
31
|
-
return true
|
32
|
-
else
|
33
|
-
return false
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def add_group(groupname)
|
38
|
-
|
39
|
-
message = {
|
40
|
-
'method' => 'hostgroup.create',
|
41
|
-
'params' => {
|
42
|
-
'name' => groupname
|
43
|
-
}
|
44
|
-
}
|
45
|
-
|
46
|
-
responce = send_request(message)
|
47
|
-
|
48
|
-
if ( responce ) then
|
49
|
-
result = responce['groupids']
|
50
|
-
else
|
51
|
-
result = nil
|
52
|
-
end
|
53
|
-
|
54
|
-
return result
|
55
|
-
end
|
56
|
-
|
57
|
-
def add_host_to_group(host_id, group_id)
|
58
|
-
|
59
|
-
message = {
|
60
|
-
'method' => 'hostgroup.massAdd',
|
61
|
-
'params' => {
|
62
|
-
'groups' => [ group_id ],
|
63
|
-
'hosts' => [ host_id ]
|
64
|
-
}
|
65
|
-
}
|
66
|
-
|
67
|
-
responce = send_request(message)
|
68
|
-
|
69
|
-
if not ( responce.empty? ) then
|
70
|
-
result = true
|
71
|
-
else
|
72
|
-
result = false
|
73
|
-
end
|
74
|
-
|
75
|
-
return result
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/lib/host.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
module Zabbix
|
2
|
-
|
3
|
-
# Examples:
|
4
|
-
# * Create host in zabbix
|
5
|
-
#
|
6
|
-
# zbx = Zabbix::ZabbixApi.new(url, user, password)
|
7
|
-
# host_options => {
|
8
|
-
# host => 'host.example.org',
|
9
|
-
# ip => '127.0.0.1',
|
10
|
-
# groups => [10001, 10002],
|
11
|
-
# }
|
12
|
-
# host_id = zbx.add_host(host_options)
|
13
|
-
|
14
|
-
# Method for creation host in zabbix.
|
15
|
-
# * Input parameter - hash <tt>host_options</tt>. Available keys in hash:
|
16
|
-
# - host - hostname. Type: string. Default: nil;
|
17
|
-
# - port - zabbix agent pont. Type: int. Default: 10050;
|
18
|
-
# - status - host status. Type: int. Possible values: 0 - monitored, 1 - not monitored. Default: 0;
|
19
|
-
# - useip - use ip or dns name for monitoring host. Possible values: 0 - don't use ip (use dns name), 1 - use ip (don't use dns name);
|
20
|
-
# - ip - host's ip address. Used for monitoring host if useip set to 1. Default: '0.0.0.0';
|
21
|
-
# - proxy_hostid - host_id of zabbix proxy (if necessary). See <tt>get_host_id</tt>. Default: 0 (don't use proxy server);
|
22
|
-
# - groups - array of groups that belong host. Default: [].
|
23
|
-
# - useipmi - Use or not ipmi. Default: 0 (don't use ipmi);
|
24
|
-
# - ipmi_ip - Default: '';
|
25
|
-
# - ipmi_port - Default: 623;
|
26
|
-
# - ipmi_authtype - Default: 0;
|
27
|
-
# - ipmi_privilege - Default: 0;
|
28
|
-
# - ipmi_username - Default: '';
|
29
|
-
# - ipmi_password - Default: '';
|
30
|
-
class ZabbixApi
|
31
|
-
def add_host(host_options)
|
32
|
-
|
33
|
-
host_default = {
|
34
|
-
'host' => nil,
|
35
|
-
'port' => 10050,
|
36
|
-
'status' => 0,
|
37
|
-
'useip' => 0,
|
38
|
-
'dns' => '',
|
39
|
-
'ip' => '0.0.0.0',
|
40
|
-
'proxy_hostid' => 0,
|
41
|
-
'groups' => [],
|
42
|
-
'useipmi' => 0,
|
43
|
-
'ipmi_ip' => '',
|
44
|
-
'ipmi_port' => 623,
|
45
|
-
'ipmi_authtype' => 0,
|
46
|
-
'ipmi_privilege' => 0,
|
47
|
-
'ipmi_username' => '',
|
48
|
-
'ipmi_password' => ''
|
49
|
-
}
|
50
|
-
|
51
|
-
host_options['groups'].map! { |group_id| {'groupid' => group_id} }
|
52
|
-
|
53
|
-
host = merge_opt(host_default, host_options)
|
54
|
-
|
55
|
-
message = {
|
56
|
-
'method' => 'host.create',
|
57
|
-
'params' => host
|
58
|
-
}
|
59
|
-
|
60
|
-
responce = send_request(message)
|
61
|
-
|
62
|
-
if not ( responce.empty? ) then
|
63
|
-
result = responce['hostids'][0].to_i
|
64
|
-
else
|
65
|
-
result = nil
|
66
|
-
end
|
67
|
-
|
68
|
-
return result
|
69
|
-
end
|
70
|
-
|
71
|
-
# Method for retrieving host id from zabbix by hostname.
|
72
|
-
# * Non optional input parameters:
|
73
|
-
# - hostname - Type: String.
|
74
|
-
# * Return:
|
75
|
-
# - host_id - Return finded host_id for passed hostname. If host not found in zabbix - return nil
|
76
|
-
def get_host_id(hostname)
|
77
|
-
|
78
|
-
message = {
|
79
|
-
'method' => 'host.get',
|
80
|
-
'params' => {
|
81
|
-
'filter' => {
|
82
|
-
'host' => hostname
|
83
|
-
}
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
responce = send_request(message)
|
88
|
-
|
89
|
-
if not ( responce.empty? ) then
|
90
|
-
result = responce[0]['hostid'].to_i
|
91
|
-
else
|
92
|
-
result = nil
|
93
|
-
end
|
94
|
-
|
95
|
-
return result
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|