Skip to content

Commit 048b2ee

Browse files
authored
Merge pull request #28 from sil-org/uniform-msg
ensure app name is on every logged message
2 parents 2c080a3 + cfbc6b2 commit 048b2ee

File tree

2 files changed

+56
-58
lines changed

2 files changed

+56
-58
lines changed

application/backup.sh

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
log() {
55
local level="$1";
66
local message="$2";
7-
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${level}: ${message}";
7+
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${level}: ${MYNAME}: ${message}";
88
}
99

1010
# Function to remove sensitive values from sentry Event
@@ -41,7 +41,7 @@ error_to_sentry() {
4141

4242
# Attempt to send event to Sentry
4343
if sentry-cli send-event \
44-
--message "${error_message}" \
44+
--message "${MYNAME}: ${error_message}" \
4545
--level error \
4646
--tag "database:${db_name}" \
4747
--tag "status:${status_code}"; then
@@ -56,8 +56,8 @@ error_to_sentry() {
5656
MYNAME="postgresql-backup-restore";
5757
STATUS=0;
5858

59-
log "INFO" "${MYNAME}: backup: Started";
60-
log "INFO" "${MYNAME}: Backing up ${DB_NAME}";
59+
log "INFO" "backup: Started";
60+
log "INFO" "Backing up ${DB_NAME}";
6161

6262
start=$(date +%s);
6363
$(PGPASSWORD=${DB_USERPASSWORD} pg_dump --host=${DB_HOST} --username=${DB_USER} --create --clean ${DB_OPTIONS} --dbname=${DB_NAME} > /tmp/${DB_NAME}.sql) || STATUS=$?;
@@ -68,81 +68,81 @@ export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID:-$AWS_ACCESS_KEY}"
6868
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY:-$AWS_SECRET_KEY}"
6969

7070
if [ $STATUS -ne 0 ]; then
71-
error_message="${MYNAME}: FATAL: Backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
71+
error_message="FATAL: Backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
7272
log "ERROR" "${error_message}";
7373
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}";
7474
exit $STATUS;
7575
else
76-
log "INFO" "${MYNAME}: Backup of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds, ($(stat -c %s /tmp/${DB_NAME}.sql) bytes).";
76+
log "INFO" "Backup of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds, ($(stat -c %s /tmp/${DB_NAME}.sql) bytes).";
7777
fi
7878

7979
log "INFO" "Generating checksum for backup file"
8080
cd /tmp || {
81-
error_message="${MYNAME}: FATAL: Failed to change directory to /tmp";
81+
error_message="FATAL: Failed to change directory to /tmp";
8282
log "ERROR" "${error_message}";
8383
error_to_sentry "${error_message}" "${DB_NAME}" "1";
8484
exit 1;
8585
}
8686

8787
# Create checksum file format
8888
sha256sum "${DB_NAME}.sql" > "${DB_NAME}.sql.sha256" || {
89-
error_message="${MYNAME}: FATAL: Failed to generate checksum for backup of ${DB_NAME}";
89+
error_message="FATAL: Failed to generate checksum for backup of ${DB_NAME}";
9090
log "ERROR" "${error_message}";
9191
error_to_sentry "${error_message}" "${DB_NAME}" "1";
9292
exit 1;
9393
}
9494
log "DEBUG" "Checksum file contents: $(cat "${DB_NAME}.sql.sha256")";
9595

9696
# Validate checksum
97-
log "INFO" "${MYNAME}: Validating backup checksum";
98-
sha256sum -c "${DB_NAME}.sql.sha256" || {
99-
error_message="${MYNAME}: FATAL: Checksum validation failed for backup of ${DB_NAME}";
97+
log "INFO" "Validating backup checksum";
98+
sha256sum --check --quiet "${DB_NAME}.sql.sha256" || {
99+
error_message="FATAL: Checksum validation failed for backup of ${DB_NAME}";
100100
log "ERROR" "${error_message}";
101101
error_to_sentry "${error_message}" "${DB_NAME}" "1";
102102
exit 1;
103103
}
104-
log "INFO" "${MYNAME}: Checksum validation successful";
104+
log "INFO" "Checksum validation successful";
105105

106106
# Compression
107107
start=$(date +%s);
108108
gzip -f /tmp/${DB_NAME}.sql || STATUS=$?;
109109
end=$(date +%s);
110110

111111
if [ $STATUS -ne 0 ]; then
112-
error_message="${MYNAME}: FATAL: Compressing backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
112+
error_message="FATAL: Compressing backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
113113
log "ERROR" "${error_message}";
114114
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}";
115115
exit $STATUS;
116116
else
117-
log "INFO" "${MYNAME}: Compressing backup of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
117+
log "INFO" "Compressing backup of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
118118
fi
119119

