Class: Pagerduty::EventsApiV2::Incident

Inherits:
Object
  • Object
show all
Defined in:
lib/pagerduty/events_api_v2.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Incident

Returns a new instance of Incident.

Parameters:

  • config (Hash) (defaults to: {})

    a customizable set of options

Options Hash (config):

  • incident_key (String)

    Identifies the incident to which this trigger event should be applied. If there’s no open (i.e. unresolved) incident with this key, a new one will be created. If there’s already an open incident with a matching key, this event will be appended to that incident’s log. The event key provides an easy way to “de-dup” problem reports. If this field isn’t provided, PagerDuty will automatically open a new incident with a unique key. The maximum length is 255 characters.

  • integration_key (String)

    Authentication key for connecting to PagerDuty. A UUID expressed as a 32-digit hexadecimal number. Integration keys are generated by creating a new service, or creating a new integration for an existing service in PagerDuty, and can be found on a service’s Integrations tab. This option is required.

  • http_proxy.host (String)

    The DNS name or IP address of the proxy host. If nil or unprovided an HTTP proxy will not be used.

  • http_proxy.port (String)

    The TCP port to use to access the proxy.

  • http_proxy.username (String)

    username if authorization is required to use the proxy.

  • http_proxy.password (String)

    password if authorization is required to use the proxy.



153
154
155
156
157
158
159
160
161
162
# File 'lib/pagerduty/events_api_v2.rb', line 153

def initialize(config = {})
  @integration_key = config.fetch(:integration_key) do
    raise ArgumentError "integration_key not provided"
  end
  @incident_key = config[:incident_key]
  @transport = Pagerduty::HttpTransport.new(
    path:  "/v2/enqueue",
    proxy: config[:http_proxy],
  )
end

Instance Attribute Details

#incident_keyObject (readonly)

Returns the value of attribute incident_key.



140
141
142
# File 'lib/pagerduty/events_api_v2.rb', line 140

def incident_key
  @incident_key
end

Instance Method Details

#acknowledgePagerduty::EventsApiV2::Incident

Acknowledge the referenced incident. While an incident is acknowledged, it won’t generate any additional notifications, even if it receives new trigger events. Send PagerDuty an acknowledge event when you know someone is presently working on the problem.

Returns:

Raises:



230
231
232
233
# File 'lib/pagerduty/events_api_v2.rb', line 230

def acknowledge
  api_call("acknowledge")
  self
end

#resolvePagerduty::EventsApiV2::Incident

Resolve the referenced incident. Once an incident is resolved, it won’t generate any additional notifications. New trigger events with the same incident_key as a resolved incident won’t re-open the incident. Instead, a new incident will be created. Send PagerDuty a resolve event when the problem that caused the initial trigger event has been fixed.

Returns:

Raises:



246
247
248
249
# File 'lib/pagerduty/events_api_v2.rb', line 246

def resolve
  api_call("resolve")
  self
end

#trigger(details) ⇒ Object

Send PagerDuty a trigger event to report a new or ongoing problem. When PagerDuty receives a trigger event, it will either open a new incident, or add a new trigger log entry to an existing incident, depending on the incident key.

Examples:

Trigger an incident, providing only required details

incident = pagerduty.trigger(
  summary:  "summary",
  source:   "source",
  severity: "critical"
)

Trigger an incident providing full context

incident = pagerduty.trigger(
  summary:        "Example alert on host1.example.com",
  source:         "monitoringtool:host1.example.com/prod-003",
  severity:       %w[critical error warning info].sample,
  timestamp:      Time.now,
  component:      "postgres",
  group:          "prod-datapipe",
  class:          "deploy",
  custom_details: {
                    ping_time: "1500ms",
                    load_avg:  0.75
                  },
  images:         [
                    {
                      src:  "https://chart.googleapis.com/chart.png",
                      href: "https://example.com/",
                      alt:  "Example text",
                    },
                  ],
  links:          [
                    {
                      href: "https://example.com/",
                      text: "Link text",
                    },
                  ],
  client:         "Sample Monitoring Service",
  client_url:     "https://monitoring.example.com"
)

Parameters:

  • details (Hash)

    a customizable set of options

Options Hash (details):

  • summary (String)

    A brief text summary of the event, used to generate the summaries/titles of any associated alerts. The maximum permitted length of this property is 1024 characters.

  • source (String)

    The unique location of the affected system, preferably a hostname or FQDN.

  • severity (String)

    The perceived severity of the status the event is describing with respect to the affected system. This can be “critical”, “error”, “warning” or “info”.

  • timestamp (Time)

    The time at which the emitting tool detected or generated the event.

  • component (String)

    Component of the source machine that is responsible for the event, for example “mysql” or “eth0”.

  • group (String)

    Logical grouping of components of a service, for example “app-stack”.

  • class (String)

    The class/type of the event, for example “ping failure” or “cpu load”.

  • custom_details (Hash)

    Additional details about the event and affected system

  • images (Array)

    List of images to include.

  • links (Array)

    List of links to include.



208
209
210
211
212
213
214
215
216
217
218
# File 'lib/pagerduty/events_api_v2.rb', line 208

def trigger(details)
  if details.key?(:dedup_key) || details.key?(:incident_key)
    raise ArgumentError, "incident_key or dedup_key provided, "\
                         "please use the EventsApiv2::incident method "\
                         "to specify an incident key"
  end

  response = api_call("trigger", trigger_request(details))
  @incident_key = response["dedup_key"]
  self
end