zabbixapi 0.3.0 → 0.4.1

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.
Files changed (68) hide show
  1. data/.travis.yml +9 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +20 -0
  4. data/README.md +123 -0
  5. data/Rakefile +1 -0
  6. data/lib/zabbixapi/applications.rb +37 -0
  7. data/lib/zabbixapi/client.rb +65 -0
  8. data/lib/zabbixapi/errors.rb +12 -0
  9. data/lib/zabbixapi/graphs.rb +47 -0
  10. data/lib/zabbixapi/hostgroups.rb +42 -0
  11. data/lib/zabbixapi/hosts.rb +80 -0
  12. data/lib/zabbixapi/items.rb +81 -0
  13. data/lib/zabbixapi/server.rb +12 -0
  14. data/lib/zabbixapi/templates.rb +78 -0
  15. data/lib/zabbixapi/triggers.rb +42 -0
  16. data/lib/zabbixapi/users.rb +59 -0
  17. data/lib/zabbixapi/version.rb +3 -0
  18. data/lib/zabbixapi.rb +51 -12
  19. data/spec/localhost.rb +227 -75
  20. data/spec/run.rb +265 -0
  21. data/zabbixapi.gemspec +15 -15
  22. metadata +35 -57
  23. data/README.rdoc +0 -65
  24. data/examples/basic_auth.rb +0 -30
  25. data/examples/config.yml +0 -4
  26. data/examples/maintenance-example.rb +0 -55
  27. data/examples/populate_new_zabbix.sh +0 -84
  28. data/examples/zabbix_availability +0 -73
  29. data/examples/zabbix_clear_default +0 -36
  30. data/examples/zabbix_cpufan-sersor +0 -114
  31. data/examples/zabbix_cputemp-sersor +0 -112
  32. data/examples/zabbix_disk_io +0 -152
  33. data/examples/zabbix_filesystem +0 -249
  34. data/examples/zabbix_group +0 -25
  35. data/examples/zabbix_hlsp +0 -100
  36. data/examples/zabbix_host +0 -37
  37. data/examples/zabbix_iops +0 -131
  38. data/examples/zabbix_ipmi-cpufan-sersor +0 -101
  39. data/examples/zabbix_ipmi_systemp +0 -110
  40. data/examples/zabbix_la +0 -136
  41. data/examples/zabbix_mailer +0 -125
  42. data/examples/zabbix_mdadm +0 -72
  43. data/examples/zabbix_megaraid +0 -71
  44. data/examples/zabbix_memory +0 -290
  45. data/examples/zabbix_named +0 -71
  46. data/examples/zabbix_net +0 -218
  47. data/examples/zabbix_nginx +0 -167
  48. data/examples/zabbix_nginx_500 +0 -112
  49. data/examples/zabbix_ntp +0 -71
  50. data/examples/zabbix_nv-gputemp +0 -111
  51. data/examples/zabbix_pgsql +0 -125
  52. data/examples/zabbix_server_process +0 -71
  53. data/examples/zabbix_smart_blade +0 -94
  54. data/examples/zabbix_ssh +0 -71
  55. data/examples/zabbix_varnish +0 -71
  56. data/lib/zabbixapi/application.rb +0 -40
  57. data/lib/zabbixapi/base.rb +0 -158
  58. data/lib/zabbixapi/graph.rb +0 -59
  59. data/lib/zabbixapi/group.rb +0 -66
  60. data/lib/zabbixapi/host.rb +0 -70
  61. data/lib/zabbixapi/item.rb +0 -130
  62. data/lib/zabbixapi/maintenance.rb +0 -78
  63. data/lib/zabbixapi/mediatype.rb +0 -53
  64. data/lib/zabbixapi/screen.rb +0 -119
  65. data/lib/zabbixapi/template.rb +0 -128
  66. data/lib/zabbixapi/trigger.rb +0 -71
  67. data/lib/zabbixapi/user.rb +0 -0
  68. data/lib/zabbixapi/usermacro.rb +0 -46