120120
# Compress checksum file
121121
gzip -f "${DB_NAME}.sql.sha256";
122122
if [ $? -ne 0 ]; then
123-
log "WARN" "${MYNAME}: Failed to compress checksum file, but continuing backup process";
123+
log "WARN" "Failed to compress checksum file, but continuing backup process";
124124
fi
125125

126126
# Upload compressed backup file to S3
127127
start=$(date +%s);
128-
aws s3 cp "/tmp/${DB_NAME}.sql.gz" "${S3_BUCKET}/${DB_NAME}.sql.gz" || STATUS=$?
128+
aws s3 cp --quiet "/tmp/${DB_NAME}.sql.gz" "${S3_BUCKET}/${DB_NAME}.sql.gz" || STATUS=$?
129129
if [ $STATUS -ne 0 ]; then
130-
error_message="${MYNAME}: FATAL: Copy backup to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
130+
error_message="FATAL: Copy backup to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
131131
log "ERROR" "${error_message}";
132132
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}";
133133
exit $STATUS;
134134
fi
135135

136136
# Upload checksum file
137-
aws s3 cp "/tmp/${DB_NAME}.sql.sha256.gz" "${S3_BUCKET}/${DB_NAME}.sql.sha256.gz" || STATUS=$?;
137+
aws s3 cp --quiet "/tmp/${DB_NAME}.sql.sha256.gz" "${S3_BUCKET}/${DB_NAME}.sql.sha256.gz" || STATUS=$?;
138138
end=$(date +%s);
139139
if [ $STATUS -ne 0 ]; then
140-
error_message="${MYNAME}: FATAL: Copy checksum to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS).";
140+
error_message="FATAL: Copy checksum to ${S3_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS).";
141141
log "ERROR" "${error_message}";
142142
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}";
143143
exit $STATUS;
144144
else
145-
log "INFO" "${MYNAME}: Copy backup and checksum to ${S3_BUCKET} of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
145+
log "INFO" "Copy backup and checksum to ${S3_BUCKET} of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
146146
fi
147147

148148
# Backblaze B2 Upload
@@ -155,20 +155,18 @@ if [ "${B2_BUCKET}" != "" ]; then
155155
STATUS=$?;
156156
end=$(date +%s);
157157
if [ $STATUS -ne 0 ]; then
158-
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.";
158+
error_message="FATAL: Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds.";
159159
log "ERROR" "${error_message}";
160160
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}";
161161
exit $STATUS;
162162
else
163-
log "INFO" "${MYNAME}: Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
163+
log "INFO" "Copy backup to Backblaze B2 bucket ${B2_BUCKET} of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds.";
164164
fi
165165
fi
166166

167-
echo "postgresql-backup-restore: backup: Completed";
168-
169167
# Clean up temporary files
170168
rm -f "/tmp/${DB_NAME}.sql.gz" "/tmp/${DB_NAME}.sql.sha256.gz";
171169

172-
log "INFO" "${MYNAME}: backup: Completed";
170+
log "INFO" "backup: Completed";
173171

174172
exit $STATUS;

application/restore.sh

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
log() {
55
local level="$1"
66
local message="$2"
7-
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${level}: ${message}"
7+
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ${level}: ${MYNAME}: ${message}"
88
}
99

1010
filter_sensitive_values() {
@@ -55,78 +55,78 @@ error_to_sentry() {
5555

5656
MYNAME="postgresql-backup-restore"
5757
STATUS=0
58-
log "INFO" "${MYNAME}: restore: Started"
58+
log "INFO" "restore: Started"
5959

6060
# Ensure the database user exists.
61-
log "INFO" "${MYNAME}: checking for DB user ${DB_USER}"
61+
log "INFO" "checking for DB user ${DB_USER}"
6262
result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command='\du' | grep ${DB_USER})
6363
if [ -z "${result}" ]; then
6464
result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command="create role ${DB_USER} with login password '${DB_USERPASSWORD}' inherit;")
6565
if [ "${result}" != "CREATE ROLE" ]; then
6666
error_message="Create role command failed: ${result}"
67-
log "ERROR" "${MYNAME}: FATAL: ${error_message}"
67+
log "ERROR" "FATAL: ${error_message}"
6868
error_to_sentry "${error_message}" "${DB_NAME}" "1"
6969
exit 1
7070
fi
7171
fi
7272

