Skip to content

参数配置

安装时如何跳过 AVX2 检测,以及安装完成后如何修改登录账号、配置 Doris 连接账号与 FE/BE 地址、调整 Ingest 管道任务参数、配置 Trace resource 忽略过滤、SQL 标准化、调整遥测数据存储时长。目录与启停见 Docker 运维Kubernetes 运维;容量与更多调优项见 性能优化与容量规划

1. 修改登录用户名与密码

开源版 Web 使用启动时注入的内置账号(内存 seed),界面暂无改密入口。通过环境变量覆盖后重启 ai-apm-web 即可生效。

配置项(YAML)环境变量默认值
apm.security.seed-usernameAPM_SECURITY_SEED_USERNAMEadmin
apm.security.seed-passwordAPM_SECURITY_SEED_PASSWORDDatabuff@123

修改后请用新账号重新登录;旧会话/Token 将不可用。密码会出现在环境变量中,请按主机权限与密钥管理规范保护。 start.sh / 安装脚本结束时会从运行中的 Web 容器读取并打印当前生效的账号密码(不再写死默认值)。

Docker

推荐使用 docker-compose.override.yml(安装脚本自动合并;升级不会覆盖该文件):

bash
cd /opt/databuff-ai-apm   # 或 echo $APM_INSTALL_DIR

cat > docker-compose.override.yml <<'EOF'
services:
  ai-apm-web:
    environment:
      APM_SECURITY_SEED_USERNAME: "youruser"
      APM_SECURITY_SEED_PASSWORD: "your-strong-password"
EOF

docker compose up -d ai-apm-web
docker exec ai-apm-web printenv | grep '^APM_SECURITY_SEED_'

也可直接编辑 docker-compose.ymlai-apm-web.environment,但 升级会覆盖 docker-compose.yml,需事后重新改回或改用 override。

Kubernetes

在 ConfigMap 中追加变量并重启 Web:

bash
kubectl -n databuff edit configmap ai-apm-config

data: 下增加(注意缩进与引号):

yaml
  APM_SECURITY_SEED_USERNAME: "youruser"
  APM_SECURITY_SEED_PASSWORD: "your-strong-password"

保存后重启并验证:

bash
kubectl -n databuff rollout restart deploy/ai-apm-web
kubectl -n databuff rollout status deploy/ai-apm-web
kubectl -n databuff exec deploy/ai-apm-web -- printenv | grep '^APM_SECURITY_SEED_'

也可只改 Deployment 的 envkubectl -n databuff edit deploy/ai-apm-web),效果相同。

升级注意:再次执行 install.sh / start.shkubectl apply 仓库内的 configmap.yaml,可能冲掉手工追加的键。升级后请重新写入,或在本地维护补丁清单。

2. 配置 Doris 用户名与密码

Web / Ingest 通过 JDBC 与 Stream Load 连接 Doris 时使用的账号(不是上一节的 Web 登录账号)。默认与开箱 Doris 一致:root、空密码。

组件配置项(YAML)环境变量默认值
Webapm.doris.usernameDORIS_USERroot
Webapm.doris.passwordDORIS_PASSWORD
Ingestingest.doris.usernameDORIS_USERroot
Ingestingest.doris.passwordDORIS_PASSWORD

两边共用同一组环境变量;改密后须同时重启 ai-apm-webai-apm-ingest

顺序:先在 Doris 内改密或建用户(如 SET PASSWORD FOR 'root' = PASSWORD('your-strong-password');),再改应用侧环境变量。只改应用配置、Doris 仍是空密码时会连不上。

Docker

推荐写入 docker-compose.override.yml(Web、Ingest 都要设):

bash
cd /opt/databuff-ai-apm   # 或 echo $APM_INSTALL_DIR

cat > docker-compose.override.yml <<'EOF'
services:
  ai-apm-web:
    environment:
      DORIS_USER: "root"
      DORIS_PASSWORD: "your-strong-password"
  ai-apm-ingest:
    environment:
      DORIS_USER: "root"
      DORIS_PASSWORD: "your-strong-password"
