Legoktm has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/404996 )
Change subject: Add basic health check end point
......................................................................
Add basic health check end point
Change-Id: I3103cf7e996097296326c2c1f399dd4d6a225b66
---
M app.py
A templates/health.html
2 files changed, 55 insertions(+), 0 deletions(-)
Approvals:
Legoktm: Verified; Looks good to me, approved
diff --git a/app.py b/app.py
index d64dddc..72fcae6 100644
--- a/app.py
+++ b/app.py
@@ -23,6 +23,7 @@
import os
import re
import requests
+import subprocess
import traceback
app = Flask(__name__)
@@ -86,6 +87,46 @@
return redirect(url_for('index', backend='search'))
+def parse_systemctl_show(output):
+ """
+ turn the output of `systemctl show` into
+ a dictionary
+ """
+ data = {}
+ for line in output.splitlines():
+ sp = line.split('=', 1)
+ data[sp[0]] = sp[1]
+
+ return data
+
+
[email protected]('/_health')
+def health():
+ status = {}
+ for backend, port in BACKENDS.items():
+ # First try to hit the hound backend, if it's up, we're good
+ try:
+ requests.get('http://localhost:%s/api/v1/search' % port)
+ status[backend] = 'up'
+ except requests.exceptions.ConnectionError:
+ # See whether the systemd unit is running
+ try:
+ show = subprocess.check_output(
+ ['systemctl', 'show', 'hound-%s' % backend]
+ )
+ info = parse_systemctl_show(show.decode())
+ if info['MainPID'] == '0':
+ status[backend] = 'down'
+ else:
+ # No webservice, but hound is running, so it's probably
+ # just starting up still
+ status['backend'] = 'starting up'
+ except subprocess.CalledProcessError:
+ status[backend] = 'unknown'
+
+ return render_template('health.html', status=status)
+
+
@app.route('/<backend>/')
def index(backend):
if backend not in BACKENDS:
diff --git a/templates/health.html b/templates/health.html
new file mode 100644
index 0000000..007c285
--- /dev/null
+++ b/templates/health.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>MediaWiki code search: health check</title>
+</head>
+<body>
+<h1>health check</h1>
+
+{% for backend in status %}
+<br /><a href="{{url_for('index', backend=backend)}}">{{backend}}</a> -
{{status[backend]}}
+{% endfor %}
+</body>
+</html>
--
To view, visit https://gerrit.wikimedia.org/r/404996
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I3103cf7e996097296326c2c1f399dd4d6a225b66
Gerrit-PatchSet: 1
Gerrit-Project: labs/codesearch
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits