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.
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # 07.10.2017 - Bodo Schulz
5
+ #
6
+ #
7
+ # Examples for Hosts
8
+
9
+ # -----------------------------------------------------------------------------
10
+
11
+ require_relative '../lib/icinga2'
12
+
13
+ # -----------------------------------------------------------------------------
14
+
15
+ icinga_host = ENV.fetch( 'ICINGA_HOST' , 'icinga2' )
16
+ icinga_api_port = ENV.fetch( 'ICINGA_API_PORT' , 5665 )
17
+ icinga_api_user = ENV.fetch( 'ICINGA_API_USER' , 'admin' )
18
+ icinga_api_pass = ENV.fetch( 'ICINGA_API_PASSWORD' , nil )
19
+ icinga_api_pki_path = ENV.fetch( 'ICINGA_API_PKI_PATH' , '/etc/icinga2' )
20
+ icinga_api_node_name = ENV.fetch( 'ICINGA_API_NODE_NAME' , nil )
21
+ icinga_cluster = ENV.fetch( 'ICINGA_CLUSTER' , false )
22
+ icinga_satellite = ENV.fetch( 'ICINGA_CLUSTER_SATELLITE', nil )
23
+
24
+
25
+ # convert string to bool
26
+ icinga_cluster = icinga_cluster.to_s.eql?('true') ? true : false
27
+
28
+ config = {
29
+ icinga: {
30
+ host: icinga_host,
31
+ api: {
32
+ port: icinga_api_port,
33
+ user: icinga_api_user,
34
+ password: icinga_api_pass,
35
+ pki_path: icinga_api_pki_path,
36
+ node_name: icinga_api_node_name
37
+ },
38
+ cluster: icinga_cluster,
39
+ satellite: icinga_satellite
40
+ }
41
+ }
42
+
43
+ # ---------------------------------------------------------------------------------------
44
+
45
+ i = Icinga2::Client.new( config )
46
+
47
+ unless( i.nil? )
48
+
49
+ # run tests ...
50
+ #
51
+ #
52
+
53
+ begin
54
+
55
+ puts ' ------------------------------------------------------------- '
56
+ puts ''
57
+ puts ' ==> HOSTS'
58
+ puts ''
59
+
60
+ puts format( '= count of all hosts : %d', i.hosts_all )
61
+ puts format( '= count_hosts_with_problems: %d', i.count_hosts_with_problems)
62
+ puts ''
63
+
64
+ all, down, critical, unknown, handled, adjusted = i.host_problems.values
65
+
66
+ puts '= hosts with problems'
67
+ puts format( ' - all : %d', all )
68
+ puts format( ' - down : %d', down )
69
+ puts format( ' - critical: %d', critical )
70
+ puts format( ' - unknown : %d', unknown )
71
+ puts format( ' - handled : %d', handled )
72
+ puts format( ' - adjusted: %d', adjusted )
73
+ puts ''
74
+
75
+ puts ''
76
+ ['c1-mysql-1', 'bp-foo'].each do |h|
77
+
78
+ e = i.exists_host?( h ) ? 'true' : 'false'
79
+ puts format( '= check if Host \'%s\' exists : %s', h, e )
80
+ end
81
+
82
+ puts ''
83
+
84
+ puts '= 5 Hosts with Problem '
85
+ puts i.list_hosts_with_problems
86
+ puts ''
87
+
88
+ ['c1-mysql-1', 'bp-foo'].each do |h|
89
+ puts format('= list named Hosts \'%s\'', h )
90
+ puts i.hosts( name: h )
91
+ puts ''
92
+ end
93
+
94
+ puts ' = add Host \'foo\''
95
+
96
+ options = {
97
+ name: 'foo',
98
+ address: 'foo.bar.com',
99
+ display_name: 'test node',
100
+ max_check_attempts: 5,
101
+ notes: 'test node',
102
+ vars: {
103
+ description: 'spec test',
104
+ os: 'Docker',
105
+ partitions: {
106
+ '/' => {
107
+ crit: '95%',
108
+ warn: '90%'
109
+ }
110
+ }
111
+ }
112
+ }
113
+
114
+ puts i.add_host(options)
115
+ puts ''
116
+
117
+ puts ' = add Host \'foo\' (again)'
118
+ puts i.add_host(options)
119
+ puts ''
120
+
121
+ puts ' = modify Host \'foo\' with merge vars'
122
+ options = {
123
+ name: 'foo',
124
+ display_name: 'test node (changed)',
125
+ max_check_attempts: 10,
126
+ notes: 'spec test',
127
+ vars: {
128
+ description: 'changed at ...'
129
+ },
130
+ merge_vars: true
131
+ }
132
+ puts i.modify_host(options)
133
+ puts ''
134
+
135
+ puts ' = modify Host \'foo\' with overwrite vars'
136
+ options = {
137
+ name: 'foo',
138
+ display_name: 'test node (changed)',
139
+ max_check_attempts: 10,
140
+ notes: 'spec test',
141
+ vars: {
142
+ description: 'change and overwrite vars'
143
+ }
144
+ }
145
+ puts i.modify_host(options)
146
+ puts ''
147
+
148
+ puts ' = delete Host \'test\''
149
+ puts i.delete_host( name: 'test' )
150
+ puts ''
151
+
152
+ puts ' = delete Host \'foo\''
153
+ puts i.delete_host( name: 'foo' )
154
+ puts ''
155
+
156
+ puts ' = delete Host \'foo\' (again)'
157
+ puts i.delete_host( name: 'foo' )
158
+ puts ''
159
+
160
+ puts '= list all Hosts'
161
+ puts i.hosts
162
+ puts ''
163
+
164
+ puts '= list named Hosts \'c1-mysql-1\''
165
+ puts i.hosts(name: 'c1-mysql-1')
166
+ puts ''
167
+
168
+ puts ' ------------------------------------------------------------- '
169
+ puts ''
170
+
171
+ rescue => e
172
+ $stderr.puts( e )
173
+ $stderr.puts( e.backtrace.join("\n") )
174
+ end
175
+ end
176
+
177
+
178
+ # -----------------------------------------------------------------------------
179
+
180
+ # EOF
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # 07.10.2017 - Bodo Schulz
5
+ #
6
+ #
7
+ # Examples for Hostgroups
8
+
9
+ # -----------------------------------------------------------------------------
10
+
11
+ require_relative '../lib/icinga2'
12
+
13
+ # -----------------------------------------------------------------------------
14
+
15
+ icinga_host = ENV.fetch( 'ICINGA_HOST' , 'icinga2' )
16
+ icinga_api_port = ENV.fetch( 'ICINGA_API_PORT' , 5665 )
17
+ icinga_api_user = ENV.fetch( 'ICINGA_API_USER' , 'admin' )
18
+ icinga_api_pass = ENV.fetch( 'ICINGA_API_PASSWORD' , nil )
19
+ icinga_api_pki_path = ENV.fetch( 'ICINGA_API_PKI_PATH' , '/etc/icinga2' )
20
+ icinga_api_node_name = ENV.fetch( 'ICINGA_API_NODE_NAME' , nil )
21
+ icinga_cluster = ENV.fetch( 'ICINGA_CLUSTER' , false )
22
+ icinga_satellite = ENV.fetch( 'ICINGA_CLUSTER_SATELLITE', nil )
23
+
24
+
25
+ # convert string to bool
26
+ icinga_cluster = icinga_cluster.to_s.eql?('true') ? true : false
27
+
28
+ config = {
29
+ icinga: {
30
+ host: icinga_host,
31
+ api: {
32
+ port: icinga_api_port,
33
+ user: icinga_api_user,
34
+ password: icinga_api_pass,
35
+ pki_path: icinga_api_pki_path,
36
+ node_name: icinga_api_node_name
37
+ },
38
+ cluster: icinga_cluster,
39
+ satellite: icinga_satellite
40
+ }
41
+ }
42
+
43
+ # ---------------------------------------------------------------------------------------
44
+
45
+ i = Icinga2::Client.new( config )
46
+
47
+ unless( i.nil? )
48
+
49
+ # run tests ...
50
+ #
51
+ #
52
+
53
+ begin
54
+
55
+ i.cib_data
56
+
57
+ puts ' ------------------------------------------------------------- '
58
+ puts ''
59
+
60
+ v, r = i.version.values
61
+ l, e = i.average_statistics.values
62
+ puts format( '= version: %s, revision %s', v, r )
63
+ puts format( '= avg_latency: %s, avg_execution_time %s', l, e )
64
+ puts format( '= start time: %s', i.start_time )
65
+ puts format( '= uptime: %s', i.uptime )
66
+ puts format( '= node name: %s', i.node_name )
67
+ puts ''
68
+
69
+ puts '= icinga2 status'
70
+ puts i.status_data
71
+ puts ''
72
+
73
+ puts '= icinga2 application data'
74
+ puts i.application_data
75
+ puts ''
76
+ puts '= CIB'
77
+ puts i.cib_data
78
+ puts ''
79
+ puts '= API Listener'
80
+ puts i.api_listener
81
+ puts ''
82
+
83
+ puts ' ------------------------------------------------------------- '
84
+ puts ''
85
+
86
+ rescue => e
87
+ $stderr.puts( e )
88
+ $stderr.puts( e.backtrace.join("\n") )
89
+ end
90
+ end
91
+
92
+
93
+ # -----------------------------------------------------------------------------
94
+
95
+ # EOF
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # 07.10.2017 - Bodo Schulz
5
+ #
6
+ #
7
+ # Examples for Hostgroups
8
+
9
+ # -----------------------------------------------------------------------------
10
+
11
+ require_relative '../lib/icinga2'
12
+
13
+ # -----------------------------------------------------------------------------
14
+
15
+ icinga_host = ENV.fetch( 'ICINGA_HOST' , 'icinga2' )
16
+ icinga_api_port = ENV.fetch( 'ICINGA_API_PORT' , 5665 )
17
+ icinga_api_user = ENV.fetch( 'ICINGA_API_USER' , 'admin' )
18
+ icinga_api_pass = ENV.fetch( 'ICINGA_API_PASSWORD' , nil )
19
+ icinga_api_pki_path = ENV.fetch( 'ICINGA_API_PKI_PATH' , '/etc/icinga2' )
20
+ icinga_api_node_name = ENV.fetch( 'ICINGA_API_NODE_NAME' , nil )
21
+ icinga_cluster = ENV.fetch( 'ICINGA_CLUSTER' , false )
22
+ icinga_satellite = ENV.fetch( 'ICINGA_CLUSTER_SATELLITE', nil )
23
+
24
+
25
+ # convert string to bool
26
+ icinga_cluster = icinga_cluster.to_s.eql?('true') ? true : false
27
+
28
+ config = {
29
+ icinga: {
30
+ host: icinga_host,
31
+ api: {
32
+ port: icinga_api_port,
33
+ user: icinga_api_user,
34
+ password: icinga_api_pass,
35
+ pki_path: icinga_api_pki_path,
36
+ node_name: icinga_api_node_name
37
+ },
38
+ cluster: icinga_cluster,
39
+ satellite: icinga_satellite
40
+ }
41
+ }
42
+
43
+ # ---------------------------------------------------------------------------------------
44
+
45
+ i = Icinga2::Client.new( config )
46
+
47
+ unless( i.nil? )
48
+
49
+ # run tests ...
50
+ #
51
+ #
52
+
53
+ begin
54
+
55
+ puts ' ------------------------------------------------------------- '
56
+ puts ''
57
+
58
+ puts ' ==> NOTIFICATIONS'
59
+ puts ''
60
+ puts '= list all Notifications'
61
+ puts i.notifications
62
+ puts ''
63
+
64
+ ['c1-mysql-1', 'bp-foo'].each do |h|
65
+ puts format( '= enable Notifications for \'%s\'', h )
66
+ puts i.enable_host_notification( h )
67
+ end
68
+ puts ''
69
+
70
+ ['c1-mysql-1', 'bp-foo'].each do |h|
71
+ puts format( '= disable Notifications for \'%s\'', h )
72
+ puts i.disable_host_notification( h )
73
+ end
74
+ puts ''
75
+
76
+ ['c1-mysql-1', 'bp-foo'].each do |h|
77
+ puts format( '= enable Notifications for \'%s\' and they services', h )
78
+ puts i.enable_service_notification( h )
79
+ end
80
+ puts ''
81
+
82
+ ['c1-mysql-1', 'bp-foo'].each do |h|
83
+ puts format( '= disable Notifications for \'%s\' and they services', h )
84
+ puts i.disable_service_notification( h )
85
+ end
86
+ puts ''
87
+
88
+ puts '= enable Notifications for hostgroup'
89
+ puts i.enable_hostgroup_notification( host_group: 'linux-servers')
90
+ puts ''
91
+
92
+
93
+ puts '= disable Notifications for hostgroup'
94
+ puts i.disable_hostgroup_notification( host_group: 'linux-servers')
95
+ puts ''
96
+
97
+ puts ' ------------------------------------------------------------- '
98
+ puts ''
99
+
100
+ rescue => e
101
+ $stderr.puts( e )
102
+ $stderr.puts( e.backtrace.join("\n") )
103
+ end
104
+ end
105
+
106
+
107
+ # -----------------------------------------------------------------------------
108
+
109
+ # EOF
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # 07.10.2017 - Bodo Schulz
5
+ #
6
+ #
7
+ # Examples for Servicegroups
8
+
9
+ # -----------------------------------------------------------------------------
10
+
11
+ require_relative '../lib/icinga2'
12
+
13
+ # -----------------------------------------------------------------------------
14
+
15
+ icinga_host = ENV.fetch( 'ICINGA_HOST' , 'icinga2' )
16
+ icinga_api_port = ENV.fetch( 'ICINGA_API_PORT' , 5665 )
17
+ icinga_api_user = ENV.fetch( 'ICINGA_API_USER' , 'admin' )
18
+ icinga_api_pass = ENV.fetch( 'ICINGA_API_PASSWORD' , nil )
19
+ icinga_api_pki_path = ENV.fetch( 'ICINGA_API_PKI_PATH' , '/etc/icinga2' )
20
+ icinga_api_node_name = ENV.fetch( 'ICINGA_API_NODE_NAME' , nil )
21
+
22
+ config = {
23
+ icinga: {
24
+ host: icinga_host,
25
+ api: {
26
+ port: icinga_api_port,
27
+ user: icinga_api_user,
28
+ password: icinga_api_pass,
29
+ pki_path: icinga_api_pki_path,
30
+ node_name: icinga_api_node_name
31
+ }
32
+ }
33
+ }
34
+
35
+ # ---------------------------------------------------------------------------------------
36
+
37
+ i = Icinga2::Client.new( config )
38
+
39
+ unless( i.nil? )
40
+
41
+ # run tests ...
42
+ #
43
+ #
44
+
45
+ begin
46
+
47
+ puts ' ------------------------------------------------------------- '
48
+ puts ''
49
+
50
+ puts ' ==> SERVICEGROUPS'
51
+ puts ''
52
+
53
+ %w[disk foo].each do |h|
54
+
55
+ e = i.exists_servicegroup?( h ) ? 'true' : 'false'
56
+ puts format( '= check if Servicegroup \'%s\' exists : %s', h, e )
57
+ end
58
+ puts ''
59
+
60
+ %w[disk foo].each do |h|
61
+ puts format( '= list named Servicegroup \'%s\':', h )
62
+ puts i.servicegroups( service_group: h )
63
+ end
64
+ puts ''
65
+
66
+ puts '= list all Servicegroup'
67
+ puts i.servicegroups
68
+ puts ''
69
+
70
+ puts '= add Servicegroup \'foo\''
71
+ puts i.add_servicegroup( service_group: 'foo', display_name: 'FOO' )
72
+ puts ''
73
+
74
+ puts '= add Servicegroup \'foo\' (again)'
75
+ puts i.add_servicegroup( service_group: 'foo', display_name: 'FOO' )
76
+ puts ''
77
+
78
+ puts '= list named Servicegroup \'foo\''
79
+ puts i.servicegroups( service_group: 'foo' )
80
+ puts ''
81
+
82
+ puts '= delete Servicegroup \'foo\''
83
+ puts i.delete_servicegroup( service_group: 'foo' )
84
+ puts ''
85
+
86
+ puts '= delete Servicegroup \'foo\' (again)'
87
+ puts i.delete_servicegroup( service_group: 'foo' )
88
+ puts ''
89
+
90
+ puts ' ------------------------------------------------------------- '
91
+ puts ''
92
+
93
+ rescue => e
94
+ $stderr.puts( e )
95
+ $stderr.puts( e.backtrace.join("\n") )
96
+ end
97
+ end
98
+
99
+
100
+ # -----------------------------------------------------------------------------
101
+
102
+ # EOF