EOF

docker compose up -d ai-apm-web ai-apm-ingest
docker exec ai-apm-web printenv | grep '^DORIS_USER\|^DORIS_PASSWORD'
docker exec ai-apm-ingest printenv | grep '^DORIS_USER\|^DORIS_PASSWORD'

若同一 override 已有其它项,在对应 services 下追加即可,勿整文件覆盖。

Kubernetes

bash
kubectl -n databuff edit configmap ai-apm-config

data: 下增加:

yaml
  DORIS_USER: "root"
  DORIS_PASSWORD: "your-strong-password"

然后重启 Web 与 Ingest:

bash
kubectl -n databuff rollout restart deploy/ai-apm-web deploy/ai-apm-ingest
kubectl -n databuff rollout status deploy/ai-apm-web
kubectl -n databuff rollout status deploy/ai-apm-ingest
kubectl -n databuff exec deploy/ai-apm-web -- printenv | grep '^DORIS_USER\|^DORIS_PASSWORD'

与登录账号相同:start.sh / install.sh 重新 apply ConfigMap 后需再写入自定义键。密码会出现在环境变量中,请按主机权限与密钥管理规范保护。

3. 配置 Doris FE / BE 地址

支持 逗号分隔的多 FE / 多 BEhosthost:port 列表 + 健康轮询)。单节点写法与一键安装默认不变。

各端口做什么

端口(默认)环境变量谁在用做什么
9030DORIS_FE_QUERY_PORTWeb、IngestFE JDBC 查询(MySQL 协议读数)
8030DORIS_FE_HTTP_PORT主要是 IngestFE HTTP;仅当未配置 DORIS_BE_HTTP_HOST 时,Stream Load 先打 FE _stream_load,再 307 到 BE
8040DORIS_BE_HTTP_PORT仅 IngestBE HTTP;配置了 DORIS_BE_HTTP_HOST 时 Stream Load 直连 BE(推荐)

一键安装默认会配 DORIS_BE_HTTP_HOST,写入走 BE:8040,日常几乎用不到 8030。Web 查数只走 9030,不走 Stream Load,也没有 BE 配置项。

text
查询:  Web/Ingest  --JDBC-->  FE:9030
写入:  Ingest  --Stream Load-->  BE:8040     (配了 BE,默认)
   或:  Ingest  --Stream Load-->  FE:8030 -307-> BE   (未配 BE)

参数一览

用途组件配置项(YAML)环境变量默认值
FE 主机(可多值)Web / Ingestapm.doris.fe-host / ingest.doris.fe-hostDORIS_FE_HOST127.0.0.1
FE 查询端口(JDBC)Web / Ingest*.fe-query-portDORIS_FE_QUERY_PORT9030
FE HTTP 端口(仅「不配 BE、走 FE Stream Load」时用到)Ingest(为主)*.fe-http-portDORIS_FE_HTTP_PORT8030
BE HTTP 主机(可多值,Stream Load)仅 Ingestingest.doris.be-http-hostDORIS_BE_HTTP_HOST空(见下)
BE HTTP 端口(host 未写端口时的默认值)仅 Ingestingest.doris.be-http-portDORIS_BE_HTTP_PORT8040

一键安装 Docker / K8s 默认:

环境变量Docker Compose 默认说明
DORIS_FE_HOSTai-apm-doris-feWeb、Ingest JDBC 与(可选)FE HTTP 的主机
DORIS_BE_HTTP_HOSTai-apm-doris-beIngest 直连 BE 做 Stream Load

地址与端口写法

FE / BE 的 *_HOST 都支持下面三种(逗号分隔,可混用「带端口 / 不带端口」):

