mirror of
https://github.com/zulip/zulip.git
synced 2025-10-24 00:23:49 +00:00
33 lines
960 B
Python
Executable File
33 lines
960 B
Python
Executable File
#!/usr/bin/env python2.7
|
|
|
|
import dateutil.parser
|
|
import pytz
|
|
import subprocess
|
|
from datetime import datetime, timedelta
|
|
|
|
states = {
|
|
"OK": 0,
|
|
"WARNING": 1,
|
|
"CRITICAL": 2,
|
|
"UNKNOWN": 3
|
|
}
|
|
|
|
def report(state, msg):
|
|
print "%s: %s" % (state, msg)
|
|
exit(states[state])
|
|
|
|
if subprocess.check_output(['psql', 'postgres', '-t', '-c',
|
|
'SELECT pg_is_in_recovery()']).strip() != 'f':
|
|
report('OK', 'this is not the primary')
|
|
|
|
try:
|
|
with open('/var/lib/nagios_state/last_postgres_backup', 'r') as f:
|
|
last_backup = dateutil.parser.parse(f.read())
|
|
except IOError:
|
|
report('UNKNOWN', 'could not determine completion time of last Postgres backup')
|
|
|
|
if datetime.now(tz=pytz.utc) - last_backup > timedelta(hours=25):
|
|
report('CRITICAL', 'last Postgres backup completed more than 25 hours ago: %s' % (last_backup,))
|
|
|
|
report('OK', 'last Postgres backup completed less than 25 hours ago: %s' % (last_backup,))
|