Skip to content

Commit 10f2004

Browse files
authored
Remove attributes from heartbeat alerts (#218)
1 parent 028880e commit 10f2004

2 files changed

Lines changed: 38 additions & 20 deletions

File tree

alertaclient/commands/cmd_heartbeats.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,21 @@ def cli(obj, alert, severity, timeout, purge):
4545
if alert:
4646
with click.progressbar(heartbeats, label='Alerting {} heartbeats'.format(len(heartbeats))) as bar:
4747
for b in bar:
48+
49+
environment = b.attributes.pop('environment', 'Production')
50+
service = b.attributes.pop('service', ['Alerta'])
51+
group = b.attributes.pop('group', 'System')
52+
4853
if b.status == 'expired': # aka. "stale"
54+
severity = b.attributes.pop('severity', severity)
4955
client.send_alert(
5056
resource=b.origin,
5157
event='HeartbeatFail',
52-
environment=b.attributes.get('environment', 'Production'),
53-
severity=b.attributes.get('severity', severity),
58+
environment=environment,
59+
severity=severity,
5460
correlate=['HeartbeatFail', 'HeartbeatSlow', 'HeartbeatOK'],
55-
service=b.attributes.get('service', ['Alerta']),
56-
group=b.attributes.get('group', 'System'),
61+
service=service,
62+
group=group,
5763
value='{}'.format(b.since),
5864
text='Heartbeat not received in {} seconds'.format(b.timeout),
5965
tags=b.tags,
@@ -64,14 +70,15 @@ def cli(obj, alert, severity, timeout, purge):
6470
customer=b.customer
6571
)
6672
elif b.status == 'slow':
73+
severity = b.attributes.pop('severity', severity)
6774
client.send_alert(
6875
resource=b.origin,
6976
event='HeartbeatSlow',
70-
environment=b.attributes.get('environment', 'Production'),
71-
severity=b.attributes.get('severity', severity),
77+
environment=environment,
78+
severity=severity,
7279
correlate=['HeartbeatFail', 'HeartbeatSlow', 'HeartbeatOK'],
73-
service=b.attributes.get('service', ['Alerta']),
74-
group=b.attributes.get('group', 'System'),
80+
service=service,
81+
group=group,
7582
value='{}ms'.format(b.latency),
7683
text='Heartbeat took more than {}ms to be processed'.format(b.max_latency),
7784
tags=b.tags,
@@ -82,14 +89,15 @@ def cli(obj, alert, severity, timeout, purge):
8289
customer=b.customer
8390
)
8491
else:
92+
severity = b.attributes.pop('severity', default_normal_severity)
8593
client.send_alert(
8694
resource=b.origin,
8795
event='HeartbeatOK',
88-
environment=b.attributes.get('environment', 'Production'),
89-
severity=b.attributes.get('severity', default_normal_severity),
96+
environment=environment,
97+
severity=severity,
9098
correlate=['HeartbeatFail', 'HeartbeatSlow', 'HeartbeatOK'],
91-
service=b.attributes.get('service', ['Alerta']),
92-
group=b.attributes.get('group', 'System'),
99+
service=service,
100+
group=group,
93101
value='',
94102
text='Heartbeat OK',
95103
tags=b.tags,

tests/unit/test_commands.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,11 @@ def test_heartbeats_cmd(self, m):
7777
"heartbeats": [
7878
{
7979
"attributes": {
80-
"environment": "infrastructure"
80+
"environment": "Infrastructure",
81+
"severity": "Major",
82+
"service": ["Internal"],
83+
"group": "Heartbeats",
84+
"region": "EU"
8185
},
8286
"createTime": "2020-03-10T20:25:54.541Z",
8387
"customer": null,
@@ -102,9 +106,7 @@ def test_heartbeats_cmd(self, m):
102106
heartbeat_alert_response = """
103107
{
104108
"alert": {
105-
"attributes": {
106-
"environment": "infrastructure"
107-
},
109+
"attributes": {},
108110
"correlate": [
109111
"HeartbeatFail",
110112
"HeartbeatSlow",
@@ -113,9 +115,9 @@ def test_heartbeats_cmd(self, m):
113115
"createTime": "2020-03-10T21:55:07.884Z",
114116
"customer": null,
115117
"duplicateCount": 0,
116-
"environment": "infrastructure",
118+
"environment": "Infrastructure",
117119
"event": "HeartbeatSlow",
118-
"group": "System",
120+
"group": "Heartbeat",
119121
"history": [
120122
{
121123
"event": "HeartbeatSlow",
@@ -141,9 +143,9 @@ def test_heartbeats_cmd(self, m):
141143
"repeat": false,
142144
"resource": "monitoring-01",
143145
"service": [
144-
"Alerta"
146+
"Internal"
145147
],
146-
"severity": "High",
148+
"severity": "Major",
147149
"status": "open",
148150
"tags": [],
149151
"text": "Heartbeat took more than 2ms to be processed",
@@ -164,6 +166,14 @@ def test_heartbeats_cmd(self, m):
164166
self.assertEqual(result.exit_code, 0, result.exception)
165167
self.assertIn('monitoring-01', result.output)
166168

169+
history = m.request_history
170+
data = history[1].json()
171+
self.assertEqual(data['environment'], 'Infrastructure')
172+
self.assertEqual(data['severity'], 'Major')
173+
self.assertEqual(data['service'], ['Internal'])
174+
self.assertEqual(data['group'], 'Heartbeats')
175+
self.assertEqual(data['attributes'], {'region': 'EU'})
176+
167177
@requests_mock.mock()
168178
def test_whoami_cmd(self, m):
169179

0 commit comments

Comments
 (0)