Search code examples
pythonmonitoringsensu

How to monitor Python scripts using Sensu?


I would like to use Sensu Core to monitor python scripts and I am confused how to do it.

From Sensu documentation this requires Sensu Checks. In the provided example ruby script checks that chef-client is running:

#!/usr/bin/env ruby

# get the current list of processes
processes = `ps aux`

# determine if the chef-client process is running
running = processes.lines.detect do |process|
  process.include?('chef-client')
end

# return appropriate check output and exit status code
if running
  puts 'OK - Chef client process is running'
  exit 0
else
  puts 'WARNING - Chef client process is NOT running'
  exit 1
end

How to implement such a check for a specific script and not the application? That is, how would I go about monitoring a specific python script (e.g. test.py) and not python in general?


Solution

  • So, I have been running some python scripts in sensu for my AWS Linux clients successfully , this is a good example of my check definition:

    {
     "checks": {
    "check-rds-limit": {
      "interval": 86400, 
      "command": "/etc/sensu/plugins/rds-limit-check.py",
      "contacts": [
        "cloud-ops"
      ],
      "occurrences": 1,   
      "subscribers": [
        "cloud-ops-subscription"
      ], 
      "handlers": [
        "email",
        "slack"
      ]
    }
      }
    }
    

    And your python plugin can start with defining the shebang path:

    #!/usr/bin/env python
    import sys
    ...
    ...
    //<code condition for warning>
    sys.exit(1)
    //<code condition for critical>
    sys.exit(2)
    //<code condition where everything is fine>
    sys.exit(0)