@@ -1,249 +0,0 @@
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("m:g:E:")
9
-
10
- mount_point = opt["m"]
11
- group_name = opt["g"]
12
- zabbix_env = opt["E"]
13
-
14
- if ( mount_point == "/" )
15
- template_name = "TMPL_Filesystem_root"
16
- app_name = "Filesystem_root"
17
- else
18
- mount_point = mount_point.sub(/\/$/, "")
19
- template_name = "TMPL_Filesystem" + mount_point.gsub(/\//, "_")
20
- app_name = "Filesystem" + mount_point.gsub(/\//, "_")
21
- end
22
-
23
- # read config
24
- config = YAML::load(open('./config.yml'))
25
-
26
- api_url = config[zabbix_env]["api_url"]
27
- api_login = config[zabbix_env]["api_login"]
28
- api_password = config[zabbix_env]["api_password"]
29
-
30
- # Esablish new connection
31
- zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
32
-
33
- # Create new template
34
- p " * Creating template #{template_name}."
35
- g_id = zbx.add_or_get_group(group_name)
36
-
37
- options = {
38
- 'groups' => [ g_id.to_i ],
39
- 'host' => template_name
40
- }
41
-
42
- t_id = zbx.add_or_get_template(options)
43
-
44
- # Create application #{app_name}
45
- p " ** Create application #{app_name}."
46
- application = {
47
- 'hostid' => t_id.to_i,
48
- 'name' => app_name
49
- }
50
-
51
- a_id = zbx.add_or_get_application(t_id, application)
52
-
53
- # Total disk space on #{mount_point}
54
- options = {
55
- 'description' => "Total disk space on #{mount_point}",
56
- 'key_' => "vfs.fs.size[#{mount_point},total]",
57
- 'hostid' => t_id.to_i,
58
- 'applications' => [ a_id.to_i ],
59
- 'units' => 'B',
60
- 'history' => 7,
61
- 'trends' => 30,
62
- 'delay' => 600,
63
- 'value_type' => 3
64
- }
65
-
66
- p " ** Add 'Total disk space on #{mount_point}' to #{template_name}."
67
- total_in_b_item_id = zbx.add_or_get_item(t_id, options)
68
-
69
- # Used disk space on #{mount_point}
70
- options = {
71
- 'description' => "Used disk space on #{mount_point}",
72
- 'key_' => "vfs.fs.size[#{mount_point},used]",
73
- 'hostid' => t_id.to_i,
74
- 'applications' => [ a_id.to_i ],
75
- 'units' => 'B',
76
- 'history' => 7,
77
- 'trends' => 30,
78
- 'delay' => 60,
79
- 'value_type' => 3
80
- }
81
-
82
- p " ** Add 'Used disk space on #{mount_point}' to #{template_name}."
83
- used_in_b_item_id = zbx.add_or_get_item(t_id, options)
84
-
85
- # Use disk space on #{mount_point} in %
86
- options = {
87
- 'description' => "Used disk space on #{mount_point} in %",
88
- 'key_' => "vfs.fs.size[#{mount_point},pused]",
89
- 'hostid' => t_id.to_i,
90
- 'applications' => [ a_id.to_i ],
91
- 'history' => 7,
92
- 'trends' => 30,
93
- 'delay' => 60,
94
- 'value_type' => 0
95
- }
96
-
97
- p " ** Add 'Used disk space on #{mount_point} in %' to #{template_name}."
98
- i_id = zbx.add_or_get_item(t_id, options)
99
-
100
- # Free disk space on #{mount_point}
101
- options = {
102
- 'description' => "Free disk space on #{mount_point}",
103
- 'type' => '15', # calculated
104
- 'key_' => "vfs.fs.size[#{mount_point},free]",
105
- 'params' => "last(\"vfs.fs.size[#{mount_point},total]\") - last(\"vfs.fs.size[#{mount_point},used]\")",
106
- 'hostid' => t_id.to_i,
107
- 'applications' => [ a_id.to_i ],
108
- 'units' => 'B',
109
- 'history' => 7,
110
- 'trends' => 30,
111
- 'delay' => 60,
112
- 'value_type' => 3
113
- }
114
-
115
- p " ** Add 'Free disk space on #{mount_point}' to #{template_name}."
116
- i_id = zbx.add_or_get_item(t_id, options)
117
-
118
- # Free disk space on #{mount_point} in %
119
- options = {
120
- 'description' => "Free disk space on #{mount_point} in %",
121
- 'type' => '15', # calculated
122
- 'key_' => "vfs.fs.size[#{mount_point},pfree]",
123
- 'params' => "100 - last(\"vfs.fs.size[#{mount_point},pused]\")",
124
- 'hostid' => t_id.to_i,
125
- 'applications' => [ a_id.to_i ],
126
- 'history' => 7,
127
- 'trends' => 30,
128
- 'delay' => 60,
129
- 'value_type' => 0
130
- }
131
-
132
- p " ** Add 'Free disk space on #{mount_point} in %' to #{template_name}."
133
- i_id = zbx.add_or_get_item(t_id, options)
134
-
135
- # Free number of inodes on #{mount_point}
136
- options = {
137
- 'description' => "Free number of inodes on #{mount_point}",
138
- 'key_' => "vfs.fs.inode[#{mount_point},free]",
139
- 'hostid' => t_id.to_i,
140
- 'applications' => [ a_id.to_i ],
141
- 'units' => '',
142
- 'history' => 7,
143
- 'trends' => 30,
144
- 'delay' => 60,
145
- 'value_type' => 3
146
- }
147
-
148
- p " ** Add 'Free number of inodes on #{mount_point}' to #{template_name}."
149
- i_id = zbx.add_or_get_item(t_id, options)
150
-
151
- # Free number of inodes on #{mount_point} in %
152
- options = {
153
- 'description' => "Free number of inodes on #{mount_point} in %",
154
- 'key_' => "vfs.fs.inode[#{mount_point},pfree]",
155
- 'hostid' => t_id.to_i,
156
- 'applications' => [ a_id.to_i ],
157
- 'history' => 7,
158
- 'trends' => 30,
159
- 'delay' => 60,
160
- 'value_type' => 0
161
- }
162
-
163
- p " ** Add 'Free number of inodes on #{mount_point} in %' to #{template_name}."
164
- i_id = zbx.add_or_get_item(t_id, options)
165
-
166
- ## TRIGGERS
167
- options = {
168
- 'description' => "Free disk space on #{mount_point}",
169
- 'expression' => "{#{template_name}:vfs.fs.size[#{mount_point},pfree].last(0)}<15",
170
- 'priority' => 2, # warning
171
- 'templateid' => 0,
172
- 'comments' => "Free disk space on #{mount_point} (warning)",
173
- 'type' => 0,
174
- 'status' => '0'
175
- }
176
-
177
- p " ** Add 'Free disk space on #{mount_point} warning trigger'"
178
- tr_id = zbx.add_or_get_trigger(t_id, options)
179
-
180
- options = {
181
- 'description' => "Free disk space on #{mount_point}",
182
- 'expression' => "{#{template_name}:vfs.fs.size[#{mount_point},pfree].last(0)}<10",
183
- 'priority' => 5, # Disaster
184
- 'templateid' => 0,
185
- 'comments' => "Free disk space on #{mount_point} (disaster)",
186
- 'type' => 0,
187
- 'status' => 0
188
- }
189
-
190
- p " ** Add 'Free disk space on #{mount_point} disaster trigger'"
191
- tr_id = zbx.add_or_get_trigger(t_id, options)
192
-
193
- options = {
194
- 'description' => "Free inodes on #{mount_point}",
195
- 'expression' => "{#{template_name}:vfs.fs.inode[#{mount_point},pfree].last(0)}<15",
196
- 'priority' => 2, # warning
197
- 'templateid' => '0',
198
- 'comments' => "Free disk inodes on #{mount_point} (warning)",
199
- 'type' => 0,
200
- 'status' => '0'
201
- }
202
-
203
- p " ** Add 'Free inodes on #{mount_point} warning trigger'"
204
- tr_id = zbx.add_or_get_trigger(t_id, options)
205
-
206
- options = {
207
- 'description' => "Free inodes on #{mount_point}",
208
- 'expression' => "{#{template_name}:vfs.fs.inode[#{mount_point},pfree].last(0)}<10",
209
- 'priority' => 5, #disaster
210
- 'templateid' => '0',
211
- 'comments' => "Free disk inodes on #{mount_point} (disaster)",
212
- 'type' => 0,
213
- 'status' => '0'
214
- }
215
-
216
- p " ** Add 'Free inodes on #{mount_point} disaster trigger'"
217
- tr_id = zbx.add_or_get_trigger(t_id, options)
218
-
219
- options = {
220
- 'gitems' => [
221
- {
222
- "itemid" => total_in_b_item_id,
223
- "drawtype" => "0",
224
- "sortorder" => "0",
225
- "color" => "AA0000",
226
- "yaxisside" => "0",
227
- "calc_fnc" => "2",
228
- "type" => "0",
229
- "periods_cnt" => "5"
230
- },
231
- {
232
- "itemid" => used_in_b_item_id,
233
- "drawtype" => "0",
234
- "sortorder" => "0",
235
- "color" => "009900",
236
- "yaxisside" => "0",
237
- "calc_fnc" => "2",
238
- "type" => "0",
239
- "periods_cnt" => "5"
240
- }
241
- ],
242
- "show_triggers" => "1",
243
- "name" => "Disk space on #{mount_point}",
244
- "width" => "900",
245
- "height" => "200",
246
- "templateid" => "0"
247
- }
248
- p " ** Add 'Disk space on #{mount_point} graph'"
249
- g_id = zbx.add_or_get_graph(t_id, options)
@@ -1,25 +0,0 @@
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:")
9
-
10
- group_name = opt["g"]
11
- zabbix_env = opt["E"]
12
-
13
- # read config
14
- config = YAML::load(open('./config.yml'))
15
-
16
- api_url = config[zabbix_env]["api_url"]
17
- api_login = config[zabbix_env]["api_login"]
18
- api_password = config[zabbix_env]["api_password"]
19
-
20
- # Esablish new connection
21
- zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
22
-
23
- # Create new hostgroup
24
- p " * Creating hostgroup #{group_name}."
25
- g_id = zbx.add_or_get_group(group_name)
data/examples/zabbix_hlsp DELETED
@@ -1,100 +0,0 @@
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
- hlsp_index = opt["i"]
13
-
14
- template_name = "TMPL_hlsp-#{hlsp_index}"
15
- app_name = "HLSPD-#{hlsp_index}"
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
- p " ** Create application #{app_name}."
40
- application = {
41
- 'hostid' => t_id.to_i,
42
- 'name' => app_name
43
- }
44
- a_id = zbx.add_or_get_application(t_id, application)
45
-
46
- # 'hlsp-#{hlsp_index} service status'
47
- options = {
48
- 'description' => "hlsp-#{hlsp_index} service status",
49
- 'key_' => "runit_service[hlspd-#{hlsp_index}]",
50
- 'hostid' => t_id.to_i,
51
- 'applications' => [ a_id.to_i ],
52
- 'history' => 7,
53
- 'trends' => 30,
54
- 'delay' => 60,
55
- 'value_type' => 0
56
- }
57
- p " ** Add 'hlsp-#{hlsp_index} service status' to #{template_name}."
58
- item_id = zbx.add_or_get_item(t_id, options)
59
-
60
- # 'hlsp-#{hlsp_index} clients count'
61
- hlsp_port = 8080 + hlsp_index.to_i
62
- options = {
63
- 'description' => "hlsp-#{hlsp_index} clients count",
64
- 'key_' => "hlspd[http://127.0.0.1:#{hlsp_port}/cids.txt]",
65
- 'hostid' => t_id.to_i,
66
- 'applications' => [ a_id.to_i ],
67
- 'history' => 7,
68
- 'trends' => 30,
69
- 'delay' => 60,
70
- 'value_type' => 0
71
- }
72
- p " ** Add 'hlsp-#{hlsp_index} clients count' to #{template_name}."
73
- item_id = zbx.add_or_get_item(t_id, options)
74
-
75
- # TRIGGERS
76
- options = {
77
- 'description' => "hlsp-#{hlsp_index} service status",
78
- 'expression' => "{#{template_name}:runit_service[hlspd-#{hlsp_index}].last(0)}#0",
79
- 'priority' => 5, # disaster
80
- 'templateid' => 0,
81
- 'comments' => "hlsp-#{hlsp_index} service status (disaster)",
82
- 'type' => 0,
83
- 'status' => '0'
84
- }
85
-
86
- p " ** Add 'hlsp-#{hlsp_index} service status' trigger"
87
- tr_id = zbx.add_or_get_trigger(t_id, options)
88
-
89
- options = {
90
- 'description' => "hlsp-#{hlsp_index} clients count",
91
- 'expression' => "{#{template_name}:hlspd[http://127.0.0.1:#{hlsp_port}/cids.txt].last(0)}<0",
92
- 'priority' => 5, # disaster
93
- 'templateid' => 0,
94
- 'comments' => "hlsp-#{hlsp_index} clients count (disaster)",
95
- 'type' => 0,
96
- 'status' => '0'
97
- }
98
-
99
- p " ** Add 'hlsp-#{hlsp_index} clients count' trigger"
100
- tr_id = zbx.add_or_get_trigger(t_id, options)
data/examples/zabbix_host DELETED
@@ -1,37 +0,0 @@
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:H:i:")
9
-
10
- group_name = opt["g"]
11
- host = opt["H"]
12
- ip = opt["i"]
13
- zabbix_env = opt["E"]
14
-
15
- # read config
16
- config = YAML::load(open('./config.yml'))
17
-
18
- api_url = config[zabbix_env]["api_url"]
19
- api_login = config[zabbix_env]["api_login"]
20
- api_password = config[zabbix_env]["api_password"]
21
-
22
- # Esablish new connection
23
- zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
24
-
25
- g_id = zbx.add_or_get_group(group_name)
26
-
27
- # Create new host
28
- options = {
29
- "ip" => ip,
30
- "dns" => host,
31
- "host" => host,
32
- "useip" => 1,
33
- "groups" => [g_id]
34
- }
35
-
36
- p " * Creating host #{host}."
37
- g_id = zbx.add_host(options)
data/examples/zabbix_iops DELETED
@@ -1,131 +0,0 @@
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:")
9
-
10
- group_name = opt["g"]
11
- zabbix_env = opt["E"]
12
- disk_name = opt["n"]
13
-
14
- template_name = "TMPL_iops_#{disk_name}"
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
- app_name = "iops_#{disk_name}"
39
- p " ** Create application #{app_name}."
40
- application = {
41
- 'hostid' => t_id.to_i,
42
- 'name' => app_name
43
- }
44
- a_id = zbx.add_or_get_application(t_id, application)
45
-
46
- # 'reads for #{disk_name}'
47
- options = {
48
- 'description' => "iops read #{disk_name}",
49
- 'key_' => "vfs.dev.read[#{disk_name}]",
50
- 'hostid' => t_id.to_i,
51
- 'applications' => [ a_id.to_i ],
52
- 'history' => 7,
53
- 'trends' => 30,
54
- 'delay' => 60,
55
- 'value_type' => 0
56
- }
57
- p " ** Add 'vfs.dev.read[#{disk_name}]' to #{template_name}."
58
- reads_id = zbx.add_or_get_item(t_id, options)
59
-
60
- # 'writes for #{disk_name}'
61
- options = {
62
- 'description' => "iops writes #{disk_name}",
63
- 'key_' => "vfs.dev.write[#{disk_name}]",
64
- 'hostid' => t_id.to_i,
65
- 'applications' => [ a_id.to_i ],
66
- 'history' => 7,
67
- 'trends' => 30,
68
- 'delay' => 60,
69
- 'value_type' => 0
70
- }
71
- p " ** Add 'vfs.dev.write[#{disk_name}]' to #{template_name}."
72
- writes_id = zbx.add_or_get_item(t_id, options)
73
-
74
- # TRIGGERS
75
- options = {
76
- 'description' => "read on #{disk_name} is too big",
77
- 'expression' => "{#{template_name}:vfs.dev.read[#{disk_name}].last(0)}>100",
78
- 'priority' => 2, # warning
79
- 'templateid' => 0,
80
- 'comments' => "too many reads on #{disk_name} (warning)",
81
- 'type' => 0,
82
- 'status' => '0'
83
- }
84
- p " ** Add '#{disk_name} reads' trigger'"
85
- tr_id = zbx.add_or_get_trigger(t_id, options)
86
-
87
- options = {
88
- 'description' => "write on #{disk_name} is too big",
89
- 'expression' => "{#{template_name}:vfs.dev.write[#{disk_name}].last(0)}>300",
90
- 'priority' => 2, # warning
91
- 'templateid' => 0,
92
- 'comments' => "too many writes on #{disk_name} (warning)",
93
- 'type' => 0,
94
- 'status' => '0'
95
- }
96
- p " ** Add '#{disk_name} writes' trigger'"
97
- tr_id = zbx.add_or_get_trigger(t_id, options)
98
-
99
- # GRAPHS
100
- options = {
101
- 'gitems' => [
102
- {
103
- "itemid" => reads_id,
104
- "drawtype" => "0",
105
- "sortorder" => "0",
106
- "color" => "AA0000",
107
- "yaxisside" => "0",
108
- "calc_fnc" => "2",
109
- "type" => "0",
110
- "periods_cnt" => "5"
111
- },
112
- {
113
- "itemid" => writes_id,
114
- "drawtype" => "0",
115
- "sortorder" => "0",
116
- "color" => "009900",
117
- "yaxisside" => "0",
118
- "calc_fnc" => "2",
119
- "type" => "0",
120
- "periods_cnt" => "5"
121
- }
122
- ],
123
- "show_triggers" => "1",
124
- "name" => "IOPS graph",
125
- "width" => "900",
126
- "height" => "200",
127
- "templateid" => "0"
128
- }
129
-
130
- p " ** Add 'IOPS graph'"
131
- g_id = zbx.add_or_get_graph(t_id, options)
@@ -1,101 +0,0 @@
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_ipmi_cpufan_sensor"
14
- app_name = "cpufan_sensor"
15
- disaster_rpm = '5000.000'
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 = "ipmi_cpufan_sensor"
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
- # 'mpeg2lander signal quality'
48
- options = {
49
- 'description' => "Fan6/CPU sensor RPM",
50
- 'key_' => "cpufansensor",
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 'cpufansensor' to #{template_name}."
59
- sensor_item_id = zbx.add_or_get_item(t_id, options)
60
-
61
- # TRIGGER
62
- # cpufan disaster (high threshold)
63
- options = {
64
- 'description' => "Cpufan sensor RPM",
65
- 'expression' => "{#{template_name}:cpufansensor.last(0)}>#{disaster_rpm}",
66
- 'priority' => 5, # disaster
67
- 'templateid' => 0,
68
- 'comments' => "Cpufan sensor (Disaster)",
69
- 'type' => 0,
70
- 'status' => '0'
71
- }
72
- p " ** Add 'cpufan sensor disaster' trigger"
73
- tr_id = zbx.add_or_get_trigger(t_id, options)
74
-
75
- # TODO: create low_threshold trigger
76
- # Author: something
77
- # Today we can't create it, because on some servers incorrectly
78
- # connected cable to the sensor
79
-
80
- # GRAPH
81
- options = {
82
- 'gitems' => [
83
- {
84
- "itemid" => sensor_item_id,
85
- "drawtype" => "0",
86
- "sortorder" => "0",
87
- "color" => "AA0000",
88
- "yaxisside" => "0",
89
- "calc_fnc" => "2",
90
- "type" => "0",
91
- "periods_cnt" => "5"
92
- }
93
- ],
94
- "show_triggers" => "1",
95
- "name" => "Fan6/CPU sensor RPM data from ipmitool",
96
- "width" => "900",
97
- "height" => "200",
98
- "templateid" => "0"
99
- }
100
-
101
- g_id = zbx.add_or_get_graph(t_id, options)