BSD Zero Clause License
v0.1.4 · public · Published 8 months 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
Provide a Sensu handler configuration, listing
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.
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 entity
slack-channel: annotation on entity
slack_channel: label on entity
slack-channel: label on entity
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.×