ブログに戻る
·9分で読める·productdevbook

macOSで個人用の通信量ダッシュボードを作る

macOS向け個人通信量ダッシュボードの実用的な構築方法。何を計測し何を無視すべきか、そして全てをローカルに留めるコツを紹介します。

  • macOS
  • Bandwidth
  • Productivity
  • Tutorial

半年ごとに、Hacker Newsの誰かが「PrometheusとGrafanaで個人モニタリングスタックを作った」を投稿します。美しく、土曜日にセットアップするのは楽しく、そして実際の問い——Macの各アプリがどれだけ通信量を使っているか——には極端に過剰です。TSDB、Docker composeファイル、TLS付きリバースプロキシは要りません。1画面に収まり、メニューバーに住み、邪魔をしないmacOS通信量ダッシュボードが必要なのです。週末を燃やさずに作る方法を示します。

主張: メニューバーアプリがライブと最近層を扱い、時々のCSVエクスポートがアーカイブ分析を扱う、それで完了。世話するサービス、編集するスクレイプ設定、保守するパネルもありません。

macOS通信量ダッシュボードでユーザーが実際に必要とするもの

Grafanaの幻想を取り除き、実際に何を見るかを問いましょう:

  1. 現在のレート。 「今何かが通信量を使っているか?」——最も一般的な問いで、1日に何十回も問われる。
  2. アプリ別の内訳。 答えが「はい」のとき、どのアプリかを知りたい。
  3. 最近の履歴。 直近1時間、1日、たぶん1週間。パターンを見つけるのに十分。
  4. 時々の深掘り。 月に1度、今月と先月を比較したり、何か別のものと相関させたい。

それだけです。それがプロダクトの全体です。多くの「個人モニタリング」スタックは何十のダッシュボードを出荷します——ツールがそれを促すからです。必要ありません。

2層設計

問題をライブ/最近層とアーカイブ層に分けます。

ライブ+最近: メニューバーアプリ

メニューバーアプリは最初の3つのニーズに正しい形です。常に動き、現在の活動から1クリック離れ、見ていないときには画面領域を取りません。メニューバーアイコンの情報密度——小さなグラフまたは2つの数字としての現在のレート——はまさに「今何かが通信量を使っているか」が欲しいものです。

これらの特性を持つものを選べば設定完了:

  • メニューバーで一目見えるライブレートを表示
  • アプリ別内訳のポップオーバーまたはウィンドウを持つ
  • ヘルパープロセスを親アプリの下に折りたたむ(「Slack」が7行ではなく1行)
  • 最低1日、理想的には1週間以上の履歴を保持
  • macOSがフラグを立てないよう署名・公証済み

ovaはこのすべてを出荷しています。約3MB、約1Hzでサンプリング、macOS 14以降(Apple SiliconとIntel)で動作、データはローカル、テレメトリなし。

メニューバーでライブ+履歴
ovaはメニューバーに現在のレートを表示し、その後ろにスクラブ可能なアプリ別タイムラインを持ちます。インストール以外のセットアップなしで、通信量ダッシュボードのライブと最近層をカバーします。

アーカイブ: 時々のCSVエクスポート

月に1度の「今月と先月を比較する」問いには、ライブシステムは要りません。フラットファイルが必要です。通信量モニターからCSVをエクスポートし、ノートブック(Jupyter、Observable、何でも)に投げ、クエリを実行。

ここは興味深い分析もする場所です: 時間帯のヒートマップ、アプリ別の宛先トップ、週次成長率。ライブで実行する必要はありません——月に1度でOK——そしてラップトップはGrafanaインスタンスをホストする必要がありません。

モニターがSQLiteにデータを保存していれば(ovaは~/Library/Application Support/ova/に保存します)、エクスポートは1コマンド:

sqlite3 -header -csv \
  ~/Library/Application\ Support/ova/<file>.sqlite \
  "SELECT timestamp, app, bytes_in, bytes_out FROM samples" \
  > ~/Desktop/bandwidth.csv

それからPython、R、DuckDBで読み込めば、Grafanaスタックの重作業層を1クエリとゼロインフラで持つことになります。

なぜGrafanaじゃないのか?

Grafana、Prometheus、InfluxDB、Loki——フリート向けには素晴らしいツールです。1台のMacには、運用オーバーヘッドが極端に不釣り合いです。必要なもの:

  • ローカルで動くPrometheusインスタンス(RAM、ディスク、ポート)
  • proc_pidinfoまたはnettop出力を読むカスタムエクスポーター(誰かが書いて保守する必要)
  • ローカルで動くGrafana(Java/Goプロセス、ポート、データベース)
  • 作って版管理するダッシュボード
  • 定期的にダッシュボードにログインする理由(しません)

最初の土曜午後の輝きの後、スタックは腐ります。macOSをアップグレードするとエクスポーターが壊れます。Grafanaがパスワードリセットを求めます。3週間忘れ、まさにそれを作った異常を見逃します。

