Tutorial #1: ‘Hello world’ check
In the first tutorial, we will develop check_world. This check will determine if the world exists. The algorithm is simple: if the world would not exist, the check would not execute.
This minimalistic check consists of a Resource World which models
the part of the world that is interesting for the purposes of our check.
Resource classes must define a Resource.probe() method which returns a
list of metrics. We just return a single Metric object that states
that the world exists.
#! /usr/bin/env python
"""Hello world monitoring check."""
import mplugin
class World(mplugin.Resource):
def probe(self):
return [mplugin.Metric("world", True, context="null")]
def main():
check = mplugin.Check(World())
check.main()
if __name__ == "__main__":
main()
We don’t have a context to evaluate the returned metric yet, so we resort to the built-in “null” context. The “null” context does nothing with its associated metrics.
We now create a Check object that is fed only with the resource
object. We could put context and summary objects into the Check()
constructor as well. This will be demonstrated in the next tutorial. There is
also no command line processing nor timeout handling nor output control. We call
the Check.main() method to evaluate resources, construct text output
and exit with the appropriate status code.
Running the plugin creates very simple output:
1$ check_world.py
2WORLD OK
The plugin’s exit status is 0, signalling success to the calling process.