7373
# Delete database if it exists.
74-
log "INFO" "${MYNAME}: checking for DB ${DB_NAME}"
74+
log "INFO" "checking for DB ${DB_NAME}"
7575
result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --list | grep ${DB_NAME})
7676
if [ -z "${result}" ]; then
77-
log "INFO" "${MYNAME}: INFO: Database \"${DB_NAME}\" on host \"${DB_HOST}\" does not exist."
77+
log "INFO" "INFO: Database \"${DB_NAME}\" on host \"${DB_HOST}\" does not exist."
7878
else
79-
log "INFO" "${MYNAME}: finding current owner of DB ${DB_NAME}"
79+
log "INFO" "finding current owner of DB ${DB_NAME}"
8080
db_owner=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --command='\list' | grep ${DB_NAME} | cut -d '|' -f 2 | sed -e 's/ *//g')
81-
log "INFO" "${MYNAME}: INFO: Database owner is ${db_owner}"
81+
log "INFO" "INFO: Database owner is ${db_owner}"
8282

83-
log "INFO" "${MYNAME}: deleting database ${DB_NAME}"
83+
log "INFO" "deleting database ${DB_NAME}"
8484
result=$(psql --host=${DB_HOST} --dbname=postgres --username=${db_owner} --command="DROP DATABASE ${DB_NAME};")
8585
if [ "${result}" != "DROP DATABASE" ]; then
8686
error_message="Drop database command failed: ${result}"
87-
log "ERROR" "${MYNAME}: FATAL: ${error_message}"
87+
log "ERROR" "FATAL: ${error_message}"
8888
error_to_sentry "${error_message}" "${DB_NAME}" "1"
8989
exit 1
9090
fi
9191
fi
9292

9393
# Download the backup and checksum files
94-
log "INFO" "${MYNAME}: copying database ${DB_NAME} backup and checksum from ${S3_BUCKET}"
94+
log "INFO" "copying database ${DB_NAME} backup and checksum from ${S3_BUCKET}"
9595
start=$(date +%s)
9696

9797
# maintain backward compatibility with key variables accepted by s3cmd
9898
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID:-$AWS_ACCESS_KEY}"
9999
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY:-$AWS_SECRET_KEY}"
100100

101101
# Download database backup
102-
aws s3 cp "${S3_BUCKET}/${DB_NAME}.sql.gz" "/tmp/${DB_NAME}.sql.gz" || STATUS=$?
102+
aws s3 cp --quiet "${S3_BUCKET}/${DB_NAME}.sql.gz" "/tmp/${DB_NAME}.sql.gz" || STATUS=$?
103103
if [ $STATUS -ne 0 ]; then
104-
error_message="${MYNAME}: FATAL: Copy backup of ${DB_NAME} from ${S3_BUCKET} returned non-zero status ($STATUS) in $(expr $(date +%s) - ${start}) seconds."
104+
error_message="FATAL: Copy backup of ${DB_NAME} from ${S3_BUCKET} returned non-zero status ($STATUS) in $(expr $(date +%s) - ${start}) seconds."
105105
log "ERROR" "${error_message}"
106106
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}"
107107
exit $STATUS
108108
fi
109109

110110
# Download checksum file
111-
aws s3 cp "${S3_BUCKET}/${DB_NAME}.sql.sha256.gz" "/tmp/${DB_NAME}.sql.sha256.gz" || STATUS=$?
111+
aws s3 cp --quiet "${S3_BUCKET}/${DB_NAME}.sql.sha256.gz" "/tmp/${DB_NAME}.sql.sha256.gz" || STATUS=$?
112112
end=$(date +%s)
113113
if [ $STATUS -ne 0 ]; then
114-
error_message="${MYNAME}: FATAL: Copy checksum of ${DB_NAME} from ${S3_BUCKET} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
114+
error_message="FATAL: Copy checksum of ${DB_NAME} from ${S3_BUCKET} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
115115
log "ERROR" "${error_message}"
116116
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}"
117117
exit $STATUS
118118
else
119-
log "INFO" "${MYNAME}: Copy backup and checksum of ${DB_NAME} from ${S3_BUCKET} completed in $(expr ${end} - ${start}) seconds."
119+
log "INFO" "Copy backup and checksum of ${DB_NAME} from ${S3_BUCKET} completed in $(expr ${end} - ${start}) seconds."
120120
fi
121121

122122
# Decompress both files
123-
log "INFO" "${MYNAME}: decompressing backup and checksum of ${DB_NAME}"
123+
log "INFO" "decompressing backup and checksum of ${DB_NAME}"
124124
start=$(date +%s)
125125

