Merge lp:~hloeung/ubuntu-repository-cache/health-check-logging-improvements into lp:ubuntu-repository-cache

Proposed by Haw Loeung
Status: Merged
Approved by: Colin Misare
Approved revision: 323
Merged at revision: 324
Proposed branch: lp:~hloeung/ubuntu-repository-cache/health-check-logging-improvements
Merge into: lp:ubuntu-repository-cache
Diff against target: 63 lines (+12/-5)
1 file modified
files/health_check.py (+12/-5)
To merge this branch: bzr merge lp:~hloeung/ubuntu-repository-cache/health-check-logging-improvements
Reviewer Review Type Date Requested Status
Colin Misare Approve
Canonical IS Reviewers Pending
Review via email: mp+399130@code.launchpad.net

Commit message

Log overrall check result and URLs for errors

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
Colin Misare (cmisare) wrote :

LGTM

review: Approve
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision 324

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'files/health_check.py'
--- files/health_check.py 2021-03-03 23:01:10 +0000
+++ files/health_check.py 2021-03-03 23:09:02 +0000
@@ -97,6 +97,8 @@
97 send_to_influx(render_influx(METRIC_NAME, 'status=DISABLED', 4.04))97 send_to_influx(render_influx(METRIC_NAME, 'status=DISABLED', 4.04))
98 return98 return
9999
100 start_total = time.time()
101
100 successes = {}102 successes = {}
101 failures = {}103 failures = {}
102 for url in CHECK_URLS:104 for url in CHECK_URLS:
@@ -114,7 +116,7 @@
114 resp.raise_for_status()116 resp.raise_for_status()
115 except requests.exceptions.HTTPError as err:117 except requests.exceptions.HTTPError as err:
116 duration = time.time() - start118 duration = time.time() - start
117 logging.error('{} ({:.3f}s)'.format(err, duration))119 logging.error('ERROR: {}: {} ({:.3f}s)'.format(url, err, duration))
118 failures[url] = [status_code, duration, err]120 failures[url] = [status_code, duration, err]
119 except (121 except (
120 requests.exceptions.ConnectTimeout,122 requests.exceptions.ConnectTimeout,
@@ -122,18 +124,19 @@
122 requests.exceptions.Timeout,124 requests.exceptions.Timeout,
123 ) as err:125 ) as err:
124 duration = time.time() - start126 duration = time.time() - start
125 logging.error('{} ({:.3f}s)'.format(err, duration))127 logging.error('ERROR: {}: {} ({:.3f}s)'.format(url, err, duration))
126 failures[url] = [0, duration, err]128 failures[url] = [0, duration, err]
127 except Exception as err:129 except Exception as err:
128 duration = time.time() - start130 duration = time.time() - start
129 # We don't want to show exactly what the error is, but we131 # We don't want to show exactly what the error is, but we
130 # do want to log it.132 # do want to log it.
131 logging.critical('{} ({:.3f}s)'.format(err, duration))133 logging.critical('ERROR: {}: {} ({:.3f}s)'.format(url, err, duration))
132 failures[url] = [0, duration, 'Unknown error']134 failures[url] = [0, duration, 'Unknown error']
133135
134 metrics = []136 metrics = []
135 if failures:137 if failures:
136 print('Status: 503 Service Unavailable')138 status = '503 Service Unavailable'
139 print('Status: {}'.format(status))
137 print('Content-type: text/html\n')140 print('Content-type: text/html\n')
138 for url, val in failures.items():141 for url, val in failures.items():
139 status_code = val[0]142 status_code = val[0]
@@ -143,7 +146,8 @@
143 labels = 'url={},status=FAIL,status_code={}'.format(url, status_code)146 labels = 'url={},status=FAIL,status_code={}'.format(url, status_code)
144 metrics.append(render_influx(METRIC_NAME, labels, duration))147 metrics.append(render_influx(METRIC_NAME, labels, duration))
145 else:148 else:
146 print('Status: 200 OK')149 status = '200 OK'
150 print('Status: {}'.format(status))
147 print('Content-type: text/html\n')151 print('Content-type: text/html\n')
148152
149 # Either way, output all successful checks.153 # Either way, output all successful checks.
@@ -158,6 +162,9 @@
158 # request/connection on sending metrics to influx.162 # request/connection on sending metrics to influx.
159 print('', flush=True)163 print('', flush=True)
160164
165 duration = time.time() - start_total
166 logging.info('{} ({:.3f}s)'.format(status, duration))
167
161 for metric in metrics:168 for metric in metrics:
162 send_to_influx(metric)169 send_to_influx(metric)
163170

Subscribers

People subscribed via source and target branches