@cvtoolman/huawei-lts-cli 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 CHANGED
@@ -1,193 +1,261 @@
1
- # huawei-lts-cli
2
-
3
- Command-line tool for querying [Huawei Cloud Log Tank Service (LTS)](https://www.huaweicloud.com/intl/en-us/product/lts.html) logs from the terminal.
4
-
5
- [![npm version](https://img.shields.io/npm/v/huawei-lts-cli.svg)](https://www.npmjs.com/package/huawei-lts-cli)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
-
8
- ## Features
9
-
10
- - ๐Ÿ” Query LTS logs by time range, keyword, and more
11
- - ๐Ÿ“‹ Multiple output formats: pretty (colored), JSON, table
12
- - ๐Ÿš€ Auto-pagination โ€” fetches all matching logs in one command
13
- - โš™๏ธ Persistent configuration โ€” set credentials once, use forever
14
- - ๐Ÿง™ Interactive setup wizard โ€” `lts-cli init` guides you step by step
15
- - ๐Ÿ” Environment variable support โ€” CI/CD friendly
16
- - ๐Ÿš Shell completion for bash, zsh, and PowerShell
17
-
18
- ## Quick Start
19
-
20
- ### 1. Install
21
-
22
- ```bash
23
- npm install -g huawei-lts-cli
24
- ```
25
-
26
- ### 2. Configure
27
-
28
- ```bash
29
- lts-cli init
30
- ```
31
-
32
- The wizard will ask for your AK, SK, Project ID, and Region. You can find your credentials in the Huawei Cloud console under **My Credentials > Access Keys**.
33
-
34
- Or set manually:
35
-
36
- ```bash
37
- lts-cli config --set ak=YOUR_ACCESS_KEY
38
- lts-cli config --set sk=YOUR_SECRET_KEY
39
- lts-cli config --set projectId=YOUR_PROJECT_ID
40
- lts-cli config --set region=cn-south-1
41
- lts-cli config --set endpoint=https://lts.cn-south-1.myhuaweicloud.com
42
- lts-cli config --set groupId=YOUR_LOG_GROUP_ID # optional โ€” default
43
- lts-cli config --set streamId=YOUR_LOG_STREAM_ID # optional โ€” default
44
- ```
45
-
46
- ### 3. Query
47
-
48
- ```bash
49
- # Basic query
50
- lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
51
-
52
- # With keyword filter
53
- lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -k "ERROR"
54
-
55
- # With explicit group/stream (overrides config defaults)
56
- lts-cli query -g <group-id> -s <stream-id> --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
57
-
58
- # JSON output (useful for piping to jq)
59
- lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -f json
60
-
61
- # Table output
62
- lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z -f table
63
- ```
64
-
65
- ## Command Reference
66
-
67
- ### `lts-cli query` โ€” Query Logs
68
-
69
- ```
70
- Usage: lts-cli query [options]
71
-
72
- Options:
73
- -g, --group-id <groupId> Log group ID (can be set in config)
74
- -s, --stream-id <streamId> Log stream ID (can be set in config)
75
- --start-time, --st <time> Start time in ISO 8601 (required)
76
- --end-time, --et <time> End time in ISO 8601 (required)
77
- -k, --keyword <keyword> Search keyword
78
- -l, --limit <limit> Results per page (default: 100)
79
- -o, --offset <offset> Pagination offset (default: 0)
80
- -r, --reverse Show newest logs first
81
- -f, --format <format> Output format: pretty, json, table (default: pretty)
82
- --no-paginate Disable auto-pagination (single page only)
83
- ```
84
-
85
- ### `lts-cli config` โ€” Manage Configuration
86
-
87
- ```
88
- Usage: lts-cli config [options]
89
-
90
- Options:
91
- --set <key=value> Set a configuration value
92
- --get <key> Get a configuration value
93
- --list List all configuration values
94
- --unset <key> Remove a configuration value
95
- ```
96
-
97
- ### `lts-cli init` โ€” Setup Wizard
98
-
99
- ```
100
- Usage: lts-cli init
101
-
102
- Interactive wizard that guides you through setting up AK, SK, Project ID,
103
- region, endpoint, and optional default log group/stream.
104
- ```
105
-
106
- ### `lts-cli completion` โ€” Shell Completion
107
-
108
- ```
109
- Usage: lts-cli completion <shell>
110
-
111
- Generate completion script for bash, zsh, or powershell.
112
-
113
- Examples:
114
- lts-cli completion bash >> ~/.bashrc
115
- lts-cli completion zsh >> ~/.zshrc
116
- lts-cli completion powershell >> $PROFILE
117
- ```
118
-
119
- ## Configuration
120
-
121
- Configuration is stored in `~/.lts-cli/config.json` (Linux/macOS) or `%USERPROFILE%\.lts-cli\config.json` (Windows).
122
-
123
- ### Available Keys
124
-
125
- | Key | Required | Description |
126
- |---|---|---|
127
- | `ak` | Yes | Huawei Cloud Access Key |
128
- | `sk` | Yes | Huawei Cloud Secret Key |
129
- | `projectId` | Yes | Huawei Cloud Project ID |
130
- | `region` | No | Region (e.g. `cn-south-1`) |
131
- | `endpoint` | No | LTS service endpoint. Must include `https://` |
132
- | `groupId` | No | Default log group ID |
133
- | `streamId` | No | Default log stream ID |
134
-
135
- ### Environment Variables
136
-
137
- All config keys can also be set via environment variables (useful for CI/CD):
138
-
139
- | Config Key | Environment Variable |
140
- |---|---|
141
- | `ak` | `LTS_AK` |
142
- | `sk` | `LTS_SK` |
143
- | `projectId` | `LTS_PROJECT_ID` |
144
- | `region` | `LTS_REGION` |
145
- | `endpoint` | `LTS_ENDPOINT` |
146
- | `groupId` | `LTS_GROUP_ID` |
147
- | `streamId` | `LTS_STREAM_ID` |
148
-
149
- Environment variables take precedence over config file values.
150
-
151
- ## Supported Regions
152
-
153
- | Region ID | Region Name | Endpoint |
154
- |---|---|---|
155
- | `cn-north-1` | CN North-Beijing1 | `lts.cn-north-1.myhuaweicloud.com` |
156
- | `cn-north-4` | CN North-Beijing4 | `lts.cn-north-4.myhuaweicloud.com` |
157
- | `cn-east-2` | CN East-Shanghai2 | `lts.cn-east-2.myhuaweicloud.com` |
158
- | `cn-east-3` | CN East-Shanghai3 | `lts.cn-east-3.myhuaweicloud.com` |
159
- | `cn-south-1` | CN South-Guangzhou | `lts.cn-south-1.myhuaweicloud.com` |
160
- | `cn-south-4` | CN South-Shenzhen | `lts.cn-south-4.myhuaweicloud.com` |
161
- | `cn-southwest-2` | CN Southwest-Guiyang | `lts.cn-southwest-2.myhuaweicloud.com` |
162
- | `ap-southeast-1` | AP-Singapore | `lts.ap-southeast-1.myhuaweicloud.com` |
163
- | `ap-southeast-2` | AP-Bangkok | `lts.ap-southeast-2.myhuaweicloud.com` |
164
- | `ap-southeast-3` | AP-Jakarta | `lts.ap-southeast-3.myhuaweicloud.com` |
165
- | `af-south-1` | AF-Johannesburg | `lts.af-south-1.myhuaweicloud.com` |
166
-
167
- > For a complete list, see [Huawei Cloud LTS Endpoints](https://support.huaweicloud.com/intl/en-us/api-lts/lts_api_0011.html).
168
-
169
- ## Development
170
-
171
- ```bash
172
- # Clone and install
173
- git clone <repo-url>
174
- cd huawei-lts-cli
175
- npm install
176
-
177
- # Build
178
- npm run build
179
-
180
- # Run during development (no build step needed)
181
- npm run dev -- query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
182
-
183
- # Run compiled version
184
- npm start -- query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
185
-
186
- # Link for local testing
187
- npm link
188
- lts-cli query --st 2024-01-01T00:00:00Z --et 2024-01-02T00:00:00Z
189
- ```
190
-
191
- ## License
192
-
193
- [MIT](LICENSE)
1
+ # huawei-lts-cli โ€” CLI + SKILL
2
+
3
+ **็ฎ€ไฝ“ไธญๆ–‡** | [English](README_en.md)
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@cvtoolman/huawei-lts-cli.svg)](https://www.npmjs.com/package/@cvtoolman/huawei-lts-cli)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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>', 'Search 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,
@@ -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
- if (params.keyword) {
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.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
+ }