参数配置
安装时如何跳过 AVX2 检测,以及安装完成后如何修改登录账号、配置 Doris 连接账号与 FE/BE 地址、调整 Ingest 管道任务参数、配置 Trace resource 忽略过滤、SQL 标准化、调整遥测数据存储时长。目录与启停见 Docker 运维、Kubernetes 运维;容量与更多调优项见 性能优化与容量规划。
1. 修改登录用户名与密码
开源版 Web 使用启动时注入的内置账号(内存 seed),界面暂无改密入口。通过环境变量覆盖后重启 ai-apm-web 即可生效。
| 配置项(YAML) | 环境变量 | 默认值 |
|---|---|---|
apm.security.seed-username | APM_SECURITY_SEED_USERNAME | admin |
apm.security.seed-password | APM_SECURITY_SEED_PASSWORD | Databuff@123 |
修改后请用新账号重新登录;旧会话/Token 将不可用。密码会出现在环境变量中,请按主机权限与密钥管理规范保护。
start.sh/ 安装脚本结束时会从运行中的 Web 容器读取并打印当前生效的账号密码(不再写死默认值)。
Docker
推荐使用 docker-compose.override.yml(安装脚本自动合并;升级不会覆盖该文件):
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.yml 中 ai-apm-web.environment,但 升级会覆盖 docker-compose.yml,需事后重新改回或改用 override。
Kubernetes
在 ConfigMap 中追加变量并重启 Web:
kubectl -n databuff edit configmap ai-apm-config在 data: 下增加(注意缩进与引号):
APM_SECURITY_SEED_USERNAME: "youruser"
APM_SECURITY_SEED_PASSWORD: "your-strong-password"保存后重启并验证:
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 的 env(kubectl -n databuff edit deploy/ai-apm-web),效果相同。
升级注意:再次执行
install.sh/start.sh会kubectl apply仓库内的configmap.yaml,可能冲掉手工追加的键。升级后请重新写入,或在本地维护补丁清单。
2. 配置 Doris 用户名与密码
Web / Ingest 通过 JDBC 与 Stream Load 连接 Doris 时使用的账号(不是上一节的 Web 登录账号)。默认与开箱 Doris 一致:root、空密码。
| 组件 | 配置项(YAML) | 环境变量 | 默认值 |
|---|---|---|---|
| Web | apm.doris.username | DORIS_USER | root |
| Web | apm.doris.password | DORIS_PASSWORD | 空 |
| Ingest | ingest.doris.username | DORIS_USER | root |
| Ingest | ingest.doris.password | DORIS_PASSWORD | 空 |
两边共用同一组环境变量;改密后须同时重启 ai-apm-web 与 ai-apm-ingest。
顺序:先在 Doris 内改密或建用户(如
SET PASSWORD FOR 'root' = PASSWORD('your-strong-password');),再改应用侧环境变量。只改应用配置、Doris 仍是空密码时会连不上。
Docker
推荐写入 docker-compose.override.yml(Web、Ingest 都要设):
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
kubectl -n databuff edit configmap ai-apm-config在 data: 下增加:
DORIS_USER: "root"
DORIS_PASSWORD: "your-strong-password"然后重启 Web 与 Ingest:
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 / 多 BE(host 或 host:port 列表 + 健康轮询)。单节点写法与一键安装默认不变。
各端口做什么
| 端口(默认) | 环境变量 | 谁在用 | 做什么 |
|---|---|---|---|
| 9030 | DORIS_FE_QUERY_PORT | Web、Ingest | FE JDBC 查询(MySQL 协议读数) |
| 8030 | DORIS_FE_HTTP_PORT | 主要是 Ingest | FE HTTP;仅当未配置 DORIS_BE_HTTP_HOST 时,Stream Load 先打 FE _stream_load,再 307 到 BE |
| 8040 | DORIS_BE_HTTP_PORT | 仅 Ingest | BE HTTP;配置了 DORIS_BE_HTTP_HOST 时 Stream Load 直连 BE(推荐) |
一键安装默认会配 DORIS_BE_HTTP_HOST,写入走 BE:8040,日常几乎用不到 8030。Web 查数只走 9030,不走 Stream Load,也没有 BE 配置项。
查询: Web/Ingest --JDBC--> FE:9030
写入: Ingest --Stream Load--> BE:8040 (配了 BE,默认)
或: Ingest --Stream Load--> FE:8030 -307-> BE (未配 BE)参数一览
| 用途 | 组件 | 配置项(YAML) | 环境变量 | 默认值 |
|---|---|---|---|---|
| FE 主机(可多值) | Web / Ingest | apm.doris.fe-host / ingest.doris.fe-host | DORIS_FE_HOST | 127.0.0.1 |
| FE 查询端口(JDBC) | Web / Ingest | *.fe-query-port | DORIS_FE_QUERY_PORT | 9030 |
| FE HTTP 端口(仅「不配 BE、走 FE Stream Load」时用到) | Ingest(为主) | *.fe-http-port | DORIS_FE_HTTP_PORT | 8030 |
| BE HTTP 主机(可多值,Stream Load) | 仅 Ingest | ingest.doris.be-http-host | DORIS_BE_HTTP_HOST | 空(见下) |
| BE HTTP 端口(host 未写端口时的默认值) | 仅 Ingest | ingest.doris.be-http-port | DORIS_BE_HTTP_PORT | 8040 |
一键安装 Docker / K8s 默认:
| 环境变量 | Docker Compose 默认 | 说明 |
|---|---|---|
DORIS_FE_HOST | ai-apm-doris-fe | Web、Ingest JDBC 与(可选)FE HTTP 的主机 |
DORIS_BE_HTTP_HOST | ai-apm-doris-be | Ingest 直连 BE 做 Stream Load |
地址与端口写法
FE / BE 的 *_HOST 都支持下面三种(逗号分隔,可混用「带端口 / 不带端口」):
| 写法 | FE 示例 | BE 示例 |
|---|---|---|
| 单主机 | DORIS_FE_HOST=fe1 | DORIS_BE_HTTP_HOST=be1 |
| 多主机(共享端口) | DORIS_FE_HOST=fe1,fe2 | DORIS_BE_HTTP_HOST=be1,be2 |
| 多主机(每条自带端口) | DORIS_FE_HOST=fe1:19030,fe2:19031 | DORIS_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 |
多主机建议
- 写入(推荐):
DORIS_BE_HTTP_HOST=be1,be2,be3+DORIS_BE_HTTP_PORT=8040(或be1:8040,be2:8040)。 - 查询:
DORIS_FE_HOST=fe1,fe2+DORIS_FE_QUERY_PORT;一般不必为写入去改DORIS_FE_HTTP_PORT。 - 表多副本(
replication_num ≥ 2)是集群内冗余,与应用侧地址列表互补。
Docker 示例
外置 Doris 或改地址时,写入 docker-compose.override.yml:
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-ingestKubernetes
kubectl -n databuff edit configmap ai-apm-config在 data: 下调整例如:
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:
kubectl -n databuff rollout restart deploy/ai-apm-web deploy/ai-apm-ingest4. 调整 Ingest 任务参数
Ingest 使用多 worker + 环形缓冲处理 Trace / Metric / 聚合。参数定义见 ai-apm-ingest 的 application.yml,均可通过环境变量覆盖。
常用任务与缓冲参数
| 配置项(YAML) | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
ingest.pipeline.trace-tasks | INGEST_TRACE_TASKS | 8 | Trace 解析与组装并行度 |
ingest.pipeline.metric-tasks | INGEST_METRIC_TASKS | 4 | 指标路由并行度 |
ingest.pipeline.aggregate-tasks | INGEST_AGGREGATE_TASKS | 4 | 分钟聚合 worker 数 |
ingest.pipeline.trace-buffer-size | INGEST_TRACE_BUFFER_SIZE | 8192 | 每 Trace worker 环形缓冲槽位(≥16) |
ingest.pipeline.metric-buffer-size | INGEST_METRIC_BUFFER_SIZE | 1024 | 每 Metric worker 缓冲 |
ingest.pipeline.aggregate-buffer-size | INGEST_AGGREGATE_BUFFER_SIZE | 1024 | 每聚合 worker 缓冲 |
缓冲打满时会丢弃事件(overflow)。UI 缺数据但 ingest 日志无异常时,可优先加大 *_BUFFER_SIZE 或 *_TASKS。更多 Doris flush 等参数见 性能优化 — Ingest 管道调优。
Docker
推荐写入 docker-compose.override.yml:
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
kubectl -n databuff edit configmap ai-apm-config在 data: 下增加例如:
INGEST_TRACE_TASKS: "16"
INGEST_TRACE_BUFFER_SIZE: "16384"
INGEST_METRIC_TASKS: "8"然后重启 ingest:
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-resources | INGEST_TRACE_IGNORE_RESOURCES | 空 | 精确匹配列表;环境变量用英文逗号分隔 |
ingest.trace.ignore-resource-regex | INGEST_TRACE_IGNORE_RESOURCE_REGEX | 空 | 正则整串匹配列表;环境变量用英文逗号分隔 |
方式一:修改 application.yml
适用于本地开发或自行挂载 / 打包配置的场景。编辑 ingest 的 application.yml:
ingest:
trace:
ignore-resources:
- PING
- /actuator/prometheus
ignore-resource-regex:
- ^/actuator(/.*)?$
- ^SELECT 1$方式二:Docker Compose 环境变量
一键安装部署推荐写 docker-compose.override.yml(升级不覆盖):
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
kubectl -n databuff edit configmap ai-apm-config在 data: 下增加:
INGEST_TRACE_IGNORE_RESOURCES: "PING,/actuator/prometheus"
INGEST_TRACE_IGNORE_RESOURCE_REGEX: "^/actuator(/.*)?$,^SELECT 1$"然后重启 ingest:
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.0、1、2…(仅 SQL,不影响 HTTP)。
| 配置项(YAML) | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
ingest.skywalking.sql-normalized-type | INGEST_SQL_NORMALIZED_TYPE | 1 | -1 关闭标准化与参数提取;0 数字开头 → ?;1 含数字 → ? |
Docker
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" 后:
kubectl -n databuff rollout restart deploy/ai-apm-ingest7. 存储时长的调整
想保留 14 天时,自行连接 Doris,执行以下 SQL(无需重启 FE / BE):
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_CHECK | 1 或 true | 跳过安装脚本中的 AVX2 检测(仅警告,不中断) |
在线安装:
export DATABUFF_SKIP_AVX2_CHECK=1
curl -fsSL https://databuff.ai/databuff/ai-apm-install.sh | bash离线安装:
export DATABUFF_SKIP_AVX2_CHECK=1
cd /path/to/databuff-docker-offline-*-amd64
./install-offline.sh跳过只绕过安装脚本拦截,不能消除 Doris 对 AVX2 的依赖;生产环境请换支持 AVX2 的 x86_64 或 arm64 机器。详细风险与旧版脚本改法见 性能优化 — 绕过 AVX2 检测。