126126
# Decompress backup file
127127
gunzip -f /tmp/${DB_NAME}.sql.gz || STATUS=$?
128128
if [ $STATUS -ne 0 ]; then
129-
error_message="${MYNAME}: FATAL: Decompressing backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr $(date +%s) - ${start}) seconds."
129+
error_message="FATAL: Decompressing backup of ${DB_NAME} returned non-zero status ($STATUS) in $(expr $(date +%s) - ${start}) seconds."
130130
log "ERROR" "${error_message}"
131131
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}"
132132
exit $STATUS
@@ -136,61 +136,61 @@ fi
136136
gunzip -f /tmp/${DB_NAME}.sql.sha256.gz || STATUS=$?
137137
end=$(date +%s)
138138
if [ $STATUS -ne 0 ]; then
139-
error_message="${MYNAME}: FATAL: Decompressing checksum of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
139+
error_message="FATAL: Decompressing checksum of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
140140
log "ERROR" "${error_message}"
141141
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}"
142142
exit $STATUS
143143
else
144-
log "INFO" "${MYNAME}: Decompressing backup and checksum of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds."
144+
log "INFO" "Decompressing backup and checksum of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds."
145145
fi
146146

147147
# Validate the checksum
148-
log "INFO" "${MYNAME}: Validating backup integrity with checksum"
148+
log "INFO" "Validating backup integrity with checksum"
149149
cd /tmp || {
150-
error_message="${MYNAME}: FATAL: Failed to change directory to /tmp"
150+
error_message="FATAL: Failed to change directory to /tmp"
151151
log "ERROR" "${error_message}"
152152
error_to_sentry "${error_message}" "${DB_NAME}" "1"
153153
exit 1
154154
}
155155

156-
sha256sum -c "${DB_NAME}.sql.sha256" || {
157-
error_message="${MYNAME}: FATAL: Checksum validation failed for backup of ${DB_NAME}. The backup may be corrupted or tampered with."
156+
sha256sum --check --quiet "${DB_NAME}.sql.sha256" || {
157+
error_message="FATAL: Checksum validation failed for backup of ${DB_NAME}. The backup may be corrupted or tampered with."
158158
log "ERROR" "${error_message}"
159159
error_to_sentry "${error_message}" "${DB_NAME}" "1"
160160
exit 1
161161
}
162-
log "INFO" "${MYNAME}: Checksum validation successful - backup integrity confirmed"
162+
log "INFO" "Checksum validation successful - backup integrity confirmed"
163163

164164
# Restore the database
165-
log "INFO" "${MYNAME}: restoring ${DB_NAME}"
165+
log "INFO" "restoring ${DB_NAME}"
166166
start=$(date +%s)
167167
psql --host=${DB_HOST} --username=${DB_ROOTUSER} --dbname=postgres ${DB_OPTIONS} < /tmp/${DB_NAME}.sql || STATUS=$?
168168
end=$(date +%s)
169169

170170
if [ $STATUS -ne 0 ]; then
171-
error_message="${MYNAME}: FATAL: Restore of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
171+
error_message="FATAL: Restore of ${DB_NAME} returned non-zero status ($STATUS) in $(expr ${end} - ${start}) seconds."
172172
log "ERROR" "${error_message}"
173173
error_to_sentry "${error_message}" "${DB_NAME}" "${STATUS}"
174174
exit $STATUS
175175
else
176-
log "INFO" "${MYNAME}: Restore of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds."
176+
log "INFO" "Restore of ${DB_NAME} completed in $(expr ${end} - ${start}) seconds."
177177
fi
178178

179179
# Verify database restore success
180-
log "INFO" "${MYNAME}: Verifying database restore success"
180+
log "INFO" "Verifying database restore success"
181181
result=$(psql --host=${DB_HOST} --username=${DB_ROOTUSER} --list | grep ${DB_NAME})
182182
if [ -z "${result}" ]; then
183-
error_message="${MYNAME}: FATAL: Database ${DB_NAME} not found after restore attempt."
183+
error_message="FATAL: Database ${DB_NAME} not found after restore attempt."
184184
log "ERROR" "${error_message}"
185185
error_to_sentry "${error_message}" "${DB_NAME}" "1"
186186
exit 1
187187
else
188-
log "INFO" "${MYNAME}: Database ${DB_NAME} successfully restored and verified."
188+
log "INFO" "Database ${DB_NAME} successfully restored and verified."
189189
fi
190190

191191
# Clean up temporary files
192192
rm -f "/tmp/${DB_NAME}.sql" "/tmp/${DB_NAME}.sql.sha256"
193-
log "INFO" "${MYNAME}: Temporary files cleaned up"
193+
log "INFO" "Temporary files cleaned up"
194194

195-
log "INFO" "${MYNAME}: restore: Completed"
195+
log "INFO" "restore: Completed"
196196
exit $STATUS

0 commit comments

Comments
 (0)