@devskeo/ward-agent 1.0.0 → 1.0.2

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/README.md ADDED
@@ -0,0 +1,181 @@
1
+ # @devskeo/ward-agent
2
+
3
+ [Ward](https://github.com/addios4u/ward) 서버 모니터링 시스템의 에이전트 패키지입니다.
4
+
5
+ 모니터링 대상 서버에 설치하면 CPU, 메모리, 디스크, 네트워크 등 시스템 메트릭을 수집하고, 애플리케이션 로그를 Ward 서버로 실시간 전송합니다.
6
+
7
+ <a href="https://www.buymeacoffee.com/addios4u" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="36"></a>
8
+
9
+ ![Ward 대시보드](https://raw.githubusercontent.com/addios4u/ward/main/screenshots/01.png)
10
+
11
+ ## 아키텍처
12
+
13
+ ```
14
+ [ward-agent] ──메트릭/로그──▶ [Ward 서버] ◀──WebSocket──▶ [웹 대시보드]
15
+ (이 패키지) (중앙 서버) (브라우저)
16
+ ```
17
+
18
+ 에이전트는 각 모니터링 대상 서버에 설치하고, Ward 서버는 별도 서버에서 Docker로 운영합니다.
19
+
20
+ ## 설치
21
+
22
+ ```bash
23
+ npm install -g @devskeo/ward-agent
24
+ ```
25
+
26
+ ## 빠른 시작
27
+
28
+ ```bash
29
+ # Ward 서버에 연결하고 에이전트 시작
30
+ ward start http://your-ward-server:4000
31
+
32
+ # 상태 확인
33
+ ward status
34
+
35
+ # 중지
36
+ ward stop
37
+ ```
38
+
39
+ 에이전트를 시작하면 Ward 대시보드 서버 목록에 자동으로 등록됩니다.
40
+
41
+ ## 명령어
42
+
43
+ ### `ward start <서버URL>`
44
+
45
+ 에이전트를 백그라운드 데몬으로 시작합니다.
46
+
47
+ ```bash
48
+ ward start http://192.168.1.100:4000
49
+
50
+ # 서버 그룹명 지정
51
+ ward start http://192.168.1.100:4000 --name production
52
+ ```
53
+
54
+ | 옵션 | 설명 |
55
+ |------|------|
56
+ | `--name <그룹명>` | 서버 그룹명 (대시보드에서 서버를 그룹으로 묶어 표시) |
57
+
58
+ Linux 환경에서는 시작 시 systemd 서비스로 자동 등록되어 서버 재부팅 후에도 자동 실행됩니다.
59
+
60
+ ---
61
+
62
+ ### `ward stop`
63
+
64
+ 실행 중인 에이전트를 중지합니다.
65
+
66
+ ```bash
67
+ ward stop
68
+ ```
69
+
70
+ ---
71
+
72
+ ### `ward status`
73
+
74
+ 에이전트 실행 상태를 확인합니다.
75
+
76
+ ```bash
77
+ ward status
78
+ ```
79
+
80
+ ```
81
+ 에이전트 상태: 실행 중
82
+ PID: 12345
83
+ 서버: http://192.168.1.100:4000
84
+ 메트릭 수집 주기: 30초
85
+ ```
86
+
87
+ ---
88
+
89
+ ### `ward config show`
90
+
91
+ 현재 에이전트 설정을 출력합니다.
92
+
93
+ ```bash
94
+ ward config show
95
+ ```
96
+
97
+ ---
98
+
99
+ ### `ward service add <이름>`
100
+
101
+ 로그를 수집할 서비스를 등록합니다.
102
+
103
+ ```bash
104
+ # 프로세스 실행 및 stdout/stderr 수집
105
+ ward service add my-api --exec "node /app/index.js"
106
+
107
+ # 로그 파일 감시
108
+ ward service add nginx --log /var/log/nginx/access.log
109
+
110
+ # 여러 로그 파일 감시
111
+ ward service add nginx --log /var/log/nginx/access.log --log /var/log/nginx/error.log
112
+
113
+ # systemd 유닛 로그 수집
114
+ ward service add nginx --journal nginx.service
115
+
116
+ # Docker 컨테이너 로그 수집
117
+ ward service add my-container --docker my-container-name
118
+ ```
119
+
120
+ | 옵션 | 설명 |
121
+ |------|------|
122
+ | `--exec <명령어>` | 명령어를 실행하고 stdout/stderr 수집 (자동 재시작) |
123
+ | `--log <경로>` | 로그 파일 tail 감시 |
124
+ | `--journal <유닛>` | systemd journalctl 로그 수집 |
125
+ | `--docker <컨테이너>` | Docker 컨테이너 로그 수집 |
126
+
127
+ ---
128
+
129
+ ### `ward service remove <이름>`
130
+
131
+ 등록된 서비스를 제거합니다.
132
+
133
+ ```bash
134
+ ward service remove my-api
135
+ ```
136
+
137
+ ---
138
+
139
+ ### `ward service list`
140
+
141
+ 등록된 서비스 목록을 출력합니다.
142
+
143
+ ```bash
144
+ ward service list
145
+ ```
146
+
147
+ ```
148
+ 등록된 서비스 목록:
149
+ ────────────────────────────────────────────────────────────
150
+ my-api [exec] node /app/index.js
151
+ nginx [file] /var/log/nginx/access.log
152
+ ────────────────────────────────────────────────────────────
153
+ ```
154
+
155
+ ## 로그 수집 방식
156
+
157
+ | 방식 | 옵션 | 설명 |
158
+ |------|------|------|
159
+ | `exec` | `--exec` | 명령어 실행 후 stdout/stderr 수집. 프로세스 종료 시 자동 재시작 |
160
+ | `file` | `--log` | 로그 파일 tail. 로테이션 자동 감지 |
161
+ | `journal` | `--journal` | systemd journalctl 스트리밍 |
162
+ | `docker` | `--docker` | Docker 컨테이너 로그 스트리밍 |
163
+
164
+ ## Ward 서버 설치
165
+
166
+ Ward 서버는 Docker Compose로 간단하게 설치할 수 있습니다.
167
+
168
+ ```bash
169
+ git clone https://github.com/addios4u/ward.git
170
+ cd ward
171
+ cp .env.sample .env
172
+ # .env 파일에서 비밀번호와 설정을 변경하세요
173
+ pnpm docker:start
174
+ pnpm start
175
+ ```
176
+
177
+ → [Ward GitHub](https://github.com/addios4u/ward) | [상세 설치 가이드](https://github.com/addios4u/ward#빠른-시작)
178
+
179
+ ## 라이선스
180
+
181
+ [MIT](https://github.com/addios4u/ward/blob/main/LICENSE)
@@ -4,6 +4,7 @@ export declare function serviceAdd(name: string, options: {
4
4
  cwd?: string;
5
5
  journal?: string;
6
6
  docker?: string;
7
+ maxMem?: string;
7
8
  }): Promise<void>;
8
9
  export declare function serviceRemove(name: string): Promise<void>;
9
10
  export declare function serviceList(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"AAoCA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAGD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC/D;AAGD,wBAAgB,WAAW,IAAI,IAAI,CAmBlC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"AA6CA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAGD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC/D;AAGD,wBAAgB,WAAW,IAAI,IAAI,CAmBlC"}
@@ -32,11 +32,21 @@ function getConfig() {
32
32
  };
33
33
  }
34
34
  // ward service add <name> [옵션들]
35
+ function parseMemSize(value) {
36
+ const match = value.trim().match(/^(\d+(?:\.\d+)?)\s*([KMGkmg]?)B?$/);
37
+ if (!match)
38
+ throw new Error(`메모리 크기 형식 오류: "${value}" (예: 500M, 1G, 512K)`);
39
+ const num = parseFloat(match[1]);
40
+ const unit = match[2].toUpperCase();
41
+ const multiplier = { '': 1, K: 1024, M: 1024 ** 2, G: 1024 ** 3 };
42
+ return Math.floor(num * multiplier[unit]);
43
+ }
35
44
  async function serviceAdd(name, options) {
36
45
  const config = getConfig();
37
46
  let service;
38
47
  if (options.exec) {
39
- service = { name, method: 'exec', command: options.exec, restartDelay: 3000 };
48
+ const maxMemBytes = options.maxMem ? parseMemSize(options.maxMem) : undefined;
49
+ service = { name, method: 'exec', command: options.exec, restartDelay: 3000, ...(maxMemBytes ? { maxMemBytes } : {}) };
40
50
  }
41
51
  else if (options.journal) {
42
52
  service = { name, method: 'journal', unit: options.journal };
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -68,6 +68,7 @@ serviceCmd
68
68
  .option('--cwd <dir>', '명령어 실행 디렉토리 (--exec와 함께 사용)')
69
69
  .option('--journal <unit>', 'systemd 유닛 이름 (예: nginx.service)')
70
70
  .option('--docker <container>', '도커 컨테이너 이름')
71
+ .option('--max-mem <size>', '메모리 초과 시 자동 재시작 임계값 (예: 500M, 1G, --exec와 함께 사용)')
71
72
  .action(async (name, options) => {
72
73
  await (0, service_js_1.serviceAdd)(name, options);
73
74
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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": "@devskeo/ward-agent",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "license": "MIT",
5
5
  "description": "Ward 서버 모니터링 에이전트",
6
6
  "main": "dist/index.js",