84 Commits

Author SHA1 Message Date
swoga
b70e2c9a25 feat: treat failure before success 2021-06-29 14:05:56 +03:00
Pēteris Caune
6094bca241
Improve wording 2021-05-24 14:13:43 +03:00
Pēteris Caune
df44ee58c0
Add an option for weekly reports (in addition to monthly) 2021-05-24 13:44:34 +03:00
Pēteris Caune
7ba5fcbb71
Fix sendalerts to clear Profile.next_nag_date if all checks up
Profile.next_nag_date tracks when the next hourly/daily reminder
should be sent. Normally, sendalerts sets this field when
a check goes down, and sendreports clears it out whenever
it is about to send a reminder but realizes all checks are up.

The problem: sendalerts can set next_nag_date to a non-null
value, but it does not clear it out when all checks are up.
This can result in a hourly/daily reminder being sent out
at the wrong time. Specific example, assuming hourly reminders:

13:00: Check A goes down. next_nag_date gets set to 14:00.
13:05: Check A goes up. next_nag_date remains set to 14:00.
13:55: Check B goes down. next_nag_date remains set to 14:00.
14:00: Healthchecks sends a hourly reminder, just 5 minutes
       after Check B going down. It should have sent the reminder
       at 13:55 + 1 hour = 14:55

The fix: sendalerts can now both set and clear the next_nag_date
field. The main changes are in Project.update_next_nag_dates()
and in Profile.update_next_nag_date(). With the fix:

