Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to Build a Web Monitoring Workflow with Python, n8n & Docker using Telegram Alerts

2025年09月29日に「Dev.to」が公開したITニュース「How to Build a Web Monitoring Workflow with Python, n8n & Docker using Telegram Alerts」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Python、n8n、Dockerを使いWebサイトの監視ワークフローを構築する方法を解説。Pythonで監視サービスを作り、n8nで定期的に実行し、Webサイトの状態変化を検知してTelegramに通知する。SE初心者でも、自動監視システムを効率的に構築できる。

ITニュース解説

この解説文では、ウェブサイトが正常に動作しているかを自動で監視し、もし異常があればすぐにスマートフォンに通知を送るシステムについて説明する。このシステムは、Pythonというプログラミング言語、n8nという自動化ツール、Dockerという仮想化技術、そしてTelegramというメッセージアプリという、いくつかの異なる技術を組み合わせて構築される。

現代のインターネットでは、ウェブサイトが常に利用できる状態にあることは非常に重要である。ウェブサイトが停止したり、コンテンツが改ざんされたりすると、ビジネスに大きな影響が出る可能性があるため、常にその状態を監視する必要がある。しかし、これを手動で行うのは非常に手間がかかり、人間が見落とすリスクも伴う。そこで、今回紹介するような自動監視システムが活躍する。このシステムは、ウェブサイトの「健康状態」を定期的にチェックし、何か異常があれば即座に教えてくれる、まさにウェブサイトの自動巡回医のような役割を果たすものだ。

このシステムの中心となる主要な要素は以下の通りである。

まず、**Python(FastAPI)**で作られた小さなプログラムが「ウェブサイトの健康状態をチェックする専門家」の役割を担う。このプログラムは、指定されたウェブサイトのURLに実際にアクセスし、応答が返ってくるか、正常な応答(例えば「OK」を示すステータスコード200)が得られるか、さらにはウェブサイトのページ内に特定のテキストが含まれているかなどを確認する。ウェブサイトへのアクセスにかかった時間(応答速度)も計測し、これらのチェック結果をまとめる。また、前回のチェック結果と比較して、ウェブサイトの状態が「正常から異常」に変わったのか、「異常から正常」に戻ったのかといった「状態の変化」を検出する機能も持っている。この状態の記録は、プログラムが一時的に停止しても消えないように、特別な保存場所に保管される。

次に、n8nというツールが「システム全体の司令塔」として機能する。n8nはプログラミングの知識があまりなくても、視覚的にさまざまな処理の流れ(ワークフロー)を構築できる便利なツールである。このシステムでは、n8nが定期的にPythonサービスに「ウェブサイトをチェックしてほしい」と指示を出し、Pythonサービスから返ってきたチェック結果を受け取る。受け取った結果の中から、「状態が変化した」ウェブサイトがある場合だけを抽出し、次に何をすべきかを判断する。つまり、どの情報を、どのメッセージアプリに、どんな形式で送るかを決定する役割だ。

そして、Dockerという技術は、「各コンポーネントを独立した箱に入れる」ことで、システム全体の安定稼働を助ける。Pythonサービスもn8nも、それぞれがDockerコンテナという独立した環境の中で動作する。これにより、お互いのプログラムが影響し合うことなく、また、どんなパソコン環境でも同じように安定して動かすことができるようになる。Docker Composeというツールを使うと、複数のDockerコンテナ(この場合はPythonサービスとn8n)をまとめて定義し、簡単に連携させて起動・管理することが可能だ。各コンポーネントが使うデータも、コンテナが消えても残る「永続ボリューム」という場所に保存されるため、データの喪失を防ぐことができる。

最後に、Telegramというメッセージアプリが「緊急連絡手段」として使われる。n8nで状態の変化が検出されると、Telegramを通じてユーザーのスマートフォンにリアルタイムでアラートメッセージが送信される。これにより、ウェブサイトに何か問題が発生した場合、すぐにその事態を把握し、対応を始めることができる。Telegramには、メッセージを自動で送信してくれる「ボット」を作成する機能があり、これを活用して通知を行う。

これらの技術が連携して、次のような流れでウェブサイト監視が実行される。

まず、設定された時間(例えば1分ごと)になると、司令塔であるn8nが自動的に起動する。n8nは、ウェブサイトの健康状態をチェックする専門家であるPythonサービスに対して、監視対象のウェブサイトのURLや、期待するテキストなどの情報を含んだ「チェック依頼」を送る。

この依頼を受け取ったPythonサービスは、実際に指定されたウェブサイトにアクセスして、健康診断を行う。ウェブサイトが正常に応答したか、エラーが発生していないか、ページ内に特定のキーワードが含まれているかなどを確認し、その結果をまとめてn8nに報告する。この際、前回のチェックからの「状態変化」(例えば、それまで正常だったサイトがエラーになった、またはエラーだったサイトが正常に戻ったなど)も合わせて報告される。

n8nはPythonサービスから報告された複数のチェック結果を一つずつ確認し、その中から特に「状態が変化した」ものだけを抽出する。これは、状態に変化がない場合は無駄な通知を送らないようにするためのフィルターの役割を果たす。

そして、状態が変化したウェブサイトが見つかると、n8nは事前に設定されたTelegramボットを通じて、そのウェブサイトの名前、新しい状態(正常か異常か)、ステータスコード、応答速度、エラーメッセージなどの詳細情報を分かりやすくまとめたアラートメッセージをユーザーのTelegramアカウントに送信する。これにより、ユーザーはウェブサイトの異常を即座に知ることができる。

このシステムを構築するには、まずPythonとDockerをパソコンにインストールする必要がある。次に、Telegramアプリ内で自動でメッセージを送ってくれる「ボット」を作成し、そのボットを動かすための「APIトークン」という鍵と、通知を受け取る自分の「チャットID」を取得する。システムを構成するPythonのプログラムコードや、n8nのワークフロー定義、Dockerで各サービスを連携させるための設定ファイルなどを、指定されたフォルダ構造に配置する。特に、Docker Composeの設定ファイルでは、n8nとPythonサービスが同じ内部ネットワークで通信できるように設定し、Pythonサービスが状態を記録するデータを永続的に保存するための設定も行う。最後に、Dockerを使ってn8nを起動し、ウェブブラウザからn8nの画面にアクセスして、取得したTelegramのAPIトークンを登録し、提供されたワークフロー定義をインポートする。インポート後、監視対象のウェブサイトのURLや通知メッセージの内容などを細かく設定すれば、システムは稼働準備完了となる。

このようにして構築されたシステムは、一度設定すれば、あとは自動でウェブサイトの監視と通知を行い続ける。手動での監視から解放され、ウェブサイトの異常発生時にはリアルタイムで情報を受け取れるようになるため、迅速な対応が可能となる。また、このシステムは非常に柔軟であり、Telegramの代わりにSlackやメールなど他の通知手段を使うように変更したり、複数のウェブサイトを同時に監視したり、さらに監視の履歴を記録するといった応用も簡単にできる。

関連コンテンツ

関連IT用語

関連ITニュース