サーバーメトリクス機能の廃止#
概要#
2026 年 1 月 2 日、PR #1384により、サーバーメトリクス API、ウィジェット、およびリアルタイム統計チャンネルが Misskey コードベースから削除されました。この削除は、コンテナ環境下で信頼できるデータが取得できないために行われました。
削除の理由#
サーバーメトリクス機能は、コンテナ環境において信頼性の高いデータを収集できないという理由で削除されました。コンテナ環境 (Docker/Kubernetes) では、コンテナ内部から収集されるシステム情報は、実際のホストリソースを反映していない、または CPU、メモリ、その他のシステムメトリクスについて誤解を招くデータを提供することがよくあります。
コンテナ環境における問題#
コンテナ化されたデプロイメントでは、以下のような問題が発生します:
- リソース制限の不透明性: コンテナ内から見えるシステムリソースは、コンテナに割り当てられた実際のリソース制限と一致しない場合がある
- ホストメトリクスへの誤ったアクセス: コンテナ内のプロセスが取得する CPU やメモリの情報は、ホストシステム全体の情報である可能性があり、コンテナの実際の使用状況を反映していない
- ネットワークとディスク I/O の複雑性: コンテナ化されたネットワークスタックとストレージレイヤーにより、正確なネットワーク統計やディスク I/O 統計の収集が困難
これらの理由により、サーバーメトリクス機能は信頼性が低く、管理者に誤った情報を提供する可能性があるため、完全に削除されることになりました。
削除されたコンポーネント#
API エンドポイント#
admin/server-info- サーバー情報を取得する管理者用 API エンドポイントserver-info- サーバー情報を取得する公開 / ユーザー用 API エンドポイント
これらのエンドポイントは、システムメトリクス (CPU 使用率、メモリ使用量、ネットワーク統計、ディスク I/O) を返していましたが、コンテナ環境での信頼性の問題により削除されました。
ウィジェット#
サーバーメトリクスウィジェット(serverMetric) が削除されました。このウィジェットは、ユーザーのダッシュボードにリアルタイムのサーバー統計情報を表示していました。
削除されたローカライズラベル (全 23 言語):
- 日本語: "サーバーメトリクス"
- 英語: "Server Metrics"
- その他:アラビア語、ベンガル語、カタロニア語、チェコ語、ドイツ語、スペイン語、フランス語、インドネシア語、イタリア語、韓国語、ポーランド語、ポルトガル語、ロシア語、スロバキア語、タイ語、ウクライナ語、ベトナム語、中国語
ストリーミングチャンネル#
server-statsストリーミングチャンネルが削除されました:
- 機能: リアルタイムサーバー統計情報を配信する WebSocket チャンネル
- 実装の変更:
ChannelsServiceのチャンネルルーティングからserverStatsケースを削除ServerModuleプロバイダーからServerStatsChannelServiceを削除
このチャンネルは、2 秒ごとにサーバーメトリクスをクライアントにブロードキャストしていました。
バックエンドサービス#
1. ServerStatsService.ts#
ファイルパス: packages/backend/src/daemons/ServerStatsService.ts (114 行)
責任範囲:
osUtils.cpuUsage()を使用した CPU 使用率統計の定期収集systeminformation.mem()によるメモリ統計の取得systeminformation.networkStats()によるネットワーク統計の取得systeminformation.disksIO()によるファイルシステム I/O 統計の取得- Xev イベントエミッターを介した 2 秒ごとの統計ブロードキャスト
- 200 エントリの統計履歴ログの維持
アーキテクチャ上の役割:
- デーモンとして常時実行され、システムメトリクスを継続的に監視
- 収集したデータをストリーミングチャンネルと API エンドポイントに提供
2. show-machine-info.ts#
ファイルパス: packages/backend/src/misc/show-machine-info.ts
機能: サーバー起動時にマシン情報をコンソールに表示
削除箇所: packages/backend/src/boot/master.tsからshowMachineInfo()の呼び出しを削除
型定義#
**packages/backend/src/@types/os-utils.d.ts** が削除されました。このファイルは、os-utilsライブラリの TypeScript 型定義を提供していました。
管理 UI への影響#
削除された UI コンポーネント#
サーバーメトリクスウィジェットがウィジェットシステムから削除されました。これにより、以下の機能が影響を受けます:
- ダッシュボードウィジェットオプション: 管理者がダッシュボードに追加できるウィジェットの選択肢からサーバーメトリクスウィジェットが削除されました
- リアルタイム監視機能: 管理インターフェースでのリアルタイムサーバー監視機能が失われました
- 履歴パフォーマンス可視化: サーバーパフォーマンスの履歴データを視覚的に表示する機能が削除されました
ダッシュボードへの影響#
管理者は以下の情報にアクセスできなくなりました:
- CPU 使用率のリアルタイムグラフ
- メモリ使用量の統計
- ネットワークトラフィックの可視化
- ディスク I/O 統計
起動時情報の削除#
showMachineInfo()関数呼び出しが削除されました。packages/backend/src/boot/master.tsのマスターブートプロセスから削除され、サーバー起動時のマシン情報表示が廃止されました。これにより、サーバーログにはマシンのハードウェア情報が表示されなくなりました。
パーミッションの変更#
**read:admin:server-info** パーミッションが削除されました。locales/index.d.tsから以下のパーミッション定義が削除されています:
- パーミッション名:
"read:admin:server-info" - 説明: "サーバーの情報を見る" (View server information)
- 削除箇所: ロケール型定義の 9611 行目から削除
パーミッションの用途#
このパーミッションは、管理者 API を通じてサーバー情報を閲覧するためのアクセス制御に使用されていました。具体的には:
admin/server-infoAPI エンドポイントへのアクセス権限- サーバーメトリクスデータの取得権限
- システムリソース情報の閲覧権限
影響を受ける API 呼び出し#
このパーミッションを要求していた API エンドポイントは、パーミッション自体とともに削除されました。既存のアプリケーションやスクリプトがこれらのエンドポイントを使用していた場合、エンドポイントが存在しないため 404 エラーが返されます。
依存関係の変更#
この削除により、以下のライブラリへの依存が実質的に非推奨となりました:
systeminformation- マシンメトリクス (メモリ、ネットワーク、ディスク I/O) の収集に使用os-utils- CPU 使用率の監視に使用
これらのライブラリは完全には削除されていませんが、サーバーメトリクス機能の削除により、主要な使用目的が失われました。
CPU 検出のリファクタリング#
AiService.tsのgetCpuFlags()メソッドがリファクタリングされました。systeminformation.cpuFlags()の代わりに、/proc/cpuinfoから直接 CPU フラグを読み取るようになりました:
const cpuinfo = await readFile('/proc/cpuinfo', 'utf-8');
const flagsLine = cpuinfo.split('\n').find(line => line.startsWith('flags'));
const flags = flagsLine.split(':')[1]?.trim() || '';
return flags.split(/\s+/);
リファクタリングの目的:
- 外部依存関係を減らす
- TensorFlow の CPU 機能検出 (avx2、fma) を引き続きサポート
- Linux システムの標準的な procfs インターフェースを活用
このアプローチにより、AI 機能に必要な CPU 機能の検出は、systeminformationライブラリに依存することなく動作し続けます。
変更されたファイル#
PR #1384 は合計 28 ファイルに影響を与えました:
削除されたファイル (2 件)#
ServerStatsService.ts- サーバー統計収集サービス (114 行)os-utils.d.ts- os-utils ライブラリの型定義
変更されたファイル (26 件)#
ローカライゼーションファイル (23 件)#
全ての言語ファイルから"serverMetric"翻訳文字列を削除:
locales/ja-JP.yml,en-US.yml,ar-SA.yml,bn-BD.yml,ca-ES.ymlcs-CZ.yml,de-DE.yml,es-ES.yml,fr-FR.yml,id-ID.ymlit-IT.yml,ko-KR.yml,pl-PL.yml,pt-PT.yml,ru-RU.ymlsk-SK.yml,th-TH.yml,uk-UA.yml,vi-VN.yml,zh-CN.yml- その他の中国語および地域別バリエーション
バックエンドファイル (3 件)#
locales/index.d.ts-"serverMetric"と"read:admin:server-info"パーミッション定義を削除packages/backend/src/daemons/DaemonModule.ts- ServerStatsService の登録を削除packages/backend/src/boot/master.ts-showMachineInfo()呼び出しを削除
その他のファイル#
packages/backend/package.json- 依存関係の更新packages/backend/scripts/generate_api_json.js- インポート文のクリーンアップpackages/backend/src/core/AiService.ts- CPU フラグ検出の変更
アーキテクチャ図#
以下は、削除されたサーバーメトリクスシステムのアーキテクチャを示します:
図の説明: 赤色で示されたコンポーネントは、PR #1384 で削除された要素です。ServerStatsService が複数のソースからメトリクスを収集し、ストリーミングチャンネルと API エンドポイントを通じてクライアントに配信していました。
管理者向けの推奨事項#
代替監視ソリューション#
サーバーメトリクス機能が削除されたため、管理者は以下の代替監視ソリューションを検討することを推奨します:
-
コンテナ監視ツール:
- Prometheus + Grafana - コンテナメトリクスの収集と可視化
- cAdvisor - Docker コンテナのリソース使用状況とパフォーマンス特性の監視
- Node Exporter - ホストレベルのシステムメトリクス収集
-
オーケストレーション統合監視:
- Kubernetes Metrics Server - Kubernetes 環境でのリソース使用状況
- Docker Stats API - Docker コンテナの統計情報へのアクセス
-
アプリケーションパフォーマンス監視 (APM):
- OpenTelemetry - 分散トレーシングとメトリクス収集
- Elastic APM - アプリケーションパフォーマンスの詳細な監視
移行時の注意事項#
既存の Misskey インスタンスを更新する場合:
- API クライアントの更新:
admin/server-infoまたはserver-infoエンドポイントを使用しているカスタムツールやスクリプトを更新する必要があります - ウィジェットの削除: サーバーメトリクスウィジェットを使用していたユーザーのダッシュボードから自動的に削除されます
- パーミッションのクリーンアップ:
read:admin:server-infoパーミッションを持つトークンやアプリケーションは影響を受けませんが、このパーミッションは機能しなくなります