Node-Red と Telegram を使用して Discourse のステータスを監視する

ご注意:これは、Discourse Telegram Notifications プラグインを使用して Discourse アプリケーションの通知を送信するものとは異なるアプリケーションです。この NR アプリケーションは、サーバー、Docker、および Discourse アプリケーション全般を監視するためのものです。

忙しいシステム管理者の多くと同様に、外出先ではモバイル端末から本番環境のアプリケーションを監視できることが非常に役立ちます。

このタスクには Telegram と Node-Red(NR)を使用しています。例えば、現在実施している Discourse に関する NR タスクの一部は以下の通りです:

  1. Node-Red は(1 分ごとに)特定のカテゴリ(この目的のために作成されたもの)に対して HTTPS GET リクエストを実行し、Discourse が DOWN になっている(および再び UP に戻った際、不安定な状態「flapping」を伴わない場合)を検知すると、Telegram ボットにアラートを送信します。

  2. 私たちの基本的な Telegram ボット UNIXForumBot には、以下のようないくつかのチェック機能があります:

  • Discourse が実行されているかを手動で確認する。
  • 逆プロキシが使用している Discourse コンテナを素早く表示する。
  • サーバーの稼働時間を確認する。
  • ディスク使用率を確認する。
  • 同じサーバー上の他の LAMP アプリケーションに ping を送る。

Telegram スクリーンショットの例:

設定と背景情報

背景情報

Discourse 実行中のコンテナを確認する理由は、問題が発生した場合やアップグレード・変更を行いたい場合に、サーバーにログインする前にどのコンテナが Discourse を実行しているかを素早く把握する必要があるためです。

私たちは常に Discourse を逆プロキシの背後で実行しています。同じサーバー上で多くの他の Web アプリ(Discourse Docker アプリと併せて実行される LAMP アプリ)を運用しているため、Discourse は以下のように構成されています:

  • Discourse のデータコンテナとアプリケーションコンテナを分離する。
  • Discourse アプリケーションコンテナは、ホスト(逆プロキシ)に対して Unix ドメインソケットのみを公開する。

この設定に不慣れな方のために説明すると、新しいアップグレードがリリースされた際に Discourse をビルドし、逆プロキシ設定で異なる Unix ドメインソケットを指定することで、ダウンタイムゼロで新しい Discourse バージョンに切り替えることができます。

最新のベータ版に問題が発生しても、問題ありません。以前の実行バージョンを維持している別のコンテナに素早く簡単にロールバックできます。完璧に機能します。

Discourse 監視用の Telegram ボットに使用する Node-Red 図

Telegram と NR を使用して Discourse アプリケーションを監視したい方のために、このアプリケーション用の Node-Red ノードを公開しています。お好みに合わせてカスタマイズしてください:

将来的には、Telegram アプリ内の Docker および Discourse 監視機能を拡張する予定です。

関連項目:

本番サーバーおよび Discourse アプリケーションの監視に興味のある他のシステム管理者の方々が、この短いトピックを役立つと感じてくれることを願っています。

「いいね!」 4