Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic logs to the Healthchecks server (#460).
This commit is contained in:
parent
666f0dd751
commit
157e59ac88
4 changed files with 30 additions and 2 deletions
2
NEWS
2
NEWS
|
@ -3,6 +3,8 @@
|
||||||
logs to send to the Healthchecks server.
|
logs to send to the Healthchecks server.
|
||||||
* #402: Remove the error when "archive_name_format" is specified but a retention prefix isn't.
|
* #402: Remove the error when "archive_name_format" is specified but a retention prefix isn't.
|
||||||
* #420: Warn when an unsupported variable is used in a hook command.
|
* #420: Warn when an unsupported variable is used in a hook command.
|
||||||
|
* #460: Add Healthchecks monitoring hook "send_logs" option to enable/disable sending borgmatic
|
||||||
|
logs to the Healthchecks server.
|
||||||
* #525: Add Healthchecks monitoring hook "states" option to only enable pinging for particular
|
* #525: Add Healthchecks monitoring hook "states" option to only enable pinging for particular
|
||||||
monitoring states (start, finish, fail).
|
monitoring states (start, finish, fail).
|
||||||
* #528: Improve the error message when a configuration override contains an invalid value.
|
* #528: Improve the error message when a configuration override contains an invalid value.
|
||||||
|
|
|
@ -892,6 +892,12 @@ properties:
|
||||||
Healthchecks ping URL or UUID to notify when a
|
Healthchecks ping URL or UUID to notify when a
|
||||||
backup begins, ends, or errors.
|
backup begins, ends, or errors.
|
||||||
example: https://hc-ping.com/your-uuid-here
|
example: https://hc-ping.com/your-uuid-here
|
||||||
|
send_logs:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Send borgmatic logs to Healthchecks as part the
|
||||||
|
"finish" state. Defaults to true.
|
||||||
|
example: false
|
||||||
ping_body_limit:
|
ping_body_limit:
|
||||||
type: integer
|
type: integer
|
||||||
description: |
|
description: |
|
||||||
|
|
|
@ -71,9 +71,13 @@ def format_buffered_logs_for_payload():
|
||||||
|
|
||||||
def initialize_monitor(hook_config, config_filename, monitoring_log_level, dry_run):
|
def initialize_monitor(hook_config, config_filename, monitoring_log_level, dry_run):
|
||||||
'''
|
'''
|
||||||
Add a handler to the root logger that stores in memory the most recent logs emitted. That
|
Add a handler to the root logger that stores in memory the most recent logs emitted. That way,
|
||||||
way, we can send them all to Healthchecks upon a finish or failure state.
|
we can send them all to Healthchecks upon a finish or failure state. But skip this if the
|
||||||
|
"send_logs" option is false.
|
||||||
'''
|
'''
|
||||||
|
if hook_config.get('send_logs') is False:
|
||||||
|
return
|
||||||
|
|
||||||
ping_body_limit = max(
|
ping_body_limit = max(
|
||||||
hook_config.get('ping_body_limit', DEFAULT_PING_BODY_LIMIT_BYTES)
|
hook_config.get('ping_body_limit', DEFAULT_PING_BODY_LIMIT_BYTES)
|
||||||
- len(PAYLOAD_TRUNCATION_INDICATOR),
|
- len(PAYLOAD_TRUNCATION_INDICATOR),
|
||||||
|
|
|
@ -106,6 +106,22 @@ def test_initialize_monitor_creates_log_handler_with_zero_ping_body_limit():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_initialize_monitor_creates_log_handler_when_send_logs_true():
|
||||||
|
flexmock(module).should_receive('Forgetful_buffering_handler').once()
|
||||||
|
|
||||||
|
module.initialize_monitor(
|
||||||
|
{'send_logs': True}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_initialize_monitor_bails_when_send_logs_false():
|
||||||
|
flexmock(module).should_receive('Forgetful_buffering_handler').never()
|
||||||
|
|
||||||
|
module.initialize_monitor(
|
||||||
|
{'send_logs': False}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_ping_monitor_hits_ping_url_for_start_state():
|
def test_ping_monitor_hits_ping_url_for_start_state():
|
||||||
flexmock(module).should_receive('Forgetful_buffering_handler')
|
flexmock(module).should_receive('Forgetful_buffering_handler')
|
||||||
hook_config = {'ping_url': 'https://example.com'}
|
hook_config = {'ping_url': 'https://example.com'}
|
||||||
|
|
Loading…
Reference in a new issue