写法FE 示例BE 示例
单主机DORIS_FE_HOST=fe1DORIS_BE_HTTP_HOST=be1
多主机(共享端口)DORIS_FE_HOST=fe1,fe2DORIS_BE_HTTP_HOST=be1,be2
多主机(每条自带端口)DORIS_FE_HOST=fe1:19030,fe2:19031DORIS_BE_HTTP_HOST=be1:8040,be2:8041

未写端口时,用上表对应 PORT 变量;变量也未设则用默认 9030 / 8030 / 8040。

说明:

  • fe1,fe2:JDBC 用 9030(query);若走 FE Stream Load 则用 8030(http)——两套默认各自生效。
  • fe1:p1,fe2:p2:该条目显式端口对 JDBC 与 FE HTTP 都生效(同一 host 字段只有一个端口)。query/http 端口不同时,优先 fe1,fe2 + 独立 PORT 变量。
  • be1,be2 + DORIS_BE_HTTP_PORT=8040:与改造前 host/port 拆分兼容;也可 be1:8040,be2:8040
  • 多 FE 时 JDBC 自动 jdbc:mysql:loadbalance://...

BE 配与不配

场景行为
配置了 DORIS_BE_HTTP_HOST(推荐,Docker 默认)Stream Load 直连 BE:8040;多 BE 健康轮询、失败换节点、/api/health 探活。不使用 FE:8030
未配置(空)Stream Load 打 FE:8030 _stream_load,再 307 到 BE;分离部署不如直连 BE 稳,一键安装请保持配上 BE

多主机建议

  1. 写入(推荐)DORIS_BE_HTTP_HOST=be1,be2,be3 + DORIS_BE_HTTP_PORT=8040(或 be1:8040,be2:8040)。
  2. 查询DORIS_FE_HOST=fe1,fe2 + DORIS_FE_QUERY_PORT;一般不必为写入去改 DORIS_FE_HTTP_PORT
  3. 表多副本(replication_num ≥ 2)是集群内冗余,与应用侧地址列表互补。

Docker 示例

外置 Doris 或改地址时,写入 docker-compose.override.yml

bash
cd /opt/databuff-ai-apm

cat > docker-compose.override.yml <<'EOF'
services:
  ai-apm-web:
    environment:
      DORIS_FE_HOST: "192.168.1.10,192.168.1.11"
      DORIS_FE_QUERY_PORT: "9030"
      DORIS_FE_HTTP_PORT: "8030"
  ai-apm-ingest:
    environment:
      DORIS_FE_HOST: "192.168.1.10,192.168.1.11"
      DORIS_FE_QUERY_PORT: "9030"
      DORIS_FE_HTTP_PORT: "8030"
      # Compatible form: hosts + shared port (same as pre-multi-node)
      DORIS_BE_HTTP_HOST: "192.168.1.20,192.168.1.21"
      DORIS_BE_HTTP_PORT: "8040"
      # Or ultra-style: DORIS_BE_HTTP_HOST: "192.168.1.20:8040,192.168.1.21:8040"
EOF

docker compose up -d ai-apm-web ai-apm-ingest

Kubernetes

bash
kubectl -n databuff edit configmap ai-apm-config

data: 下调整例如:

yaml
  DORIS_FE_HOST: "192.168.1.10,192.168.1.11"
  DORIS_FE_QUERY_PORT: "9030"
  DORIS_FE_HTTP_PORT: "8030"
  DORIS_BE_HTTP_HOST: "192.168.1.20,192.168.1.21"
  DORIS_BE_HTTP_PORT: "8040"

然后重启 Web 与 Ingest:

bash
kubectl -n databuff rollout restart deploy/ai-apm-web deploy/ai-apm-ingest

4. 调整 Ingest 任务参数

Ingest 使用多 worker + 环形缓冲处理 Trace / Metric / 聚合。参数定义见 ai-apm-ingestapplication.yml,均可通过环境变量覆盖。

常用任务与缓冲参数

