@zhin.js/process-monitor 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +13 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +169 -0
- package/lib/index.js.map +1 -0
- package/package.json +6 -5
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const plugin: import("zhin.js").Plugin;
|
|
2
|
+
interface ProcessState {
|
|
3
|
+
lastPid?: number;
|
|
4
|
+
lastStartTime?: number;
|
|
5
|
+
restartCount: number;
|
|
6
|
+
crashCount: number;
|
|
7
|
+
totalUptime: number;
|
|
8
|
+
}
|
|
9
|
+
export declare let processState: ProcessState;
|
|
10
|
+
export declare const startTime: number;
|
|
11
|
+
export declare function formatUptime(ms: number): string;
|
|
12
|
+
export default plugin;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,0BAAc,CAAC;AAsC3B,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,IAAI,YAAY,EAAE,YAIxB,CAAC;AAEF,eAAO,MAAM,SAAS,QAAa,CAAC;AA2GpC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAU/C;AAwCD,eAAe,MAAM,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zhin.js/process-monitor
|
|
3
|
+
*
|
|
4
|
+
* 进程监控与重启通知插件
|
|
5
|
+
*/
|
|
6
|
+
import { formatCompact, usePlugin } from 'zhin.js';
|
|
7
|
+
import os from 'os';
|
|
8
|
+
import fs from 'fs';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
const plugin = usePlugin();
|
|
11
|
+
const { logger, root } = plugin;
|
|
12
|
+
const configService = root.inject('config');
|
|
13
|
+
const appConfig = configService?.getPrimary() || {};
|
|
14
|
+
const config = {
|
|
15
|
+
enabled: true,
|
|
16
|
+
notifyChannels: [],
|
|
17
|
+
notifyOnStart: true,
|
|
18
|
+
notifyOnRestart: true,
|
|
19
|
+
notifyOnCrash: true,
|
|
20
|
+
...appConfig['process-monitor'],
|
|
21
|
+
};
|
|
22
|
+
if (!config.enabled) {
|
|
23
|
+
logger.info(formatCompact({ op: 'load', enabled: false }));
|
|
24
|
+
}
|
|
25
|
+
// ─── 状态管理 ────────────────────────────────────────────────────────────────
|
|
26
|
+
const STATE_FILE = path.join(process.cwd(), 'data', 'process-state.json');
|
|
27
|
+
export let processState = {
|
|
28
|
+
restartCount: 0,
|
|
29
|
+
crashCount: 0,
|
|
30
|
+
totalUptime: 0,
|
|
31
|
+
};
|
|
32
|
+
export const startTime = Date.now();
|
|
33
|
+
function loadProcessState() {
|
|
34
|
+
try {
|
|
35
|
+
if (fs.existsSync(STATE_FILE)) {
|
|
36
|
+
const data = fs.readFileSync(STATE_FILE, 'utf-8');
|
|
37
|
+
processState = JSON.parse(data);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
logger.warn(formatCompact({ op: 'load_state', ok: false, error: String(error) }));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function saveProcessState() {
|
|
45
|
+
try {
|
|
46
|
+
fs.mkdirSync(path.dirname(STATE_FILE), { recursive: true });
|
|
47
|
+
fs.writeFileSync(STATE_FILE, JSON.stringify(processState, null, 2));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
logger.warn(formatCompact({ op: 'save_state', ok: false, error: String(error) }));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// ─── 启动检测 ────────────────────────────────────────────────────────────────
|
|
54
|
+
async function detectStartupReason() {
|
|
55
|
+
const currentPid = process.pid;
|
|
56
|
+
const currentTime = Date.now();
|
|
57
|
+
let reason = 'start';
|
|
58
|
+
let uptime;
|
|
59
|
+
if (processState.lastPid && processState.lastStartTime) {
|
|
60
|
+
const timeSinceLastStart = currentTime - processState.lastStartTime;
|
|
61
|
+
if (timeSinceLastStart < 5 * 60 * 1000) {
|
|
62
|
+
reason = 'crash';
|
|
63
|
+
processState.crashCount++;
|
|
64
|
+
logger.warn(formatCompact({ op: 'restart', abnormal: true, since_last_s: Math.floor(timeSinceLastStart / 1000) }));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
reason = 'restart';
|
|
68
|
+
processState.restartCount++;
|
|
69
|
+
logger.info(formatCompact({ op: 'restart', abnormal: false }));
|
|
70
|
+
}
|
|
71
|
+
uptime = timeSinceLastStart;
|
|
72
|
+
processState.totalUptime += uptime;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
logger.info(formatCompact({ first: true }));
|
|
76
|
+
}
|
|
77
|
+
processState.lastPid = currentPid;
|
|
78
|
+
processState.lastStartTime = currentTime;
|
|
79
|
+
saveProcessState();
|
|
80
|
+
const record = {
|
|
81
|
+
timestamp: new Date(),
|
|
82
|
+
reason,
|
|
83
|
+
uptime,
|
|
84
|
+
pid: currentPid,
|
|
85
|
+
hostname: os.hostname(),
|
|
86
|
+
platform: `${os.platform()}-${os.arch()}`,
|
|
87
|
+
nodeVersion: process.version,
|
|
88
|
+
memory: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
|
|
89
|
+
};
|
|
90
|
+
const shouldNotify = (reason === 'start' && config.notifyOnStart) ||
|
|
91
|
+
(reason === 'restart' && config.notifyOnRestart) ||
|
|
92
|
+
(reason === 'crash' && config.notifyOnCrash);
|
|
93
|
+
if (shouldNotify && config.notifyChannels && config.notifyChannels.length > 0) {
|
|
94
|
+
await sendNotification(record);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ─── 通知 ────────────────────────────────────────────────────────────────────
|
|
98
|
+
function formatNotificationMessage(record) {
|
|
99
|
+
const emoji = { start: '🚀', restart: '🔄', crash: '💥' }[record.reason] || '📊';
|
|
100
|
+
const reasonText = { start: '首次启动', restart: '正常重启', crash: '异常崩溃' }[record.reason] || '未知';
|
|
101
|
+
const lines = [
|
|
102
|
+
`${emoji} 【进程监控通知】`,
|
|
103
|
+
'',
|
|
104
|
+
`📊 事件: ${reasonText}`,
|
|
105
|
+
`⏰ 时间: ${record.timestamp.toLocaleString('zh-CN')}`,
|
|
106
|
+
`🖥️ 主机: ${record.hostname}`,
|
|
107
|
+
`🔢 PID: ${record.pid}`,
|
|
108
|
+
`💻 平台: ${record.platform}`,
|
|
109
|
+
`📦 Node: ${record.nodeVersion}`,
|
|
110
|
+
];
|
|
111
|
+
if (record.uptime) {
|
|
112
|
+
lines.push(`⏱️ 运行时长: ${formatUptime(record.uptime)}`);
|
|
113
|
+
}
|
|
114
|
+
if (record.memory) {
|
|
115
|
+
lines.push(`💾 内存: ${record.memory} MB`);
|
|
116
|
+
}
|
|
117
|
+
lines.push('', `📈 统计:`);
|
|
118
|
+
lines.push(` • 总重启: ${processState.restartCount} 次`);
|
|
119
|
+
lines.push(` • 崩溃: ${processState.crashCount} 次`);
|
|
120
|
+
lines.push(` • 累计运行: ${formatUptime(processState.totalUptime)}`);
|
|
121
|
+
return lines.join('\n');
|
|
122
|
+
}
|
|
123
|
+
export function formatUptime(ms) {
|
|
124
|
+
const seconds = Math.floor(ms / 1000);
|
|
125
|
+
const minutes = Math.floor(seconds / 60);
|
|
126
|
+
const hours = Math.floor(minutes / 60);
|
|
127
|
+
const days = Math.floor(hours / 24);
|
|
128
|
+
if (days > 0)
|
|
129
|
+
return `${days}天${hours % 24}小时`;
|
|
130
|
+
if (hours > 0)
|
|
131
|
+
return `${hours}小时${minutes % 60}分钟`;
|
|
132
|
+
if (minutes > 0)
|
|
133
|
+
return `${minutes}分钟`;
|
|
134
|
+
return `${seconds}秒`;
|
|
135
|
+
}
|
|
136
|
+
async function sendNotification(record) {
|
|
137
|
+
const message = formatNotificationMessage(record);
|
|
138
|
+
for (const channel of config.notifyChannels || []) {
|
|
139
|
+
try {
|
|
140
|
+
if (channel.type === 'webhook') {
|
|
141
|
+
await fetch(channel.target, {
|
|
142
|
+
method: 'POST',
|
|
143
|
+
headers: { 'Content-Type': 'application/json' },
|
|
144
|
+
body: JSON.stringify({ event: 'process_restart', data: record, stats: processState }),
|
|
145
|
+
});
|
|
146
|
+
logger.debug(`Webhook 通知已发送: ${channel.target}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
logger.error(`发送通知失败 (${channel.type}):`, error);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ─── 初始化 ──────────────────────────────────────────────────────────────────
|
|
155
|
+
if (config.enabled) {
|
|
156
|
+
loadProcessState();
|
|
157
|
+
detectStartupReason();
|
|
158
|
+
process.on('SIGTERM', () => {
|
|
159
|
+
logger.info(formatCompact({ op: 'shutdown', signal: 'SIGTERM' }));
|
|
160
|
+
saveProcessState();
|
|
161
|
+
});
|
|
162
|
+
process.on('SIGINT', () => {
|
|
163
|
+
logger.info(formatCompact({ op: 'shutdown', signal: 'SIGINT' }));
|
|
164
|
+
saveProcessState();
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// AI 工具已迁移到 tools/*.tool.md,框架自动发现注册
|
|
168
|
+
export default plugin;
|
|
169
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/process-monitor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "进程监控与重启通知插件",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -39,14 +39,15 @@
|
|
|
39
39
|
"directory": "plugins/features/process-monitor"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"zhin.js": "
|
|
42
|
+
"zhin.js": "3.0.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@types/node": "^25.9.
|
|
46
|
-
"typescript": "^6.0.3"
|
|
45
|
+
"@types/node": "^25.9.2",
|
|
46
|
+
"typescript": "^6.0.3",
|
|
47
|
+
"zhin.js": "3.0.0"
|
|
47
48
|
},
|
|
48
49
|
"peerDependencies": {
|
|
49
|
-
"zhin.js": "
|
|
50
|
+
"zhin.js": "3.0.0"
|
|
50
51
|
},
|
|
51
52
|
"scripts": {
|
|
52
53
|
"build": "tsc",
|