Discordを使ったお手軽サーバー管理

Discordを使ったお手軽サーバー管理

hugelでは、Discordを使用してメンバー間の情報共有を行っています。サーバー管理においても情報をDiscordに集約するため、Webhookを利用してサーバーからメッセージを送信できるよう設定しました。

Discordとは?

Discordは、主にインターネットを通じてコミュニケーションを取るためのアプリケーションで、同様のツールではSlackやTeamsがあります。それらにも共通していますが、以下のような特徴があります。

  • テキストチャット、音声通話、ビデオ通話などの機能を提供
  • 元々はゲーマー向けに開発されましたが、現在では様々な目的で幅広く使用されている
  • 「サーバー」と呼ばれる独自のコミュニティを作成でき、その中に複数の「チャンネル」を設けて会話を整理でできる
  • 無料で利用でき、スマートフォンやパソコンなど、様々な端末で利用可能
  • 外部サービスと連携する機能があり、例えばWebhookを使用して自動的に情報を投稿することが可能

手順

Webhookは、特定のイベントが発生したときに自動的にHTTPリクエストを送信する仕組みです。Discordの場合、Webhookを設定することで、外部のアプリケーションやサービスからDiscordチャンネルにメッセージを送信することができます。

以下は、Webhookを使用してDiscordに投稿する基本的な手順です:

1. Discordサーバーの設定でWebhookを作成し、WebhookのURLを取得します。

Discordを使ったお手軽サーバー管理
Discordを使ったお手軽サーバー管理
Discordを使ったお手軽サーバー管理

2. 取得したWebhook URLに対してHTTPリクエストを送信します。これは通常、POSTリクエストとして行われます。

3. リクエストのボディに、送信したいメッセージの内容やフォーマットを指定します。

シェルスクリプトの例

このシェルスクリプトは、サーバーのディスク使用量を計算し、その情報をDiscordに送信するものです。

  1. WEBHOOK_URLを設定:DiscordのWebhook URLを指定します。
  2. ディスク使用量の計算:duコマンドを使用してホームディレクトリの使用容量をMB単位で取得し、GB単位に変換します。
  3. メッセージの作成:取得した使用量を含むメッセージを作成します。
  4. 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を活用することができます。

参考サイト

以下のサイトを参考にさせていただきました

https://qiita.com/rumrais1n/items/4ba0c6bf1012a41918b8