Zabbix5.0でTeams通知を設定したらSending failedエラーが出る

TeamsのWebhookはバージョンが変更されており、URLが

https://outlook.office.com/webhook/ から

https://テナント名.webhook.office.com/webhookb2/

に変更されています。後者の新Webhook URLをZabbix5.0初期バージョンで設定しようとすると、エラーが発生します。調べると同様の症状を報告している方がいたので、そのとおりに修正したら通ったというお話です。

こちらのZabbixフォーラムにて、全く同じ状態を報告している方がいます。

設定の「メディア」「MS Teams」の「teams_endpoint」を設定してテストしようとすると

Sending failed: Invalid MS Teams webhook URL: https...

といったようにエラーが発生します。MS Teamsのスクリプトを管理画面から確認してみてください

else if (!params.teams_endpoint.startsWith('https://outlook.office.com/webhook/')) {

このような場所が確認できると思います。URL形式を見ていて、「https://outlook.office.com/webhook/」から始まる値の場合に動作するようにスクリプトが書かれています。なので、こちらを修正すればOKということです。フォーラムに従って、以下のように該当部分を書き換えます。(新URLの形式に合わせて「office.com/webhook」を含む場合という条件に変更します。別に他の条件でも構いません。)

else if (!params.teams_endpoint.includes('office.com/webhook'))

「テスト」は既定の状態では動作しません。{EVENT.SOURCE}、{EVENT.VALUE}などを適切な値に設定しないと動作しませんので、エラーに従いながら0や1を設定してみてください。

ちなみに最新バージョンのZabbixでは既に修正されています。該当箇所は以下のようになり、URL形式であるかどうかのみを判定するように変更されていますので、エラーは発生しません。

else if (!params.teams_endpoint.startsWith('http'))

このスクリプトはDBのレコード(Zabbix->media_type)の中に保存されているのですが、データとして長文のスクリプトを挿入しているというのは初めて見たので、最初は驚きました。確かに、管理画面がWebなんだからそれらの内容は何処かに保存されているわけなので、当たり前っちゃ当たり前なんですが….


スポンサーリンク

コメントを残す