はじめに
Proxmox VE (Virtual Environment) は、バックアップの完了/失敗やその他のイベントが発生した場合に、イベントを外部へ通知することができます。
今回は Slack へ通知するよう設定してみました。
例えばバックアップに失敗したとき、こんな感じで通知することができます。
- 通知先として設定できるターゲット Notification Targets
- sendmail
- SMTP
- Gotify
- Webhook (今回使用する方式, 8.3 以降)
- 通知できるイベント Notification Events
- システムアップデートが利用可能
- バックアップの完了/失敗
- その他のイベントが発生した場合
詳細は Proxmox VE 公式サポート Notifications を参照してください。
ちなみに Webhook とは、HTTP でイベントを通知する仕組みのことです。
指定された URL (API エンドポイント) に必要な情報 (header, body) をつけて POST メソッドなどで送信することで通知します。
Slack は Webhook による通知に対応しています。
設定手順
Step 1 - Slack の設定
次の Zenn の記事の "新方式 Slack app" を参考に設定しました。
Proxmox VE 通知用アプリを作成し、指定したチャンネルへ Webhook でイベント通知できるように設定しました。
設定すると、次のような curl コマンドで Slack へ通知することができるようになります。
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/ABCDEFGHIJK/012345678901234567890123456789abcdef
- POST 送信先 URL の例
- HTTP Header
- Content-type: application/json
- HTTP Body
- 後で紹介します
Step 2 - Webhook 追加
次の Proxmox VE 公式サポートを参考に設定しました。(Webhook 通知のみ)
https://pve.proxmox.com/pve-docs/chapter-notifications.html#notification_targets_webhook
まず、設定するには Proxmox VE Web UI にログインした後、左ペインの データセンター
のページを開き、ページの下部の 通知
を開きます。
通知先のターゲットとして Webhook を追加します。
HTTP Body (本体) については、公式サポートの設定例を参考に設定しました。
https://pve.proxmox.com/pve-docs/chapter-notifications.html#_slack
- エンドポイント先は、表示名なので任意で指定します
- HTTP Header は、画像を参考に "Content-type: application/json" を追加します
- HTTP Body は、例を参考に JSON 形式で指定します
- テキストに
escape message
変数を含めています - 他に含めることができる変数は、公式サポートに記載されています
- テキストに
追加後は テスト
ボタンでテストできます。
正常であれば、指定したチャンネルに通知が届きます。
実運用は通知の重要度 (info, notice, warning, error, unknown) やタイトルも必要になったので、次のようなコードにしています。
{
"text": "{{severity}} - {{escape title}}
```{{escape message}}```",
"type": "mrkdwn"
}
Step 3 - 通知ルール設定
通知先ターゲットを追加した後は、通知するルールに Slack を追加します。追加しないと 通知されません。
そのままページ下部の 通知 Matchers
の default-matcher
のプロパティを開き、追加した Slack ターゲットにも通知するように設定します。