-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathalertmanager.sh
132 lines (99 loc) · 2.36 KB
/
alertmanager.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
INTERACTIVE=YES
this=$( basename "$0" )
if [ ! -z "$HELP" ];
then
echo "$this
Install, uninstall or upgrade Prometheus AlertManager.
Adjust settings in conf.sh. Settings are documented in that file.
Additional options can be passed as environment variables, for example in this way:
VAR=value $this
Options understood:
HELP=1 Print this help and exit.
ACTION Allowed values: STATUS | INSTALL | REINSTALL | UNINSTALL
Case-insensitive.
Default: STATUS
"
exit 0
fi
LOG=log
date > $LOG
source conf.sh
# Functions
# =========
log () {
message=$1
echo $message >> $LOG
}
abort () {
exit_code=$1
message=$2
message1="[ERROR] $message"
message2='ABORT'
log "$message1"
echo $message1
log "$message2"
echo $message2
exit $exit_code
}
run () {
command=$1
echo "Running command: $command" >> $LOG
$command > tmp-stdout 2> tmp-stderr
r=$?
stderr=$( cat tmp-stderr )
stdout=$( cat tmp-stdout )
echo 'STDOUT:' >> $LOG
cat tmp-stdout >> $LOG
echo 'STDERR:' >> $LOG
cat tmp-stderr >> $LOG
log "EXIT CODE: $r"
if [ ! -z "$stderr" ];
then
echo "$stderr"
fi
rm -f tmp-std*
if [ "$r" != '0' ];
then
abort "$r" "Last command failed with exit code: $r"
fi
}
# Defaults
# ========
if [ -z "$ACTION" ];
then
ACTION='STATUS'
else
ACTION=${ACTION^^}
if [ $ACTION != 'STATUS' ] && [ $ACTION != 'INSTALL' ] && [ $ACTION != 'REINSTALL' ] && [ $ACTION != 'UNINSTALL' ];
then
abort '2' "Invalid action: $ACTION"
fi
fi
# Validation
# ==========
# Nothing to validate at present.
# Body
# ====
log "ACTION: $ACTION"
mkdir info 2> /dev/null
run "kubectl config set-context --current --namespace=$PMM_SERVER_NAMESPACE"
if [ $ACTION == 'STATUS' ];
then
# show info and exit
kubectl get services alertmanager
exit 0
elif [ $ACTION == 'UNINSTALL' ];
then
# uninstall and exit
run "helm delete alertmanager"
exit 0
elif [ $ACTION == 'REINSTALL' ];
then
# uninstall and then continue
run "helm delete alertmanager"
fi
# We're here if ACTION=INSTALL or ACTION=REINSTALL
run "helm repo add prometheus-community https://prometheus-community.github.io/helm-charts"
run "helm repo update"
run "helm install alertmanager prometheus-community/alertmanager"