@cvtoolman/huawei-lts-cli 1.0.1 → 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 +261 -194
- package/dist/cli/commands/query.js +7 -1
- package/dist/lts/client.js +6 -1
- package/package.json +55 -55
package/README.md
CHANGED
|
@@ -1,194 +1,261 @@
|
|
|
1
|
-
# huawei-lts-cli — CLI + SKILL
|
|
2
|
-
|
|
3
|
-
**简体中文** | [English](README_en.md)
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@cvtoolman/huawei-lts-cli)
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
|
|
8
|
-
> 让你的 AI 编程助手(Claude Code、Cursor、Copilot、Qoder 等)通过自然语言查询华为云日志服务(LTS)。
|
|
9
|
-
|
|
10
|
-
**一个工具,两部分:**
|
|
11
|
-
|
|
12
|
-
| 部分 | 作用 |
|
|
13
|
-
|---|---|
|
|
14
|
-
| **CLI** (`lts-cli`) | 轻量命令行工具,对接华为云 LTS API |
|
|
15
|
-
| **SKILL** (`SKILL.md`) | 一份给 AI 看的"说明书",教它如何把自然语言转成 CLI 命令 |
|
|
16
|
-
|
|
17
|
-
AI 读完 skill 后,你只需说一句"查下今天的 ERROR 日志",AI 就能自动拼出正确的 `lts-cli` 命令并执行。不用记参数,不用手写 ISO 8601 时间格式。
|
|
18
|
-
|
|
19
|
-
## 为什么用 CLI + SKILL 而不是 MCP?
|
|
20
|
-
|
|
21
|
-
AI 编程助手的上下文窗口很宝贵——一边要装代码库、一边要推理、一边还要跑工具。**省 token 就是省时省钱。**
|
|
22
|
-
|
|
23
|
-
| | CLI + SKILL | MCP |
|
|
24
|
-
|---|---|---|
|
|
25
|
-
| **上下文开销** | **低** — skill 就一个短 markdown 文件,CLI 输出是纯文本 | **高** — 工具 schema + 快照数据常驻上下文 |
|
|
26
|
-
| **AI 使用方式** | 执行 shell 命令,读取结果 | 通过协议调用结构化工具 |
|
|
27
|
-
| **配置难度** | `npm install -g`、一个 skill 文件 | 服务进程、配置连线 |
|
|
28
|
-
| **适用场景** | 编码过程中顺手查日志 | 长时间运行的自动化循环 |
|
|
29
|
-
|
|
30
|
-
> **一句话:** 如果你想让 AI 在写代码时顺嘴帮你查日志——CLI + SKILL 是更轻、更省钱的方案。
|
|
31
|
-
|
|
32
|
-
## 快速开始
|
|
33
|
-
|
|
34
|
-
### 1. 安装 CLI
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npm install -g @cvtoolman/huawei-lts-cli
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 2. 配置凭证
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
lts-cli init
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
向导会依次询问 AK、SK、Project ID、Region,一次配好。配置存储在 `~/.lts-cli/config.json`。
|
|
47
|
-
|
|
48
|
-
### 3. 安装 Skill(给 AI 工具用)
|
|
49
|
-
|
|
50
|
-
**Claude Code:**
|
|
51
|
-
```bash
|
|
52
|
-
mkdir -p .claude/skills/huawei-lts-log-query
|
|
53
|
-
curl -o .claude/skills/huawei-lts-log-query/SKILL.md \
|
|
54
|
-
https://raw.githubusercontent.com/jcxy/huawei-lts-cli/main/skills/huawei-lts-log-query/SKILL.md
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**Qoder:**
|
|
58
|
-
```bash
|
|
59
|
-
mkdir -p .qoder/skills/huawei-lts-log-query
|
|
60
|
-
curl -o .qoder/skills/huawei-lts-log-query/SKILL.md \
|
|
61
|
-
https://raw.githubusercontent.com/jcxy/huawei-lts-cli/main/skills/huawei-lts-log-query/SKILL.md
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**手动安装(任意 AI 工具):** 将 [skills/huawei-lts-log-query/SKILL.md](skills/huawei-lts-log-query/SKILL.md) 复制到对应 AI 工具的 skills 目录下(`.claude/skills/`、`.qoder/skills/`、`.cursor/skills/` 等)。
|
|
65
|
-
|
|
66
|
-
### 4. 命令行直接使用(不依赖 AI)
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
# 基础查询
|
|
70
|
-
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
|
|
71
|
-
|
|
72
|
-
#
|
|
73
|
-
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -k "ERROR"
|
|
74
|
-
|
|
75
|
-
#
|
|
76
|
-
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
lts-cli query
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
--
|
|
106
|
-
--
|
|
107
|
-
--
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
1
|
+
# huawei-lts-cli — CLI + SKILL
|
|
2
|
+
|
|
3
|
+
**简体中文** | [English](README_en.md)
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@cvtoolman/huawei-lts-cli)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
> 让你的 AI 编程助手(Claude Code、Cursor、Copilot、Qoder 等)通过自然语言查询华为云日志服务(LTS)。
|
|
9
|
+
|
|
10
|
+
**一个工具,两部分:**
|
|
11
|
+
|
|
12
|
+
| 部分 | 作用 |
|
|
13
|
+
|---|---|
|
|
14
|
+
| **CLI** (`lts-cli`) | 轻量命令行工具,对接华为云 LTS API |
|
|
15
|
+
| **SKILL** (`SKILL.md`) | 一份给 AI 看的"说明书",教它如何把自然语言转成 CLI 命令 |
|
|
16
|
+
|
|
17
|
+
AI 读完 skill 后,你只需说一句"查下今天的 ERROR 日志",AI 就能自动拼出正确的 `lts-cli` 命令并执行。不用记参数,不用手写 ISO 8601 时间格式。
|
|
18
|
+
|
|
19
|
+
## 为什么用 CLI + SKILL 而不是 MCP?
|
|
20
|
+
|
|
21
|
+
AI 编程助手的上下文窗口很宝贵——一边要装代码库、一边要推理、一边还要跑工具。**省 token 就是省时省钱。**
|
|
22
|
+
|
|
23
|
+
| | CLI + SKILL | MCP |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| **上下文开销** | **低** — skill 就一个短 markdown 文件,CLI 输出是纯文本 | **高** — 工具 schema + 快照数据常驻上下文 |
|
|
26
|
+
| **AI 使用方式** | 执行 shell 命令,读取结果 | 通过协议调用结构化工具 |
|
|
27
|
+
| **配置难度** | `npm install -g`、一个 skill 文件 | 服务进程、配置连线 |
|
|
28
|
+
| **适用场景** | 编码过程中顺手查日志 | 长时间运行的自动化循环 |
|
|
29
|
+
|
|
30
|
+
> **一句话:** 如果你想让 AI 在写代码时顺嘴帮你查日志——CLI + SKILL 是更轻、更省钱的方案。
|
|
31
|
+
|
|
32
|
+
## 快速开始
|
|
33
|
+
|
|
34
|
+
### 1. 安装 CLI
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g @cvtoolman/huawei-lts-cli
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 2. 配置凭证
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
lts-cli init
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
向导会依次询问 AK、SK、Project ID、Region,一次配好。配置存储在 `~/.lts-cli/config.json`。
|
|
47
|
+
|
|
48
|
+
### 3. 安装 Skill(给 AI 工具用)
|
|
49
|
+
|
|
50
|
+
**Claude Code:**
|
|
51
|
+
```bash
|
|
52
|
+
mkdir -p .claude/skills/huawei-lts-log-query
|
|
53
|
+
curl -o .claude/skills/huawei-lts-log-query/SKILL.md \
|
|
54
|
+
https://raw.githubusercontent.com/jcxy/huawei-lts-cli/main/skills/huawei-lts-log-query/SKILL.md
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Qoder:**
|
|
58
|
+
```bash
|
|
59
|
+
mkdir -p .qoder/skills/huawei-lts-log-query
|
|
60
|
+
curl -o .qoder/skills/huawei-lts-log-query/SKILL.md \
|
|
61
|
+
https://raw.githubusercontent.com/jcxy/huawei-lts-cli/main/skills/huawei-lts-log-query/SKILL.md
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**手动安装(任意 AI 工具):** 将 [skills/huawei-lts-log-query/SKILL.md](skills/huawei-lts-log-query/SKILL.md) 复制到对应 AI 工具的 skills 目录下(`.claude/skills/`、`.qoder/skills/`、`.cursor/skills/` 等)。
|
|
65
|
+
|
|
66
|
+
### 4. 命令行直接使用(不依赖 AI)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# 基础查询
|
|
70
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
|
|
71
|
+
|
|
72
|
+
# 简单关键词搜索(旧版,向后兼容)
|
|
73
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -k "ERROR"
|
|
74
|
+
|
|
75
|
+
# 高级查询:多字段组合(推荐)
|
|
76
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
77
|
+
-q "content:error AND appName:myapp"
|
|
78
|
+
|
|
79
|
+
# 复杂逻辑查询
|
|
80
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
81
|
+
-q "(level:ERROR OR level:WARN) NOT env:test"
|
|
82
|
+
|
|
83
|
+
# SQL 分析查询
|
|
84
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
85
|
+
-q "SELECT count(*) as cnt, level FROM log GROUP BY level" \
|
|
86
|
+
-f json
|
|
87
|
+
|
|
88
|
+
# JSON 格式输出,管道给 jq 处理
|
|
89
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -f json | jq .
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> 💡 **提示**:使用 `-q` 参数可实现与 LTS 控制台相同的多条件组合查询功能。详见 [查询语法速查表](skills/huawei-lts-log-query/references/cheatsheet.md) 和 [高级查询指南](skills/huawei-lts-log-query/references/advanced-query-guide.md)。
|
|
93
|
+
|
|
94
|
+
## 命令参考
|
|
95
|
+
|
|
96
|
+
### `lts-cli query` — 查询日志
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
lts-cli query [选项]
|
|
100
|
+
|
|
101
|
+
选项:
|
|
102
|
+
-g, --group-id <groupId> 日志组 ID(可在配置中预设)
|
|
103
|
+
-s, --stream-id <streamId> 日志流 ID(可在配置中预设)
|
|
104
|
+
--start-time, --st <time> 开始时间,ISO 8601 格式(必填)
|
|
105
|
+
--end-time, --et <time> 结束时间,ISO 8601 格式(必填)
|
|
106
|
+
-k, --keyword <keyword> 简单关键词搜索(旧版,不推荐)
|
|
107
|
+
-q, --query <query> 高级查询表达式(推荐):
|
|
108
|
+
- 字段查询: content:error AND appName:myapp
|
|
109
|
+
- 比较运算: time>60 AND region:r
|
|
110
|
+
- SQL语法: SELECT * FROM log WHERE ...
|
|
111
|
+
- 逻辑运算符: AND, OR, NOT(需空格分隔)
|
|
112
|
+
-l, --limit <limit> 每页条数(默认: 100)
|
|
113
|
+
-o, --offset <offset> 分页偏移量(默认: 0)
|
|
114
|
+
-r, --reverse 按时间倒序
|
|
115
|
+
-f, --format <format> 输出格式: pretty、json、table(默认: pretty)
|
|
116
|
+
--no-paginate 关闭自动翻页
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### 高级查询语法示例
|
|
120
|
+
|
|
121
|
+
**字段查询:**
|
|
122
|
+
```bash
|
|
123
|
+
# 单字段匹配
|
|
124
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
125
|
+
-q "content:error"
|
|
126
|
+
|
|
127
|
+
# 多字段组合(且关系)
|
|
128
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
129
|
+
-q "content:error AND appName:myapp AND node:server1"
|
|
130
|
+
|
|
131
|
+
# 多字段组合(或关系)
|
|
132
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
133
|
+
-q "level:ERROR OR level:WARN"
|
|
134
|
+
|
|
135
|
+
# 排除条件
|
|
136
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
137
|
+
-q "level:DEBUG NOT module:test"
|
|
138
|
+
|
|
139
|
+
# 数值比较
|
|
140
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
141
|
+
-q "response_time>1000 AND status_code!=200"
|
|
142
|
+
|
|
143
|
+
# 复杂组合
|
|
144
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
145
|
+
-q "(level:ERROR OR level:WARN) NOT env:test"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**SQL 查询:**
|
|
149
|
+
```bash
|
|
150
|
+
# 统计各应用错误数量
|
|
151
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
152
|
+
-q "SELECT count(*) as cnt, appName FROM log WHERE content LIKE '%error%' GROUP BY appName"
|
|
153
|
+
|
|
154
|
+
# 平均响应时间
|
|
155
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z \
|
|
156
|
+
-q "SELECT avg(response_time) as avg_time FROM log WHERE status_code=200"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> ⚠️ **注意**:AND、OR、NOT 前后必须有**空格**!
|
|
160
|
+
|
|
161
|
+
详细文档请查看:
|
|
162
|
+
- [查询语法速查表](skills/huawei-lts-log-query/references/cheatsheet.md)
|
|
163
|
+
- [高级查询指南](skills/huawei-lts-log-query/references/advanced-query-guide.md)
|
|
164
|
+
- [控制台 vs CLI 对照](skills/huawei-lts-log-query/references/query-comparison.md)
|
|
165
|
+
|
|
166
|
+
### `lts-cli config` — 管理配置
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
lts-cli config [选项]
|
|
170
|
+
|
|
171
|
+
选项:
|
|
172
|
+
--set <key=value> 设置配置项
|
|
173
|
+
--get <key> 查看配置项
|
|
174
|
+
--list 列出所有配置
|
|
175
|
+
--unset <key> 删除配置项
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### `lts-cli init` — 配置向导
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
lts-cli init
|
|
182
|
+
|
|
183
|
+
交互式向导,引导设置 AK、SK、Project ID、Region、endpoint,
|
|
184
|
+
以及可选的默认日志组和日志流。
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### `lts-cli completion` — Shell 补全
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
lts-cli completion <bash|zsh|powershell>
|
|
191
|
+
|
|
192
|
+
生成 shell 补全脚本。
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## 配置说明
|
|
196
|
+
|
|
197
|
+
配置存储在 `~/.lts-cli/config.json`(Linux/macOS)或 `%USERPROFILE%\.lts-cli\config.json`(Windows)。
|
|
198
|
+
|
|
199
|
+
| 键 | 必填 | 说明 |
|
|
200
|
+
|---|---|---|
|
|
201
|
+
| `ak` | 是 | 华为云访问密钥 |
|
|
202
|
+
| `sk` | 是 | 华为云私有密钥 |
|
|
203
|
+
| `projectId` | 是 | 项目 ID |
|
|
204
|
+
| `region` | 否 | 如 `cn-south-1` |
|
|
205
|
+
| `endpoint` | 否 | 需包含 `https://` |
|
|
206
|
+
| `groupId` | 否 | 默认日志组 ID |
|
|
207
|
+
| `streamId` | 否 | 默认日志流 ID |
|
|
208
|
+
|
|
209
|
+
### 环境变量
|
|
210
|
+
|
|
211
|
+
所有配置项也支持环境变量(适用于 CI/CD):
|
|
212
|
+
|
|
213
|
+
| 配置键 | 环境变量 |
|
|
214
|
+
|---|---|
|
|
215
|
+
| `ak` | `LTS_AK` |
|
|
216
|
+
| `sk` | `LTS_SK` |
|
|
217
|
+
| `projectId` | `LTS_PROJECT_ID` |
|
|
218
|
+
| `region` | `LTS_REGION` |
|
|
219
|
+
| `endpoint` | `LTS_ENDPOINT` |
|
|
220
|
+
| `groupId` | `LTS_GROUP_ID` |
|
|
221
|
+
| `streamId` | `LTS_STREAM_ID` |
|
|
222
|
+
|
|
223
|
+
环境变量优先级高于配置文件。
|
|
224
|
+
|
|
225
|
+
## 支持的区域
|
|
226
|
+
|
|
227
|
+
| 区域 ID | 区域名称 | Endpoint |
|
|
228
|
+
|---|---|---|
|
|
229
|
+
| `cn-north-1` | 华北-北京一 | `lts.cn-north-1.myhuaweicloud.com` |
|
|
230
|
+
| `cn-north-4` | 华北-北京四 | `lts.cn-north-4.myhuaweicloud.com` |
|
|
231
|
+
| `cn-east-2` | 华东-上海二 | `lts.cn-east-2.myhuaweicloud.com` |
|
|
232
|
+
| `cn-east-3` | 华东-上海三 | `lts.cn-east-3.myhuaweicloud.com` |
|
|
233
|
+
| `cn-south-1` | 华南-广州 | `lts.cn-south-1.myhuaweicloud.com` |
|
|
234
|
+
| `cn-south-4` | 华南-深圳 | `lts.cn-south-4.myhuaweicloud.com` |
|
|
235
|
+
| `cn-southwest-2` | 西南-贵阳一 | `lts.cn-southwest-2.myhuaweicloud.com` |
|
|
236
|
+
| `ap-southeast-1` | 亚太-新加坡 | `lts.ap-southeast-1.myhuaweicloud.com` |
|
|
237
|
+
| `ap-southeast-2` | 亚太-曼谷 | `lts.ap-southeast-2.myhuaweicloud.com` |
|
|
238
|
+
| `ap-southeast-3` | 亚太-雅加达 | `lts.ap-southeast-3.myhuaweicloud.com` |
|
|
239
|
+
| `af-south-1` | 非洲-约翰内斯堡 | `lts.af-south-1.myhuaweicloud.com` |
|
|
240
|
+
|
|
241
|
+
> 完整列表请参考 [华为云 LTS 终端节点](https://support.huaweicloud.com/api-lts/lts_api_0011.html)。
|
|
242
|
+
|
|
243
|
+
## 开发指南
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
git clone https://github.com/jcxy/huawei-lts-cli.git
|
|
247
|
+
cd huawei-lts-cli
|
|
248
|
+
npm install
|
|
249
|
+
npm run build
|
|
250
|
+
|
|
251
|
+
# 开发模式运行(无需编译)
|
|
252
|
+
npm run dev -- query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
|
|
253
|
+
|
|
254
|
+
# 本地测试
|
|
255
|
+
npm link
|
|
256
|
+
lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
[MIT](LICENSE)
|
|
@@ -14,7 +14,12 @@ function createQueryCommand() {
|
|
|
14
14
|
.requiredOption('--end-time <endTime>', 'End time (ISO 8601, e.g. 2024-01-02T00:00:00Z)')
|
|
15
15
|
.option('--st <startTime>', 'Alias for --start-time')
|
|
16
16
|
.option('--et <endTime>', 'Alias for --end-time')
|
|
17
|
-
.option('-k, --keyword <keyword>', '
|
|
17
|
+
.option('-k, --keyword <keyword>', 'Simple keyword search (legacy, use --query for advanced queries)')
|
|
18
|
+
.option('-q, --query <query>', 'Advanced query expression. Supports:\n' +
|
|
19
|
+
' - Field queries: content:error AND appName:myapp\n' +
|
|
20
|
+
' - Comparison: time>60 AND region:r\n' +
|
|
21
|
+
' - SQL syntax: SELECT * FROM log WHERE content LIKE \'%error%\'\n' +
|
|
22
|
+
' - Logical operators: AND, OR, NOT (must be surrounded by spaces)')
|
|
18
23
|
.option('-l, --limit <limit>', 'Limit number of results', parseInt, 100)
|
|
19
24
|
.option('-o, --offset <offset>', 'Offset for pagination', parseInt, 0)
|
|
20
25
|
.option('-r, --reverse', 'Reverse order (newest first)')
|
|
@@ -62,6 +67,7 @@ function createQueryCommand() {
|
|
|
62
67
|
startTime,
|
|
63
68
|
endTime,
|
|
64
69
|
keyword: options.keyword,
|
|
70
|
+
query: options.query,
|
|
65
71
|
limit: options.limit,
|
|
66
72
|
offset: options.offset,
|
|
67
73
|
reverse: options.reverse,
|
package/dist/lts/client.js
CHANGED
|
@@ -34,7 +34,12 @@ class LTSClient {
|
|
|
34
34
|
.withStartTime(new Date(params.startTime).getTime().toString())
|
|
35
35
|
.withEndTime(new Date(params.endTime).getTime().toString())
|
|
36
36
|
.withLimit(params.limit ?? 100);
|
|
37
|
-
|
|
37
|
+
// 优先使用 query 参数(支持SQL和结构化查询)
|
|
38
|
+
if (params.query) {
|
|
39
|
+
queryParams.withQuery(params.query);
|
|
40
|
+
}
|
|
41
|
+
else if (params.keyword) {
|
|
42
|
+
// 向后兼容:简单关键词搜索
|
|
38
43
|
queryParams.withKeywords(params.keyword);
|
|
39
44
|
}
|
|
40
45
|
if (params.reverse !== undefined) {
|
package/package.json
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@cvtoolman/huawei-lts-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Command-line tool for querying Huawei Cloud Log Tank Service (LTS) logs",
|
|
5
|
-
"main": "dist/cli/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"lts-cli": "./dist/cli/index.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"dist/"
|
|
11
|
-
],
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "tsc",
|
|
14
|
-
"dev": "tsx src/cli/index.ts",
|
|
15
|
-
"start": "node dist/cli/index.js",
|
|
16
|
-
"clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
|
|
17
|
-
"prepublishOnly": "npm run clean && npm run build"
|
|
18
|
-
},
|
|
19
|
-
"keywords": [
|
|
20
|
-
"huawei-cloud",
|
|
21
|
-
"huawei",
|
|
22
|
-
"lts",
|
|
23
|
-
"log-tank-service",
|
|
24
|
-
"logs",
|
|
25
|
-
"cli",
|
|
26
|
-
"log-query",
|
|
27
|
-
"cloud-logging"
|
|
28
|
-
],
|
|
29
|
-
"author": "cvtoolman",
|
|
30
|
-
"license": "MIT",
|
|
31
|
-
"repository": {
|
|
32
|
-
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/jcxy/huawei-lts-cli.git"
|
|
34
|
-
},
|
|
35
|
-
"bugs": {
|
|
36
|
-
"url": "https://github.com/jcxy/huawei-lts-cli/issues"
|
|
37
|
-
},
|
|
38
|
-
"homepage": "https://github.com/jcxy/huawei-lts-cli#readme",
|
|
39
|
-
"engines": {
|
|
40
|
-
"node": ">=16.0.0"
|
|
41
|
-
},
|
|
42
|
-
"dependencies": {
|
|
43
|
-
"@huaweicloud/huaweicloud-sdk-core": "latest",
|
|
44
|
-
"@huaweicloud/huaweicloud-sdk-lts": "latest",
|
|
45
|
-
"chalk": "^4.1.2",
|
|
46
|
-
"cli-table3": "latest",
|
|
47
|
-
"commander": "latest",
|
|
48
|
-
"uuid": "^9.0.0"
|
|
49
|
-
},
|
|
50
|
-
"devDependencies": {
|
|
51
|
-
"@types/node": "latest",
|
|
52
|
-
"tsx": "latest",
|
|
53
|
-
"typescript": "latest"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@cvtoolman/huawei-lts-cli",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Command-line tool for querying Huawei Cloud Log Tank Service (LTS) logs",
|
|
5
|
+
"main": "dist/cli/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"lts-cli": "./dist/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"dev": "tsx src/cli/index.ts",
|
|
15
|
+
"start": "node dist/cli/index.js",
|
|
16
|
+
"clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
|
|
17
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"huawei-cloud",
|
|
21
|
+
"huawei",
|
|
22
|
+
"lts",
|
|
23
|
+
"log-tank-service",
|
|
24
|
+
"logs",
|
|
25
|
+
"cli",
|
|
26
|
+
"log-query",
|
|
27
|
+
"cloud-logging"
|
|
28
|
+
],
|
|
29
|
+
"author": "cvtoolman",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/jcxy/huawei-lts-cli.git"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/jcxy/huawei-lts-cli/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/jcxy/huawei-lts-cli#readme",
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=16.0.0"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@huaweicloud/huaweicloud-sdk-core": "latest",
|
|
44
|
+
"@huaweicloud/huaweicloud-sdk-lts": "latest",
|
|
45
|
+
"chalk": "^4.1.2",
|
|
46
|
+
"cli-table3": "latest",
|
|
47
|
+
"commander": "latest",
|
|
48
|
+
"uuid": "^9.0.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "latest",
|
|
52
|
+
"tsx": "latest",
|
|
53
|
+
"typescript": "latest"
|
|
54
|
+
}
|
|
55
|
+
}
|