riemann.slack
Post alerts to slack.com
default-formatter
(default-formatter events)Simple formatter for rendering an event as a Slack attachment.
extended-formatter
(extended-formatter events)Format an event as a Slack attachment with a series of fields.
slack
(slack account_name token username channel)(slack account-info message-info)(slack {:keys [webhook_uri account token]} {:keys [username channel icon formatter], :or {formatter default-formatter}} http-params)Posts events into a slack.com channel using Incoming Webhooks. Takes your account name, webhook token, bot username and channel name. Returns a function that will post a message into slack.com channel:
(def credentials {:account "some_org", :token "53CR3T"})
(def slacker (slack credentials {:username "Riemann bot"
:channel "#monitoring"
:icon ":smile:"}))
(by [:service] slacker)
Hint: token is the last part of the webhook URL that Slack gives you. https://hooks.slack.com/services/QWERSAFG0/AFOIUYTQ48/120984SAFJSFR Token in this case would be 120984SAFJSFR
You can also supply a custom formatter for formatting events into Slack messages. Formatter result may contain:
username- overrides the username provided upon constructionchannel- overrides the channel provided upon constructionicon- overrides the icon provided upon constructiontext- main text formatted using Slack markupattachments- array of attachments according to https://api.slack.com/docs/attachments
(def slacker (slack credentials {:username "Riemann bot", :channel "#monitoring"
:formatter (fn [e] {:text (:state e)
:icon ":happy:"})))
You can use slack inside of a grouping function which produces a seq of events, like rollup:
(def slacker (slack credentials {:username "Riemann bot", :channel "#monitoring"
:formatter (fn [es] {:text (apply str (map :state es))})))
(rollup 5 60 slacker)
The last parameter of the arity-3 version of the function is a map of parameters passed directly to clj-http. For example, you can set socket and connection timeouts like so:
(slack {…} {…} {:socket-timeout 1000 :conn-timeout 1000})
slack-fallback
(slack-fallback events)Minimal, plain-text event formatting. Used for dumb clients such as IRC.