配置项(YAML)环境变量默认值说明
ingest.pipeline.trace-tasksINGEST_TRACE_TASKS8Trace 解析与组装并行度
ingest.pipeline.metric-tasksINGEST_METRIC_TASKS4指标路由并行度
ingest.pipeline.aggregate-tasksINGEST_AGGREGATE_TASKS4分钟聚合 worker 数
ingest.pipeline.trace-buffer-sizeINGEST_TRACE_BUFFER_SIZE8192每 Trace worker 环形缓冲槽位(≥16)
ingest.pipeline.metric-buffer-sizeINGEST_METRIC_BUFFER_SIZE1024每 Metric worker 缓冲
ingest.pipeline.aggregate-buffer-sizeINGEST_AGGREGATE_BUFFER_SIZE1024每聚合 worker 缓冲

缓冲打满时会丢弃事件(overflow)。UI 缺数据但 ingest 日志无异常时,可优先加大 *_BUFFER_SIZE*_TASKS。更多 Doris flush 等参数见 性能优化 — Ingest 管道调优

Docker

推荐写入 docker-compose.override.yml

bash
cd /opt/databuff-ai-apm

cat > docker-compose.override.yml <<'EOF'
services:
  ai-apm-ingest:
    environment:
      INGEST_TRACE_TASKS: "16"
      INGEST_TRACE_BUFFER_SIZE: "16384"
      INGEST_METRIC_TASKS: "8"
EOF

docker compose up -d ai-apm-ingest
docker exec ai-apm-ingest printenv | grep '^INGEST_'

若同一文件中已配置 Web 账号等项,只需在对应 services 下追加,勿覆盖整份文件。

Kubernetes

bash
kubectl -n databuff edit configmap ai-apm-config

data: 下增加例如:

yaml
  INGEST_TRACE_TASKS: "16"
  INGEST_TRACE_BUFFER_SIZE: "16384"
  INGEST_METRIC_TASKS: "8"

然后重启 ingest:

bash
kubectl -n databuff rollout restart deploy/ai-apm-ingest
kubectl -n databuff rollout status deploy/ai-apm-ingest
kubectl -n databuff exec deploy/ai-apm-ingest -- printenv | grep '^INGEST_'

与登录账号相同:start.sh / install.sh 重新 apply ConfigMap 后需再写入自定义键。

调参建议

  • 每次只改 1~2 项,便于回滚。
  • 先解决丢数据(加大 buffer / tasks),再视 CPU、Doris Stream Load 压力微调。
  • 加大 *_TASKS 会提高 CPU 与内存占用,请对照 性能优化 中的资源基线。

5. Trace resource 忽略过滤

丢弃匹配到的 Span(跳过 enrich / 组装 / 落库与指标),用于过滤健康检查、Prometheus 抓取、SELECT 1 等噪声。匹配字段为 Span 的 resource,以及 HTTP 场景下的 metaHttpUrl(任一命中即丢弃)。精确匹配用字符串全等;正则使用 Java Matcher#matches()(整串匹配)。

配置项(YAML)环境变量默认值说明
ingest.trace.ignore-resourcesINGEST_TRACE_IGNORE_RESOURCES精确匹配列表;环境变量用英文逗号分隔
ingest.trace.ignore-resource-regexINGEST_TRACE_IGNORE_RESOURCE_REGEX正则整串匹配列表;环境变量用英文逗号分隔

方式一:修改 application.yml

适用于本地开发或自行挂载 / 打包配置的场景。编辑 ingest 的 application.yml

yaml
ingest:
  trace:
    ignore-resources:
      - PING
      - /actuator/prometheus
    ignore-resource-regex:
      - ^/actuator(/.*)?$
      - ^SELECT 1$

方式二:Docker Compose 环境变量

一键安装部署推荐写 docker-compose.override.yml(升级不覆盖):

bash
cd /opt/databuff-ai-apm   # 或 echo $APM_INSTALL_DIR

cat > docker-compose.override.yml <<'EOF'
services:
  ai-apm-ingest:
    environment:
      INGEST_TRACE_IGNORE_RESOURCES: "PING,/actuator/prometheus"
      INGEST_TRACE_IGNORE_RESOURCE_REGEX: "^/actuator(/.*)?$,^SELECT 1$"
