This is an automated email from the ASF dual-hosted git repository.

wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git


The following commit(s) were added to refs/heads/main by this push:
     new cf2b970  Add Node.js runtime dashboard panels for 
meter_instance_nodejs_* (#87)
cf2b970 is described below

commit cf2b97032af2ae7637f55eb761603cde449802a2
Author: songzhendong <[email protected]>
AuthorDate: Tue Jun 30 10:18:53 2026 +0800

    Add Node.js runtime dashboard panels for meter_instance_nodejs_* (#87)
---
 CHANGELOG.md                                       |  4 ++
 .../bundled_templates/layers/general.i18n.de.json  | 42 ++++++++++++++
 .../bundled_templates/layers/general.i18n.es.json  | 42 ++++++++++++++
 .../bundled_templates/layers/general.i18n.fr.json  | 42 ++++++++++++++
 .../bundled_templates/layers/general.i18n.ja.json  | 42 ++++++++++++++
 .../bundled_templates/layers/general.i18n.ko.json  | 42 ++++++++++++++
 .../bundled_templates/layers/general.i18n.pt.json  | 42 ++++++++++++++
 .../layers/general.i18n.zh-CN.json                 | 42 ++++++++++++++
 apps/bff/src/bundled_templates/layers/general.json | 66 ++++++++++++++++++++++
 9 files changed, 364 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6c7b6d8..dd8d027 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,10 @@ The version line is shared by every package in the monorepo 
(apps + shared packa
 
 - **Six instance dashboard line widgets for PHP Health Metrics** — process CPU 
utilization, memory used/peak, virtual memory, thread count, and open file 
descriptors (`meter_instance_php_*`). Each line widget uses `visibleWhen` so 
widgets render only when the PHP agent reports PHM data (Linux `/proc` sampling 
of the parent PHP process via `getppid()`).
 
+### General Service — Node.js runtime
+
+- **Six instance dashboard line widgets for Node.js runtime metrics** — 
process CPU, V8 heap used/total/limit, RSS, and external memory 
(`meter_instance_nodejs_*`). Each line widget uses `visibleWhen` so widgets 
render only when the Node.js agent reports runtime data.
+
 ### Profiling
 
 - **Profiling task creation is consistent and tells you upfront what it 
needs.** Across all five task types (Trace / eBPF / Network / pprof / Async) 
the **New Task** button enables as soon as the basic entity is chosen and 
always carries a tooltip, and inside the create box a missing target — no 
profilable processes, or no instances on the service — is shown as a clear 
message next to a disabled **Create** rather than a silently greyed-out button.
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.de.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.de.json
index 12584a0..b6ffaa0 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.de.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.de.json
@@ -135,6 +135,48 @@
           null
         ]
       },
+      {
+        "title": "Prozess-CPU",
+        "tip": "Node.js-Agent: Prozess-CPU (User + System) im Sammelintervall 
(%).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 Heap genutzt",
+        "tip": "Node.js-Agent: Genutzter V8-Heap in MB 
(process.memoryUsage().heapUsed).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 Heap gesamt",
+        "tip": "Node.js-Agent: V8-Heap gesamt in MB 
(process.memoryUsage().heapTotal).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 Heap-Limit",
+        "tip": "Node.js-Agent: Maximale V8-Heapgröße in MB 
(v8.getHeapStatistics().heap_size_limit).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Prozess-RSS",
+        "tip": "Node.js-Agent: Resident-Set-Größe in MB 
(process.memoryUsage().rss).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Externer Speicher",
+        "tip": "Node.js-Agent: An V8 gebundene C++-Objekte in MB 
(process.memoryUsage().external).",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "JVM-CPU",
         "tip": "JVM-CPU, gemeldet vom Agenten. Wird nur angezeigt, wenn die 
Instanz eine JVM ist.",
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.es.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.es.json
index bf68500..84496ff 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.es.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.es.json
@@ -94,6 +94,48 @@
       {
         "title": "Tasa de éxito de instancia de servicio"
       },
+      {
+        "title": "CPU del proceso",
+        "tip": "Agente Node.js: CPU del proceso (user + system) en el 
intervalo de recolección (%).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 usado",
+        "tip": "Agente Node.js: heap V8 usado en MB 
(process.memoryUsage().heapUsed).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 total",
+        "tip": "Agente Node.js: heap V8 total en MB 
(process.memoryUsage().heapTotal).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Límite heap V8",
+        "tip": "Agente Node.js: tamaño máximo del heap V8 en MB 
(v8.getHeapStatistics().heap_size_limit).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "RSS del proceso",
+        "tip": "Agente Node.js: tamaño del conjunto residente en MB 
(process.memoryUsage().rss).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Memoria externa",
+        "tip": "Agente Node.js: objetos C++ vinculados a V8 en MB 
(process.memoryUsage().external).",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "CPU JVM",
         "tip": "CPU JVM según reporta el agente. Solo se muestra cuando la 
instancia es una JVM."
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.fr.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.fr.json
index aa95f0d..dfb6d1e 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.fr.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.fr.json
@@ -77,6 +77,48 @@
       {
         "title": "Taux de succès de l'instance de service"
       },
+      {
+        "title": "CPU processus",
+        "tip": "Agent Node.js : CPU du processus (user + system) sur 
l'intervalle de collecte (%).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 utilisé",
+        "tip": "Agent Node.js : heap V8 utilisé en MB 
(process.memoryUsage().heapUsed).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 total",
+        "tip": "Agent Node.js : heap V8 total en MB 
(process.memoryUsage().heapTotal).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Limite heap V8",
+        "tip": "Agent Node.js : taille max du heap V8 en MB 
(v8.getHeapStatistics().heap_size_limit).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "RSS processus",
+        "tip": "Agent Node.js : taille de l'ensemble resident en MB 
(process.memoryUsage().rss).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Mémoire externe",
+        "tip": "Agent Node.js : objets C++ liés à V8 en MB 
(process.memoryUsage().external).",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "CPU JVM",
         "tip": "CPU JVM tel que remonté par l'agent. Ne s'affiche que lorsque 
l'instance est une JVM."
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.ja.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.ja.json
index a8de4b0..2d5fd25 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.ja.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.ja.json
@@ -77,6 +77,48 @@
       {
         "title": "サービスインスタンス成功率"
       },
+      {
+        "title": "プロセス CPU",
+        "tip": "Node.js エージェント:プロセス CPU(user + system)、収集間隔内(%)。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 ヒープ使用量",
+        "tip": "Node.js エージェント:V8 ヒープ使用量(process.memoryUsage().heapUsed)、MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 ヒープ合計",
+        "tip": "Node.js エージェント:V8 ヒープ合計(process.memoryUsage().heapTotal)、MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 ヒープ上限",
+        "tip": "Node.js エージェント:V8 
最大ヒープサイズ(v8.getHeapStatistics().heap_size_limit)、MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "プロセス RSS",
+        "tip": "Node.js エージェント:常駐メモリセット(process.memoryUsage().rss)、MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "外部メモリ",
+        "tip": "Node.js エージェント:V8 にバインドされた C++ 
オブジェクト(process.memoryUsage().external)、MB。",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "JVM CPU",
         "tip": "エージェントが報告する JVM CPU。インスタンスが JVM の場合のみ描画。"
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.ko.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.ko.json
index 2c39a8f..9830dbb 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.ko.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.ko.json
@@ -77,6 +77,48 @@
       {
         "title": "서비스 인스턴스 성공률"
       },
+      {
+        "title": "프로세스 CPU",
+        "tip": "Node.js 에이전트: 프로세스 CPU(user + system), 수집 간격 기준 (%).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 힙 사용량",
+        "tip": "Node.js 에이전트: V8 힙 사용량(process.memoryUsage().heapUsed), MB.",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 힙 총량",
+        "tip": "Node.js 에이전트: V8 힙 총량(process.memoryUsage().heapTotal), MB.",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 힙 한도",
+        "tip": "Node.js 에이전트: V8 최대 힙 
크기(v8.getHeapStatistics().heap_size_limit), MB.",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "프로세스 RSS",
+        "tip": "Node.js 에이전트: 상주 메모리 집합(process.memoryUsage().rss), MB.",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "외부 메모리",
+        "tip": "Node.js 에이전트: V8에 바인딩된 C++ 객체(process.memoryUsage().external), 
MB.",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "JVM CPU",
         "tip": "에이전트가 보고하는 JVM CPU입니다. 인스턴스가 JVM일 때만 표시됩니다."
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.pt.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.pt.json
index deaf6dd..ee63cf0 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.pt.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.pt.json
@@ -83,6 +83,48 @@
       {
         "title": "Taxa de sucesso da instância de serviço"
       },
+      {
+        "title": "CPU do processo",
+        "tip": "Agente Node.js: CPU do processo (user + system) no intervalo 
de coleta (%).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 usado",
+        "tip": "Agente Node.js: heap V8 usado em MB 
(process.memoryUsage().heapUsed).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Heap V8 total",
+        "tip": "Agente Node.js: heap V8 total em MB 
(process.memoryUsage().heapTotal).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Limite heap V8",
+        "tip": "Agente Node.js: tamanho máximo do heap V8 em MB 
(v8.getHeapStatistics().heap_size_limit).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "RSS do processo",
+        "tip": "Agente Node.js: tamanho do conjunto residente em MB 
(process.memoryUsage().rss).",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "Memória externa",
+        "tip": "Agente Node.js: objetos C++ vinculados ao V8 em MB 
(process.memoryUsage().external).",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "CPU da JVM",
         "tip": "CPU da JVM conforme reportado pelo agente. Só aparece quando a 
instância é uma JVM."
diff --git a/apps/bff/src/bundled_templates/layers/general.i18n.zh-CN.json 
b/apps/bff/src/bundled_templates/layers/general.i18n.zh-CN.json
index bcac4af..0393ff3 100644
--- a/apps/bff/src/bundled_templates/layers/general.i18n.zh-CN.json
+++ b/apps/bff/src/bundled_templates/layers/general.i18n.zh-CN.json
@@ -48,6 +48,48 @@
       { "title": "服务实例负载", "tip": "针对所选实例每分钟的调用次数。" },
       { "title": "服务实例延迟" },
       { "title": "服务实例成功率" },
+      {
+        "title": "进程 CPU",
+        "tip": "Node.js agent:进程 CPU(用户态 + 内核态),按采集间隔统计(%)。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 堆已用",
+        "tip": "Node.js agent:V8 堆已用内存(process.memoryUsage().heapUsed),单位 MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 堆总量",
+        "tip": "Node.js agent:V8 堆已分配总量(process.memoryUsage().heapTotal),单位 
MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "V8 堆上限",
+        "tip": "Node.js agent:V8 
最大堆大小(v8.getHeapStatistics().heap_size_limit),单位 MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "进程 RSS",
+        "tip": "Node.js agent:常驻内存集(process.memoryUsage().rss),单位 MB。",
+        "expressions": [
+          null
+        ]
+      },
+      {
+        "title": "外部内存",
+        "tip": "Node.js agent:绑定到 V8 的 C++ 
对象(process.memoryUsage().external),单位 MB。",
+        "expressions": [
+          null
+        ]
+      },
       {
         "title": "JVM CPU",
         "tip": "由 agent 上报的 JVM CPU。仅当实例为 JVM 时显示。"
diff --git a/apps/bff/src/bundled_templates/layers/general.json 
b/apps/bff/src/bundled_templates/layers/general.json
index f1dfabe..698af60 100644
--- a/apps/bff/src/bundled_templates/layers/general.json
+++ b/apps/bff/src/bundled_templates/layers/general.json
@@ -181,6 +181,72 @@
         "span": 4,
         "rowSpan": 2
       },
+      {
+        "id": "nodejs_process_cpu",
+        "title": "Process CPU",
+        "tip": "Node.js agent: process CPU (user + system) over the collect 
interval (%).",
+        "type": "line",
+        "unit": "%",
+        "expressions": ["meter_instance_nodejs_process_cpu"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_process_cpu", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
+      {
+        "id": "nodejs_heap_used",
+        "title": "V8 Heap Used",
+        "tip": "Node.js agent: V8 heap used in MB 
(process.memoryUsage().heapUsed).",
+        "type": "line",
+        "unit": "MB",
+        "expressions": ["meter_instance_nodejs_heap_used/1048576"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_heap_used", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
+      {
+        "id": "nodejs_heap_total",
+        "title": "V8 Heap Total",
+        "tip": "Node.js agent: V8 heap total allocated in MB 
(process.memoryUsage().heapTotal).",
+        "type": "line",
+        "unit": "MB",
+        "expressions": ["meter_instance_nodejs_heap_total/1048576"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_heap_total", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
+      {
+        "id": "nodejs_heap_limit",
+        "title": "V8 Heap Limit",
+        "tip": "Node.js agent: V8 max heap size in MB 
(v8.getHeapStatistics().heap_size_limit).",
+        "type": "line",
+        "unit": "MB",
+        "expressions": ["meter_instance_nodejs_heap_limit/1048576"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_heap_limit", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
+      {
+        "id": "nodejs_rss",
+        "title": "Process RSS",
+        "tip": "Node.js agent: resident set size in MB 
(process.memoryUsage().rss).",
+        "type": "line",
+        "unit": "MB",
+        "expressions": ["meter_instance_nodejs_rss/1048576"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_rss", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
+      {
+        "id": "nodejs_external_memory",
+        "title": "External Memory",
+        "tip": "Node.js agent: C++ objects bound to V8 in MB 
(process.memoryUsage().external).",
+        "type": "line",
+        "unit": "MB",
+        "expressions": ["meter_instance_nodejs_external_memory/1048576"],
+        "visibleWhen": { "kind": "mqe", "expression": 
"meter_instance_nodejs_external_memory", "op": "exists" },
+        "span": 3,
+        "rowSpan": 2
+      },
       {
         "id": "jvm_cpu",
         "title": "JVM CPU",

Reply via email to