icinga2 0.9.0.1 → 0.9.2.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.
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
+