content/kapacitor/v1/reference/event_handlers/microsoftteams.md
Microsoft Teams is a widely used "digital workspace" that facilitates communication among team members. To configure Kapacitor to send alerts to one or more Microsoft Teams channels, do the following:
kapacitor.conf file, add a [teams] section with configuration options for the Microsoft Teams event
handler, including the incoming webhook URL as the channelurl. For example:[teams]
enabled = true
default = true
channel-url = "https://outlook.office.com/webhook/..."
global = true
state-changes-only = true
[teams] section in kapacitor.conf.
The channelurl acts as a unique identifier for each configured Teams client.enabledSet to true to enable the Microsoft Teams event handler.
defaultIf there are multiple teams configurations, identify one as the default.
channelurlSpecify the Microsoft Team webhook URL to send messages and alerts.
globalSet to true to send all alerts to Teams without explicitly specifying Microsoft Teams in the TICKscript.\
state-changes-onlySet to true to send alerts for state-changes-only.
Only applies if global is true.
The following options can be set in a Microsoft Teams event handler file or when using
.teams() in a TICKscript.
| Name | Type | Description |
|---|---|---|
| team | string | Specifies which Team configuration to use when there are multiple configurations. |
| channel | string | Teams channel to post messages to. If empty uses the channel from the configuration. |
id: handler-id
topic: topic-name
kind: teams
options:
team: 'teams.microsoft.com/team/'
channel: '#alerts'
For information about using handler files, see Add and use event handlers.
stream
|alert()
.teams()
stream
|alert()
.teams()
.channelURL('https://outlook.office.com/webhook/...')
Use the .teams() attribute in your TICKscripts to:
To avoid posting a message every alert interval, use AlertNode.StateChangesOnly so only events where the alert changed state are sent to Teams.
The following TICKscript uses the .teams() event handler to send the message,
"Hey, check your CPU", to the #alerts Teams channel when idle CPU usage drops below 20%.
teams-cpu-alert.tick
stream
|from()
.measurement('cpu')
|alert()
.warn(lambda: "usage_idle" < 20)
.stateChangesOnly()
.message('Hey, check your CPU')
.teams()
The following example sends an alert to the cpu topic with the message,
"Hey, check your CPU".
A Teams handler is added that subscribes to the cpu topic and publishes all
alert messages to Teams.
Create a TICKscript that publishes alert messages to a topic.
The TICKscript below sends an critical alert message to the cpu topic any time
idle CPU usage drops below 5%.
cpu_alert.tick
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 5)
.stateChangesOnly()
.message('Hey, check your CPU')
.topic('cpu')
Add and enable the TICKscript:
kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert
Create a handler file that subscribes to the cpu topic and uses the Teams
event handler to send alerts to Teams. This handler uses a non-default Teams
handler, "critical-alerts", which sends messages to the #critical-alerts channel
in Teams.
teams_cpu_handler.yaml
id: teams-cpu-alert
topic: cpu
kind: teams
channelurl: 'alerts'
Add the handler:
kapacitor define-topic-handler teams_cpu_handler.yaml