EOF

docker compose up -d ai-apm-ingest

若同一 override 中已有其它 ingest 参数,只需在 environment 下追加,勿整文件覆盖。正则或路径中含逗号时,优先改用方式一(YAML 列表),避免逗号分隔歧义。

Kubernetes

bash
kubectl -n databuff edit configmap ai-apm-config

data: 下增加:

yaml
  INGEST_TRACE_IGNORE_RESOURCES: "PING,/actuator/prometheus"
  INGEST_TRACE_IGNORE_RESOURCE_REGEX: "^/actuator(/.*)?$,^SELECT 1$"

然后重启 ingest:

bash
kubectl -n databuff rollout restart deploy/ai-apm-ingest
kubectl -n databuff rollout status deploy/ai-apm-ingest

验证

重启后查看 ingest 日志,出现 Span resource ignore filter enabled 表示规则已加载。

6. SkyWalking SQL 标准化

仅作用于 SkyWalking 接入(Agent 上报的原始 SQL)。OTLP / DataBuff Agent 在客户端已归一化,ingest 不再处理。默认 mode=1 与开源 v0.1.7 之前写死行为一致,可用环境变量覆盖。开启时(非 -1)会把被替换的字面量写入 OTel 字段 db.query.parameter.012…(仅 SQL,不影响 HTTP)。

配置项(YAML)环境变量默认值说明
ingest.skywalking.sql-normalized-typeINGEST_SQL_NORMALIZED_TYPE1-1 关闭标准化与参数提取;0 数字开头 → ?1 含数字 → ?

Docker

bash
cd /opt/databuff-ai-apm   # 或 echo $APM_INSTALL_DIR

# 在已有 override 的 ai-apm-ingest.environment 下追加,例如关闭:
#   INGEST_SQL_NORMALIZED_TYPE: "-1"

docker compose up -d ai-apm-ingest
docker exec ai-apm-ingest printenv | grep '^INGEST_SQL_NORMALIZED_TYPE'

启动日志出现 SkyWalking SQL normalize mode=-1(或 0/1)表示已生效。

Kubernetes

在 ConfigMap data: 增加 INGEST_SQL_NORMALIZED_TYPE: "-1" 后:

bash
kubectl -n databuff rollout restart deploy/ai-apm-ingest

7. 存储时长的调整

想保留 14 天时,自行连接 Doris,执行以下 SQL(无需重启 FE / BE):

sql
USE databuff;
ALTER TABLE trace_dc_span SET ("dynamic_partition.start" = "-14");
ALTER TABLE log_dc_record SET ("dynamic_partition.start" = "-14");
ALTER TABLE metric_service SET ("dynamic_partition.start" = "-14");
-- 其余 metric_* 表同理

8. 跳过 AVX2 CPU 检测(安装时)

Doris BE 在 x86_64 / amd64 上依赖 AVX2。在线/离线安装脚本会检测 CPU;无 avx2 标志时安装 exit 1。若仅为 PoC / 旧 VM 应急,可在安装前设置环境变量跳过:

环境变量取值说明
DATABUFF_SKIP_AVX2_CHECK1true跳过安装脚本中的 AVX2 检测(仅警告,不中断)

在线安装:

bash
export DATABUFF_SKIP_AVX2_CHECK=1
curl -fsSL https://databuff.ai/databuff/ai-apm-install.sh | bash

离线安装:

bash
export DATABUFF_SKIP_AVX2_CHECK=1
cd /path/to/databuff-docker-offline-*-amd64
./install-offline.sh

跳过只绕过安装脚本拦截,不能消除 Doris 对 AVX2 的依赖;生产环境请换支持 AVX2 的 x86_64 或 arm64 机器。详细风险与旧版脚本改法见 性能优化 — 绕过 AVX2 检测

相关文档