zabbixapi 0.1.6.4 → 0.1.7
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.
- data/README.rdoc +7 -1
- data/examples/basic_auth.rb +30 -0
- data/examples/maintenance-example.rb +55 -0
- data/examples/populate_new_zabbix.sh +84 -0
- data/examples/zabbix_availability +7 -7
- data/examples/zabbix_clear_default +36 -0
- data/examples/zabbix_cpufan-sersor +114 -0
- data/examples/zabbix_cputemp-sersor +112 -0
- data/examples/zabbix_disk_io +8 -8
- data/examples/zabbix_filesystem +20 -20
- data/examples/zabbix_group +25 -0
- data/examples/zabbix_hlsp +100 -0
- data/examples/zabbix_host +37 -0
- data/examples/zabbix_iops +131 -0
- data/examples/zabbix_ipmi-cpufan-sersor +101 -0
- data/examples/zabbix_ipmi_systemp +110 -0
- data/examples/zabbix_la +42 -7
- data/examples/zabbix_mailer +125 -0
- data/examples/zabbix_mdadm +72 -0
- data/examples/zabbix_megaraid +71 -0
- data/examples/zabbix_memory +35 -21
- data/examples/zabbix_named +71 -0
- data/examples/zabbix_net +144 -8
- data/examples/zabbix_nginx +167 -0
- data/examples/zabbix_nginx_500 +112 -0
- data/examples/zabbix_ntp +71 -0
- data/examples/zabbix_nv-gputemp +111 -0
- data/examples/zabbix_pgsql +125 -0
- data/examples/zabbix_server_process +71 -0
- data/examples/zabbix_smart_blade +94 -0
- data/examples/zabbix_ssh +71 -0
- data/examples/zabbix_varnish +71 -0
- data/lib/zabbixapi.rb +1 -0
- data/lib/zabbixapi/application.rb +2 -2
- data/lib/zabbixapi/base.rb +6 -1
- data/lib/zabbixapi/host.rb +3 -3
- data/lib/zabbixapi/maintenance.rb +78 -0
- data/spec/localhost.rb +7 -1
- data/zabbixapi.gemspec +2 -2
- metadata +30 -4
- data/spec/request.rb +0 -130
@@ -0,0 +1,125 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'getopt/std'
|
5
|
+
require 'yaml'
|
6
|
+
require 'zabbixapi'
|
7
|
+
|
8
|
+
opt = Getopt::Std.getopts("g:i:E:")
|
9
|
+
|
10
|
+
group_name = opt["g"]
|
11
|
+
zabbix_env = opt["E"]
|
12
|
+
|
13
|
+
template_name = "TMPL_pgsql"
|
14
|
+
app_name = "PostgreSQL"
|
15
|
+
|
16
|
+
# read config
|
17
|
+
config = YAML::load(open('./config.yml'))
|
18
|
+
|
19
|
+
api_url = config[zabbix_env]["api_url"]
|
20
|
+
api_login = config[zabbix_env]["api_login"]
|
21
|
+
api_password = config[zabbix_env]["api_password"]
|
22
|
+
|
23
|
+
# Esablish new connection
|
24
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
25
|
+
|
26
|
+
# Create new template
|
27
|
+
p " * Creating template #{template_name}."
|
28
|
+
g_id = zbx.add_or_get_group(group_name)
|
29
|
+
|
30
|
+
options = {
|
31
|
+
'groups' => [ g_id.to_i ],
|
32
|
+
'host' => template_name
|
33
|
+
}
|
34
|
+
|
35
|
+
t_id = zbx.add_or_get_template(options)
|
36
|
+
|
37
|
+
# Create application #{app_name}
|
38
|
+
p " ** Create application #{app_name}."
|
39
|
+
application = {
|
40
|
+
'hostid' => t_id.to_i,
|
41
|
+
'name' => app_name
|
42
|
+
}
|
43
|
+
a_id = zbx.add_or_get_application(t_id, application)
|
44
|
+
|
45
|
+
# 'postgres process exists'
|
46
|
+
options = {
|
47
|
+
'description' => "postgres process exists",
|
48
|
+
'key_' => "proc.num[postgres]",
|
49
|
+
'hostid' => t_id.to_i,
|
50
|
+
'applications' => [ a_id.to_i ],
|
51
|
+
'history' => 7,
|
52
|
+
'trends' => 30,
|
53
|
+
'delay' => 120,
|
54
|
+
'value_type' => 0
|
55
|
+
}
|
56
|
+
p " ** Add 'postgres process exists' to #{template_name}."
|
57
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
58
|
+
|
59
|
+
# 'active connections count'
|
60
|
+
options = {
|
61
|
+
'description' => "postgres active connections count",
|
62
|
+
'key_' => "pgsql.connection_count[]",
|
63
|
+
'hostid' => t_id.to_i,
|
64
|
+
'applications' => [ a_id.to_i ],
|
65
|
+
'history' => 7,
|
66
|
+
'trends' => 30,
|
67
|
+
'delay' => 120,
|
68
|
+
'value_type' => 0
|
69
|
+
}
|
70
|
+
p " ** Add 'postgres active connections count' to #{template_name}."
|
71
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
72
|
+
|
73
|
+
# 'test connect'
|
74
|
+
options = {
|
75
|
+
'description' => "postgres test connect",
|
76
|
+
'key_' => "pgsql.test_connect[]",
|
77
|
+
'hostid' => t_id.to_i,
|
78
|
+
'applications' => [ a_id.to_i ],
|
79
|
+
'history' => 7,
|
80
|
+
'trends' => 30,
|
81
|
+
'delay' => 120,
|
82
|
+
'value_type' => 0
|
83
|
+
}
|
84
|
+
p " ** Add 'postgres test connect' to #{template_name}."
|
85
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
86
|
+
|
87
|
+
# TRIGGERS
|
88
|
+
options = {
|
89
|
+
'description' => "postgres process exists",
|
90
|
+
'expression' => "{#{template_name}:proc.num[postgres].last(0)}<1",
|
91
|
+
'priority' => 5, # disaster
|
92
|
+
'templateid' => 0,
|
93
|
+
'comments' => "postgres process exists (disaster)",
|
94
|
+
'type' => 0,
|
95
|
+
'status' => '0'
|
96
|
+
}
|
97
|
+
|
98
|
+
p " ** Add 'postgres process exists' trigger"
|
99
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
100
|
+
|
101
|
+
options = {
|
102
|
+
'description' => "postgres test connect",
|
103
|
+
'expression' => "{#{template_name}:pgsql.test_connect[].last(0)}#0",
|
104
|
+
'priority' => 5, # disaster
|
105
|
+
'templateid' => 0,
|
106
|
+
'comments' => "postgres test connect (disaster)",
|
107
|
+
'type' => 0,
|
108
|
+
'status' => '0'
|
109
|
+
}
|
110
|
+
|
111
|
+
p " ** Add 'postgres test connect' trigger"
|
112
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
113
|
+
|
114
|
+
options = {
|
115
|
+
'description' => "postgres connection count",
|
116
|
+
'expression' => "{#{template_name}:pgsql.connection_count[].last(0)}>700",
|
117
|
+
'priority' => 5, # disaster
|
118
|
+
'templateid' => 0,
|
119
|
+
'comments' => "postgres connection count (disaster)",
|
120
|
+
'type' => 0,
|
121
|
+
'status' => '0'
|
122
|
+
}
|
123
|
+
|
124
|
+
p " ** Add 'postgres connection count' trigger"
|
125
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'getopt/std'
|
5
|
+
require 'yaml'
|
6
|
+
require 'zabbixapi'
|
7
|
+
|
8
|
+
opt = Getopt::Std.getopts("g:i:E:")
|
9
|
+
|
10
|
+
group_name = opt["g"]
|
11
|
+
zabbix_env = opt["E"]
|
12
|
+
|
13
|
+
template_name = "TMPL_zabbix_server"
|
14
|
+
app_name = "zabbix_server"
|
15
|
+
|
16
|
+
# read config
|
17
|
+
config = YAML::load(open('./config.yml'))
|
18
|
+
|
19
|
+
api_url = config[zabbix_env]["api_url"]
|
20
|
+
api_login = config[zabbix_env]["api_login"]
|
21
|
+
api_password = config[zabbix_env]["api_password"]
|
22
|
+
|
23
|
+
# Esablish new connection
|
24
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
25
|
+
|
26
|
+
# Create new template
|
27
|
+
p " * Creating template #{template_name}."
|
28
|
+
g_id = zbx.add_or_get_group(group_name)
|
29
|
+
|
30
|
+
options = {
|
31
|
+
'groups' => [ g_id.to_i ],
|
32
|
+
'host' => template_name
|
33
|
+
}
|
34
|
+
|
35
|
+
t_id = zbx.add_or_get_template(options)
|
36
|
+
|
37
|
+
# Create application #{app_name}
|
38
|
+
p " ** Create application #{app_name}."
|
39
|
+
application = {
|
40
|
+
'hostid' => t_id.to_i,
|
41
|
+
'name' => app_name
|
42
|
+
}
|
43
|
+
a_id = zbx.add_or_get_application(t_id, application)
|
44
|
+
|
45
|
+
# 'zabbix_server process exists'
|
46
|
+
options = {
|
47
|
+
'description' => "zabbix_server process exists",
|
48
|
+
'key_' => "proc.num[zabbix_server]",
|
49
|
+
'hostid' => t_id.to_i,
|
50
|
+
'applications' => [ a_id.to_i ],
|
51
|
+
'history' => 7,
|
52
|
+
'trends' => 30,
|
53
|
+
'delay' => 120,
|
54
|
+
'value_type' => 0
|
55
|
+
}
|
56
|
+
p " ** Add 'zabbix_server process exists' to #{template_name}."
|
57
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
58
|
+
|
59
|
+
# TRIGGERS
|
60
|
+
options = {
|
61
|
+
'description' => "zabbix_server process exists",
|
62
|
+
'expression' => "{#{template_name}:proc.num[zabbix_server].last(0)}<1",
|
63
|
+
'priority' => 5, # disaster
|
64
|
+
'templateid' => 0,
|
65
|
+
'comments' => "zabbix_server process exists (disaster)",
|
66
|
+
'type' => 0,
|
67
|
+
'status' => '0'
|
68
|
+
}
|
69
|
+
|
70
|
+
p " ** Add 'zabbix_server process exists' trigger"
|
71
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
@@ -0,0 +1,94 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'yaml'
|
5
|
+
require 'getopt/std'
|
6
|
+
require 'zabbixapi'
|
7
|
+
|
8
|
+
opt = Getopt::Std.getopts("g:E:n:t:")
|
9
|
+
|
10
|
+
group_name = opt["g"]
|
11
|
+
zabbix_env = opt["E"]
|
12
|
+
disk_name = opt["n"]
|
13
|
+
parameter_name = opt["t"]
|
14
|
+
|
15
|
+
template_name = "TMPL_#{parameter_name}_#{disk_name}"
|
16
|
+
|
17
|
+
# read config
|
18
|
+
config = YAML::load(open('./config.yml'))
|
19
|
+
|
20
|
+
api_url = config[zabbix_env]["api_url"]
|
21
|
+
api_login = config[zabbix_env]["api_login"]
|
22
|
+
api_password = config[zabbix_env]["api_password"]
|
23
|
+
|
24
|
+
# Esablish new connection
|
25
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
26
|
+
|
27
|
+
# Create new template
|
28
|
+
p " * Creating template #{template_name}."
|
29
|
+
g_id = zbx.add_or_get_group(group_name)
|
30
|
+
|
31
|
+
options = {
|
32
|
+
'groups' => [ g_id.to_i ],
|
33
|
+
'host' => template_name
|
34
|
+
}
|
35
|
+
|
36
|
+
t_id = zbx.add_or_get_template(options)
|
37
|
+
|
38
|
+
# Create application #{app_name}
|
39
|
+
app_name = "#{parameter_name}_#{disk_name}"
|
40
|
+
p " ** Create application #{app_name}."
|
41
|
+
application = {
|
42
|
+
'hostid' => t_id.to_i,
|
43
|
+
'name' => app_name
|
44
|
+
}
|
45
|
+
a_id = zbx.add_or_get_application(t_id, application)
|
46
|
+
|
47
|
+
# '#{parameter_name} for #{disk_name}'
|
48
|
+
options = {
|
49
|
+
'description' => "#{parameter_name} for #{disk_name}",
|
50
|
+
'key_' => "smart.state[#{disk_name},#{parameter_name}]",
|
51
|
+
'hostid' => t_id.to_i,
|
52
|
+
'applications' => [ a_id.to_i ],
|
53
|
+
'history' => 7,
|
54
|
+
'trends' => 30,
|
55
|
+
'delay' => 60,
|
56
|
+
'value_type' => 0
|
57
|
+
}
|
58
|
+
p " ** Add '#{parameter_name} for #{disk_name}' to #{template_name}."
|
59
|
+
param_id = zbx.add_or_get_item(t_id, options)
|
60
|
+
|
61
|
+
# TRIGGERS
|
62
|
+
options = {
|
63
|
+
'description' => "Change of #{parameter_name} on #{disk_name} is too big",
|
64
|
+
'expression' => "{#{template_name}:smart.state[#{disk_name},#{parameter_name}].abschange(0)}>10",
|
65
|
+
'priority' => 2, # warning
|
66
|
+
'templateid' => 0,
|
67
|
+
'comments' => "too many reads on #{disk_name} (warning)",
|
68
|
+
'type' => 0,
|
69
|
+
'status' => '0'
|
70
|
+
}
|
71
|
+
p " ** Add '#{parameter_name} on #{disk_name}' trigger'"
|
72
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
73
|
+
|
74
|
+
# GRAPHS
|
75
|
+
options = {
|
76
|
+
'gitems' => [
|
77
|
+
"itemid" => param_id,
|
78
|
+
"drawtype" => "0",
|
79
|
+
"sortorder" => "0",
|
80
|
+
"color" => "AA0000",
|
81
|
+
"yaxisside" => "0",
|
82
|
+
"calc_fnc" => "2",
|
83
|
+
"type" => "0",
|
84
|
+
"periods_cnt" => "5"
|
85
|
+
],
|
86
|
+
"show_triggers" => "1",
|
87
|
+
"name" => "#{parameter_name} graph",
|
88
|
+
"width" => "900",
|
89
|
+
"height" => "200",
|
90
|
+
"templateid" => "0"
|
91
|
+
}
|
92
|
+
|
93
|
+
p " ** Add '#{parameter_name} graph'"
|
94
|
+
g_id = zbx.add_or_get_graph(t_id, options)
|
data/examples/zabbix_ssh
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'getopt/std'
|
5
|
+
require 'yaml'
|
6
|
+
require 'zabbixapi'
|
7
|
+
|
8
|
+
opt = Getopt::Std.getopts("g:i:E:")
|
9
|
+
|
10
|
+
group_name = opt["g"]
|
11
|
+
zabbix_env = opt["E"]
|
12
|
+
|
13
|
+
template_name = "TMPL_ssh"
|
14
|
+
app_name = "SSH"
|
15
|
+
|
16
|
+
# read config
|
17
|
+
config = YAML::load(open('./config.yml'))
|
18
|
+
|
19
|
+
api_url = config[zabbix_env]["api_url"]
|
20
|
+
api_login = config[zabbix_env]["api_login"]
|
21
|
+
api_password = config[zabbix_env]["api_password"]
|
22
|
+
|
23
|
+
# Esablish new connection
|
24
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
25
|
+
|
26
|
+
# Create new template
|
27
|
+
p " * Creating template #{template_name}."
|
28
|
+
g_id = zbx.add_or_get_group(group_name)
|
29
|
+
|
30
|
+
options = {
|
31
|
+
'groups' => [ g_id.to_i ],
|
32
|
+
'host' => template_name
|
33
|
+
}
|
34
|
+
|
35
|
+
t_id = zbx.add_or_get_template(options)
|
36
|
+
|
37
|
+
# Create application #{app_name}
|
38
|
+
p " ** Create application #{app_name}."
|
39
|
+
application = {
|
40
|
+
'hostid' => t_id.to_i,
|
41
|
+
'name' => app_name
|
42
|
+
}
|
43
|
+
a_id = zbx.add_or_get_application(t_id, application)
|
44
|
+
|
45
|
+
# 'sshd process exists'
|
46
|
+
options = {
|
47
|
+
'description' => "sshd process exists",
|
48
|
+
'key_' => "proc.num[sshd]",
|
49
|
+
'hostid' => t_id.to_i,
|
50
|
+
'applications' => [ a_id.to_i ],
|
51
|
+
'history' => 7,
|
52
|
+
'trends' => 30,
|
53
|
+
'delay' => 120,
|
54
|
+
'value_type' => 0
|
55
|
+
}
|
56
|
+
p " ** Add 'sshd process exists' to #{template_name}."
|
57
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
58
|
+
|
59
|
+
# TRIGGERS
|
60
|
+
options = {
|
61
|
+
'description' => "sshd process exists",
|
62
|
+
'expression' => "{#{template_name}:proc.num[sshd].last(0)}<1",
|
63
|
+
'priority' => 5, # disaster
|
64
|
+
'templateid' => 0,
|
65
|
+
'comments' => "sshd process exists (disaster)",
|
66
|
+
'type' => 0,
|
67
|
+
'status' => '0'
|
68
|
+
}
|
69
|
+
|
70
|
+
p " ** Add 'sshd process exists' trigger"
|
71
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'getopt/std'
|
5
|
+
require 'yaml'
|
6
|
+
require 'zabbixapi'
|
7
|
+
|
8
|
+
opt = Getopt::Std.getopts("g:E:")
|
9
|
+
|
10
|
+
group_name = opt["g"]
|
11
|
+
zabbix_env = opt["E"]
|
12
|
+
|
13
|
+
template_name = "TMPL_varnish"
|
14
|
+
app_name = "Varnish"
|
15
|
+
|
16
|
+
# read config
|
17
|
+
config = YAML::load(open('./config.yml'))
|
18
|
+
|
19
|
+
api_url = config[zabbix_env]["api_url"]
|
20
|
+
api_login = config[zabbix_env]["api_login"]
|
21
|
+
api_password = config[zabbix_env]["api_password"]
|
22
|
+
|
23
|
+
# Esablish new connection
|
24
|
+
zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
|
25
|
+
|
26
|
+
# Create new template
|
27
|
+
p " * Creating template #{template_name}."
|
28
|
+
g_id = zbx.add_or_get_group(group_name)
|
29
|
+
|
30
|
+
options = {
|
31
|
+
'groups' => [ g_id.to_i ],
|
32
|
+
'host' => template_name
|
33
|
+
}
|
34
|
+
|
35
|
+
t_id = zbx.add_or_get_template(options)
|
36
|
+
|
37
|
+
# Create application #{app_name}
|
38
|
+
p " ** Create application #{app_name}."
|
39
|
+
application = {
|
40
|
+
'hostid' => t_id.to_i,
|
41
|
+
'name' => app_name
|
42
|
+
}
|
43
|
+
a_id = zbx.add_or_get_application(t_id, application)
|
44
|
+
|
45
|
+
# 'varnish service status'
|
46
|
+
options = {
|
47
|
+
'description' => "varnish service status",
|
48
|
+
'key_' => "runit_service[varnish]",
|
49
|
+
'hostid' => t_id.to_i,
|
50
|
+
'applications' => [ a_id.to_i ],
|
51
|
+
'history' => 7,
|
52
|
+
'trends' => 30,
|
53
|
+
'delay' => 60,
|
54
|
+
'value_type' => 0
|
55
|
+
}
|
56
|
+
p " ** Add 'varnish service status' to #{template_name}."
|
57
|
+
item_id = zbx.add_or_get_item(t_id, options)
|
58
|
+
|
59
|
+
# TRIGGERS
|
60
|
+
options = {
|
61
|
+
'description' => "varnish service status",
|
62
|
+
'expression' => "{#{template_name}:runit_service[varnish].last(0)}#0",
|
63
|
+
'priority' => 5, # disaster
|
64
|
+
'templateid' => 0,
|
65
|
+
'comments' => "varnish service status (disaster)",
|
66
|
+
'type' => 0,
|
67
|
+
'status' => '0'
|
68
|
+
}
|
69
|
+
|
70
|
+
p " ** Add 'varnish service status' trigger"
|
71
|
+
tr_id = zbx.add_or_get_trigger(t_id, options)
|
data/lib/zabbixapi.rb
CHANGED
@@ -11,8 +11,8 @@ module Zabbix
|
|
11
11
|
'method' => 'application.create',
|
12
12
|
'params' => application
|
13
13
|
}
|
14
|
-
|
15
|
-
|
14
|
+
response = send_request(message)
|
15
|
+
response.empty? ? nil : response['applicationids'][0].to_i
|
16
16
|
end
|
17
17
|
|
18
18
|
def add_or_get_application(host_id, app_options)
|