1- // Copyright © 2017 Maciej Raciborski <[email protected] > 1+ // Copyright © 2017 SBB Cloud Stack Team
22//
33// Licensed under the Apache License, Version 2.0 (the "License");
44// you may not use this file except in compliance with the License.
@@ -21,15 +21,16 @@ import (
2121 "path/filepath"
2222 "runtime"
2323 "strings"
24+ "errors"
2425
2526 "github.com/op/go-logging"
2627 "github.com/oscp/openshift-monitoring-checks/checks"
2728 "github.com/spf13/cobra"
2829 "github.com/spf13/viper"
2930)
3031
31- var pretty bool
32- var debug bool
32+ var pretty bool
33+ var debug bool
3334
3435var log = logging .MustGetLogger ("openshift-monitoring-cli" )
3536
@@ -44,6 +45,13 @@ type IntegrationData struct {
4445 Events []EventData `json:"events"`
4546}
4647
48+ var data = IntegrationData {
49+ Name : "ch.sbb.openshift-integration" ,
50+ ProtocolVersion : "1" ,
51+ IntegrationVersion : "1.0.0" ,
52+ Events : make ([]EventData , 0 ),
53+ }
54+
4755var rootCmd = & cobra.Command {
4856 Use : "openshift-monitoring-cli" ,
4957 Short : "This cli tool runs monitoring checks for OpenShift installations." ,
@@ -120,30 +128,34 @@ func createEvent(err error) map[string]interface{} {
120128 return event
121129}
122130
123- func createMajorEvent (err error ) map [string ]interface {} {
131+ func createHealthyEvent (err error ) map [string ]interface {} {
124132 var event = createEvent (err )
125- event ["category" ] = "MAJOR "
126- log .Error ("MAJOR :" , err .Error ())
133+ event ["category" ] = "HEALTHY "
134+ log .Error ("HEALTHY :" , err .Error ())
127135 return event
128136}
129137
130- func createMinorEvent (err error ) map [string ]interface {} {
131- var event = createEvent (err )
132- event ["category" ] = "MINOR"
133- log .Error ("MINOR:" , err .Error ())
134- return event
138+ func evalMajor (fn func () error ) {
139+ if err := fn (); err != nil {
140+ var event = createEvent (err )
141+ event ["category" ] = "MAJOR"
142+ log .Error ("MAJOR:" , err .Error ())
143+ data .Events = append (data .Events , event )
144+ }
145+ }
146+
147+ func evalMinor (fn func () error ) {
148+ if err := fn (); err != nil {
149+ var event = createEvent (err )
150+ event ["category" ] = "MINOR"
151+ log .Error ("MINOR:" , err .Error ())
152+ data .Events = append (data .Events , event )
153+ }
135154}
136155
137156func runChecks (cmd * cobra.Command , args []string ) {
138157 log .Info ("Running" , viper .GetString ("node.type" ), "checks for OpenShift." )
139158
140- var data = IntegrationData {
141- Name : "ch.sbb.openshift-integration" ,
142- ProtocolVersion : "1" ,
143- IntegrationVersion : "1.0.0" ,
144- Events : make ([]EventData , 0 ),
145- }
146-
147159 if viper .GetString ("node.type" ) == "master" {
148160 if len (viper .GetString ("etcd.ips" )) == 0 || len (viper .GetString ("router.ips" )) == 0 {
149161 log .Fatal ("Can't read service IPs from configuration file." )
@@ -158,75 +170,40 @@ func runChecks(cmd *cobra.Command, args []string) {
158170 // majors on storage
159171 if viper .GetString ("node.type" ) == "storage" {
160172 log .Debug ("Running major checks for storage." )
161- if err := checks .CheckIfGlusterdIsRunning (); err != nil {
162- data .Events = append (data .Events , createMajorEvent (err ))
163- }
164-
165- if err := checks .CheckMountPointSizes (90 ); err != nil {
166- data .Events = append (data .Events , createMajorEvent (err ))
167- }
168173
169- if err := checks .CheckLVPoolSizes (90 ); err != nil {
170- data .Events = append (data .Events , createMajorEvent (err ))
171- }
172-
173- if err := checks .CheckVGSizes (5 ); err != nil {
174- data .Events = append (data .Events , createMajorEvent (err ))
175- }
174+ evalMajor (func () error { return checks .CheckIfGlusterdIsRunning () })
175+ evalMajor (func () error { return checks .CheckMountPointSizes (90 ) })
176+ evalMajor (func () error { return checks .CheckLVPoolSizes (90 ) })
177+ evalMajor (func () error { return checks .CheckVGSizes (5 ) })
176178 }
177179
178180 // majors on node
179181 if viper .GetString ("node.type" ) == "node" {
180182 log .Debug ("Running major checks for node." )
181183
182- if err := checks .CheckDockerPool (90 ); err != nil {
183- data .Events = append (data .Events , createMajorEvent (err ))
184- }
185-
186- if err := checks .CheckDnsNslookupOnKubernetes (); err != nil {
187- data .Events = append (data .Events , createMajorEvent (err ))
188- }
189-
190- if err := checks .CheckDnsServiceNode (); err != nil {
191- data .Events = append (data .Events , createMajorEvent (err ))
192- }
184+ evalMajor (func () error { return checks .CheckDockerPool (90 ) })
185+ evalMajor (func () error { return checks .CheckDnsNslookupOnKubernetes () })
186+ evalMajor (func () error { return checks .CheckDnsServiceNode () })
193187 }
194188
195189 // majors on master
196190 if viper .GetString ("node.type" ) == "master" {
197191 log .Debug ("Running major checks for master." )
198192
199- if err := checks .CheckOcGetNodes (); err != nil {
200- data .Events = append (data .Events , createMajorEvent (err ))
201- }
202-
203- if err := checks .CheckEtcdHealth (viper .GetString ("etcd.ips" ), "" ); err != nil {
204- data .Events = append (data .Events , createMajorEvent (err ))
205- }
193+ evalMajor (func () error { return checks .CheckOcGetNodes () })
194+ evalMajor (func () error { return checks .CheckEtcdHealth (viper .GetString ("etcd.ips" ), "" ) })
206195
207196 if len (viper .GetString ("registry.ip" )) > 0 {
208- if err := checks .CheckRegistryHealth (viper .GetString ("registry.ip" )); err != nil {
209- data .Events = append (data .Events , createMajorEvent (err ))
210- }
197+ evalMajor (func () error { return checks .CheckRegistryHealth (viper .GetString ("registry.ip" )) })
211198 }
212199
213200 for _ , rip := range strings .Split (viper .GetString ("router.ips" ), "," ) {
214- if err := checks .CheckRouterHealth (rip ); err != nil {
215- data .Events = append (data .Events , createMajorEvent (err ))
216- }
217- }
218-
219- if err := checks .CheckMasterApis ("https://localhost:8443/api" ); err != nil {
220- data .Events = append (data .Events , createMajorEvent (err ))
201+ evalMajor (func () error { return checks .CheckRouterHealth (rip ) })
221202 }
222203
223- if err := checks .CheckDnsNslookupOnKubernetes (); err != nil {
224- data .Events = append (data .Events , createMajorEvent (err ))
225- }
226-
227- if err := checks .CheckDnsServiceNode (); err != nil {
228- data .Events = append (data .Events , createMajorEvent (err ))
229- }
204+ evalMajor (func () error { return checks .CheckMasterApis ("https://localhost:8443/api" ) })
205+ evalMajor (func () error { return checks .CheckDnsNslookupOnKubernetes () })
206+ evalMajor (func () error { return checks .CheckDnsServiceNode () })
230207 }
231208
232209 /////////////////
@@ -237,67 +214,39 @@ func runChecks(cmd *cobra.Command, args []string) {
237214 // minors on storage
238215 if viper .GetString ("node.type" ) == "storage" {
239216 log .Debug ("Running minor checks for storage." )
240- if err := checks .CheckOpenFileCount (); err != nil {
241- data .Events = append (data .Events , createMinorEvent (err ))
242- }
243217
244- if err := checks .CheckMountPointSizes (85 ); err != nil {
245- data .Events = append (data .Events , createMinorEvent (err ))
246- }
247-
248- if err := checks .CheckLVPoolSizes (80 ); err != nil {
249- data .Events = append (data .Events , createMinorEvent (err ))
250- }
251-
252- if err := checks .CheckVGSizes (10 ); err != nil {
253- data .Events = append (data .Events , createMinorEvent (err ))
254- }
218+ evalMinor (func () error { return checks .CheckOpenFileCount () })
219+ evalMinor (func () error { return checks .CheckMountPointSizes (85 ) })
220+ evalMinor (func () error { return checks .CheckLVPoolSizes (80 ) })
221+ evalMinor (func () error { return checks .CheckVGSizes (10 ) })
255222 }
256223
257224 // minors on node
258225 if viper .GetString ("node.type" ) == "node" {
259226 log .Debug ("Running minor checks for node." )
260- if err := checks .CheckDockerPool (80 ); err != nil {
261- data .Events = append (data .Events , createMinorEvent (err ))
262- }
263227
264- if err := checks .CheckHttpService (false ); err != nil {
265- data .Events = append (data .Events , createMinorEvent (err ))
266- }
228+ evalMinor (func () error { return checks .CheckDockerPool (80 ) })
229+ evalMinor (func () error { return checks .CheckHttpService (false ) })
267230 }
268231
269232 // minors on master
270233 if viper .GetString ("node.type" ) == "master" {
271234 log .Debug ("Running minor checks for master." )
272- if err := checks .CheckExternalSystem (viper .GetString ("externalSystemUrl" )); err != nil {
273- data .Events = append (data .Events , createMinorEvent (err ))
274- }
275-
276- if err := checks .CheckHawcularHealth (viper .GetString ("hawcularIP" )); err != nil {
277- data .Events = append (data .Events , createMinorEvent (err ))
278- }
279-
280- if err := checks .CheckRouterRestartCount (); err != nil {
281- data .Events = append (data .Events , createMinorEvent (err ))
282- }
283235
284- if err := checks .CheckLimitsAndQuotas (viper .GetInt ("projectsWithoutLimits" )); err != nil {
285- data .Events = append (data .Events , createMinorEvent (err ))
286- }
287-
288- if err := checks .CheckHttpService (false ); err != nil {
289- data .Events = append (data .Events , createMinorEvent (err ))
290- }
291-
292- if err := checks .CheckLoggingRestartsCount (); err != nil {
293- data .Events = append (data .Events , createMinorEvent (err ))
294- }
236+ evalMinor (func () error { return checks .CheckExternalSystem (viper .GetString ("externalSystemUrl" )) })
237+ evalMinor (func () error { return checks .CheckHawcularHealth (viper .GetString ("hawcularIP" )) })
238+ evalMinor (func () error { return checks .CheckRouterRestartCount () })
239+ evalMinor (func () error { return checks .CheckLimitsAndQuotas (viper .GetInt ("projectsWithoutLimits" )) })
240+ evalMinor (func () error { return checks .CheckHttpService (false ) })
241+ evalMinor (func () error { return checks .CheckLoggingRestartsCount () })
295242 }
296243
297244 log .Debug ("Running minor checks for all node types." )
298245 // minor for all server types
299- if err := checks .CheckNtpd (); err != nil {
300- data .Events = append (data .Events , createMinorEvent (err ))
246+ evalMinor (func () error { return checks .CheckNtpd () })
247+
248+ if len (data .Events ) == 0 {
249+ data .Events = append (data .Events , createHealthyEvent (errors .New ("System healthy, nothing to do." )));
301250 }
302251
303252 OutputJSON (data )
0 commit comments