👾

TrueNAS (旧: FreeNAS) のアラートをWebhookでDiscordと連携する方法

2020/12/02に公開

自宅に設置しているNASのOSに TrueNAS (旧: FreeNAS) を使用しているが、システム異常時にアラートを送信してくれる機能がある。
メールでのアラートは設定しているのもの、埋もれてしまうこともあり、すぐ対処できなかったことがあるので、個人用Discordサーバのチャンネルに投げるようにする方法を備忘録として書く。

故障の前兆を見逃さないの大切。

環境

OS: TrueNAS CORE
OSバージョン: TrueNAS-12.0-RELEASE

Discordに投げる方法を考える

Slack連携機能が実装されているらしい

TrueNASがサポートしているアラート送信方法を確認していると、Slack の文字を発見した。

TrueNASがサポートしているアラート送信方法
Slack を選択してみる。

Slack を選択
WebhookのURLを要求しているので、求めているモノに近いがSlack用であり、Discordにはそのまま使えない。
プログラムを書くとしても、TrueNASに組み込むのはアップデートで動かなくなったりする可能性があるので出来るだけ避けたいところ。

DiscordのWebhookにはSlack互換機能がある

いい情報がないかなと Discord開発者向けドキュメント/Webhook を見てみると、Slack互換機能 というものを発見。これはウレシイ…!!

やり方

DiscordのWebhook URLを発行する

  1. Discordで目的のサーバを表示
  2. サーバ設定 > 連携サービス > ウェブフック > ウェブフックを作成
  3. Botの 名前投稿用チャンネルアイコン を設定して保存
  4. ウェブフックURLをコピー をクリック

https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token} というWebhook URLがクリップボードにコピーされる

DiscordのWebhookのSlack互換機能を使う

発行されたWebhook URLの末尾に /slack をつけるだけ。

つまり、https://discordapp.com/api/webhooks/{webhook.id}/{webhook.token}/slack というWebhook URLが出来上がる。

TrueNASのSlack連携機能に登録する

  1. TrueNASのWeb UIにログイン
  2. システム > アラートサービス > ADD
  3. Name に任意の名前、TypeSlack に設定
  4. DiscordのWebhookのSlack互換機能を使う で作ったWebhook URLを入力
  5. アラートするレベルはお好みで設定

    こんな感じ

テストする

SEND TEST ALERT をクリック。

Succeeded
Succeeded とTrueNASが言ってきたら成功。

もちろん、Discord側にアラートが届いている。

This is a test alert

設定の適用

TrueNASのWeb UI側で SUBMIT をクリックすることで初めて適用されるので忘れない。

あとがき

DiscordのWebhookのSlack互換機能めっちゃ便利だなと思いつつ、逆 (SlackのWebhookのDiscord互換機能) はないのか調べてみたが、見つけられず。
互換機能って割と助かる。ありがたい。

一家に一台TrueNASは良いぞ💪

Discussion