Provide more context for healthchecks and monitoring.

Include version numbers of both PostgreSQL and patroni for the /patroni endpoint.
Scope is also returned.
This commit is contained in:
Feike Steenbergen
2016-01-29 12:55:08 +01:00
parent 70bae1b267
commit 704b29e686
3 changed files with 5 additions and 0 deletions
+2
View File
@@ -10,6 +10,7 @@ from patroni.ha import Ha
from patroni.postgresql import Postgresql
from patroni.utils import setup_signal_handlers, reap_children
from patroni.zookeeper import ZooKeeper
from .version import __version__
logger = logging.getLogger(__name__)
@@ -21,6 +22,7 @@ class Patroni:
self.tags = config.get('tags', dict())
self.postgresql = Postgresql(config['postgresql'])
self.dcs = self.get_dcs(self.postgresql.name, config)
self.version = __version__
self.api = RestApiServer(self, config['restapi'])
self.ha = Ha(self)
self.next_run = time.time()
+2
View File
@@ -92,6 +92,7 @@ class RestApiHandler(BaseHTTPRequestHandler):
def do_GET_patroni(self):
response = self.get_postgresql_status(True)
response.update(self.get_tags())
response['patroni'] = {'version': self.server.patroni.version, 'scope': self.server.patroni.postgresql.scope}
self.send_response(200)
self.send_header('Content-Type', 'application/json')
@@ -233,6 +234,7 @@ class RestApiHandler(BaseHTTPRequestHandler):
'state': self.server.patroni.postgresql.state,
'postmaster_start_time': row[0],
'role': 'replica' if row[1] else 'master',
'server_version': self.server.patroni.postgresql.server_version,
'xlog': ({
'received_location': row[3],
'replayed_location': row[4],
+1
View File
@@ -133,6 +133,7 @@ class Postgresql:
r = parseurl('postgres://{}/postgres'.format(self.local_address))
self._connection = psycopg2.connect(**r)
self._connection.autocommit = True
self.server_version = self._connection.server_version
return self._connection
def _cursor(self):