Redphone, the monitoring service ruby library
- Pagerduty support (integration, incidents)
- Pingdom support (checks, results, actions)
- Loggly support (event, search, facets)
- StatusPage support (incidents, components)
- 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" )