Sensu-Plugins-slack

Build Status Gem Version Code Climate Test Coverage Dependency Status Community Slack

Functionality

Files

  • bin/handler-slack.rb
  • bin/handler-slack-multichannel.rb

Usage for handler-slack.rb

{
  "slack": {
    "webhook_url": "webhook url",
    "dashboard": "uchiwa url, add link to slack notification. Format: http://sensu.com/#/client/$DataCenter/, optional",
    "channel": "#notifications-room, optional defaults to slack defined",
    "message_prefix": "optional prefix - can be used for mentions",
    "surround": "optional - can be used for bold(*), italics(_), code(`) and preformatted(```)",
    "bot_name": "optional bot name, defaults to slack defined",
    "link_names": "optional - find and link channel names and usernames",
    "message_template": "optional description erb template file - /some/path/to/template.erb",
    "payload_template": "optional json payload template file (note: overrides most other template options.)",
    "template": "backwards-compatible alias for message_template",
    "proxy_address": "The HTTP proxy address (example: proxy.example.com)",
    "proxy_port": "The HTTP proxy port (if there is a proxy)",
    "proxy_username": "The HTTP proxy username (if there is a proxy)",
    "proxy_password": "The HTTP proxy user password (if there is a proxy)",
    "icon_url": "https://raw.githubusercontent.com/sensu/sensu-logo/master/sensu1_flat%20white%20bg_png.png",
    "icon_emoji": ":snowman:",
    "fields": [
      "list",
      "of",
      "optional",
      "clientkeys",
      "to_render"
    ]
  }
}

Usage for handler-slack-multichannel.rb

{
  "slack": {
    "webhook_urls": {
      "no-team-alerts": "https://hooks.slack.com/services/AAAAAAA",
      "all-alerts": "https://hooks.slack.com/services/BBBBBB"
    },
    "channels": {
      "default": [ "no-team-alerts" ],
      "compulsory": [ "all-alerts" ]
    }
    "message_prefix": "optional prefix - can be used for mentions",
    "surround": "optional - can be used for bold(*), italics(_), code(`) and preformatted(```)",
    "bot_name": "optional bot name, defaults to slack defined",
    "link_names": "optional - find and link channel names and usernames",
    "message_template": "optional description erb template file - /some/path/to/template.erb",
    "payload_template": "optional json payload template file (note: overrides most other template options.)",
    "template": "backwards-compatible alias for message_template",
    "proxy_address": "The HTTP proxy address (example: proxy.example.com)",
    "proxy_port": "The HTTP proxy port (if there is a proxy)",
    "proxy_username": "The HTTP proxy username (if there is a proxy)",
    "proxy_password": "The HTTP proxy user password (if there is a proxy)",
    "icon_url": "https://raw.githubusercontent.com/sensu/sensu-logo/master/sensu1_flat%20white%20bg_png.png",
    "icon_emoji": ":snowman:",
    "custom_field": [
      "list",
      "of",
      "optional",
      "check_fields",
      "to_render"
    ]
  }
}

Installation

Installation and Setup

Notes

payload_template example

{
  "username": "sensu alarms",
  "icon_emoji": ":bell:",
  "channel": channel,
  "attachments": [
    {
      "fallback": "<%= @event["check"]["output"].gsub('"', '\\"') %>",
      "color": "<%= color %>",
      "title": "<%= @event["check"]["name"] %> (<%= @event["client"]["name"] %>)",
      "text": "<%= @event["check"]["output"].gsub('"', '\\"') %>"
    }
  ]
}

You can also use to_json

<%=
  {
    :text => "Some text"
  }.to_json
-%>

See https://api.slack.com/incoming-webhooks and https://api.slack.com/docs/attachments