License
BSD Zero Clause License
v0.1.4 · public · Published about 2 years ago
This is a Sensu handler for sending messages to Slack.
It's written in Python and uses the jspaleta/sensu-python-runtime runtime in Sensu Go.
Sensu provides a Slack handler, but its messages take up too much space. This handler intends to be more condensed and fit messages on a single line.
Emojis are used to indicate the status:
Optionally, checks that have a URL in its command can provide a link in the
Slack message:
Provide a Sensu handler configuration, listing joshbeard/sensu-slack-compact-alert
and jspaleta/sensu-python-runtime
as runtime assets:
type: Handler
api_version: core/v2
metadata:
name: slack
spec:
runtime_assets:
- joshbeard/sensu-slack-compact-alert
- jspaleta/sensu-python-runtime
command: slack.py
env_vars:
- SLACK_WEBHOOK_URL=https://hooks.slack.com/services/TXXXXXXXXX6/BXXXXXXXE/PXXXXXXXXXXXXXXXXXXXXXZH
- SENSU_BASE_URL=https://sensu.foo.com
filters:
- is_incident
- not_silenced
- not_flapping
- fatigue_check
type: pipe
See the example handler config.
This uses the deprecated Slack incoming webhooks because it makes it easy to
send notices to any (private or open) channel specified without having to run a
bot or join channels.
Environment variables can be set for certain configurations, including in a check configuration.
SLACK_WEBHOOK_URL
: A legacy Slack webhook URL
SLACK_USERNAME
: The username to send the message as
SLACK_CHANNEL
: The Slack channel to send to or a fallback channel.
Labels and annotations take precedence.
ICON_URL
: A URL to an icon image to use for the Slack user
SENSU_BASE_URL
: The base URL to the Sensu dashboard to link to. E.g.
https://sensu.foo.org
slack_link_command_url
: Toggles linking to a URL found in the check command.
slack_link_command_text
: The link title when using slack_link_command_url
. By default,
this is "(view site)"
Slack channels can be configured using a label or annotation. In order of precedence:
slack_channel
: annotation on entityslack-channel
: annotation on entityslack_channel
: label on entityslack-channel
: label on entityThe src/
directory structure is setup for Sensu to function properly. This is done according to the sensu-python-runtime example.
The dependencies are installed to a lib/
sub-directory via pip install -r requirements.txt --target lib
. The entire directory is then compressed and uploaded to Artifactory.
cd src
pip install -r requirements.txt --target lib
tar -cvzf ../sensu-slack-alert.tar.gz .
shasum -a 512 sensu-slack-alert.tar.gz
NOTE: This uses the legacy Slack webhooks
because it's much simpler and possible to send messages to any channel, including private ones.
Token substitution is not available in handler configurations due to security concerns (e.g. having a generic web check with the url as
a variable set by an annotation or label), which is why this handler parses those annotations and labels directly.
See https://github.com/sensu/sensu-go/issues/2528 for more information.
Please describe the reason for reporting this asset. Our moderators will be notified and will disable the asset if it is found to be inappropriate.
×