icinga2 0.9.0.1 → 0.9.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72d12c2bfb82c51e11f6b302d524212f24923994
4
- data.tar.gz: 0996b07dfcbc324711f2c6b1d036476c4dbe9551
3
+ metadata.gz: db0fe25ebd8e946d7c604572bf519a42d07a9d82
4
+ data.tar.gz: a903a6ec90465f9c77eaa435fd87fce351aa6993
5
5
  SHA512:
6
- metadata.gz: d43124defda6f6b95bc37f98cdf101c08cf28d219f746fbaeccbe896a89e867de7eeb11392c01b0f9b1a56d9a78666f33e9b2c378e37071974d78c8f4e971077
7
- data.tar.gz: fcb769550f203d42d9511f6567a408dc7e05f11a48b50f72548ed91430a17cfdaa76320b6f31e0591ff5f88b018e56fc251436debfcb2a490711854eed4b66a4
6
+ metadata.gz: bae9836345523dcf3756967d14d54d19bd8b0b266f0883e01397bdaca52b05671e09266bbbbc3d384c903a6bc33f9177bc7ad76d8489ac9c88b44a7de75ed6ed
7
+ data.tar.gz: f956ffb022e2fa3857646d8e1b1a2f366276c2945a478e4d5faac64b6747d86c653ede0202e358635a530405a55226659c58f10f28065cd9ef6efcafdaf82d68
data/README.md CHANGED
@@ -1,12 +1,11 @@
1
1
  # ruby-icinga2
2
2
 
