
Alibabacloud Emas Apm Query
- 111 installs
- 208 repo stars
- Updated August 4, 2026
- aliyun/alibabacloud-aiops-skills
alibabacloud-emas-apm-query is a Claude skill that queries Alibaba Cloud EMAS APM crash/ANR/lag issues and maps stack samples to mobile app source code to suggest fixes.
About
This skill troubleshoots mobile app issues reported to Alibaba Cloud EMAS APM. It calls the 4 read-only emas-appmonitor OpenAPIs to do Top-N aggregation, sample stack drill-down, and dimension breakdowns across crash, ANR, lag, and memory issue types, then maps stacks to app source to suggest fixes. A developer uses it to investigate mobile crashes and ANRs.
- Queries EMAS APM crash, ANR, lag, and memory issues via 4 read-only OpenAPIs
- Top-N aggregation, sample stack drill-down, and dimension breakdowns
- Maps stacks to app source code across Android, iOS, HarmonyOS, Flutter, Unity
Alibabacloud Emas Apm Query by the numbers
- 111 all-time installs (skills.sh)
- Ranked #554 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
alibabacloud-emas-apm-query capabilities & compatibility
Requires Alibaba Cloud credentials; EMAS APM query APIs are read-only
- Capabilities
- debugging
- Works with
- aws
- Use cases
- debugging
- Runs
- Runs locally
- Pricing
- Bring your own API key
What alibabacloud-emas-apm-query says it does
Alibaba Cloud EMAS APM (mobile Application Performance Monitoring) issue troubleshooting skill.
Client coverage: native Android / iOS / HarmonyOS, Flutter, Unity
npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-emas-apm-queryAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 111 |
|---|---|
| repo stars | ★ 208 |
| Last updated | August 4, 2026 |
| Repository | aliyun/alibabacloud-aiops-skills ↗ |
What it does
Troubleshoot mobile app crash, ANR, and lag issues from Alibaba Cloud EMAS APM and map stacks to source.
Who is it for?
Investigating mobile app crashes, ANRs, and lag reported to Alibaba Cloud EMAS APM
Skip if: H5 apps (out of scope) or writing new APM data (read-only APIs)
When should I use this skill?
A developer needs to analyze a mobile app crash, ANR, or memory issue from EMAS APM
What you get
Produces root-cause analysis and fix suggestions mapping APM stacks to file:line in the app source.
- Top-N issue aggregation and sample stacks
- Root-cause analysis and fix suggestions mapped to source
By the numbers
- 4 read-only OpenAPIs
- 6 supported issue types (crash/anr/lag/custom/memory_leak/memory_alloc)
Files
alibabacloud-emas-apm-query
1. Scenario Description & Architecture
After a mobile app integrates Alibaba Cloud EMAS APM, the crash / anr / lag / custom / memory_leak / memory_alloc events it produces every day are aggregated and reported by the SDK to the backend. A typical troubleshooting workflow is:
1. Figure out which Issues are most worth fixing: sort by error rate / error count → pick Top 3~5 2. Inspect what a specific Issue looks like: fetch its aggregated metrics and affected versions 3. Find several representative samples: across different devices / versions / networks 4. Read the stack + business log in a sample: find actionable clues 5. Compare against the app source code and propose a fix
This skill stitches the 5 steps above into a single CLI pipeline. The entire process only calls the 4 read-only APIs of `aliyun emas-appmonitor`, and depends on no database / log service:
GetIssues → GetIssue → GetErrors → GetError
↓
(optional) stack ↔ user APP source → precise file:line + fix diffSupported BizModules: crash / anr / lag / custom / memory_leak / memory_alloc Supported OS: android / iphoneos / harmony (harmony does not have anr / memory_*)
2. Prerequisites
| Item | Requirement | Self-check command |
|---|---|---|
| Aliyun CLI version | >= 3.3.3 | aliyun version |
| Plugin | aliyun-cli-emas-appmonitor | aliyun emas-appmonitor --help |
| jq | any version (required by scripts) | jq --version |
Full installation steps: `references/cli-installation-guide.md`. Recommended: enable auto plugin installation once:
aliyun configure set --auto-plugin-install true
aliyun plugin update3. Credential Pre-check
Do NOT print AK/SK values; just verify that an available profile exists:
aliyun configure listThe expected output contains a current profile whose Mode / RegionId are non-empty. If not, configure one of AK / OAuth / StsToken / RamRoleArn per `references/cli-installation-guide.md#Configuration`.
This skill never reads or forwards AK / SK field values themselves during its whole lifecycle.
4. AI-mode Lifecycle
Start (before the skill runs):
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-emas-apm-query"End (after troubleshooting completes):
aliyun configure ai-mode disable5. RAM Permissions
This skill only needs the 4 read-only emasha:View* actions (ViewIssues / ViewIssue / ViewErrors / ViewError). EMAS AppMonitor's RamCode is emasha and does not support resource-level authorization, so Resource is fixed to "*".
For the full least-privilege JSON policy, the equivalent system policies (AliyunEMASAppMonitorReadOnlyAccess / AliyunEMASAppMonitorFullAccess), and common permission-error troubleshooting, see `references/ram-policies.md`.
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors at any point during execution, follow this process:
1. Read references/ram-policies.md to get the full list of permissions required by this SKILL2. Use ram-permission-diagnose skill to guide the user through requesting the necessary permissions3. Pause and wait until the user confirms that the required permissions have been granted
6. Parameter Confirmation
IMPORTANT: Parameter Confirmation — Before executing any command or API call,
ALL user-customizable parameters (e.g., RegionId, instance names, CIDR blocks,
passwords, domain names, resource specifications, etc.) MUST be confirmed with the
user. Do NOT assume or use default values without explicit user approval.
| Parameter | Required | Type | Description | Default |
|---|---|---|---|---|
app-key | Yes | int64 | EMAS APP Key (typically 9+ digits). Prefer to infer from SDK initialization code in the current workspace (see the 6 rule families in `references/appkey-detection.md`); if exactly one match is found, echo it and wait for user confirmation; if multiple, list candidates and let the user pick; on miss, ask the user to provide it manually. | None (default: probed from workspace) |
os | Yes | enum | android / iphoneos / harmony (H5 goes to h5, which is out of scope). Inferred together with `app-key` from the project type: build.gradle / AndroidManifest.xml → android; *.xcodeproj / Podfile → iphoneos; module.json5 + ets/ → harmony. For cross-platform Flutter / Unity projects, the user MUST pick one (android / iphoneos). | None (default: probed from project type) |
time-range | Yes | object | `StartTime=<ms> EndTime=<ms> Granularity=1 GranularityUnit=<HOUR\ | DAY>` |
biz-module | No | list | If omitted, all 6 modules are scanned; if specified, only that module is analyzed | All 6 |
digest-hash | No | string | If the user already knows a specific Issue, skip the Top-N stage and drill down directly | None |
top-n | No | int | Number of Top issues | 5 |
filter-json | No | string | Further narrow down (specific version / device model / region ...), a JSON string | Not applied |
Timestamp unit: every API uses Unix milliseconds. If the user passes a value in seconds (< 1e12), the scripts will automatically multiply by 1000.
`biz-module` pitfall: the CLI --help lists the legacy enum (exception / crash / lag / custom / h5JsError / h5WhiteScreen); however, `anr / memory_leak / memory_alloc` are actually forwarded to the backend and work. This skill scans all 6 modules requested by the user by default; see `references/biz-module-reference.md`.
`time-range` pitfall: in some environments Granularity=60 GranularityUnit=MINUTE is rejected by the backend (returns Code: 200, Message: "unknown error"). Always prefer Granularity=1 GranularityUnit=DAY or GranularityUnit=HOUR.
`--os` pitfall: the CLI --help marks --os as optional, but in practice omitting it returns an empty list without error (Model.Items=[], Total=0). All 4 APIs must pass --os explicitly.
`--did` pitfall: get-error's --did is also marked optional in --help, but is implicitly required by the backend. Omitting it returns Code: 100011 Parameter Not Enough. Take it from get-errors' Items[*].Did (already handled by dig_issue.sh; when calling aliyun emas-appmonitor get-error manually, pass it explicitly).
Dual semantics of `DigestHash`: get-errors returns Items[*].DigestHash, which is the hash of a single event, different from the aggregated --digest-hash you passed in. When calling get-error next, still use the aggregated hash (the one you used in get-issues / get-issue); do not switch to the single-event hash.
Reuse `biz-module`: whichever bizModule was used to obtain a Top Issue from get-issues must be reused for the next three steps (get-issue / get-errors / get-error); otherwise the response will be empty (the same DigestHash exists under only one bizModule). list_top_issues.sh already attaches a bm field to each row so it can be reused.
7. Core Workflow
flowchart TD
Start[User request] --> DetectCtx{Workspace can infer AppKey+OS?}
DetectCtx -- single match --> ConfirmCtx[Echo for user confirmation]
DetectCtx -- multiple matches --> PickCtx[List candidates, let user pick]
DetectCtx -- miss --> AskCtx[Ask user for AppKey + OS]
ConfirmCtx --> HasHash
PickCtx --> HasHash
AskCtx --> HasHash
HasHash{digestHash provided?}
HasHash -- yes --> SingleIssue[get-issue: fetch single Issue metadata]
HasHash -- no --> ParallelIssues[Parallel get-issues over 6 bizModules]
ParallelIssues --> TopN[Sort by errorRate, take Top 3-5]
TopN --> IterateTop[Iterate Top Issues]
IterateTop --> SingleIssue
SingleIssue --> GetErrors[get-errors: latest 3-5 samples]
GetErrors --> PickSample["Sample policy: latest / hot device / latest affected version"]
PickSample --> GetError[get-error: stack/threads/logs/dimensions]
GetError --> HasCode{CWD has APP source?}
HasCode -- yes --> CodeMatch[stack -> file + line -> diff]
HasCode -- no --> CliReport[CLI-only diagnostic report]
CodeMatch --> Report[Final report: issue list + root cause + fix]
CliReport --> Report
Report --> CallFailed{Any CLI call failed?}
CallFailed -- yes --> CliSelfDiag["CLI self-diagnose: --log-level debug / --cli-dry-run / configure list / plugin update"]
CallFailed -- no --> endNode[Done]
CliSelfDiag --> endNode7.0 Runtime locate the Skill directory ($SKILL_DIR)
The Skill's own path is known to the Agent at the time SKILL.md is loaded (see the fullPath / path field under <available_skills> in the context). Before running any bash command that needs to read bundled resources from this Skill (scripts/ / assets/ / references/), the Agent MUST first export the directory of SKILL.md to SKILL_DIR exactly once:
# The Agent fills in the absolute path of SKILL.md into the placeholder, then exports once
export SKILL_DIR="$(cd "$(dirname "<ABSOLUTE_PATH_OF_SKILL.md>")" && pwd)"
# Self-check: all three directories must exist
[[ -d "$SKILL_DIR/scripts" && -d "$SKILL_DIR/assets" && -d "$SKILL_DIR/references" ]] \
|| { echo "[ERROR] SKILL_DIR does not point to the root of this Skill: $SKILL_DIR" >&2; exit 1; }Rules:
1. Do not hardcode `~/.cursor/skills-cursor/...` or `~/.claude/skills/...`: this Skill can be distributed in the repository (.agent/skills/alibabacloud-emas-apm-query/) or at the user level, and the absolute path varies with the host. 2. Do not rely on `cd` into the Skill directory to use relative paths: the scripts drop artifacts into the current working directory (the user's APP source root); cd would break this semantic. 3. The bash scripts have a fallback: scripts/list_top_issues.sh and scripts/dig_issue.sh auto-detect their own location via BASH_SOURCE at the top, so they can locate $SKILL_DIR even if it was not exported. Other inline jq / rg commands inside SKILL.md still require the Agent to export $SKILL_DIR first.
7.1 Stage A: Top N (when digest-hash is not provided)
Use scripts/list_top_issues.sh to scan the 6 biz_modules in parallel:
bash "$SKILL_DIR/scripts/list_top_issues.sh" \
--app-key <AppKey> \
--os <iphoneos|android|harmony> \
--start-time <startMs> \
--end-time <endMs> \
--top-n 5 \
--order-by ErrorRateThe output is a merged Top-N table, each row containing {bm, digestHash, ec, er, edc, edr, name, type, reason}. To add a Filter (e.g. "only version 3.5.x"), append --filter-json '{"Key":"appVersion","Operator":"in","Values":["3.5.0","3.5.1"]}'; see `references/filter-reference.md`.
7.2 Stage B: Drill into a single Issue
Use scripts/dig_issue.sh:
bash "$SKILL_DIR/scripts/dig_issue.sh" \
--app-key <AppKey> \
--os <iphoneos|android|harmony> \
--biz-module <crash|anr|lag|custom|memory_leak|memory_alloc> \
--digest-hash <13-char Base36> \
--start-time <startMs> --end-time <endMs> \
--sample-size 3Output directory:
emas-apm-dig-<AppKey>-<DigestHash>-<epoch>/
01-get-issue.json
02-get-errors.json (contains the ClientTime/Uuid/Did triples)
samples/<Uuid>.json (complete JSON per sample, includes Backtrace/EventLog etc.)
report.md (structured markdown report)7.3 Stage C: Code mapping + diff (if the CWD contains APP source)
Follow `references/troubleshoot-workflow.md`:
1. Determine the platform (Android / iOS / Harmony / RN / Flutter / Web) 2. Model.Backtrace → keep APP user frames → grep the source → locate file:line 3. Enrich the timeline using EventLog + Controllers + Threads + CustomInfo 4. Emit the smallest diff (≤ 20 lines + one sentence of "why")
If the CWD does not contain the source: emit only a CLI diagnostic report (Issue overview, sample dimension comparison, representative stack), and append a hint that "switching to the APP source directory enables code-level localization".
7.4 Failure handling (CLI only)
When any aliyun emas-appmonitor call fails, run the following self-checks in order:
aliyun configure list # 1. current profile / mode / region
aliyun plugin update # 2. latest plugin
aliyun emas-appmonitor <cmd> ... --cli-dry-run # 3. parameter serialization check
aliyun emas-appmonitor <cmd> ... --log-level debug # 4. HTTP body + RequestIdDo not guide the user to query any server-side data source.
8. Success Verification
The full 6-step CLI self-verification (with runnable commands and pass/fail criteria for each step) is in `references/verification-method.md`. The correct-vs-incorrect CLI pattern matrix is in `references/acceptance-criteria.md`. Core criteria:
1. Reachable: get-issues dry-run prints the HTTP body successfully 2. Non-empty: some biz_module has Model.Total >= 1 3. Stable: two calls with identical parameters return the same Top 5 DigestHash 4. Filter works: after adding a filter, Total is strictly <= the full count 5. Three-level chain: issues → issue → errors → error can pull a Stack end to end 6. Diagnosable: on induced errors, the output includes RequestId and ErrorCode
9. Cleanup
This skill is read-only; it does not create any cloud resources that need cleanup.
Tear-down is only two things:
aliyun configure ai-mode disable
# (optional) delete the local JSON directories produced by dig_issue.sh
rm -rf ./emas-apm-dig-*10. Best Practices
1. Probe first, ask later: before entering the main flow, grep SDK initialization code from the user's workspace per `references/appkey-detection.md` to infer app-key / os; confirm with the user only after a hit, rather than asking upfront. 2. Top first, then drill: do not run dig_issue.sh against every Issue from the start — first use list_top_issues.sh to aggregate the Top N, then drill into each of them. The total number of CLI calls is O(N) rather than O(all). 3. Always pass `--os`: --os on all 4 APIs is marked optional in --help, but omitting it returns empty results silently. Always specify android / iphoneos / harmony explicitly. 4. `get-error` MUST carry `--did`: marked optional in --help but implicitly required by the backend; take it from Items[*].Did in the get-errors response. 5. Reuse `biz-module`: the next get-issue / get-errors / get-error calls must use the same bizModule that produced the Issue in get-issues; switching will return empty. 6. Shrink the time window from "wide" to "narrow": start diagnosis with 24h / Granularity=1 GranularityUnit=DAY; once a specific version / device is located, shrink to 1~4 hours with GranularityUnit=HOUR. 7. Filters are JSON strings: the entire --filter value must be a single JSON string; build nested SubFilters with jq -cn to avoid manual escape errors (see `references/filter-reference.md`). 8. Multi-account scenarios: confirm the profile via aliyun configure list and pass --profile <name> explicitly rather than relying on implicit env-var switching. 9. Persist `get-error`: this API response can be from hundreds of KB to several MB; do not truncate JSON with head / tail. Write to > /tmp/emas-error-XXX.json first and then process with jq. 10. Android obfuscation: when you see class names like a.a.a.b.c, ask the user for mapping.txt before attempting code mapping rather than guessing. 11. iOS not symbolicated: when Model.SymbolicStatus=false, the Stack contains many raw addresses; only emit conclusions at device / version dimensions, and re-analyze after dSYM is uploaded. 12. Parallel QPS control: list_top_issues.sh has a built-in sleep 0.3s to avoid throttling; scanning 6 biz_modules takes 2~3 seconds in total and does not need extra concurrency. 13. Empty `biz-module` results are not errors: anr / memory_* under harmony or very-low-traffic AppKeys returning Total=0 is normal and should not be retried. 14. Do not reverse-use this skill to write data: all 4 APIs are Get* / View*. If the user wants to "update Issue status" or "mark as fixed", that falls under write APIs like UpdateIssueStatus and is out of scope.
11. Reference Links
| Document | Purpose |
|---|---|
| `references/cli-installation-guide.md` | Aliyun CLI installation / configuration / plugins / credentials |
| `references/appkey-detection.md` | Identify AppKey and OS from the user's workspace across Android / iOS / Harmony / Flutter / Unity / H5 |
| `references/ram-policies.md` | Least-privilege JSON + Permission Failure Handling |
| `references/get-issues.md` | GetIssues parameters / response / ordering |
| `references/get-issue.md` | GetIssue parameters / response |
| `references/get-errors.md` | GetErrors parameters / response |
| `references/get-error.md` | GetError parameters / response |
| `references/filter-reference.md` | --filter structure / operators / SubFilters / dry-run validation |
| `references/biz-module-reference.md` | 6 biz_modules x platforms x available filterCode list |
| `references/troubleshoot-workflow.md` | Full flow for stack -> source -> diff |
| `references/related-commands.md` | Cheat sheet for all aliyun emas-appmonitor commands + skill boundary |
| `references/verification-method.md` | 6-step runnable CLI verification with pass/fail criteria |
| `references/acceptance-criteria.md` | Correct vs incorrect CLI pattern matrix (for review / self-check) |
| `assets/system-filters/index.json` | Index of 14 static filter snapshots (biz_module x platform) |
{
"bizModule": "anr",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 29,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 17,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 19,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 24,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 26,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 34,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 38,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 39,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 41,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "crash",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 32,
"filters": [
{
"filterCode": "crashType",
"filterName": "崩溃类型",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "Java Crash",
"value": "MOTU_ANDROID_CRASH"
},
{
"name": "Native Crash",
"value": "MOTU_ANDROID_NATIVE_CRASH"
}
]
},
{
"filterCode": "isOom",
"filterName": "是否OOM",
"filterType": "radio",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
}
]
},
{
"filterCode": "shadow_launchedCrashDuration",
"filterName": "启动状态",
"filterType": "radio",
"filterOrder": 2,
"dynamic": false,
"filterValues": [
{
"name": "启动阶段",
"value": 1
},
{
"name": "非启动阶段",
"value": 0
},
{
"name": "-",
"value": -1
}
]
},
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 7,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 11,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 13,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 14,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 18,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 20,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 21,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 22,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 31,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 37,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 38,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 39,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 41,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 45,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 46,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 47,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 48,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "crash",
"platform": "harmony",
"source": "EMAS AppMonitor system filter registry",
"count": 27,
"filters": [
{
"filterCode": "crashType",
"filterName": "崩溃类型",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "JS Crash",
"value": "HARMONY_JS_CRASH"
},
{
"name": "Native Crash",
"value": "HARMONY_NATIVE_CRASH"
}
]
},
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 6,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 10,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 13,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 17,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 19,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 20,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 30,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 37,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 38,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 39,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 41,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "crash",
"platform": "iphoneos",
"source": "EMAS AppMonitor system filter registry",
"count": 31,
"filters": [
{
"filterCode": "componentType",
"filterName": "组件类型",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "App",
"value": "MAIN_APP"
},
{
"name": "Extension",
"value": "EXTENSION_APP"
}
]
},
{
"filterCode": "crashType",
"filterName": "崩溃类型",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "Crash",
"value": "MOTU_IOS_CRASH"
},
{
"name": "OOM Crash",
"value": "IOS_OOM"
},
{
"name": "Watchdog Crash",
"value": "IOS_WATCHDOG_CRASH"
},
{
"name": "Abort",
"value": "MOTU_IOS_ABORT_CAUGHT"
},
{
"name": "Abort Not Caught",
"value": "MOTU_IOS_ABORT_NOT_CAUGHT"
}
]
},
{
"filterCode": "shadow_launchedCrashDuration",
"filterName": "启动状态",
"filterType": "radio",
"filterOrder": 2,
"dynamic": false,
"filterValues": [
{
"name": "启动阶段",
"value": 1
},
{
"name": "非启动阶段",
"value": 0
},
{
"name": "-",
"value": -1
}
]
},
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 7,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 11,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 13,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 14,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 18,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 20,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 21,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否越狱",
"filterType": "radio",
"filterOrder": 22,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 31,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 37,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 38,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 39,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 41,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 43,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 44,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 45,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "custom",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 31,
"filters": [
{
"filterCode": "customErrorLanguage",
"filterName": "异常类型",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": false,
"filterValues": [
{
"name": "C#异常",
"value": "csharp"
},
{
"name": "Lua异常",
"value": "lua"
},
{
"name": "Dart异常",
"value": "dart"
},
{
"name": "Java异常",
"value": ""
},
{
"name": "未知",
"value": "unknown"
}
]
},
{
"filterCode": "isCustomErrorFlag",
"filterName": "是否自定义",
"filterType": "radio",
"filterOrder": 2,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": "1"
},
{
"name": "否",
"value": "0"
}
]
},
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 6,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 10,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 13,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 18,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 19,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 20,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 25,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 35,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 40,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 41,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 42,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 43,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "custom",
"platform": "harmony",
"source": "EMAS AppMonitor system filter registry",
"count": 26,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 4,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 5,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 8,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 14,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 17,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 23,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 24,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 26,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 32,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "custom",
"platform": "iphoneos",
"source": "EMAS AppMonitor system filter registry",
"count": 30,
"filters": [
{
"filterCode": "customErrorLanguage",
"filterName": "异常类型",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": false,
"filterValues": [
{
"name": "C#异常",
"value": "csharp"
},
{
"name": "Lua异常",
"value": "lua"
},
{
"name": "Dart异常",
"value": "dart"
},
{
"name": "Java异常",
"value": ""
},
{
"name": "未知",
"value": "unknown"
}
]
},
{
"filterCode": "isCustomErrorFlag",
"filterName": "是否自定义",
"filterType": "radio",
"filterOrder": 3,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": "1"
},
{
"name": "否",
"value": "0"
}
]
},
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 5,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 5,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 8,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 9,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 12,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 13,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 14,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 15,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 18,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 20,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 21,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否越狱",
"filterType": "radio",
"filterOrder": 22,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 27,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 37,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 41,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 42,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"source": "EMAS AppMonitor system filter registry",
"generatedFrom": "Snapshot of EMAS AppMonitor system filter definitions (frozen; rebuild manually when the product adds new filterCode)",
"bizModules": [
"anr",
"crash",
"custom",
"lag",
"memory_alloc",
"memory_leak"
],
"platforms": [
"android",
"harmony",
"iphoneos"
],
"total": 391,
"files": [
{
"bizModule": "anr",
"platform": "android",
"file": "anr-android.json",
"count": 29,
"staticCount": 10,
"dynamicCount": 19
},
{
"bizModule": "crash",
"platform": "android",
"file": "crash-android.json",
"count": 32,
"staticCount": 13,
"dynamicCount": 19
},
{
"bizModule": "crash",
"platform": "harmony",
"file": "crash-harmony.json",
"count": 27,
"staticCount": 9,
"dynamicCount": 18
},
{
"bizModule": "crash",
"platform": "iphoneos",
"file": "crash-iphoneos.json",
"count": 31,
"staticCount": 12,
"dynamicCount": 19
},
{
"bizModule": "custom",
"platform": "android",
"file": "custom-android.json",
"count": 31,
"staticCount": 12,
"dynamicCount": 19
},
{
"bizModule": "custom",
"platform": "harmony",
"file": "custom-harmony.json",
"count": 26,
"staticCount": 8,
"dynamicCount": 18
},
{
"bizModule": "custom",
"platform": "iphoneos",
"file": "custom-iphoneos.json",
"count": 30,
"staticCount": 11,
"dynamicCount": 19
},
{
"bizModule": "lag",
"platform": "android",
"file": "lag-android.json",
"count": 29,
"staticCount": 10,
"dynamicCount": 19
},
{
"bizModule": "lag",
"platform": "harmony",
"file": "lag-harmony.json",
"count": 26,
"staticCount": 8,
"dynamicCount": 18
},
{
"bizModule": "lag",
"platform": "iphoneos",
"file": "lag-iphoneos.json",
"count": 28,
"staticCount": 9,
"dynamicCount": 19
},
{
"bizModule": "memory_alloc",
"platform": "android",
"file": "memory_alloc-android.json",
"count": 26,
"staticCount": 9,
"dynamicCount": 17
},
{
"bizModule": "memory_alloc",
"platform": "iphoneos",
"file": "memory_alloc-iphoneos.json",
"count": 25,
"staticCount": 8,
"dynamicCount": 17
},
{
"bizModule": "memory_leak",
"platform": "android",
"file": "memory_leak-android.json",
"count": 26,
"staticCount": 9,
"dynamicCount": 17
},
{
"bizModule": "memory_leak",
"platform": "iphoneos",
"file": "memory_leak-iphoneos.json",
"count": 25,
"staticCount": 8,
"dynamicCount": 17
}
]
}
{
"bizModule": "lag",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 29,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 17,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 19,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 24,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 26,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 34,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 38,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 39,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 40,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 41,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "lag",
"platform": "harmony",
"source": "EMAS AppMonitor system filter registry",
"count": 26,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 17,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 24,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 26,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 33,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 35,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "lag",
"platform": "iphoneos",
"source": "EMAS AppMonitor system filter registry",
"count": 28,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 2,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "utdid",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "view",
"filterName": "页面",
"filterType": "checkbox",
"filterOrder": 12,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 17,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否越狱",
"filterType": "radio",
"filterOrder": 19,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "inMainProcess",
"filterName": "是否主进程",
"filterType": "radio",
"filterOrder": 24,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": true
},
{
"name": "否",
"value": false
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 26,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 29,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 30,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "processName",
"filterName": "进程",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 34,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 37,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 38,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "memory_alloc",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 26,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceId",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 17,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 21,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 22,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 23,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 24,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 29,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 33,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "memory_alloc",
"platform": "iphoneos",
"source": "EMAS AppMonitor system filter registry",
"count": 25,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceId",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 17,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否越狱",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 21,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 22,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 23,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 24,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 29,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "memory_leak",
"platform": "android",
"source": "EMAS AppMonitor system filter registry",
"count": 26,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceId",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 17,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否root",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 21,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 22,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 23,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 24,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 29,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isSimulator",
"filterName": "运行环境",
"filterType": "radio",
"filterOrder": 33,
"dynamic": false,
"filterValues": [
{
"name": "真机",
"value": 0
},
{
"name": "模拟器",
"value": 1
}
]
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 34,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 35,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 36,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
{
"bizModule": "memory_leak",
"platform": "iphoneos",
"source": "EMAS AppMonitor system filter registry",
"count": 25,
"filters": [
{
"filterCode": "appVersion",
"filterName": "应用版本",
"filterType": "checkbox",
"filterOrder": 1,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "build",
"filterName": "构建号",
"filterType": "checkbox",
"filterOrder": 3,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "firstVersion",
"filterName": "首现版本",
"filterType": "checkbox",
"filterOrder": 4,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceId",
"filterName": "设备ID",
"filterType": "text",
"filterOrder": 5,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "osVersion",
"filterName": "系统版本",
"filterType": "checkbox",
"filterOrder": 6,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "brand",
"filterName": "品牌",
"filterType": "checkbox",
"filterOrder": 7,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "deviceModel",
"filterName": "机型",
"filterType": "checkbox",
"filterOrder": 8,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "clientIp",
"filterName": "客户端IP",
"filterType": "text",
"filterOrder": 9,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "channel",
"filterName": "渠道",
"filterType": "checkbox",
"filterOrder": 10,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "language",
"filterName": "语言",
"filterType": "checkbox",
"filterOrder": 11,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "userNick",
"filterName": "用户昵称",
"filterType": "text",
"filterOrder": 15,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "userId",
"filterName": "用户ID",
"filterType": "text",
"filterOrder": 16,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "isForeground",
"filterName": "是否前台",
"filterType": "radio",
"filterOrder": 17,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "isJailbroken",
"filterName": "是否越狱",
"filterType": "radio",
"filterOrder": 18,
"dynamic": false,
"filterValues": [
{
"name": "是",
"value": 1
},
{
"name": "否",
"value": 0
},
{
"name": "-",
"value": 2
}
]
},
{
"filterCode": "access",
"filterName": "网络",
"filterType": "checkbox",
"filterOrder": 21,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "country",
"filterName": "国家/地区",
"filterType": "checkbox",
"filterOrder": 22,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "province",
"filterName": "省份",
"filterType": "checkbox",
"filterOrder": 23,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "city",
"filterName": "城市",
"filterType": "checkbox",
"filterOrder": 24,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "resolution",
"filterName": "分辨率",
"filterType": "checkbox",
"filterOrder": 25,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "carrier",
"filterName": "运营商",
"filterType": "checkbox",
"filterOrder": 27,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "cpuModel",
"filterName": "CPU架构",
"filterType": "checkbox",
"filterOrder": 28,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "digestHash",
"filterName": "问题ID",
"filterType": "text",
"filterOrder": 29,
"dynamic": false,
"filterValues": []
},
{
"filterCode": "tag",
"filterName": "标签",
"filterType": "checkbox",
"filterOrder": 31,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "additionalCustomInfo",
"filterName": "自定义维度",
"filterType": "custom",
"filterOrder": 32,
"dynamic": true,
"filterValues": []
},
{
"filterCode": "issueStatus",
"filterName": "问题状态",
"filterType": "checkbox",
"filterOrder": 33,
"dynamic": false,
"filterValues": [
{
"name": "未处理",
"value": 1
},
{
"name": "处理中",
"value": 2
},
{
"name": "已关闭",
"value": 3
},
{
"name": "已处理",
"value": 4
},
{
"name": "已忽略",
"value": 5
}
]
}
]
}
Acceptance criteria (correct / incorrect CLI examples)
This file lists the correct / incorrect usages of aliyun-cli-emas-appmonitor inside this Skill for code review and self-check.
1. Product / command group existence
aliyun emas-appmonitor --help- Correct: the subcommand list contains
get-issues/get-issue/get-errors/get-error/get-activity-event/get-activity-events/ ... - Incorrect:
product not existsis returned -> plugin not installed; runaliyun plugin install --names emas-appmonitor
2. get-issues
Correct
aliyun emas-appmonitor get-issues \
--app-key 335581386 \
--os android \
--biz-module crash \
--time-range StartTime=1714800000000 EndTime=1715404800000 Granularity=1 GranularityUnit=day \
--filter '{"Operator":"and","SubFilters":["{\"operator\":\"in\",\"key\":\"issueStatus\",\"values\":[1,2,3,4]}"]}' \
--order-by ErrorCount --order-type desc \
--page-index 1 --page-size 5Incorrect examples
| Wrong usage | Problem | Correct usage |
|---|---|---|
--app-key 335581386abc | App Key is int | use pure digits |
Missing --os | Backend returns no data -> Model=null | add --os android |
--biz-module CRASH | Enum is case-sensitive | --biz-module crash |
--biz-module exception_type | Illegal enum | use one of crash/anr/lag/custom/memory_leak/memory_alloc |
--time-range '{"StartTime":...}' | Object cannot be parsed as a JSON string | use StartTime=... EndTime=... Granularity=1 GranularityUnit=day |
--filter '[{...}]' | Filter is an object, not an array | --filter '{"Operator":"and","SubFilters":[...]}' |
--filter '{"operator":"and","subFilters":[...]}' | Root Operator / SubFilters keys lowercased | Root keys must be TitleCase: "Operator", "SubFilters" |
--filter '{"Operator":"and","SubFilters":[{"operator":"in",...}]}' | Each element of SubFilters must be a JSON string | SubFilters:["{\"operator\":\"in\",...}"] |
--order-by errorCount | Enum is case-sensitive | --order-by ErrorCount |
3. get-issue
Correct
aliyun emas-appmonitor get-issue \
--app-key 335581386 --os android --biz-module crash \
--digest-hash 3Q758M33DP0AV \
--time-range StartTime=1714800000000 EndTime=1715404800000 Granularity=1 GranularityUnit=dayIncorrect examples
| Wrong usage | Problem |
|---|---|
Missing --os | CLI reports required flags missing: --os |
Missing --digest-hash | CLI does not enforce it, but the response is incomplete; per Skill convention always pass it |
--biz-module lag (but the hash belongs to crash) | Model is empty; biz-module must match the module the hash belongs to |
--time-range StartTime=...,EndTime=... | CLI separates key=value pairs by space, not comma |
4. get-errors
Correct
aliyun emas-appmonitor get-errors \
--app-key 335581386 --os android --biz-module crash \
--digest-hash 3Q758M33DP0AV \
--time-range StartTime=1714800000000 EndTime=1715404800000 \
--page-index 1 --page-size 10Incorrect examples
| Wrong usage | Problem |
|---|---|
--time-range StartTime=... EndTime=... Granularity=1 GranularityUnit=day | get-errors' TimeRange does not include Granularity (it will be ignored but may affect other validation) |
Missing --page-index / --page-size | CLI rejects with required flags missing |
Blind --page-size 100 | Poor performance; recommend <= 20 and paginate as needed |
5. get-error
Correct
aliyun emas-appmonitor get-error \
--app-key 335581386 --os android --biz-module crash \
--digest-hash 3Q758M33DP0AV \
--client-time 1774517852369 \
--uuid 4422affc-e43f-4739-8718-10ac71fa585a \
--did -4963409598449270935Incorrect examples
| Wrong usage | Problem | Fix |
|---|---|---|
Missing --did | Code: 100011 Parameter Not Enough (even though --help marks it optional) | Take Did from the same item in the get-errors response |
--client-time 1774517852 | Seconds-level timestamp | Use milliseconds (13 digits) |
--did "-4963409598449270935" (extra quotes) | Most shells do not need the quotes; pass the raw value | If Did starts with -, the --did=-4963409598449270935 form is safer |
Daily use of --biz-force true | Pointless cost | Only when the cache is stale |
6. Filter emphasized again
| Good/Bad | Example |
|---|---|
| Good | '{"Operator":"and","SubFilters":["{\"operator\":\"in\",\"key\":\"issueStatus\",\"values\":[1,2,3,4]}"]}' |
| Good | '{"Operator":"or","SubFilters":["{\"operator\":\"like\",\"key\":\"appVersion\",\"values\":[\"2.%\"]}"]}' |
| Bad | '{"Operator":"AND", ...}' (case) |
| Bad | '{"Operator":"and","SubFilters":[{"operator":"in",...}]}' (SubFilter not stringified) |
| Bad | --filter Key=and Operator=and SubFilters='[...]' (attempts the key=value object format) |
7. OS / BizModule combinations
| biz-module | android | iphoneos | harmony | h5 | Notes |
|---|---|---|---|---|---|
| crash | Yes | Yes | Yes | No | available on all 3 mobile platforms |
| anr | Yes | No | No | No | Android only |
| lag | Yes | Yes | Yes | No | 3 platforms |
| custom | Yes | Yes | Yes | No | 3 platforms; Flutter/Unity custom exceptions go here too |
| memory_leak | Yes | Yes | No | No | no Harmony |
| memory_alloc | Yes | Yes | No | No | no Harmony |
When the Skill scans all 6 biz-modules by default, filter out the unsupported combinations per the table above to avoid wasted RPCs.
8. AI-mode closure
| Scenario | Must execute |
|---|---|
| Skill entry | aliyun configure ai-mode enable + set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-emas-apm-query" |
| Skill normal exit | aliyun configure ai-mode disable |
| Skill error / user interrupt | aliyun configure ai-mode disable |
9. Other
- Do NOT print / log AK / SK / STS Token / OAuth token inside the Skill.
- Do NOT call
aliyun configure set --access-key-id ... --access-key-secret ...with plaintext credentials. - Do NOT log
AppSecret/AppRsaSecret. - When credentials need to be supplied, ask the user to run
aliyun configureout-of-band (OAuth preferred) or set environment variables.
Detecting app_key and os from the user's workspace
At runtime this Skill does NOT assume the user's workspace is one of the 6 demo projects. Instead it uses the generic rules below to scan the user's own app project. After a hit, the Skill MUST echo it back to the user for confirmation.
Detection order
1. First determine which project type the user currently has open (or has provided): existence of build.gradle / AndroidManifest.xml -> Android; *.xcodeproj / Info.plist -> iOS; module.json5 + ets/ -> HarmonyOS; pubspec.yaml -> Flutter; Assets/ + ProjectSettings/ + *.cs -> Unity; package.json plus an H5 SDK -> H5. 2. Run the grep / AST rules from the matching platform section. 3. Exactly one hit -> echo and ask the user to confirm; multiple hits -> list all candidates; zero hits -> ask the user proactively. 4. Flutter / Unity cross-platform apps usually ship AppKeys for both Android and iOS; the user must additionally pick which side this query targets.
---
Android (Java / Kotlin)
SDK package: com.aliyun.emas.apm; typical facade class: com.aliyun.emas.apm.Apm.
Common initialization patterns
Apm.preStart(new ApmOptions.Builder()
.setAppKey("123456789")
.setAppSecret("...")
.setAppRsaSecret("...")
.addComponent(ApmCrashAnalysisComponent.class)
.addComponent(ApmPerformanceComponent.class)
.addComponent(ApmRemoteLogComponent.class)
.addComponent(ApmMemMonitorComponent.class)
.build());
Apm.start();grep rules
# Direct assignment in Java / Kotlin source
rg -n --type-add 'kts:*.kts' -t java -t kotlin -t kts \
-e 'setAppKey\s*\(\s*"(\d+)"' \
-e 'APP_KEY\s*=\s*"(\d+)"' \
-e 'appKey\s*=\s*"(\d+)"' <workspace>
# AndroidManifest meta-data
rg -n --glob '**/AndroidManifest.xml' \
-e 'android:name="com\.(alibaba|aliyun)\.[a-zA-Z_.]*[aA]pp[kK]ey"\s+android:value="(\d+)"' <workspace>
# gradle / properties
rg -n --glob '*.gradle*' --glob '*.properties' \
-e 'APM_APP_KEY\s*=\s*"?(\d+)"?' <workspace>Additional sources
BuildConfig.APM_APP_KEY: injected bybuildConfigField "String", "APM_APP_KEY", "\"123456789\""; read the raw definition frombuild.gradle(.kts).- Demo code that reads the App Key dynamically from SharedPreferences: the value usually comes from a constant (
APP_KEY = "...") or a gradle default; just use the constant.
os value
Android project hit -> --os android.
---
iOS (Objective-C / Swift)
SDK entry classes: EAPMApm, EAPMOptions.
Common initialization patterns
EAPMOptions *options = [[EAPMOptions alloc] initWithAppKey:@"123456789"
appSecret:@"..."];
options.appRsaSecret = @"...";
options.sdkComponents = @[ ... ];
[EAPMApm startWithOptions:options];Swift equivalent:
let options = EAPMOptions(appKey: "123456789", appSecret: "...")
options.appRsaSecret = "..."
EAPMApm.start(with: options)grep rules
# OC
rg -n -g '*.{m,mm,h}' \
-e 'initWithAppKey:\s*@"(\d+)"' \
-e 'setAppKey:\s*@"(\d+)"' \
-e '\.appKey\s*=\s*@"(\d+)"' <workspace>
# Swift
rg -n -g '*.swift' \
-e 'EAPMOptions\s*\(\s*appKey:\s*"(\d+)"' \
-e '\.appKey\s*=\s*"(\d+)"' <workspace>
# Common custom keys in Info.plist / xcconfig
rg -n -g '*.plist' -g '*.xcconfig' \
-e 'APMAppKey|AliyunAPMAppKey|EAPMAppKey' <workspace>os value
iOS project hit -> --os iphoneos (not ios).
---
HarmonyOS (ArkTS)
SDK package: @aliyun/apm.
Common initialization patterns
import { APM, APMConfig, EMAS_APM_Config } from '@aliyun/apm';
APM.init(new EMAS_APM_Config({
appKey: '233584108',
context: await getUIAbilityContext(),
appSecret: '...',
...
}));
APM.start();
// Or a plain APMConfig literal
const config: APMConfig = {
context: await getUIAbilityContext(),
appKey: '233584108',
appSecret: '...',
};
APM.init(config, [crashAnalysisApi]);
APM.start();grep rules
rg -n -g '*.{ets,ts,json5,json}' \
-e "appKey:\s*['\"](\d+)['\"]" \
-e "from\s+['\"]@aliyun/apm['\"]" <workspace>os value
HarmonyOS project hit -> --os harmony.
---
Flutter (Dart)
SDK package: alibabacloud_apm / apm_flutter. Core class: ApmOptions.
Common initialization patterns
import 'package:alibabacloud_apm/alibabacloud_apm.dart';
const options = ApmOptions(
appKey: '333854661', // Android
appSecret: '...',
appRsaSecret: '...',
channel: 'store',
);
await Apm.instance.start(options);Cross-platform demos typically keep a per-platform copy of AppKey:
static const ApmOptionsFields defaultIosDeveloperFields = ApmOptionsFields(
appKey: '335628209',
...
);
static const ApmOptionsFields defaultAndroidFields = ApmOptionsFields(
appKey: '333854661',
...
);grep rules
rg -n -g '*.dart' \
-e "ApmOptions\s*\(\s*appKey:\s*['\"](\d+)['\"]" \
-e "appKey:\s*['\"](\d+)['\"]" <workspace>os value
Flutter is cross-platform; always ask the user whether this query targets android or iphoneos. If the grep matches per-platform constants like defaultAndroidFields and defaultIosXxxFields, have the user pick one.
Custom exceptions reported from Dart / Kotlin / Swift / ObjC end up under biz-module=custom, and customErrorLanguage (see ../assets/system-filters/custom-android.json) is tagged Dart; when this Skill queries Flutter custom exceptions, --os is still android / iphoneos.
---
Unity (C#)
SDK package: alicloud-apm. Core classes: Aliyun.Apm.ApmOptions / Aliyun.Apm.Apm.
Common initialization patterns
var options = new ApmOptions(appKey, appSecret, appRsaSecret)
{
SdkComponents = SDKComponents.Crash | SDKComponents.Performance,
Channel = "store",
};
Apm.Start(options);The DemoConfig { public string appKey = "..." } + ApmDemoUI.GetRolePreset pattern is also common in demos.
grep rules
rg -n -g '*.cs' \
-e 'new\s+ApmOptions\s*\(\s*"(\d+)"' \
-e 'AppKey\s*=\s*"(\d+)"' \
-e 'appKey\s*=\s*"(\d+)"' <workspace>If the demo stores AppKey in a ScriptableObject / JSON, do a second pass under Assets/.
os value
Same as Flutter: have the user pick Android or iOS. Unity custom exceptions (C#) are reported to custom with customErrorLanguage=C# / CSharp (exact value per ../assets/system-filters/custom-android.json).
---
H5 (JavaScript / TypeScript)
SDK class: EMAS_APM (constructor-based init).
Common initialization patterns
<script src="emas-apm.min.js"></script>
<script>
var sdk = new EMAS_APM({
appKey: '335102493',
appSecret: '...',
appVersion: '1.0.0',
});
sdk.start();
</script>Or as an ES module:
import { EMAS_APM } from '@alicloud/apm-h5-sdk';
const sdk = new EMAS_APM({ appKey: '335102493', appSecret: '...' });
sdk.start();grep rules
rg -n -g '*.{js,ts,jsx,tsx,vue,html,htm}' \
-e "new\s+EMAS_APM\s*\(\s*\{\s*appKey:\s*['\"]([^'\"]+)['\"]" \
-e "appKey:\s*['\"]([A-Za-z0-9]+)['\"]" <workspace>H5 AppKeys are not necessarily pure digits, but they are still issued by the console.
os value
H5 project -> --os h5. Note: H5 bizModules are typically h5JsError / h5WhiteScreen / h5Pv; this Skill focuses on the 6 mobile types. For H5, consult the APM console H5 section; it is out of scope for this Skill.
---
Generic fallback
When every grep misses, the Skill should ask the user:
I could not find APM SDK initialization code in the current workspace. Please provide:
>
1. App Key (find it in the EMAS console app detail page; usually 9 digits)
2. Platform:android/iphoneos/harmony/h5(for Flutter / Unity, pick android or iphoneos per the actual build target)
Only enter the main flow after confirmation.
RAM permissions and failure handling
This Skill uses the aliyun-cli-emas-appmonitor plugin to call the EMAS AppMonitor OpenAPI (regionId=cn-shanghai, product=emas-appmonitor, version=2019-06-11). Below is the minimum set of RAM actions required to call the 4 core APIs.
RamCode: EMAS AppMonitor's RAM code isemasha(notemas-appmonitor). The action prefix for custom policies isemasha:. EMAS AppMonitor does not support resource-level authorization, soResourcemust be"*".
Required actions
| CLI subcommand | RAM action | Purpose |
|---|---|---|
aliyun emas-appmonitor get-issues | emasha:ViewIssues | Fetch aggregated error list |
aliyun emas-appmonitor get-issue | emasha:ViewIssue | Fetch details of a single aggregated error |
aliyun emas-appmonitor get-errors | emasha:ViewErrors | Fetch sample list under an aggregated error |
aliyun emas-appmonitor get-error | emasha:ViewError | Fetch full details of a single sample |
Recommended policy
Read-only permission policy. Resource is fixed to "*" because EMAS AppMonitor does not support resource-level authorization:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"emasha:ViewIssues",
"emasha:ViewIssue",
"emasha:ViewErrors",
"emasha:ViewError"
],
"Resource": "*"
}
]
}Or attach the official system policy directly:
| System policy | Scope |
|---|---|
AliyunEMASAppMonitorReadOnlyAccess | emasha:View* + Resource:"*" (sufficient for this Skill) |
AliyunEMASAppMonitorFullAccess | emasha:* + Resource:"*" (grants write access too — not needed here) |
Permission Failure Handling
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors during execution, follow this process:
1. Read references/ram-policies.md to get the full list of permissions required by this Skill2. Invoke the ram-permission-diagnose skill to guide the user through requesting the needed permissions3. Pause and wait for the user to confirm the required permissions have been granted before continuing
Common permission errors
| Symptom | Explanation | Action |
|---|---|---|
Code: NoPermission | The current profile lacks the action | Attach the policy above and retry |
Code: Forbidden.RAM | The RAM sub-user is disabled or the policy has not taken effect | In the RAM console, confirm the policy is attached and the user is enabled |
HTTP 403 + SignatureDoesNotMatch | Wrong AK/SK | Check the profile with aliyun configure list; re-run aliyun configure if needed (do NOT expose AK/SK in the conversation) |
InvalidAccessKeyId.NotFound | AK is deleted / disabled | Issue a new AK in the RAM console |
Related resources
- EMAS console: https://emas.console.aliyun.com/
- RAM console: https://ram.console.aliyun.com/
- Official read-only system policy: https://help.aliyun.com/zh/ram/developer-reference/aliyunemasappmonitorreadonlyaccess
- Official full-access system policy: https://help.aliyun.com/zh/ram/developer-reference/aliyunemasappmonitorfullaccess
- AppMonitor RamCode (action prefix for custom policies):
emasha
Related skills
FAQ
Which issue types and clients are covered?
Crash, ANR, lag, custom, memory_leak, and memory_alloc across Android, iOS, HarmonyOS, Flutter, and Unity; H5 is out of scope.
Does it modify data?
No. It only calls the 4 read-only APIs get-issues, get-issue, get-errors, and get-error.