Skip to content

neidiom/monit2slack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monit2slack

Send messages to Slack via Monit.

Installation

Add this line to your application's Gemfile:

gem 'monit2slack'

And then execute:

$ bundle

Or install it yourself as:

$ gem install monit2slack

Usage

This gem provides a binary monit2slack.

monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --host MyServer --service NginX --status error --text 'Process NginX is down'

If using rbenv

/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --host MyServer --service NginX --status error --text 'Process NginX is down'

If you prefer you can call if manually from a rb file.

#!/usr/bin/env ruby

require "monit2slack"

Monit2Slack::Post

Monit configuration examples

Process monitoring

Implicit configuration

In this case hostname, service and description gets read from the environment variables that monit provides.

check process NginX
  with pidfile /run/nginx.pid
  start program = "/etc/init.d/nginx start" with timeout 30 seconds
  stop program = "/etc/init.d/nginx stop" with timeout 30 seconds
  if does not exist for 1 cycle
    then exec "/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --status error'"
    else if succeeded for 1 cycle then exec "/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --status ok"
  if does not exist then restart

Explicit configuration

You control settings like hostname, service and description.

check process NginX
  with pidfile /run/nginx.pid
  start program = "/etc/init.d/nginx start" with timeout 30 seconds
  stop program = "/etc/init.d/nginx stop" with timeout 30 seconds
  if does not exist for 1 cycle
    then exec "/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --host MyServer --service NginX --status error --text 'Process NginX is down'"
    else if succeeded for 1 cycle then exec "monit2slack --webhook 'https://hooks.slack.com/services/xxx/xxx/xxx' --host MyServer --service NginX --status ok --text 'Process NginX is up'"
  if does not exist then restart

Disk usage monitoring

check filesystem rootfs with path /
if space usage > 80%
then exec "/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xx/xx/xx' --status error"
else if succeeded then exec "/usr/local/rbenv/shims/monit2slack --webhook 'https://hooks.slack.com/services/xx/xx/xx' --status ok"

License

The gem is available as open source under the terms of the MIT License.