1
- #! /usr/bin/env sh
1
+ #! /usr/bin/env bash
2
+
3
+ # Function to send error to Sentry
4
+ send_error_to_sentry () {
5
+ local error_message=" $1 "
6
+ local db_name=" $2 "
7
+ local status_code=" $3 "
8
+
9
+ if [ -n " ${SENTRY_DSN} " ]; then
10
+ wget -q --header=" Content-Type: application/json" \
11
+ --post-data=" {
12
+ \" message\" : \" ${error_message} \" ,
13
+ \" level\" : \" error\" ,
14
+ \" extra\" : {
15
+ \" database\" : \" ${db_name} \" ,
16
+ \" status_code\" : \" ${status_code} \" ,
17
+ \" hostname\" : \" $( hostname) \"
18
+ }
19
+ }" \
20
+ -O - " ${SENTRY_DSN} "
21
+ fi
22
+ }
2
23
3
24
MYNAME=" postgresql-backup-restore"
4
25
STATUS=0
@@ -12,7 +33,9 @@ $(PGPASSWORD=${DB_USERPASSWORD} pg_dump --host=${DB_HOST} --username=${DB_USER}
12
33
end=$( date +%s)
13
34
14
35
if [ $STATUS -ne 0 ]; then
15
- echo " ${MYNAME} : FATAL: Backup of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
36
+ error_message=" ${MYNAME} : FATAL: Backup of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
37
+ echo " ${error_message} "
38
+ send_error_to_sentry " ${error_message} " " ${STATUS} " " ${DB_NAME} "
16
39
exit $STATUS
17
40
else
18
41
echo " ${MYNAME} : Backup of ${DB_NAME} completed in $( expr ${end} - ${start} ) seconds, ($( stat -c %s /tmp/${DB_NAME} .sql) bytes)."
@@ -23,7 +46,9 @@ gzip -f /tmp/${DB_NAME}.sql || STATUS=$?
23
46
end=$( date +%s)
24
47
25
48
if [ $STATUS -ne 0 ]; then
26
- echo " ${MYNAME} : FATAL: Compressing backup of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
49
+ error_message=" ${MYNAME} : FATAL: Compressing backup of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
50
+ echo " ${error_message} "
51
+ send_error_to_sentry " ${error_message} " " ${STATUS} " " ${DB_NAME} "
27
52
exit $STATUS
28
53
else
29
54
echo " ${MYNAME} : Compressing backup of ${DB_NAME} completed in $( expr ${end} - ${start} ) seconds."
@@ -34,7 +59,9 @@ s3cmd put /tmp/${DB_NAME}.sql.gz ${S3_BUCKET} || STATUS=$?
34
59
end=$( date +%s)
35
60
36
61
if [ $STATUS -ne 0 ]; then
37
- echo " ${MYNAME} : FATAL: Copy backup to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
62
+ error_message=" ${MYNAME} : FATAL: Copy backup to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
63
+ echo " ${error_message} "
64
+ send_error_to_sentry " ${error_message} " " ${STATUS} " " ${DB_NAME} "
38
65
exit $STATUS
39
66
else
40
67
echo " ${MYNAME} : Copy backup to ${S3_BUCKET} of ${DB_NAME} completed in $( expr ${end} - ${start} ) seconds."
@@ -51,7 +78,9 @@ if [ "${B2_BUCKET}" != "" ]; then
51
78
STATUS=$?
52
79
end=$( date +%s)
53
80
if [ $STATUS -ne 0 ]; then
54
- echo " ${MYNAME} : FATAL: Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
81
+ error_message=" ${MYNAME} : FATAL: Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS ) in $( expr ${end} - ${start} ) seconds."
82
+ echo " ${error_message} "
83
+ send_error_to_sentry " ${error_message} " " ${STATUS} "
55
84
exit $STATUS
56
85
else
57
86
echo " ${MYNAME} : Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} completed in $( expr ${end} - ${start} ) seconds."
0 commit comments