ãµãŒããŒã¡ããªã¯ã¹æ©èœã®å»æ¢#
æŠèŠ#
2026 幎 1 æ 2 æ¥ãPR #1384ã«ããããµãŒããŒã¡ããªã¯ã¹ APIããŠã£ãžã§ãããããã³ãªã¢ã«ã¿ã€ã çµ±èšãã£ã³ãã«ã Misskey ã³ãŒãããŒã¹ããåé€ãããŸããããã®åé€ã¯ãã³ã³ããç°å¢äžã§ä¿¡é Œã§ããããŒã¿ãååŸã§ããªãããã«è¡ãããŸããã
åé€ã®çç±#
ãµãŒããŒã¡ããªã¯ã¹æ©èœã¯ãã³ã³ããç°å¢ã«ãããŠä¿¡é Œæ§ã®é«ãããŒã¿ãåéã§ããªããšããçç±ã§åé€ãããŸãããã³ã³ããç°å¢ (Docker/Kubernetes) ã§ã¯ãã³ã³ããå éšããåéãããã·ã¹ãã æ å ±ã¯ãå®éã®ãã¹ããªãœãŒã¹ãåæ ããŠããªãããŸã㯠CPUãã¡ã¢ãªããã®ä»ã®ã·ã¹ãã ã¡ããªã¯ã¹ã«ã€ããŠèª€è§£ãæãããŒã¿ãæäŸããããšããããããŸãã
ã³ã³ããç°å¢ã«ãããåé¡#
ã³ã³ããåããããããã€ã¡ã³ãã§ã¯ã以äžã®ãããªåé¡ãçºçããŸã:
- ãªãœãŒã¹å¶éã®äžéææ§: ã³ã³ããå ããèŠããã·ã¹ãã ãªãœãŒã¹ã¯ãã³ã³ããã«å²ãåœãŠãããå®éã®ãªãœãŒã¹å¶éãšäžèŽããªãå Žåããã
- ãã¹ãã¡ããªã¯ã¹ãžã®èª€ã£ãã¢ã¯ã»ã¹: ã³ã³ããå ã®ããã»ã¹ãååŸãã CPU ãã¡ã¢ãªã®æ å ±ã¯ããã¹ãã·ã¹ãã å šäœã®æ å ±ã§ããå¯èœæ§ããããã³ã³ããã®å®éã®äœ¿çšç¶æ³ãåæ ããŠããªã
- ãããã¯ãŒã¯ãšãã£ã¹ã¯ I/O ã®è€éæ§: ã³ã³ããåããããããã¯ãŒã¯ã¹ã¿ãã¯ãšã¹ãã¬ãŒãžã¬ã€ã€ãŒã«ãããæ£ç¢ºãªãããã¯ãŒã¯çµ±èšããã£ã¹ã¯ I/O çµ±èšã®åéãå°é£
ãããã®çç±ã«ããããµãŒããŒã¡ããªã¯ã¹æ©èœã¯ä¿¡é Œæ§ãäœãã管çè ã«èª€ã£ãæ å ±ãæäŸããå¯èœæ§ããããããå®å šã«åé€ãããããšã«ãªããŸããã
åé€ãããã³ã³ããŒãã³ã#
API ãšã³ããã€ã³ã#
以äžã® 2 ã€ã® API ãšã³ããã€ã³ããåé€ãããŸãã:
admin/server-info- ãµãŒããŒæ å ±ãååŸãã管çè çš API ãšã³ããã€ã³ãserver-info- ãµãŒããŒæ å ±ãååŸããå ¬é / ãŠãŒã¶ãŒçš API ãšã³ããã€ã³ã
ãããã®ãšã³ããã€ã³ãã¯ãã·ã¹ãã ã¡ããªã¯ã¹ (CPU 䜿çšçãã¡ã¢ãªäœ¿çšéããããã¯ãŒã¯çµ±èšããã£ã¹ã¯ I/O) ãè¿ããŠããŸããããã³ã³ããç°å¢ã§ã®ä¿¡é Œæ§ã®åé¡ã«ããåé€ãããŸããã
ãŠã£ãžã§ãã#
ãµãŒããŒã¡ããªã¯ã¹ãŠã£ãžã§ãã(serverMetric) ãåé€ãããŸããããã®ãŠã£ãžã§ããã¯ããŠãŒã¶ãŒã®ããã·ã¥ããŒãã«ãªã¢ã«ã¿ã€ã ã®ãµãŒããŒçµ±èšæ
å ±ã衚瀺ããŠããŸããã
åé€ãããããŒã«ã©ã€ãºã©ãã« (å š 23 èšèª):
- æ¥æ¬èª: "ãµãŒããŒã¡ããªã¯ã¹"
- è±èª: "Server Metrics"
- ãã®ä»ïŒã¢ã©ãã¢èªããã³ã¬ã«èªãã«ã¿ããã¢èªããã§ã³èªããã€ãèªãã¹ãã€ã³èªããã©ã³ã¹èªãã€ã³ããã·ã¢èªãã€ã¿ãªã¢èªãéåœèªãããŒã©ã³ãèªããã«ãã¬ã«èªããã·ã¢èªãã¹ãããã¢èªãã¿ã€èªããŠã¯ã©ã€ãèªããããã èªãäžåœèª
ã¹ããªãŒãã³ã°ãã£ã³ãã«#
server-statsã¹ããªãŒãã³ã°ãã£ã³ãã«ãåé€ãããŸãã:
- æ©èœ: ãªã¢ã«ã¿ã€ã ãµãŒããŒçµ±èšæ å ±ãé ä¿¡ãã WebSocket ãã£ã³ãã«
- å®è£
ã®å€æŽ:
ChannelsServiceã®ãã£ã³ãã«ã«ãŒãã£ã³ã°ããserverStatsã±ãŒã¹ãåé€ServerModuleãããã€ããŒããServerStatsChannelServiceãåé€
ãã®ãã£ã³ãã«ã¯ã2 ç§ããšã«ãµãŒããŒã¡ããªã¯ã¹ãã¯ã©ã€ã¢ã³ãã«ãããŒããã£ã¹ãããŠããŸããã
ããã¯ãšã³ããµãŒãã¹#
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ããŒããã·ã§ã³ãæã€ããŒã¯ã³ãã¢ããªã±ãŒã·ã§ã³ã¯åœ±é¿ãåããŸãããããã®ããŒããã·ã§ã³ã¯æ©èœããªããªããŸã