メニューバーアプリは邪魔をしません。時計を見るたびにレートが見えます。macOS通信量ダッシュボードのワークフローはルーチンに組み込まれていて、訪問を覚えなければならないウェブサイトではありません。

ステップバイステップのセットアップ

具体的に、15分でダッシュボードを組み上げる方法。

ステップ1: メニューバーアプリをインストール

ovaをインストール。約3MB。Applicationsへドラッグ、起動、ネットワーク統計を読む要求された権限を許可、完了。即座に約1Hzでサンプリングし、メニューバーに現在のレートを表示し始めます。

ステップ2: メニューバー表示を構成

ほとんどのメニューバー通信量ツールは何を表示するか選ばせてくれます。一般的なオプション:

  • 現在の上下レート(例: ↓ 2.1 MB/s ↑ 80 KB/s)
  • 直近1分の小さなスパークライン
  • アクティブなときに点灯するアイコンだけ

1つ選びましょう。2数字表示は最も密。スパークラインは最も「一目で分かる」。間違った答えはありません。実際に読むものを選びましょう。

ステップ3: いくつかのアプリをピン留め

一部のモニターは特定のアプリを「監視中」とマークさせてくれます——内訳ビューで最初に出ます。多くの人に有用なピン:

  • 住んでいるブラウザ(Chrome、Safari、Arc、Firefox)
  • 仕事のチャット(Slack、Discord、Teams)
  • 開発ツール(Docker、VS Code、モバイルをするならシミュレータ)
  • クラウド同期(Dropbox、iCloudのcloudd、Google Drive)

1週間以内に、本当にピン留めしたいアプリと楽観的だったアプリが分かります。

ステップ4: 履歴が動くか確認

最近層の要点全体は遡れることです。ポップオーバーまたはウィンドウを開き、「過去24時間」のような時間範囲を選び、ピークと谷のあるチャートが見えることを確認しましょう。見えないなら、アプリはデータを永続化しておらず、立派なnettopを持っているだけです。別のツールに移りましょう。

ステップ5: 月次エクスポートをスケジュール

毎月1日にカレンダーリマインダーを追加: 「通信量データをエクスポート、ヒートマップノートブックを実行」。月に1度5分。それがアーカイブ層です。

何を見るか

ダッシュボードを動かしたら、定期的なペースで確認する価値のある問い。

毎日の一目

内訳ビューを開く。意外を探す。Chromeがトップなら正常。仕事時間中にclouddがトップなら、なぜか問う(おそらくiCloudの追いつき、写真のアップロード可能性も)。認識しないものがトップなら調査。

週次

日次合計を見る。一貫しているか? 1日だけ5倍のスパイクは、別のことをした(ゲームをダウンロード、大きな通話)か、自動的な何かが動いた(リモート先へのTime Machine、システムアップデート)を意味します。

月次

ヒートマップを実行。月別のトップアプリ。前月と比較。時間にわたる傾向は、通信量が忍び寄っているかを教えてくれる——通常、問うのを忘れた新しいアプリのため。

ovaを動かしてみる

一目で分かるメニューバー通信量モニター——ローカル、署名済み、約3MB。

macOS用ダウンロード

実例

実際のあるユーザーのセットアップからのパターン:

  • ライブレート: メニューバーの小さなスパークライン。一目はゼロ時間コスト。
  • アプリ別ビュー: ovaのポップオーバーを開くホットキーにバインド。
  • 週次チェック: 毎週金曜午後、ユーザーは7日ビューを開きトップ3アプリを記録。前週金曜になかったトップ3のものについては、理由を説明する1文をジャーナルに書く。
  • 月次エクスポート: launchdジョブが毎月1日にCSVをダンプ。小さなObservableノートブックがヒートマップとアプリ別トップ10をプロット。合計時間: 月に1度90秒。

それがシステム全体です。Prometheusなし、Grafanaなし、リバースプロキシなし、認証なし、ポートなし、回転するログなし。「ダッシュボード」はメニューバーと月に1度開くノートブックです。

実際にサーバが必要なとき

集中スタックが正しいケースもあります:

  • 複数のMacを管理する(小チーム、家族、ビルドマシンのフリート)
  • Mac以外のデータ(ルーターログ、スマートホームトラフィック、仕事用VPN使用量)との相関が欲しい
  • リアルタイムの警告ニーズがある(「アップロードが5分以上100MB/sを超えたら呼んで」)

それらは運用コストを正当化します。1台の個人Macには正当化しません。

まとめ

ユーザーが実際に開くmacOS通信量ダッシュボードはスタックを必要としません。常に現在のレートを表示するメニューバーアプリ、何かおかしく見えるときのアプリ別内訳、まれな深掘り用のエクスポートパスが必要。それで全部です。

シンプル版が欲しいなら、ovaをインストールしましょう——約3MB、macOS 14以降、約1Hzでサンプリング、すべてのデータがマシンの~/Library/Application Support/ova/に留まる、アカウント不要、買い切りで生涯アップデートと14日間返金可。ダウンロードからダッシュボードまで5分、composeファイルは見えません。