13:00: Check A goes down. next_nag_date gets set to 14:00.
13:05: Check A goes up. next_nag_date gets set to null.
13:55: Check B goes down. next_nag_date gets set to 14:55.
14:55: Healthchecks sends a hourly reminder.
2021-03-15 12:34:39 +02:00
Pēteris Caune
9a0888aacd
Update sendalerts to log per-notification send times
To send notifications, sendalerts calls Flip.send_alerts().
I updated Flip.send_alerts() to be a generator, and to yield
a (channel, error, send_time_in_seconds) triple per sent
notification.
2021-01-15 15:15:00 +02:00
Pēteris Caune
66a1a108bf
When decoding inbound emails, decode encoded headers. Fixes #420 2020-09-08 12:06:32 +03:00
Pēteris Caune
43e56ce788
Add support for multiple, comma-separated keywords (cc: #396) 2020-07-23 12:06:17 +03:00
Pēteris Caune
0d03e3f00b
Add "Failure Keyword" filtering for inbound emails (cc: #396) 2020-07-21 14:57:48 +03:00
Pēteris Caune
a18eb134f5
Refactor: change Check.get_status(with_started=...) default value from True to False (with_started=False is or will be useful in more places) 2020-06-25 15:23:59 +03:00
Pēteris Caune
4f6f1d9f66
Fix sendalerts crash loop when encountering a bad cron schedule 2020-02-07 10:36:45 +02:00
Pēteris Caune
ac4f1ca059
Log slow sendalerts.notify runs to stdout 2020-02-06 11:21:28 +02:00
Pēteris Caune
4a7074418a
Track the time spent sending notifications for each flip 2020-02-06 11:11:12 +02:00
Pēteris Caune
9f2638bf72
The sendalerts commands measures notification dwell time and reports it over statsd protocol. Experimental, may go away in a future commit. 2020-02-05 11:25:06 +02:00
Pēteris Caune
6bc4948d00
Removing obsolete comment: the index is defined in hc.api.models.Check.Meta 2020-02-04 15:32:25 +02:00
Pēteris Caune
15ba415298
senddeletionnotices command skips profiles with recent last_active_date 2019-12-11 15:24:51 +02:00
Pēteris Caune
2bb769f7bb
Send monthly reports on 1st of every month, not randomly during the month 2019-10-12 20:07:09 +03:00
Pēteris Caune
c0d808271e
Add the pruneflips management command. 2019-07-20 12:25:58 +03:00
Pēteris Caune
e0f161157d
Fix prunepings and prunepingsslow, fixes #264 2019-06-24 18:02:36 +03:00
Pēteris Caune
cdfc9840a7
Source formatted with Black 2019-05-15 14:27:50 +03:00
Pēteris Caune
6040759601
Add the prunetokenbucket management command. 2019-05-05 13:04:32 +03:00
Pēteris Caune
2a7129f8c8
Explicit decode_data=False (otherwise, py3.5 passes str, py3.6+ passes bytes). Should fix #242 2019-04-16 10:32:00 +03:00
Pēteris Caune
cb1b792d6c
smtpd: get a new db connection for every incoming email. cc: #213 2019-02-27 16:44:03 +02:00
Pēteris Caune
7ecd0b606d
Quicker prunenotifications, skip checks with low n_pings values. 2019-01-22 11:09:41 +02:00
Pēteris Caune
fba8806e97
Prepare for the removal of Member.team_id 2019-01-14 22:33:28 +02:00
Pēteris Caune
f357cd3305
Prepare for removing Check.user_id, Channel.user_id, Profile.current_team_id 2019-01-14 21:13:57 +02:00
Pēteris Caune
5edcd42033
Add the "Email Settings..." dialog and the "Subject Must Contain" setting 2019-01-04 16:07:11 +02:00
Pēteris Caune
be4c4f7a26
set Check.user to not null, add uniqueness constraint to Check.code 2019-01-02 09:58:54 +02:00
Pēteris Caune
179b085df4
Move Check.send_alert() to Flip.send_alerts() 2018-12-30 11:55:09 +02:00
Pēteris Caune
2f4b373e12
More test cases. Check.is_down() is redundant, removing. 2018-12-21 11:25:49 +02:00
Pēteris Caune
5f9ebb178c
Rename "Check.get_alert_after" to a now more fitting "Check.going_down_after" 2018-12-19 21:57:48 +02:00
Pēteris Caune
481848a749
Add "/ping/<code>/start" API endpoint 2018-12-18 22:57:12 +02:00
Pēteris Caune
11f65ff7aa
Optimize db query in sendalerts 2018-12-12 19:04:37 +02:00
Pēteris Caune
5be6c403a4
Flip model, for tracking status changes of the Check objects. 2018-12-10 17:51:42 +02:00
Pēteris Caune
b4e53431cd
Obsolete – we don't create anonymous checks any more. 2018-10-23 12:32:31 +03:00
Dan Faulknor
8265ac5a97
Fix for Python 3.6 2018-06-29 00:26:39 +12:00
Pēteris Caune
5cf6f1b51e
Merge Check.get_status() and Check.in_grace_period() into one.
This avoids duplicate calls to Check.get_grace_start() in several places.
2018-06-11 19:05:18 +03:00
Pēteris Caune
fbe77c9e0a Silence output from management commands when running tests. 2018-04-30 20:02:36 +03:00
Pēteris Caune
fc176cd832 settelegramwebhook now sends a correct "allowed_updates" field. 2018-01-18 00:58:19 +02:00
Pēteris Caune
1392226538 sendalerts was not using the api_check (status, user_id, alert_after) index so removing it. The index was not selective enough. 2018-01-17 00:49:03 +02:00
Pēteris Caune
266fbd225d sendreports doesn't send nags if nag_period=0 ("disabled"). This would result in an infinite loop of nag emails. 2017-12-29 18:05:23 +02:00
Pēteris Caune
ebbc898d02 Experimental settelegramwebhook management command 2017-12-27 18:28:34 +02:00
Pēteris Caune
f2a2241b6b Email listener: "./manage.py smtpd" 2017-11-01 19:20:12 +02:00
Pēteris Caune
d520706c27 Adding an option to send daily or hourly reminders if any check is down. Fixes #48 2017-10-14 16:03:56 +03:00
Pēteris Caune
8d0a2f2eaf Remove startup check for update_alert_after trigger, remove drop_triggers command. 2017-09-12 12:05:58 +03:00
Pēteris Caune
09e5129bbe sendalerts reuses database connection. 2017-05-07 15:31:10 +03:00
Pēteris Caune
d7d21b0959 Pause before next report to avoid hitting sending quota 2017-04-24 22:35:16 +03:00
Pēteris Caune
9dcb1678f3 --no-threads flag for sendalerts command 2017-03-28 20:04:24 +01:00
Ronald Ip
7900a201c1
Add --no-loop option to sendalerts management command.
Allow `sendalerts` to be run by an external scheduler, on a one-shot
basis, exiting after all alerts have been sent.
2017-03-11 18:29:50 +08:00
Pēteris Caune
d1b4643b45 Obsolete 2017-03-06 14:38:47 +02:00
Pēteris Caune
0b6d484bd5 "prunenotifications" management command 2016-12-15 18:54:03 +02:00