Sha256: 63b2092934f07d37ff22eb05162a89bcff4dadc0820743b7f173f3f4ba569548

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

#!/usr/bin/env ruby
#
# Sensu Twitter Handler
# ===
#
# This handler reports alerts to a configured twitter handler.
# Map a twitter handle to a sensusub value in the twitter.json to get going!
# sensusub == subscription in the client object, not check..
# see twitter.json for required values
#
# Copyright 2011 Joe Crim <josephcrim@gmail.com>
#
# Released under the same terms as Sensu (the MIT license); see LICENSE
# for details.

require 'rubygems' if RUBY_VERSION < '1.9.0'
require 'sensu-handler'
require 'twitter'

class TwitterHandler < Sensu::Handler
  def event_name
    @event['client']['name'] + '/' + @event['check']['name']
  end

  def handle
    # #YELLOW
    twitter_clients.each do |client|
      if @event['action'].eql?('resolve')
        client.update("RESOLVED - #{event_name}: #{@event['check']['notification']} Time: #{Time.now} ")
      else
        client.update("ALERT - #{event_name}: #{@event['check']['notification']} Time: #{Time.now} ")
      end
    end
  end

  private

  def twitter_clients
    @twitter_clients ||= settings['twitter'].map do |account|
      next unless @event['client']['subscriptions'].include?(account[1]['sensusub'])
      Twitter::REST::Client.new do |config|
        config.consumer_key = account[1]['consumer_key']
        config.consumer_secret = account[1]['consumer_secret']
        config.access_token = account[1]['oauth_token']
        config.access_token_secret = account[1]['oauth_token_secret']
      end
    end.compact
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sensu-plugins-twitter-1.0.0 bin/handler-twitter.rb
sensu-plugins-twitter-0.0.4 bin/handler-twitter.rb