# UptimeRobot っぽいものを自作してみた話

告知
IT・テクノロジー

最近、なんとなく「自分専用の UptimeRobot みたいなの作ってみたいな〜」と思って、
ゆるっと Python で監視ツールを組んでみました。
せっかくなので、
* どんな感じで作ったか
* 何ができるのか
* これを使って **ココナラで何を出品しようとしているか**
あたりを、ゆるゆるっと書いてみます。
---
## きっかけ:とりあえず「落ちてるかどうか知りたい」
きっかけはすごくシンプルで、
> 「自分のサイトとかサービスが“今ちゃんと生きてるのか” を、
> いい感じの画面で眺めたい」
という欲でした。
既存サービスの UptimeRobot ももちろん便利なんですけど、
* 自分でコード触ってみたい
* 好きな機能を好きなように盛りたい
* 将来的に「サービスとして出品する」のもアリだな〜
みたいな欲もあって、
「じゃあ一回自作してみるか」となりました。
---
## 作ったもの:名前はとりあえず「Nyonyonyo Monitor」
中身としてはざっくりいうと、
> **URL を登録すると、一定間隔で自動チェックしてくれるダッシュボード**
です。
画面はこんな感じの要素があります:
* 監視対象の一覧
  * ID
  * 名前
  * URL
  * 状態(UP / DOWN)
  * 応答時間
  * 最終チェック時刻
* 監視対象の追加フォーム(名前+URLだけでOK)
* 選んだURLの「応答時間グラフ」
* 「AI管理(自動解析)」コーナー
  * 直近のUP率
  * 平均応答時間
  * 安定 / 要注意 / 危険 のラベル
  * エラー要約コメント
見た目はシンプルだけど、
ちゃんと「監視ツールっぽい顔」をしてます。
---
## 中身どうなってるの?(ゆる技術メモ)
### 1. バックエンド:FastAPI + SQLite
* フレームワーク:**FastAPI**
* データベース:**SQLite**
* 言語:**Python**
URLごとに
* 成功/失敗フラグ
* ステータスコード
* 応答時間
* チェックした時刻
を全部DBに溜めていく形にしています。
監視自体は、起動時にバックグラウンドで
```python
while True:
    有効なURLを全部取得
    1件ずつ httpx で GET
    結果を DB に保存
    ちょっと待つ(例:60秒)
```
みたいなループがまわる感じです。
---
### 2. フロント:素HTML + JavaScript + Chart.js
画面側は、
* テンプレートエンジン:Jinja2(FastAPIのテンプレート)
* グラフ:**Chart.js**
という、わりと素朴な構成。
やってることはシンプルで、
* 初回はサーバー側でHTMLをレンダリング
* その後は JavaScript から `/api/status` や `/api/history/{id}` を叩いて
  * 一覧テーブルを自動更新(ポーリング)
  * 選択中のURLの応答時間グラフを更新
という感じで、
開きっぱなしにしておくと **ゆる〜くリアルタイム監視っぽく動きます**。
---
### 3. AI管理(という名の自動解析)
「AI管理」という名前で遊んでいるコーナーがあって、
実際にやっているのはこんなことです:
* 直近◯件(例:20件)の結果を集計
  * UP率(成功率)
  * 平均応答時間
  * 最後の状態(UP/DOWN)
  * ステータスコードの傾向(4xx / 5xx / タイムアウトなど)
そこから、ざっくりこういうラベルをつけてます:
* UP率 95%以上 → **安定**
* 80〜95% → **要注意**
* それ以下 → **危険**
さらに、エラーの傾向から
「なんで落ちてそうか」をゆるっと推理して、コメントを出しています:
* タイムアウト多め →
  「サーバーダウンとかネットワーク不安定の可能性あるよ」
* 5xx 多め →
  「アプリ側の例外やリソース不足かも」
* 4xx 多め →
  「URLミス・認証・権限あたり見てみて」
* 応答時間だけやたら遅い →
  「負荷や外部APIやDBが重そう」
みたいな「エラー要約コメント」をAIっぽく表示しています。
本物のLLM API(ChatGPT API とか)につなげることもできるんですが、
今の段階では **ローカルロジックで“AIっぽいこと”をさせている** くらいのライトな仕様にしています。
---
## 作ってみての感想
* 「監視ツール」って聞くと難しそうだけど、
  分解するとかなりシンプルな機能の組み合わせ
* FastAPI が思った以上に書きやすくて、
  API作るのがサクサク進んだ
* グラフが出るだけで「なんかすごいツール作った感」が一気に増す
* AI管理コーナーのメッセージを考えるのが地味に楽しい
という感じでした。
あと、一度仕組みができると
* チェック間隔を変える
* 通知(Discord / Slack / メール)を付ける
* 公開用のステータスページを作る
* ユーザーごとのログイン機能をつける
…みたいな拡張の妄想が止まらないです。
---
## このツールをベースに、ココナラで出品してみる予定
せっかくここまで作ったので、
これをベースに **ココナラでサービス出品** もしようと思っています。
イメージとしては:
* 「自分のサイトの監視をしたいけど、設定とかサーバーとかよくわからん…」
* 「レンタルサーバーやVPSで、軽い監視を入れてみたい」
* 「小規模サービス用に、シンプルな監視・グラフ・AIっぽい解析がほしい」
みたいな人向けに、
> 🔹 自作UptimeRobot風ツールの
>
> * 導入お手伝い
> * 初期設定
> * 簡単なカスタマイズ
> * 画面の使い方説明
をセットにしたサービスとして出す予定です。
たとえば:
* 監視したいURLを一緒に整理
* サーバー(もしくはPC)にツールを設置
* ダッシュボードがちゃんと動くところまでセットアップ
* 簡単な使い方マニュアル(日本語)付き
みたいな感じで、
「自分用のミニ監視システム」を一緒に作るイメージ。
---
## まとめ:UptimeRobotが好きなら、自作版を一回やってみるのも楽しい
* 「自分で監視ツールを持ってる」というだけでちょっと楽しい
* 作りながら、Python / FastAPI / DB / フロント / 可視化 / “AIっぽい解析” を一気に触れる
* そのままココナラとかでサービス化も狙える
という、割とコスパのいい遊び・勉強ネタでした。
そのうち、
* Discord通知付きプラン
* グラフ強化版
* LLMと連携して、本物のAIに障害レポートを書かせる版
なんかも作って、プラン分けして出品するのもアリだな〜と考え中です。
「監視ツールちょっと気になる」「自分のサイトがちゃんと生きてるか見える化したい」
みたいな人がいたら、そのうちココナラに出すので、
そのときはゆるっと覗きに来てもらえると嬉しいです。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら