hugelでは、Discordを使用してメンバー間の情報共有を行っています。サーバー管理においても情報をDiscordに集約するため、Webhookを利用してサーバーからメッセージを送信できるよう設定しました。
Discordとは?
Discordは、主にインターネットを通じてコミュニケーションを取るためのアプリケーションで、同様のツールではSlackやTeamsがあります。それらにも共通していますが、以下のような特徴があります。
- テキストチャット、音声通話、ビデオ通話などの機能を提供
- 元々はゲーマー向けに開発されましたが、現在では様々な目的で幅広く使用されている
- 「サーバー」と呼ばれる独自のコミュニティを作成でき、その中に複数の「チャンネル」を設けて会話を整理でできる
- 無料で利用でき、スマートフォンやパソコンなど、様々な端末で利用可能
- 外部サービスと連携する機能があり、例えばWebhookを使用して自動的に情報を投稿することが可能
手順
Webhookは、特定のイベントが発生したときに自動的にHTTPリクエストを送信する仕組みです。Discordの場合、Webhookを設定することで、外部のアプリケーションやサービスからDiscordチャンネルにメッセージを送信することができます。
以下は、Webhookを使用してDiscordに投稿する基本的な手順です:
1. Discordサーバーの設定でWebhookを作成し、WebhookのURLを取得します。



2. 取得したWebhook URLに対してHTTPリクエストを送信します。これは通常、POSTリクエストとして行われます。
3. リクエストのボディに、送信したいメッセージの内容やフォーマットを指定します。
シェルスクリプトの例
このシェルスクリプトは、サーバーのディスク使用量を計算し、その情報をDiscordに送信するものです。
- WEBHOOK_URLを設定:DiscordのWebhook URLを指定します。
- ディスク使用量の計算:duコマンドを使用してホームディレクトリの使用容量をMB単位で取得し、GB単位に変換します。
- メッセージの作成:取得した使用量を含むメッセージを作成します。
- Discordへの送信:curlコマンドを使用して、作成したメッセージをDiscordのWebhookに送信します。
#!/bin/sh
# DiscordのWebhook URL
WEBHOOK_URL="https://discord.com/api/webhooks/xxxx/xxxxxx"
# 使用容量(MB)を取得
TOTAL_DISK_SPACE=$(du -cm $HOME | grep total | cut -f 1)
# 取得した容量をGBに変換
TOTAL_DISK_SPACE=$(echo "scale=2; $TOTAL_DISK_SPACE/1024" | bc)
# メッセージの内容
MESSAGE_CONTENT="サーバーの現在のディスク使用量は $TOTAL_DISK_SPACE GB です。"
# Discordにメッセージを送信
curl -H "Content-Type: application/json" \
-d "{\"content\": \"$MESSAGE_CONTENT\"}" \
$WEBHOOK_URLこのような仕組みを利用することで、サーバー監視やアプリケーションの自動通知など、様々な用途でDiscordを活用することができます。
参考サイト
以下のサイトを参考にさせていただきました
