32
32
# 20181109 1.0.0 Do not alert for succeeded pods #
33
33
# 20190308 1.1.0 Added node(s) check #
34
34
# 20190903 1.1.1 Detect invalid hostname (non-API hostname) #
35
+ # 20190903 1.2.0 Allow self-signed certificates (-s) #
35
36
# #########################################################################################
36
37
# (Pre-)Define some fixed variables
37
38
STATE_OK=0 # define the exit code if status is OK
@@ -40,7 +41,7 @@ STATE_CRITICAL=2 # define the exit code if status is Critical
40
41
STATE_UNKNOWN=3 # define the exit code if status is Unknown
41
42
export PATH=/usr/local/bin:/usr/bin:/bin:$PATH # Set path
42
43
proto=http # Protocol to use, default is http, can be overwritten with -S parameter
43
- version=1.1.1
44
+ version=1.2.0
44
45
45
46
# Check for necessary commands
46
47
for cmd in jshon curl [
@@ -60,6 +61,7 @@ Usage: $0 -H Rancher2Address -U user-token -P password [-S] -t checktype [-c clu
60
61
\t-U API username (Access Key)\n
61
62
\t-P API password (Secret Key)\n
62
63
\t-S Use https instead of http\n
64
+ \t-s Allow self-signed certificates\n
63
65
\t-t Check type (see list below for available check types)\n
64
66
\t-c Cluster name (for specific cluster check)\n
65
67
\t-p Project name (for specific project check, needed for workload checks)\n
@@ -81,7 +83,7 @@ if [ "${1}" = "--help" -o "${#}" = "0" ];
81
83
fi
82
84
# ########################################################################
83
85
# Get user-given variables
84
- while getopts " H:U:P:t:c:p:n:w:o:Sh " Input;
86
+ while getopts " H:U:P:t:c:p:n:w:o:Ssh " Input;
85
87
do
86
88
case ${Input} in
87
89
H) apihost=${OPTARG} ;;
94
96
w) workloadname=${OPTARG} ;;
95
97
o) podname=${OPTARG} ;;
96
98
S) proto=https;;
99
+ s) selfsigned=" -k" ;;
97
100
h) echo -e ${help} ; exit ${STATE_UNKNOWN} ;;
98
101
* ) echo -e ${help} ; exit ${STATE_UNKNOWN} ;;
99
102
esac
@@ -106,7 +109,7 @@ if [ -z $apipass ]; then echo -e "CHECK_RANCHER2 UNKNOWN - Missing API password"
106
109
if [ -z $type ]; then echo -e " CHECK_RANCHER2 UNKNOWN - Missing check type" ; exit ${STATE_UNKNOWN} ; fi
107
110
# ########################################################################
108
111
# Base communication check
109
- apicheck= $( curl -s -o /dev/null -w " %{http_code}" -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
112
+ apicheck= $( curl -s ${selfsigned} -o /dev/null -w " %{http_code}" -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
110
113
111
114
# Detect failures
112
115
if [[ $apicheck = 000 ]]
@@ -126,8 +129,8 @@ case ${type} in
126
129
127
130
# --- info --- #
128
131
info)
129
- api_out_clusters=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters" )
130
- api_out_project=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
132
+ api_out_clusters=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters" )
133
+ api_out_project=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
131
134
declare -a cluster_ids=( $( echo " $api_out_clusters " | jshon -e data -a -e id) )
132
135
declare -a cluster_names=( $( echo " $api_out_clusters " | jshon -e data -a -e name) )
133
136
declare -a project_ids=( $( echo " $api_out_project " | jshon -e data -a -e id) )
@@ -162,7 +165,7 @@ cluster)
162
165
if [[ -z $clustername ]]; then
163
166
164
167
# Check status of all clusters
165
- api_out_clusters=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters" )
168
+ api_out_clusters=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters" )
166
169
declare -a cluster_ids=( $( echo " $api_out_clusters " | jshon -e data -a -e id) )
167
170
declare -a cluster_names=( $( echo " $api_out_clusters " | jshon -e data -a -e name) )
168
171
declare -a healthstatus=( $( echo " $api_out_clusters " | jshon -e data -a -e componentStatuses -a -e conditions -a -e status -u) )
@@ -192,7 +195,7 @@ if [[ -z $clustername ]]; then
192
195
else
193
196
194
197
# Check status of a single cluster
195
- api_out_single_cluster=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters/${clustername} " )
198
+ api_out_single_cluster=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/clusters/${clustername} " )
196
199
197
200
# Check if that given cluster name exists
198
201
if [[ -n $( echo " $api_out_single_cluster " | grep -i " error" ) ]]
@@ -228,7 +231,7 @@ node)
228
231
if [[ -z $clustername ]]; then
229
232
230
233
# Check status of all nodes in all clusters
231
- api_out_nodes=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/nodes" )
234
+ api_out_nodes=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/nodes" )
232
235
declare -a node_names=( $( echo " $api_out_nodes " | jshon -e data -a -e nodeName -u) )
233
236
declare -a node_status=( $( echo " $api_out_nodes " | jshon -e data -a -e state -u) )
234
237
declare -a node_cluster_member=( $( echo " $api_out_nodes " | jshon -e data -a -e clusterId -u) )
@@ -257,7 +260,7 @@ if [[ -z $clustername ]]; then
257
260
else
258
261
259
262
# Check status of all nodes in a specific clusters
260
- api_out_nodes=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/nodes/?clusterId=${clustername} " )
263
+ api_out_nodes=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/nodes/?clusterId=${clustername} " )
261
264
262
265
# Check if that given cluster name exists
263
266
if [[ -n $( echo " $api_out_nodes " | grep -i " error" ) ]]
@@ -297,7 +300,7 @@ project)
297
300
if [[ -z $projectname ]]; then
298
301
299
302
# Check status of all projects
300
- api_out_project=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
303
+ api_out_project=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project" )
301
304
declare -a project_ids=( $( echo " $api_out_project " | jshon -e data -a -e id -u) )
302
305
declare -a project_names=( $( echo " $api_out_project " | jshon -e data -a -e name -u) )
303
306
declare -a cluster_ids=( $( echo " $api_out_project " | jshon -e data -a -e clusterId) )
@@ -327,7 +330,7 @@ if [[ -z $projectname ]]; then
327
330
else
328
331
329
332
# Check status of a single project
330
- api_out_single_project=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} " )
333
+ api_out_single_project=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} " )
331
334
332
335
# Check if that given project name exists
333
336
if [[ -n $( echo " $api_out_single_project " | grep -i " error" ) ]]
@@ -357,7 +360,7 @@ if [ -z $projectname ]; then echo -e "CHECK_RANCHER2 UNKNOWN - To check workload
357
360
if [[ -z $workloadname ]]; then
358
361
359
362
# Check status of all workloads within a project (project must be given)
360
- api_out_workloads=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /workloads" )
363
+ api_out_workloads=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /workloads" )
361
364
362
365
if [[ -n $( echo " $api_out_workloads " | grep -i " ClusterUnavailable" ) ]]; then
363
366
clustername=$( echo ${projectname} | awk -F' :' ' {print $1}' )
@@ -412,7 +415,7 @@ if [[ -z $workloadname ]]; then
412
415
else
413
416
414
417
# Check status of a single workload
415
- api_out_single_workload=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /workloads/?name=${workloadname} " )
418
+ api_out_single_workload=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /workloads/?name=${workloadname} " )
416
419
417
420
if [[ -n $( echo " $api_out_single_workload " | grep -i " ClusterUnavailable" ) ]]; then
418
421
clustername=$( echo ${projectname} | awk -F' :' ' {print $1}' )
@@ -448,7 +451,7 @@ if [ -z $projectname ]; then echo -e "CHECK_RANCHER2 UNKNOWN - To check pods you
448
451
if [[ -z $podname ]]; then
449
452
450
453
# Check status of all pods within a project (project must be given)
451
- api_out_pods=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /pods" )
454
+ api_out_pods=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /pods" )
452
455
453
456
if [[ -n $( echo " $api_out_pods " | grep -i " ClusterUnavailable" ) ]]; then
454
457
clustername=$( echo ${projectname} | awk -F' :' ' {print $1}' )
488
491
# Check status of a single pod (requires project and namespace)
489
492
# Note: This only makes sense when you create static pods!
490
493
if [ -z $namespacename ]; then echo -e " CHECK_RANCHER2 UNKNOWN - To check a single pod you must also define the namespace (-n)." ; exit ${STATE_UNKNOWN} ; fi
491
- api_out_single_pod=$( curl -s -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /pods/${namespacename} :${podname} " )
494
+ api_out_single_pod=$( curl -s ${selfsigned} -u " ${apiuser} :${apipass} " " ${proto} ://${apihost} /v3/project/${projectname} /pods/${namespacename} :${podname} " )
492
495
493
496
if [[ -n $( echo " $api_out_single_pod " | grep -i " ClusterUnavailable" ) ]]; then
494
497
clustername=$( echo ${projectname} | awk -F' :' ' {print $1}' )
0 commit comments