MS_ 环境变量。请以每个发布版附带的示例文件 conf/config.toml 为起点。示例文件列出了全部配置项,本页对每一项都有说明。
配置如何加载
配置项按以下顺序生效,后面的来源覆盖前面的。- 内置默认值。
- 通过
--config传入的 TOML 文件。 MS_环境变量。
大多数配置段会忽略它没有定义的键,所以拼写错误既不生效也没有警告。
[meta_database]、[object_store](包括 [object_store.retry])、[telemetry](包括 [telemetry.trace] 与 [telemetry.self_collect])、[apm]、[probe]、[otlp_grpc]、[notify] 与 [scheduled_reports.renderer] 则相反:出现未知键时,进程会在启动时退出。conf/config.toml。缺少某个键时使用的内置值与之不同的,会在说明中注明。
环境变量
每个配置项都有对应的环境变量:先写MS_ 前缀,再把配置路径的每一层转为大写,并用单个下划线连接。
列表使用 TOML 语法,例如
MS_NODE_ROLES='["intake","querier"]'。包含点号或双下划线的名称不会被识别。
以下变量独立于配置项读取:
最小生产配置
生产节点至少需要以下配置,文件的其余部分可以保持默认值。MS_CIPHER_KEY。上线前的完整步骤参见生产检查清单。
节点
[node] 选择进程运行的角色,参见分角色部署。
监听端口
HTTP
HTTP TLS 与 ACME
[http.tls] 启动 TLS 监听器,并通过 Let’s Encrypt 等 ACME 服务自动签发证书。
内部 gRPC
[grpc] 承载节点之间的流量,请把该端口放在可信网络内。
OTLP gRPC
[otlp_grpc] 配置 OTLP gRPC 接收端。接收端没有启用开关,在每个运行 intake 角色的节点(包括 standalone)上监听。
Arrow Flight SQL
[flight_sql] 为 DBeaver、JDBC、ADBC 等 SQL 客户端提供服务。每次调用都需要 API Token,参见用数据库客户端连接。
Probe Agent
[probe] 配置 Probe Agent 的注册与控制端点,这些端点在 standalone 与 alert 节点上启动。注册使用服务端认证的 TLS,控制流使用短期有效的双向 TLS 身份。参见拨测。
pprof
[profiling] 启动用于诊断的节点本地 pprof 监听器。
存储
元数据库
[meta_database] 配置保存元数据、身份、文件目录与产品资源的 PostgreSQL 数据库。
MoleSignal 启动时会把内嵌的 schema 迁移应用到该数据库,参见升级。
对象存储
[object_store] 配置存放 Parquet 文件、检索索引与 Profile 数据块的存储。后端有 local、s3、azure、gcs。AWS S3 以及 RustFS、Cloudflare R2、阿里云 OSS 等兼容 S3 的服务使用 s3。
S3 与 Azure 客户端从下列来源中第一个同时提供 access key 与 secret key 的来源读取凭据:
- 变量
MS_OBJECT_STORE_ACCESS_KEY与MS_OBJECT_STORE_SECRET_KEY。 credentials_file指向的文件。- 配置键
access_key与secret_key。
object_store_credentials_source:env、file、inline 或 none。secret 建议用环境变量或凭据文件提供,不要写进 config.toml。
分片上传的每个分片与分段读取的每个块,都是占用一个并发槽位的对象存储操作:各自独立重试,并计入 object_store_* 指标。一次传输最多占用一半的并发槽位,因此大对象不会饿死其他操作。
云后端的暂态错误会按指数退避重试:
预写日志
[wal] 配置运行 intake 角色的节点的预写日志。请把目录放在持久化的本地卷上,参见备份与恢复。
接入缓冲
[intake] 控制 intake 节点的内存缓冲。
[intake.rotation] 自适应地调整 Parquet 文件大小:
[intake.prometheus] 限制 Prometheus remote_write 的输入:
[intake.prometheus.cardinality] 在接收 remote_write 请求的进程里做 series 准入,发生在把批次转发给 intake 节点之前。每个进程统计自己收到的 series,有多个 router 时各自应用这些限制:
每个组织与每个指标的上限是平台设置:在
_sys 组织的 设置 → 指标基数 中修改,各节点每 30 秒重新读取一次,并用于自己统计的 series。
合并与保留
[compactor] 负责合并文件并执行保留策略,在 standalone 与 compactor 节点上运行。
没有单独设置保留期的数据流保留多久是平台设置:在
_sys 组织的 设置 → 数据保留 中修改,默认 30 天。降采样在每个指标数据流的 保留策略 页签中设置,见数据流。
目录维护
[storage.*] 各配置段控制文件目录与对象存储的后台维护。
查询
限制与异步任务
准入控制
[search.admission] 按工作组限制并发查询数。所有值默认为 0 或空,表示不限制。示例文件中没有该配置段。
缓存
每一层都是带存活时间的 LRU 缓存,容量为0 即关闭该层。命中率通过 /metrics 的 cache_<layer>_hit_ratio 暴露。
每个配置段都接受
capacity 与 ttl_secs。
[cache.parquet_metadata] 在内存中保留解析后的 Parquet footer,包含 page index。查询打开已缓存的文件时不再读取 footer。它只有 max_size 一个键,单位 MiB,默认 256。0 表示关闭。
[cache.object] 把远程对象的字节范围缓存在本地磁盘。local 对象后端会绕过它。
缓存超过
max_size,或磁盘剩余空间低于 min_free_size 时,最久未使用的块先被淘汰。垃圾回收删除对象时,执行删除的节点只要在启动后读过这个对象,就会同时删掉它的缓存块;其他节点上的这些块和别的块一样等待淘汰。
范围查询增量缓存
[search.stream_agg_cache] 缓存 rate(metric[5m]) 这类范围 PromQL 查询中已封存的时间窗,仪表盘刷新时只需重新计算最新的窗口。
集群与速率限制
速率限制只作用于
router 角色,每个 router 副本各自计数,参见分角色部署。
告警与邮件
[notify.smtp] 配置平台邮件,例如注册审批。邮件类型的通知渠道使用各自保存在加密连接器中的凭据。host 为空时 SMTP 保持关闭。
认证
数据库中没有任何用户且两个值都已设置时,MoleSignal 会在首次启动时创建 root 账号。之后再修改
root_password 不会改变已有账号的密码,请在网页界面中修改。每次启动时,邮箱为 root_email 的账号会成为平台管理员,因此 root_email 必须属于一个已存在的用户。
JWT 签名密钥在首次启动时生成并保存在 PostgreSQL 中。旧版本的 [auth].jwt_secret 会被忽略。用 MS_AUTH_JWT_SECRET_OVERRIDE 固定密钥,用 POST /api/v1/auth/jwt/rotate 轮换密钥。
自身可观测性
进程日志与自采集遥测使用[telemetry],参见自身可观测性。
最后三个键在示例文件中被注释掉,表中给出的是
log_output 为 file 时的取值。
自采集遥测
[telemetry.self_collect] 把进程自身的指标、链路与 Profile 写入保留的 _molesignal 数据流。
_molesignal 数据流创建时保留 7 天。在 _sys 组织里该数据流的 保留策略 页签修改,重启后保持不变。
链路捕获与尾部采样
[telemetry.trace] 控制服务记录的自身 Span,以及决定保留哪些链路的尾部采样器。
[telemetry.trace.slow_thresholds] 以毫秒为单位判定慢 Span:http_ms = 1000、query_ms = 5000、batch_intake_ms = 2000、database_ms = 200、object_store_ms = 500、external_ms = 1000、background_ms = 30000。
[telemetry.trace.external] 把链路导出到外部 OTLP 接收端。endpoint 为空时保持关闭。
APM
[apm] 控制应用性能监控的聚合投影,在持有链路候选的节点或运行告警汇总的节点上启动。参见应用性能监控。
APM 每小时分开记录的服务、端点、依赖、操作、错误组、版本和实例数量上限是平台设置:具有
sys.settings.manage 权限的用户在 APM → 设置 → 基数上限中修改,每个节点每 30 秒重新读取一次。见 APM 设置。仍包含 [apm.cardinality] 段的配置文件无法加载。
功能与集成
IP 地理位置数据由 DB-IP 提供,按 CC BY 4.0 许可使用。
发布版二进制内置 JavaScript 函数运行时与 VRL,两者都不需要配置项。参见函数。
PDF 或 PNG 形式的定时报告使用无头 Chrome 渲染页面:
Chrome 不可用时,PDF 与 PNG 导出会返回错误,不会生成占位文件。
定时日志巡检由承担
alert 角色的节点执行,参见日志巡检:
Mole Agent 的每日 token 预算对每个组织生效,组织管理员可以在 Mole Agent → 设置 → 用量 中为本组织另设上限,参见 Mole Agent。技能目录对所有组织生效,参见技能:
保存在数据库中的设置
以下设置保存在 PostgreSQL 中,由网页界面或 API 修改,没有对应的 TOML 键:- SSO 服务商(OIDC、SAML 与 LDAP)。
- 联邦查询使用的远程集群。
- 状态页的域名与证书,以及访客把页面添加到 Slack 所用的 Slack App。
- 通知渠道、排班与升级策略。
- Mole Agent 的模型服务商、提示词、工具与审批策略。
- 组织的加密密钥、字段脱敏规则与共享策略。