A rubygem for talking to monitoring service APIs
Ruby
Latest commit cf5373d Jul 27, 2013 @portertech portertech Merge pull request #4 from perryh/master
Add StatusPage.io functionality.
Permalink
Failed to load latest commit information.
lib
test
.gitignore new tests Mar 6, 2012
Gemfile gem init Oct 8, 2011
README.org
Rakefile
redphone.gemspec minitest FTW Oct 8, 2011
redphone.jpg add image to readme Oct 8, 2011

README.org

Redphone, the monitoring service ruby library

  • Pagerduty support (integration, incidents)
  • Pingdom support (checks, results, actions)
  • Loggly support (event, search, facets)
  • StatusPage support (incidents, components)

https://github.com/portertech/redphone/raw/master/redphone.jpg

  • All API request are done over SSL
  • Response bodies are returned as Ruby hashes

Getting started

gem install redphone

Examples

Pagerduty

require "redphone/pagerduty"
pagerduty = Redphone::Pagerduty.new(
  :service_key => SERVICE_KEY,
  :subdomain => SUBDOMAIN,
  :user => USER,
  :password => PASSWORD
)

Trigger an incident

pagerduty.trigger_incident(
  :description => "Testing Redphone Rubygem",
  :incident_key => "redphone/test"
)
# OR Redphone::Pagerduty.trigger_incident()

Resolve an incident

pagerduty.resolve_incident(:incident_key => "redphone/test")
# OR Redphone::Pagerduty.resolve_incident()

List/query current and past incidents

pagerduty.incidents(:incident_key => "redphone/test")

You can add the following options for a date range

:since => "2011-08-01",
:until => "2011-10-01"

Or if you only care about unresolved incidents

:status => "triggered,acknowledged"

Pingdom

require "redphone/pingdom"
pingdom = Redphone::Pingdom.new(
  :user => USER,
  :password => PASSWORD
)

Create a check

response = pingdom.create_check(
  :name => "redphone",
  :host => "www.amazon.ca",
  :type => "http"
)
check_id = response['check']['id']

Delete a check

pingdom.delete_check(:id => check_id)

Loggly

require "redphone/loggly"
loggly = Redphone::Loggly.new(
 :subdomain => SUBDOMAIN,
 :user => USER,
 :password => PASSWORD
)

Create an event

loggly.send_event(
  :input_key => INPUT_KEY,
  :input_type => "json",
  :event => {
    :service => "redphone",
    :message => "test"
  }
)
# OR Redphone::Loggly.send_event()

Search for previous event occurrences

loggly.search(:q => "json.service:redphone")

Faceted search results on date

loggly.facets(:q => "json.service:redphone")

Add an option for faceted search results on input name

:facet_type => "input"

Or on IP address

:facet_type => "ip"

You can add the following options for a date range

:from => "2011-08-01T12:00:00Z",
:until => "2011-10-01T12:00:00Z"

StatusPage.io

require "redphone/statuspage"
statuspage = Redphone::Statuspage.new(
  :page_id => PAGE_ID,
  :api_key => API_KEY
)

Create a realtime incident

response = statuspage.create_realtime_incident(
  :name => "testing",
  :status => "identified",
  :wants_twitter_update => "t",
  :message => "testing message"
)

Update an incident

incident_id = response["id"]
statuspage.update_incident(
  :name => "testing",
  :status => "resolved",
  :wants_twitter_update => "t"
  :incident_id => incident_id
)

Delete an incident

statuspage.delete_incident(
  :incident_id => incident_id
)

Update a component status

statuspage.update_component(
  :component_id => COMPONENT_ID,
  :status => "major_outage"
)

Contributors