omni-gateway-benchmark
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRun Gateway Benchmark
运行网关基准测试
Overview
概述
This skill drives the benchmark harness in to measure Flex Gateway throughput,
latency, and resource use under configurable API counts and policies. It provisions a
dedicated EKS cluster, deploys Flex + an upstream echo service, runs a k6 , exports
Grafana dashboards as PNGs, and emits a self-contained Markdown report per run.
scripts/TestRunDetailed architecture, dashboards, idempotency design, and design rationale are documented
in . Read it before extending the harness; this skill assumes it
as background.
references/ARCHITECTURE.mdmermaid
flowchart TD
Start{What do you want to do?}
Start -->|First-time setup| FT[Prerequisites + Registration + Push Upstream]
Start -->|Provision infra| UP["make up — EKS cluster"]
Start -->|Deploy + run a single benchmark| RUN["make benchmark or make run"]
Start -->|Re-run with new scenario knobs| KNOB[Edit env + make run]
Start -->|Retrieve results| REP[reports/RUN_ID/]
Start -->|Reset between sessions| CLEAN["make clean-deployment"]
Start -->|Stop AWS billing| DOWN["make down — destructive"]此 skill 驱动 中的基准测试工具,在可配置的 API 数量和策略下测量 Flex Gateway 的吞吐量、延迟和资源使用情况。它会置备专用 EKS 集群,部署 Flex 和上游回显服务,运行 k6 ,将 Grafana 仪表板导出为 PNG,并为每次运行生成一份自包含的 Markdown 报告。
scripts/TestRun详细架构、仪表板、幂等性设计和设计理由记录在 中。在扩展此工具之前请先阅读该文档;本 skill 将其作为背景知识。
references/ARCHITECTURE.mdmermaid
flowchart TD
Start{What do you want to do?}
Start -->|First-time setup| FT[Prerequisites + Registration + Push Upstream]
Start -->|Provision infra| UP["make up — EKS cluster"]
Start -->|Deploy + run a single benchmark| RUN["make benchmark or make run"]
Start -->|Re-run with new scenario knobs| KNOB[Edit env + make run]
Start -->|Retrieve results| REP[reports/RUN_ID/]
Start -->|Reset between sessions| CLEAN["make clean-deployment"]
Start -->|Stop AWS billing| DOWN["make down — destructive"]Safety and Cost Guardrails
安全与成本护栏
The harness provisions billable AWS infrastructure (EKS control plane, NAT gateway, EBS
volumes, c6i.2xlarge nodes, ECR). Two operations are destructive and must be confirmed with
the user before executing — never run them autonomously based on inferred intent:
| Operation | Effect | Confirm before running |
|---|---|---|
| Read-only checks on CLIs, docker daemon, AWS auth, | No — safe; never mutates state |
| Generates | Confirm before re-running with |
| Creates VPC + EKS + ECR; starts AWS billing | Yes — confirm region, cluster name, and that costs are expected |
| Destroys all infra including the cluster, ECR repository contents, and Terraform state references | Yes — confirm the user has retrieved any reports they want to keep |
| Removes Flex + upstream + k6 TestRuns, keeps cluster | Safe to run between runs; preserves billing-relevant infra |
If is set in , runs automatically at the end
of the pipeline. Verify this is the user's intent before invoking with that
flag set.
TEARDOWN=1.envmake benchmarkmake downmake benchmark此工具会置备需要付费的 AWS 基础设施(EKS control plane、NAT gateway、EBS volumes、c6i.2xlarge nodes、ECR)。其中两项操作具有破坏性,执行前必须向用户确认——绝不可根据推测出的意图自主执行:
| 操作 | 效果 | 执行前是否确认 |
|---|---|---|
| 对 CLI、docker daemon、AWS auth、 | 否——安全操作;绝不改变状态 |
| 生成 | 使用 |
| 创建 VPC + EKS + ECR;开始产生 AWS 费用 | 是——确认区域、集群名称以及费用符合预期 |
| 销毁所有基础设施,包括集群、ECR repository 内容和 Terraform state 引用 | 是——确认用户已获取需要保留的所有报告 |
| 移除 Flex + upstream + k6 TestRuns,保留集群 | 可在运行之间安全执行;保留会产生费用的基础设施 |
如果 中设置了 , 会在流水线结束时自动运行 。在带此标志调用 前,务必确认这是用户的意图。
.envTEARDOWN=1make benchmarkmake downmake benchmarkStep 1 — Verify prerequisites
第 1 步——验证前置条件
All commands run from (where the
lives — the shell scripts the Makefile calls are under ).
skills/omni-gateway/omni-gateway-benchmark/Makefilescripts/Run the bundled preflight; it covers every check below in one pass and prints a remediation
command for each gap:
bash
make preflightWhat verifies:
make preflight- Required CLIs present: ,
terraform,kubectl,helm,aws(withdocker),buildx,flexctl,curl,jq,python3,envsubst,sha256sum.shellcheck - Docker engine — client + server versions reported, and confirms the daemon is reachable on the current context.
docker info - AWS identity (), the resolved
aws sts get-caller-identity, andAWS_PROFILEloaded fromAWS_REGION..env - exists and
.envis present..run/registration/registration.yaml - When includes
POLICIES, bothclient-id-enforcementandCLIENT_IDare non-empty.CLIENT_SECRET - Egress to (the Helm chart source).
flex-packages.anypoint.mulesoft.com
Exits non-zero if any check fails — wire it into your shell pipeline () so a missing prerequisite stops the run before AWS billing starts.
make preflight && make upThe AWS principal must have permissions to create EC2, EKS, VPC, ECR, IAM, and EBS resources
in the target region.
所有命令都在 下运行(Makefile 位于该目录——Makefile 调用的 shell 脚本位于 中)。
skills/omni-gateway/omni-gateway-benchmark/scripts/运行内置的 preflight;它一次完成以下所有检查,并为每项缺失内容打印修复命令:
bash
make preflightmake preflight- 必需的 CLI 是否存在:、
terraform、kubectl、helm、aws(包含docker)、buildx、flexctl、curl、jq、python3、envsubst、sha256sum。shellcheck - Docker engine——报告 client 和 server 版本,并通过 确认当前上下文中的 daemon 可以访问。
docker info - AWS identity()、解析出的
aws sts get-caller-identity,以及从AWS_PROFILE加载的.env。AWS_REGION - 是否存在,以及
.env是否存在。.run/registration/registration.yaml - 当 包含
POLICIES时,client-id-enforcement和CLIENT_ID是否均非空。CLIENT_SECRET - 是否能够访问 (Helm chart source)。
flex-packages.anypoint.mulesoft.com
如果任何检查失败,命令会以非零状态退出——将其接入 shell 流水线(),以便在开始产生 AWS 费用前因缺少前置条件而停止运行。
make preflight && make upAWS principal 必须拥有在目标区域中创建 EC2、EKS、VPC、ECR、IAM 和 EBS 资源的权限。
Step 2 — Configure the environment
第 2 步——配置环境
Copy the example and fill in scenario knobs:
.envbash
cp .env.example .envEdit based on the scenario the user wants. Reference table — the harness reads every
variable below:
.env| Variable | Default | Description |
|---|---|---|
| | AWS region for the EKS cluster |
| | EKS cluster + VPC name prefix |
| | Flex Gateway Helm chart and image version |
| | Override to use a private mirror |
| (empty → | Override to decouple tag from version |
| | Number of |
| | Comma-list of policies to attach per API |
| | Target requests per second (constant-arrival-rate) |
| | Pre-allocated k6 virtual users |
| | k6 test duration (e.g., |
| (empty) | Required when |
| (empty) | Required when |
| | Local port used by |
| | Set to |
| | Path to Flex local-mode registration |
Validation checklist before continuing:
- If contains
POLICIES, bothclient-id-enforcementandCLIENT_IDare set.CLIENT_SECRET - If (empty), no auth headers are required.
POLICIES= - matches a chart version published at
FLEX_VERSION.flex-packages.anypoint.mulesoft.com/helm
复制示例 并填写场景参数:
.envbash
cp .env.example .env根据用户想要的场景编辑 。参考表如下——此工具会读取以下每个变量:
.env| 变量 | 默认值 | 说明 |
|---|---|---|
| | EKS 集群所在的 AWS 区域 |
| | EKS 集群和 VPC 名称前缀 |
| | Flex Gateway Helm chart 和镜像版本 |
| | 覆盖此值可使用私有镜像仓库 |
| (为空 → | 覆盖此值可解除 tag 与版本之间的关联 |
| | 要创建的 |
| | 每个 API 要附加的策略,以逗号分隔的列表表示 |
| | 目标每秒请求数(constant-arrival-rate) |
| | 预分配的 k6 virtual users 数量 |
| | k6 测试时长(例如 |
| (为空) | 当 |
| (为空) | 当 |
| | |
| | 设置为 |
| | Flex local-mode registration 的路径 |
继续执行前的验证清单:
- 如果 包含
POLICIES,则必须同时设置client-id-enforcement和CLIENT_ID。CLIENT_SECRET - 如果 (为空),则不需要 auth headers。
POLICIES= - 必须与
FLEX_VERSION上已发布的 chart 版本一致。flex-packages.anypoint.mulesoft.com/helm
Step 3 — Generate the Flex registration artifact (one-time)
第 3 步——生成 Flex registration 工件(一次性)
The benchmark runs Flex in local mode. Use the bundled target — it generates the artifact
once and, when includes , prompts for /
and writes them into :
POLICIESclient-id-enforcementCLIENT_IDCLIENT_SECRET.envbash
make prepare-registrationBehavior:
- Skips registration generation if already exists. To rotate the gateway identity (forces a Flex redeploy), re-run with
.run/registration/registration.yaml— the existing file is backed up toFORCE=1 make prepare-registrationfirst.*.bak - Skips the credential prompt unless contains
POLICIES.client-id-enforcement - Skips overwriting existing non-empty /
CLIENT_IDunlessCLIENT_SECRET.FORCE=1 - Supports non-interactive use: .
CLIENT_ID=... CLIENT_SECRET=... make prepare-registration
Manual equivalent (use only if is being driven outside the harness):
flexctlbash
flexctl registration create \
--connected=false \
--output-directory=.run/registrationDo not commit — it is gateway identity material and
is gitignored.
.run/registration/registration.yaml.run/基准测试以 local mode 运行 Flex。使用内置 target——它只生成一次该工件;当 包含 时,提示输入 / 并将其写入 :
POLICIESclient-id-enforcementCLIENT_IDCLIENT_SECRET.envbash
make prepare-registration行为:
- 如果 已存在,则跳过 registration 生成。要轮换网关身份(会强制重新部署 Flex),请使用
.run/registration/registration.yaml重新运行——现有文件会先备份为FORCE=1 make prepare-registration。*.bak - 除非 包含
POLICIES,否则跳过凭据提示。client-id-enforcement - 除非使用 ,否则跳过对现有非空
FORCE=1/CLIENT_ID的覆盖。CLIENT_SECRET - 支持非交互式使用:。
CLIENT_ID=... CLIENT_SECRET=... make prepare-registration
等效的手动操作(仅在工具之外驱动 时使用):
flexctlbash
flexctl registration create \
--connected=false \
--output-directory=.run/registration不要提交 ——它属于网关身份材料,并且 已加入 gitignore。
.run/registration/registration.yaml.run/Step 4 — Build and push the upstream image (one-time)
第 4 步——构建并推送 upstream 镜像(一次性)
The k6 driver hits an in-cluster echo server. The image must exist in ECR before
runs:
deploy-upstreambash
make push-upstreamThis builds for via (cross-compiling on Apple Silicon) and pushes
to the ECR repository created by Terraform. If has not yet run, this fails because
the ECR repo does not exist — provision infra first (Step 5).
linux/amd64docker buildxmake upSkip condition: If has already been run and the upstream image is unchanged,
this step is a no-op. The deploy-upstream hash check will skip redeployment if the rendered
manifest matches the live state.
make upk6 driver 会向集群内的 echo server 发起请求。必须在 运行之前,镜像已存在于 ECR 中:
deploy-upstreambash
make push-upstream此操作通过 为 构建镜像(在 Apple Silicon 上进行 cross-compiling),并推送到 Terraform 创建的 ECR repository。如果尚未运行 ,此操作会失败,因为 ECR repository 尚不存在——请先置备基础设施(第 5 步)。
docker buildxlinux/amd64make up**跳过条件:**如果已经运行过 且 upstream 镜像未发生变化,则此步骤不会执行任何操作。如果渲染后的 manifest 与当前状态一致, 的 hash 检查会跳过重新部署。
make updeploy-upstreamStep 5 — Provision infrastructure (destructive on AWS billing)
第 5 步——置备基础设施(会在 AWS 上产生费用且具有破坏性)
Confirm with the user before running. This creates a VPC, EKS cluster, ECR, and installs the
observability + k6-operator Helm releases:
bash
make upExpected duration: 15–25 minutes for a fresh cluster. Re-running on an existing cluster is
idempotent and finishes in seconds.
After completion, verify the cluster is reachable:
bash
aws eks update-kubeconfig --region "$AWS_REGION" --name "$CLUSTER_NAME"
kubectl get nodesYou should see two nodes (, tainted) and three nodes
(, ).
systemt3.largeworkloadc6i.2xlargenode-role=workload运行前请向用户确认。这会创建 VPC、EKS 集群和 ECR,并安装 observability + k6-operator Helm releases:
bash
make up预计耗时:新建集群需要 15–25 分钟。在现有集群上重新运行具有幂等性,几秒内即可完成。
完成后,验证集群可以访问:
bash
aws eks update-kubeconfig --region "$AWS_REGION" --name "$CLUSTER_NAME"
kubectl get nodes应该看到两个 nodes(,带 taint)和三个 nodes(,)。
systemt3.largeworkloadc6i.2xlargenode-role=workloadStep 6 — Deploy Flex + upstream
第 6 步——部署 Flex + upstream
These targets are idempotent and content-addressed via SHA-256 hashes stored as pod template
annotations / Deployment labels. Re-running with unchanged config is a no-op:
bash
make deploy-upstream # bench-upstream Service + Deployment in 'default' namespace
make deploy-flex # Flex Gateway Helm release + CRD resources in 'flex' namespacedeploy-flexflex-config.yamlassets/config/flex-config-header.yamlassets/config/snippets/api-instance.yamlassets/config/policies/<policy>.yamlhelm upgradekubectl apply这些 target 具备幂等性,并通过存储在 pod template annotations / Deployment labels 中的 SHA-256 hashes 实现基于内容寻址。配置未变时重新运行不会执行任何操作:
bash
make deploy-upstream # bench-upstream Service + Deployment in 'default' namespace
make deploy-flex # Flex Gateway Helm release + CRD resources in 'flex' namespacedeploy-flexassets/config/flex-config-header.yamlassets/config/snippets/api-instance.yamlassets/config/policies/<policy>.yamlflex-config.yamlhelm upgradekubectl applyStep 7 — Run the benchmark
第 7 步——运行基准测试
A single load test, including report generation:
bash
make runThis sequences: render → create the per-run ConfigMap → apply the k6
CRD → poll until (default timeout 1800s) → port-forward Grafana and export PNGs →
emit the Markdown report.
scenario.jsTestRunfinishedRUN_ID20260612T140530Zbash
RUN_ID=baseline-1.13.0-rl make runFor the full pipeline ( → deploys → , optionally if ):
uprundownTEARDOWN=1bash
make benchmarkRe-running with different scenario knobs does not require redeploying:
bash
RPS=2000 VUS=400 DURATION=5m make run
N_APIS=50 POLICIES= make run # 50 APIs, no policies
FLEX_VERSION=1.14.0 make deploy-flex && make runIf a is already in flight in the namespace, the new run will
fail with a name collision — wait for the previous run to finish or run
to clear stale TestRuns.
TestRunk6-operator-systemmake clean-deployment执行单次负载测试,包括报告生成:
bash
make run此过程会依次执行:渲染 → 创建每次运行的 ConfigMap → 应用 k6 CRD → 轮询直至 (默认超时 1800s)→ 对 Grafana 进行端口转发并导出 PNG → 生成 Markdown 报告。
scenario.jsTestRunfinishedRUN_ID20260612T140530Zbash
RUN_ID=baseline-1.13.0-rl make run如需运行完整流水线( → 各次部署 → ,如果 则最后执行 ):
uprunTEARDOWN=1downbash
make benchmark使用不同场景参数重新运行时,无需重新部署:
bash
RPS=2000 VUS=400 DURATION=5m make run
N_APIS=50 POLICIES= make run # 50 APIs, no policies
FLEX_VERSION=1.14.0 make deploy-flex && make run如果 namespace 中已有正在执行的 ,新运行会因名称冲突而失败——请等待上一次运行结束,或运行 清除过期的 TestRuns。
k6-operator-systemTestRunmake clean-deploymentStep 8 — Retrieve results
第 8 步——获取结果
Each run persists artifacts under :
reports/<RUN_ID>/| Artifact | Path | Notes |
|---|---|---|
| Markdown report | | Scenario params, raw k6 metrics ( |
| Dashboard PNGs | | 1600×900, one per dashboard (Flex / Envoy, Flex / Pods, k6 / Driver, plus default kube-prometheus-stack boards) |
Ephemeral render output lives under (, ,
, ) and is safe to delete.
.run/<RUN_ID>/flex-config.yamlscenario.jsflex-values.yamlupstream-deployment.yamlTo re-export Grafana for the most recent run without re-running k6:
bash
make reportTo open Grafana interactively while a run is in flight (anonymous Viewer is
enabled; no login required):
bash
make watch # opens port-forward + prints live URLs + opens k6 dashboard每次运行都会在 下持久保存以下工件:
reports/<RUN_ID>/| 工件 | 路径 | 说明 |
|---|---|---|
| Markdown report | | 场景参数、原始 k6 metrics( |
| Dashboard PNGs | | 1600×900,每个仪表板一张(Flex / Envoy、Flex / Pods、k6 / Driver,以及默认的 kube-prometheus-stack 仪表板) |
临时渲染输出保存在 下(、、、),可以安全删除。
.run/<RUN_ID>/flex-config.yamlscenario.jsflex-values.yamlupstream-deployment.yaml如需在不重新运行 k6 的情况下重新导出最近一次运行的 Grafana 内容:
bash
make report如需在运行期间交互式打开 Grafana(已启用匿名 Viewer;无需登录):
bash
make watch # opens port-forward + prints live URLs + opens k6 dashboardor, manually:
or, manually:
kubectl -n monitoring port-forward svc/kps-grafana 3000:80
kubectl -n monitoring port-forward svc/kps-grafana 3000:80
`make watch` accepts `RUN_ID=<id>` to filter the k6 / Driver dashboard to a
specific run, and `OPEN_BROWSER=0` to skip the auto-open.
---
`make watch` 接受 `RUN_ID=<id>`,用于将 k6 / Driver dashboard 筛选到特定运行;也接受 `OPEN_BROWSER=0` 以跳过自动打开浏览器。
---Step 9 — Clean up
第 9 步——清理
Two cleanup paths, ordered by aggressiveness:
bash
make clean-deployment # Remove Flex + upstream + k6 TestRuns; keep cluster + observability
make down # terraform destroy — destroys everything (confirm with user first)clean-deploymentmake downreports/提供两条清理路径,按破坏性从低到高排列:
bash
make clean-deployment # Remove Flex + upstream + k6 TestRuns; keep cluster + observability
make down # terraform destroy — destroys everything (confirm with user first)clean-deploymentmake downreports/Scenario Cookbook
场景示例
Common parameter combinations:
| Goal | Configuration |
|---|---|
| Baseline, no policies | |
| Rate-limit only | |
| Client-ID enforcement only | |
| Both policies, high fan-out | |
| Version comparison | Run twice with |
The k6 thresholds in the rendered scenario are hard failures: ,
, . A run that exceeds them will surface in the report's
line — the harness still completes and reports.
http_req_failed < 1%p(95) < 500msp(99) < 1000mschecks_succeeded常见参数组合:
| 目标 | 配置 |
|---|---|
| 无策略的基线测试 | |
| 仅启用 rate-limit | |
| 仅启用 client-ID enforcement | |
| 同时启用两种策略和高 fan-out | |
| 版本比较 | 分别使用 |
渲染后的场景中,k6 thresholds 属于 hard failures:、、。超过这些阈值的运行会显示在报告的 行中——此工具仍会完成运行并生成报告。
http_req_failed < 1%p(95) < 500msp(99) < 1000mschecks_succeededTroubleshooting
故障排查
| Problem | Likely cause | Fix |
|---|---|---|
| AWS principal lacks EKS/VPC/ECR/IAM permissions | Attach a policy granting the missing actions; verify with |
| | Run |
| | Check |
| k6 TestRun stuck in | |
| Report missing PNGs | Grafana port-forward race or image-renderer plugin unavailable | Re-run |
| | Set both in |
Flex pod in | Missing or stale | Regenerate via |
| Hash collision (rare) or annotation patch failed | Force redeploy: |
| Previous TestRun with same | |
For deeper triage of the gateway itself (not the harness), invoke or
.
omni-gateway-logsomni-gateway-diagnose| 问题 | 可能原因 | 修复方法 |
|---|---|---|
| AWS principal 缺少 EKS/VPC/ECR/IAM 权限 | 附加授予缺失操作的 policy;通过 |
| 尚未运行 | 先运行 |
| 公共 chart repo 中未发布 | 检查 |
| k6 TestRun 卡在 | |
| 报告缺少 PNGs | Grafana port-forward 竞态或 image-renderer plugin 不可用 | 重新运行 |
| | 在 |
部署 | | 通过 |
| Hash 冲突(很少见)或 annotation patch 失败 | 强制重新部署: |
| namespace 中仍存在具有相同 | 运行 |
如需更深入地排查网关本身的问题(而非此工具的问题),请调用 或 。
omni-gateway-logsomni-gateway-diagnoseAvailable Scripts
可用脚本
The targets above are the supported entry points. They delegate to the scripts in
, listed here for reference when debugging the harness or composing steps manually.
Every script reads its configuration from and accepts for usage:
makescripts/.env--help| Script | Driven by | Purpose |
|---|---|---|
| | Read-only check of every CLI, daemon, credential, and one-time artifact before any run |
| | Generate the local-mode Flex registration artifact; collect |
| | Build the upstream echo image for |
| | Deploy (or hash-skip) the |
| | Render config, then deploy (or hash-skip) the Flex Gateway Helm release + CRDs |
| | Assemble |
| | Block until the Flex Gateway deployment finishes rolling out |
| | Render the k6 |
| | Create the per-run k6 |
| | Poll a k6 |
| | Port-forward Grafana and export dashboard PNGs for a time window |
| | Parse k6 summary from runner logs and emit the per-run Markdown report |
| | Open a Grafana port-forward and print live dashboard URLs |
| | Tear down per-run workloads while keeping the cluster, observability, and k6-operator |
上述 targets 是受支持的入口点。它们会将工作委托给 中的脚本;下表列出这些脚本,供调试工具或手动编排步骤时参考。
每个脚本均从 读取配置,并接受 查看用法:
makescripts/.env--help| 脚本 | 驱动方式 | 用途 |
|---|---|---|
| | 在任何运行开始前,只读检查所有 CLI、daemon、凭据和一次性工件 |
| | 生成 local-mode Flex registration 工件;按需收集 |
| | 为 |
| | 部署(或通过 hash 跳过) |
| | 渲染配置,然后部署(或通过 hash 跳过)Flex Gateway Helm release + CRDs |
| | 根据 header + API-instance + policy snippets 组装 |
| | 阻塞等待 Flex Gateway deployment 完成 rollout |
| | 根据场景参数渲染 k6 |
| | 创建本次运行的 k6 |
| | 轮询 k6 |
| | 对 Grafana 进行端口转发,并导出指定时间窗口内的 dashboard PNGs |
| | 从 runner logs 中解析 k6 summary,并为本次运行生成 Markdown report |
| | 打开 Grafana port-forward 并打印实时 dashboard URLs |
| | 拆除每次运行的工作负载,同时保留集群、observability 和 k6-operator |
Related Jobs
相关 Jobs
- — install Flex on Linux/Docker/Kubernetes (this skill provisions its own EKS install for benchmarking; use
omni-gateway-installfor production deployments)omni-gateway-install - — validate the rendered
omni-gateway-configbeforeflex-config.yamlmake deploy-flex - — parse Flex pod logs when a benchmark surfaces unexpected failures
omni-gateway-logs - — triage non-harness gateway issues observed during a run
omni-gateway-diagnose
- ——在 Linux/Docker/Kubernetes 上安装 Flex(此 skill 会为基准测试置备自己的 EKS 安装;生产部署应使用
omni-gateway-install)omni-gateway-install - ——在执行
omni-gateway-config前验证渲染后的make deploy-flexflex-config.yaml - ——当基准测试出现意外失败时解析 Flex pod logs
omni-gateway-logs - ——排查运行期间发现且并非由工具导致的网关问题
omni-gateway-diagnose