軽量でリアルタイムなRaspberry Pi 3 B+パフォーマンスモニタリングシステム
- 軽量設計: Goで実装されたバックエンドにより、最小限のリソース使用量(5-15MB)
- リアルタイム監視: WebSocketを使用したリアルタイムデータ更新
- 美しいUI: レスポンシブデザインによる直感的なWebダッシュボード
- 包括的監視: CPU、メモリ、温度、ディスク、ネットワークの監視
- クロスプラットフォーム: Raspberry Pi以外でも動作可能
- ✅ CPU使用率(リアルタイムグラフ付き)
- ✅ メモリ使用量
- ✅ CPU温度(Raspberry Pi特化)
- ✅ ディスク使用量
- ✅ ネットワーク転送量
- ✅ システム稼働時間
- ✅ ロードアベレージ
- ✅ Goルーチン数
- Go 1.21以上
- Raspberry Pi 3 B+ (または他のLinuxシステム)
-
依存関係のインストール
go mod tidy
-
アプリケーションのビルド
go build -o raspberry-pi-monitor
-
実行
./raspberry-pi-monitor
-
ダッシュボードにアクセス ブラウザで
http://localhost:8080を開く
Windows/Macから Raspberry Pi向けにビルドする場合:
# ARM64 (Raspberry Pi 4)
GOOS=linux GOARCH=arm64 go build -o raspberry-pi-monitor-arm64
# ARMv7 (Raspberry Pi 3 B+)
GOOS=linux GOARCH=arm GOARM=7 go build -o raspberry-pi-monitor-armv7raspberry-pi-monitor/
├── main.go # メインサーバー
├── monitor/
│ ├── system.go # システム情報収集
│ └── websocket.go # WebSocket処理
├── web/
│ ├── index.html # メインダッシュボード
│ ├── app.js # フロントエンドロジック
│ └── style.css # スタイルシート
├── go.mod # Go モジュール定義
└── README.md # このファイル
GET /- メインダッシュボードGET /ws- WebSocketエンドポイント(リアルタイムデータ)GET /api/stats- システム統計のJSON APIGET /health- ヘルスチェック
PORT- サーバーポート(デフォルト: 8080)
監視間隔やその他の設定は main.go の定数で変更可能:
const (
DefaultPort = ":8080"
MonitorInterval = time.Second // 1秒間隔
)- メモリ: 5-15MB
- CPU: 1-3%(アイドル時)
- ネットワーク: 最小限(WebSocket通信のみ)
- システム統計: 1秒間隔
- WebSocket通信: リアルタイム
- チャート更新: 60データポイント保持
MIT License
プルリクエストやイシュー報告を歓迎します!
- バックエンド: Go, gorilla/websocket, shirou/gopsutil
- フロントエンド: バニラJavaScript, Canvas API, WebSocket
- スタイル: CSS3, レスポンシブデザイン
新しい監視項目を追加する場合:
monitor/system.goのSystemStats構造体を拡張GetStats()メソッドで新しいメトリクスを収集web/app.jsでフロントエンド表示を追加web/index.htmlとweb/style.cssでUIを更新