3
- Ruby Class for the Icinga2 API
3
+ An enhanced ruby gem to communicate with Icinga2 API
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/icinga2.svg)](https://badge.fury.io/rb/icinga2)
6
6
 
7
- [![Build Status](https://travis-ci.org/bodsch/ruby-icinga2.svg?branch=v0.8.1.2)][travis]
8
- [![Build Status](https://travis-ci.org/bodsch/ruby-icinga2.svg?branch=master)][travis]
9
- [![Gem Downloads](http://ruby-gem-downloads-badge.herokuapp.com/icinga2?0.8.1.2)][gem-downloads]
7
+ [![Build Status](https://travis-ci.org/bodsch/ruby-icinga2.svg)][travis]
8
+ [![Gem Downloads](http://ruby-gem-downloads-badge.herokuapp.com/icinga2)][gem-downloads]
10
9
  [![total Downloads](http://ruby-gem-downloads-badge.herokuapp.com/icinga2?type=total&metric=true&label=downloads-total)][gem-downloads]
11
10
  [![Dependency Status](https://gemnasium.com/badges/github.com/bodsch/ruby-icinga2.svg)][gemnasium]
12
11
 
@@ -17,16 +16,17 @@ Ruby Class for the Icinga2 API
17
16
 
18
17
  ## Requirements
19
18
 
20
- * ruby version => 2.1
19
+ * ruby version => 2.0
21
20
  * rest-client ~> 2.0
22
- * openssl ~> 2.0 (only with ruby 2.3)
23
21
  * json ~> 2.1
22
+ * openssl ~> 2.0 (only with ruby >= 2.3)
23
+ * ruby_dig (only with ruby < 2.3)
24
24
 
25
- ## install
25
+ ## Install
26
26
 
27
27
  gem install icinga2
28
28
 
29
- ## usage
29
+ ## Usage
30
30
 
31
31
  create an instance
32
32
 
@@ -37,14 +37,53 @@ create an instance
37
37
  :port => icingaApiPort,
38
38
  :user => icingaApiUser,
39
39
  :pass => icingaApiPass
40
- },
41
- :cluster => icingaCluster,
42
- :satellite => icingaSatellite,
40
+ }
43
41
  }
44
42
  }
45
43
 
46
44
  @icinga = Icinga::Client.new( config )
47
45
 
46
+ ### Use the examples
47
+
48
+ You can use the [Icinga Vagrant-Box](https://github.com/Icinga/icinga-vagrant) from the Icinga Team or
49
+ my own [Docker Container](https://hub.docker.com/r/bodsch/docker-icinga2/) as Datasource.
50
+
51
+ **Remember** Change the exported Environment Variables to your choosed Datasource!
52
+
53
+ you can find many examples under the directory `examples`:
54
+
55
+ #$ export ICINGA_HOST=localhost ; export ICINGA_API_USER=root ; export ICINGA_API_PASSWORD=icinga
56
+ #$ ruby examples/informations.rb
57
+ #$ ruby examples/statistics.rb
58
+ #$ ruby examples/users.rb
59
+
60
+ and so on.
61
+
62
+ ### Test via CLI
63
+
64
+ #$ irb
65
+ 2.3.0 :001 > require 'icinga2'
66
+ => true
67
+ 2.3.0 :002 > config = { :icinga => { :host => 'localhost', :api => { :user => 'root', :pass => 'icinga' } } }
68
+ => {:icinga=>{:host=>"localhost", :api=>{:user=>"root", :pass=>"icinga"}}}
69
+ 2.3.0 :003 > i = Icinga2::Client.new( config )
70
+
71
+
72
+ ## Create a own gem file
73
+
74
+ #$ gem build icinga2.gemspec
75
+ Successfully built RubyGem
76
+ Name: icinga2
77
+ Version: 0.9.0
78
+ File: icinga2-0.9.0.gem
79
+
80
+ ## Install local gem
81
+
82
+ #$ gem install icinga2
83
+ Successfully installed icinga2-0.9.0
84
+ 1 gem installed
85
+
86
+
48
87
  ## Status
49
88
 
50
89
  supports the following API Calls:
@@ -64,10 +103,10 @@ supports the following API Calls:
64
103
  - [Hosts](doc/hosts.md)
65
104
  * [add host](doc/hosts.md#add-host)
66
105
  * [delete host](doc/hosts.md#delete-host)
106
+ * [modify host](doc/hosts.md#modify-host)
67
107
  * [list hosts](doc/hosts.md#list-hosts)
68
108
  * [check if host exists](doc/hosts.md#host-exists)
69
109
  * [list host objects](doc/hosts.md#list-host-objects)
70
- * [adjusted hosts state](doc/hosts.md#hosts-adjusted)
71
110
  * [count of hosts with problems](doc/hosts.md#count-hosts-with-problems)
72
111
  * [list of hosts with problems](doc/hosts.md#list-hosts-with-problems)
73
112
  * [count of all hosts](doc/hosts.md#count-all-hosts)
@@ -87,7 +126,6 @@ supports the following API Calls:
87
126
  * [list services](doc/services.md#list-services)
88
127
  * [check if service exists](doc/services.md#service-exists)
89
128
  * [list service objects](doc/services.md#list-service-objects)
90
- * [adjusted service state](doc/services.md#services-adjusted)
91
129
  * [count services with problems](doc/services.md#count-services-with-problems)
92
130
  * [list of services with problems](doc/services.md#list-services-with-problems)
93
131
  * [count of all services](doc/services.md#count-all-services)
@@ -125,34 +163,6 @@ supports the following API Calls:
125
163
  * [queue statistics from the api](doc/statistics.md#stats-work-queue)
126
164
 
127
165
 
128
- ## create a own gem File
129
-
130
- #$ gem build icinga2.gemspec
131
- Successfully built RubyGem
132
- Name: icinga2
133
- Version: 0.6.0
134
- File: icinga2-0.6.0.gem
135
-
136
- ## install gem
137
-
138
- #$ gem install icinga2
139
- Successfully installed icinga2-0.6.0
140
- 1 gem installed
141
-
142
- ## test via CLI
143
-
144
- #$ irb
145
- 2.3.0 :001 > require 'icinga2'
146
- => true
147
- 2.3.0 :002 > config = { :icinga => { :host => 'localhost', :api => { :user => 'root', :pass => 'icinga' } } }
148
- => {:icinga=>{:host=>"localhost", :api=>{:user=>"root", :pass=>"icinga"}}}
149
- 2.3.0 :003 > i = Icinga2::Client.new( config )
150
-
151
- ## test via example
152
- #$ export ICINGA_HOST=localhost ; export ICINGA_API_USER=root ; export ICINGA_API_PASSWORD=icinga
153
- #$ ruby examples/test.rb
154
-
155
-
156
166
 
157
167
  ## Contributing
158
168
 
@@ -161,7 +171,3 @@ supports the following API Calls:
161
171
  3. Commit your changes (`git commit -am 'Add some feature'`)
162
172
  4. Push to the branch (`git push origin my-new-feature`)
163
173
  5. Create new Pull Request
164
-
165
-
166
-
167
-
@@ -5,11 +5,21 @@
5
5
 
6
6
  ### Example
7
7
  param = {
8
- host: 'foo',
9
- fqdn: 'foo.bar.com',
8
+ name: 'foo',
9
+ address: 'foo.bar.com',
10
10
  display_name: 'test node',
11
11
  max_check_attempts: 5,
12
- notes: 'test node'
12
+ notes: 'test node',
13
+ vars: {
14
+ description: 'host foo',
15
+ os: 'Linux',
16
+ partitions: {
17
+ '/' => {
18
+ crit: '95%',
19
+ warn: '90%'
20
+ }
21
+ }
22
+ }
13
23
  }
14
24
  @icinga.add_host(param)
15
25
 
@@ -18,7 +28,52 @@
18
28
  delete_host( params )
19
29
 
20
30
  ### Example
21
- @icinga.delete_host(host: 'foo')
31
+ @icinga.delete_host(name: 'foo')
32
+
33
+
34
+ ## <a name="modify-host"></a>modify a host
35
+ modify-host( params )
36
+
37
+ ### Example
38
+
39
+
40
+ param = {
41
+ name: 'foo',
42
+ address: 'foo.bar.com',
43
+ display_name: 'Host for an example Problem',
44
+ max_check_attempts: 10,
45
+ }
46
+
47
+ or
48
+
49
+ param = {
50
+ name: 'foo',
51
+ address: 'foo.bar.com',
52
+ notes: 'an demonstration object',
53
+ vars: {
54
+ description: 'schould be delete ASAP',
55
+ os: 'Linux',
56
+ partitions: {
57
+ '/' => {
58
+ crit: '98%',
59
+ warn: '95%'
60
+ }
61
+ }
62
+ },
63
+ merge_vars: true
64
+ }
65
+
66
+ or
67
+
68
+ param = {
69
+ name: 'foo',
70
+ address: 'foo.bar.com',
71
+ vars: {
72
+ description: 'removed all other custom vars',
73
+ }
74
+ }
75
+
76
+ @icinga.modify-host( name: 'foo')
22
77
 
23
78
 
24
79
  ## <a name="list-hosts"></a>list hosts
@@ -27,7 +82,7 @@
27
82
  hosts( params )
28
83
 
29
84
  #### Example
30
- @icinga.host(host: 'icinga2')
85
+ @icinga.host(name: 'icinga2')
31
86
 
32
87
  ### list all hosts
33
88
  hosts
@@ -50,19 +105,6 @@
50
105
  @icinga.host_objects(attrs: ['name', 'state'])
51
106
 
52
107
 
53
- ## <a name="hosts-adjusted"></a>adjusted hosts state
54
- hosts_adjusted
55
-
56
- ### Example
57
- @icinga.cib_data
58
- @icinga.host_objects
59
- warning, critical, unknown = @icinga.hosts_adjusted.values
60
-
61
- or
62
- h = @icinga.hosts_adjusted
63
- down = h.dig(:down_adjusted)
64
-
65
-
66
108
  ## <a name="count-hosts-with-problems"></a>count of hosts with problems
67
109
  count_hosts_with_problems
68
110
 
@@ -82,7 +124,6 @@ or
82
124
  hosts_all
83
125
 
84
126
  ### Example
85
- @icinga.host_objects
86
127
  @icinga.hosts_all
87
128
 
88
129
 
@@ -90,10 +131,10 @@ or
90
131
  host_problems
91
132
 
92
133
  ### Example
93
- @icinga.host_objects
94
- all, down, critical, unknown = @icinga.host_problems.values
134
+ all, down, critical, unknown, handled, adjusted = @icinga.host_problems.values
95
135
 
96
136
  or
137
+
97
138
  p = @icinga.host_problems
98
139
  down = h.dig(:down)
99
140
 
@@ -1,22 +1,40 @@
1
1
  # Icinga2 - Services
2
2
 
3
3
 
4
- ## <a name="add-service"></a>add services
5
- add_services( params )
4
+ ## <a name="add-service"></a>*add_services( params )*
6
5
 
7
- ### Example
8
- services = {
9
- vars: {
10
- display_name: 'Tomcat - Heap Memory',
11
- check_command: 'tomcat-heap-memory'
12
- }
13
- }
6
+ Add a Service to Icinga2
7
+
8
+ `params` is an `Hash` with following Parameters:
9
+
10
+ | Parameter | Type | Example | Description
11
+ | :-------------------- | :-----: | :----- | :-----------
12
+ | `host_name` | String | `foo` | existing Host for these Service
13
+ | `name` | String | `ping4` | Service Name they will be create
14
+ | `templates` | Array | `['own-service']` | (optional) a Array of templates (default: `['generic-service']`)
15
+ | `vars` | Hash | (see below) | Hash with custom options
16
+
17
+ Under the `vars` Hash is the structure very strict.
18
+ They hold only a `attrs` Hash with all others variable.
14
19
 
15
- @icinga.add_services( host: 'icinga2', service_name: 'ping4', vars: services )
20
+ **Importand** The the `attrs` Hash has mandatory fields!
21
+
22
+ | Parameter | Type | Example | Description
23
+ | :-------------------- | :-----: | :------------ | :-----------
24
+ | `check_command` | String | `ping4` | The Check Command to execute (**Importand** This Check-Comand must be exists! Otherwise an error will occur)
25
+ | `check_interval` | Integer | `10` | The check Interval
26
+ | `retry_interval` | Integer | `30` | The retry Interval
27
+ | `vars` | Hash | (see below) | optional config params for the `check_command`
28
+
29
+ For more custom fields, add an `vars` Hash with the config parameters of the `check_command` (see below in the examples)
30
+
31
+ The result are an `Hash`
32
+
33
+ ### Example
16
34
 
17
35
  @icinga.add_services(
18
- host: 'icinga2',
19
- service_name: 'ping4',
36
+ host_name: 'foo',
37
+ name: 'ping4',
20
38
  vars: {
21
39
  attrs: {
22
40
  check_command: 'ping4',
@@ -26,14 +44,109 @@
26
44
  }
27
45
  )
28
46
 
47
+ or
48
+
49
+ @icinga.add_service(
50
+ host_name: 'foo',
51
+ name: 'http',
52
+ vars: {
53
+ attrs: {
54
+ check_command: 'http',
55
+ check_interval: 10,
56
+ retry_interval: 30,
57
+ vars: {
58
+ http_address: '127.0.0.1',
59
+ http_url: '/access/index',
60
+ http_port: 80
61
+ }
62
+ }
63
+ }
64
+ )
65
+
29
66
 
30
- ## <a name="list-services"></a>list services
31
67
 
32
- ### list named service
33
- services( params )
68
+ ## <a name="delete-service"></a>*delete_service( params )*
69
+
70
+ Delete an Service From Icinga2
71
+
72
+ `params` is an `Hash` with following Parameters:
73
+
74
+ | Parameter | Type | Example | Description
75
+ | :-------------------- | :-----: | :----- | :-----------
76
+ | `host` | String | `foo` | existing Host for these Service
77
+ | `name` | String | `ping4` | Service Name they will be deleted
78
+ | `cascade` | Bool | `true` | delete service also when other objects depend on it (default: `false`)
79
+
80
+
81
+ The result are an `Hash`
82
+
83
+ #### Example
84
+
85
+ @icinga.delete_service(host_name: 'foo', name: 'ping4')
86
+
87
+ or
88
+
89
+ @icinga.delete_service(host_name: 'foo', name: 'new_ping4', cascade: true)
90
+
91
+
92
+ ## <a name="modify-service"></a>*modify_service( params )*
93
+
94
+ Modify an Service.
95
+
96
+ `params` is an `Hash` with following Parameters:
97
+
98
+ | Parameter | Type | Example | Description
99
+ | :-------------------- | :-----: | :----- | :-----------
100
+ | `name` | String | `ping4` | Service Name they will be deleted
101
+ | `templates` | Array | `['own-service']` | (optional) a Array of templates (default: `['generic-service']`)
102
+ | `vars` | Hash | (see below) | Hash with custom options
103
+
104
+ Under the `vars` Hash is the structure very strict.
105
+ They hold only a `attrs` Hash with all others variable. (similar to `add_service`)
106
+
107
+ For more custom fields, add an `vars` Hash with the config parameters of the `check_command` (see below in the examples)
108
+
109
+ The result are an `Hash`
110
+
111
+ #### Example
112
+
113
+ @icinga.modify_service(
114
+ name: 'http2',
115
+ vars: {
116
+ attrs: {
117
+ check_interval: 60,
118
+ retry_interval: 10,
119
+ vars: {
120
+ http_url: '/access/login' ,
121
+ http_address: '10.41.80.63'
122
+ }
123
+ }
124
+ }
125
+ )
126
+
127
+
128
+ ## <a name="unhandled-services"></a>*unhandled_services*
129
+
130
+ return all unhandled services
131
+
132
+ The result are an `Hash`
34
133
 
35
134
  #### Example
36
- @icinga.services( host: 'icinga2', service: 'ping4' )
135
+ @icinga.unhandled_services
136
+
137
+
138
+ ## <a name="list-services"></a>*services* or *services( params )*
139
+
140
+ returns all or a named service
141
+
142
+ the optional `params` is an `Hash` with following Parameters:
143
+
144
+ | Parameter | Type | Example | Description
145
+ | :-------------------- | :-----: | :----- | :-----------
146
+ | `host` | String | `foo` | Hostname
147
+ | `service` | String | `ping4` | service to list
148
+
149
+ The result are an `Hash`
37
150
 
38
151
  ### list all services
39
152
  services
@@ -42,96 +155,144 @@
42
155
  @icinga.services
43
156
 
44
157
 
45
- ## <a name="delete-service"></a>delete
46
- delete_service( params )
158
+ ### list named service
159
+ services( params )
47
160
 
48
161
  #### Example
49
- @icinga.delete_service(host: 'foo', service_name: 'ping4')
162
+ @icinga.services( host_name: 'icinga2', service: 'ping4' )
50
163
 
51
- @icinga.delete_service(host: 'foo', service_name: 'new_ping4', cascade: true)
52
164
 
165
+ ## <a name="service-exists"></a>*exists_service?( params )*
53
166
 
54
- ## <a name="unhandled-services"></a>list unhandled_services
55
- unhandled_services
167
+ check if the service exists
56
168
 
57
- #### Example
58
- @icinga.unhandled_services
169
+ the optional `params` is an `Hash` with following Parameters:
59
170
 
171
+ | Parameter | Type | Example | Description
172
+ | :-------------------- | :-----: | :----- | :-----------
173
+ | `host` | String | `foo` | Hostname
174
+ | `service` | String | `ping4` | servicename
60
175
 
61
- ## <a name="service-exists"></a>check if the service exists
62
- exists_service?( params )
176
+ The result are an `Hash`
63
177
 
64
178
  ### Example
65
- @icinga.exists_service?(host: 'icinga2', service: 'users' )
179
+ @icinga.exists_service?( host_name: 'icinga2', service: 'users' )
180
+
181
+
182
+ ## <a name="list-service-objects"></a>*service_objects( params )*
66
183
 
184
+ list service objects
67
185
 
68
- ## <a name="list-service-objects"></a>list service objects
69
- service_objects( params )
186
+ the optional `params` is an `Hash` with following Parameters:
187
+
188
+ | Parameter | Type | Example | Description
189
+ | :-------------------- | :-----: | :----- | :-----------
190
+ | `attrs` | Array | `[]` | Array of `attrs`
191
+ | `filter` | Array | `[]` | Array of `filter`
192
+ | `joins` | Array | `[]` | Array of `joins`
193
+
194
+ For more Examples for Quering Objects read the [Icinga2 Documentation](https://www.icinga.com/docs/icinga2/latest/doc/12-icinga2-api/#querying-objects)
195
+
196
+ - defaults for `attrs` are `['name', 'state', 'acknowledgement', 'downtime_depth', 'last_check']`
197
+ - defaults for `filter` are `[]`
198
+ - defaults for `joins` are `['host.name','host.state','host.acknowledgement','host.downtime_depth','host.last_check']`
199
+
200
+ The result are an `Array`
70
201
 
71
202
  ### Example
72
- @icinga.service_objects(attrs: ['name', 'state'], joins: ['host.name','host.state'])
203
+ @icinga.service_objects(
204
+ attrs: ['name', 'state'],
205
+ joins: ['host.name','host.state']
206
+ )
207
+
73
208
 
209
+ ## <a name="services-adjusted"></a>*services_adjusted*
74
210
 
75
- ## <a name="services-adjusted"></a>adjusted service state
76
- services_adjusted
211
+ returns adjusted service state
212
+
213
+ The result are an `Hash`
77
214
 
78
215
  ### Example
79
- @icinga.cib_data
80
- @icinga.service_objects
216
+
81
217
  warning, critical, unknown = @icinga.services_adjusted.values
82
218
 
83
219
  or
220
+
84
221
  s = @icinga.services_adjusted
85
222
  unknown = s.dig(:unknown)
86
223
 
87
224
 
88
- ## <a name="count-services-with-problems"></a>count services with problems
89
- count_services_with_problems
225
+ ## <a name="count-services-with-problems"></a>*count_services_with_problems*
226
+
227
+ count services with problems
228
+
229
+ The result are an `Integer`
90
230
 
91
231
  ### Example
92
232
  @icinga.count_services_with_problems
93
233
 
94
234
 
95
- ## <a name="list-services-with-problems"></a>list of services with problems
96
- list_services_with_problems( max_items )
235
+ ## <a name="list-services-with-problems"></a>*list_services_with_problems( max_items )*
236
+
237
+ list of services with problems
238
+
239
+ The result are an `Hash`
97
240
 
98
241
  ### Example
99
- @icinga.list_services_with_problems
100
- @icinga.list_services_with_problems(10)
242
+
101
243
  problems, problems_and_severity = @icinga.list_services_with_problems(10).values
102
244
 
245
+ or
246
+
247
+ l = @icinga.list_services_with_problems(10)
248
+ problems_and_severity = l.dig(:services_with_problems_and_severity)
249
+
250
+
251
+ ## <a name="services-all"></a>*services_all*
103
252
 
104
- ## <a name="count-all-services"></a>count all services
105
- services_all
253
+ count all services
254
+
255
+ The result are an `Integer`
106
256
 
107
257
  ### Example
108
- @icinga.service_objects
258
+
109
259
  @icinga.services_all
110
260
 
111
261
 
112
- ## <a name="count-all-services-handled"></a>count all services with handled problems
113
- service_problems_handled
262
+ ## <a name="service-problems"></a>*service_problems*
263
+
264
+ returns data with service problems
265
+
266
+ The result are an `Hash`
114
267
 
115
268
  ### Example
116
- @icinga.cib_data
117
- @icinga.service_objects
118
- all, critical, warning, unknown = @icinga.service_problems_handled.values
269
+
270
+ all, warning, critical, unknown, pending, in_downtime, acknowledged, adjusted_warning, adjusted_critical, adjusted_unknown = @icinga.service_problems.values
119
271
 
120
272
  or
121
- p = @icinga.service_problems_handled
273
+
274
+ p = @icinga.service_problems
122
275
  warning = p.dig(:warning)
123
276
 
124
277
 
125
- ## <a name=""></a>(protected) calculate a service severity
126
- service_severity( params )
278
+ ## <a name=""></a>*service_severity( params )* (protected)
279
+
280
+ calculate a service severity
281
+ (taken from the IcingaWeb2 Code)
282
+
283
+ The result are an `Integer`
127
284
 
128
285
  ### Example
129
286
  service_severity( {'attrs' => { 'state' => 0.0, 'acknowledgement' => 0.0, 'downtime_depth' => 0.0 } } )
130
287
 
131
288
 
132
289
 
133
- ## <a name=""></a>(private) update host
134
- update_host( hash, host )
290
+ ## <a name=""></a>*update_host( hash, host )* (private)
291
+
292
+ update host
293
+
294
+ The result are an `Hash`
135
295
 
136
296
  ### Example
137
- update_host( v, host_name )
297
+ service_severity( {'attrs' => { 'state' => 0.0, 'acknowledgement' => 0.0, 'downtime_depth' => 0.0 } } )
298
+