Health check plugins are the easiest of the three plugin types to write and
are liable to be the most common. Writing a new health check plugin is a
simple matter of creating a lighthouse.check.Check
subclass and
exposing it via the lighthouse.checks
entry point.
The key part of a health check plugin is the perform()
method on the
subclass, it is where the actual checking takes place. It’s important
that this method take no arguments and returns True
or False
based
on the check’s success.
For an example of a check that has no external dependencies but uses custom
attributes and configuration, see the lighthouse.checks.http.HTTPCheck
class included in the source distribution.
Likewise, for an example of a simple health check that involves external
dependencies see the lighthouse.checks.redis.RedisCheck
class.
validate_dependencies(cls)
(classmethod):
This classmethod should check that all required external dependencies for your health check are met.
If the requirements are met, this method should return True. If not met it should return False.
validate_check_config(cls, config)
(classmethod):
The “config” argument to this classmethod is the dictionary representation
of the health check’s portion of the service YAML configuration, this method
should validate any plugin-specific bits of that configuration. The base
lighthouse.check.Check
class automatically validates that the standard
host
, port
, rise
and fall
values are present.
If any parts of the configuration are invalid, a ValueError
exception should
be raised.
apply_check_config(self, config)
:
This instance method’s config argument is also the dictionary config of the health check’s portion of a service’s YAML config file, albeit one that has already been validated.
This method should take the validated dictionary object and set any sort of attributes/state/etc. on the instance as necessary.
Warning
It it is incredibly important that this method be idempotent with regards to instances of your Check subclass. Configurations can be altered at any time in any manner, sometimes with invalid values! You want your plugin’s state to reflect the contents of the YAML config file at all times.
perform()
:
This method is the heart of the health check. It performs the actual check and should return True if the health check passes and False if it fails.
Note
This method does not take any arguments, any sort of context required to perform the health check should be handled by applying the config and setting instance attributes.