Skip to content

StefanSa/zabbix-MSTeams-alertscript

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 

Repository files navigation

Zabbix MS Teams AlertScript

About

This is simply a Bash script that uses the custom alert script functionality within Zabbix along with the incoming web-hook feature of MS Teams It is heavily based on the previous Zabbix Slack alert script here: https://github.com/ericoc/zabbix-slack-alertscript

Versions

This works with Zabbix 1.8.x or greater - including 2.2, 2.4 and 3.x!

Huge thanks and appreciation to:

  • Eric OC for the original script on which this modification is based
  • Paul Reeves for the hint that Slack changed their API/URLs!
  • Igor Shishkin for the ability to message users as well as channels!
  • Leslie at AspirationHosting for confirming that this script works on Zabbix 1.8.2!
  • Hiromu Yakura for escaping quotation marks in the fields received from Zabbix to have valid JSON!
  • Devlin Gonçalves, tkdywc, damaarten, and lunchables for Zabbix 3.0 AlertScript documentation, suggestions and testing!

Installation (work in progress changing terminology and proceedures from slack instructions)

The script itself

This teams.sh script needs to be placed in the AlertScriptsPath directory that is specified within the Zabbix servers' configuration file (zabbix_server.conf) and must be executable by the user running the zabbix_server binary (usually "zabbix") on the Zabbix server:

[root@zabbix ~]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
AlertScriptsPath=/usr/local/share/zabbix/alertscripts

[root@zabbix ~]# ls -lh /usr/local/share/zabbix/alertscripts/teams.sh
-rwxr-xr-x 1 root root 1.4K Dec 27 13:48 /usr/local/share/zabbix/alertscripts/teams.sh

If you do change AlertScriptsPath (or any other values) within zabbix_server.conf, a restart of the Zabbix server software is required.

Configuration

MS Teams web-hook

An incoming web-hook integration must be created within your Teams account:

https://msdn.microsoft.com/en-us/microsoft-teams/connectors

Within the Zabbix web interface (definitely this is out of data and talking about slack rather than MS teams)

When logged in to the Zabbix servers web interface with super-administrator privileges, navigate to the "Administration" tab, access the "Media Types" sub-tab, and click the "Create media type" button.

You need to create a media type as follows:

  • Name: Slack
  • Type: Script
  • Script name: slack.sh

...and ensure that it is enabled before clicking "Save", like so:

Zabbix Media Type

However, on Zabbix 3.x and greater, media types are configured slightly differently and you must explicity define the parameters sent to the slack.sh script. On Zabbix 3.x, three script parameters should be added as follows:

  • {ALERT.SENDTO}
  • {ALERT.SUBJECT}
  • {ALERT.MESSAGE}

...as shown here:

Zabbix 3.x Media Type

Then, create a "Slack" user on the "Users" sub-tab of the "Administration" tab within the Zabbix servers web interface and specify this users "Media" as the "Slack" media type that was just created with the Slack.com channel ("#alerts" in the example) or user name (such as "@ericoc") that you want messages to go to in the "Send to" field as seen below:

Zabbix User

Finally, an action can then be created on the "Actions" sub-tab of the "Configuration" tab within the Zabbix servers web interface to notify the Zabbix "Slack" user ensuring that the "Subject" is "PROBLEM" for "Default message" and "RECOVERY" should you choose to send a "Recovery message".

Keeping the messages short is probably a good idea; use something such as the following for the contents of each message:

{TRIGGER.NAME} - {HOSTNAME} ({IPADDRESS})

Additionally, you can have multiple different Zabbix users each with "Slack" media types that notify unique Slack users or channels upon different triggered Zabbix actions.

If you are interesting in longer notification messages (with line breaks for example), you may want to reference this pull request or any number of forks of this repository.

Testing

Assuming that you have set a valid Slack web-hook URL within your "slack.sh" file, you can execute the script manually (as opposed to via Zabbix) from Bash on a terminal:

$ bash slack.sh '@ericoc' PROBLEM 'Oh no! Something is wrong!'

Alerting a specific user name results in the message actually coming from the "slackbot" user using a sort-of "spoofed" user name within the message. A channel alert is sent as you would normally expect from whatever user name you specify in "slack.sh":

Slack Testing

More Information

About

Zabbix AlertScript for MS Teams chat

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%