跳到主要内容

环境变量

先看这一条:本页只描述运维平台自身,不描述监控目标

被监控对象一律在 UI「数据源」页配置——MySQL/MongoDB/Redis/Kafka/Elasticsearch/ 主机/Flink 都不再有对应的环境变量。部署完成后打开数据源页添加,或下载 YAML 模板批量导入(导入时会逐条测试连接)。修改后即时生效,无需重启容器。

1.4.x 曾支持在 ops.yaml 里用 ENV_MYSQL_*/ENV_REDIS_* 等配置监控目标(首次启动播种成 数据源)。1.5.0 已移除这套机制,这些变量不再被读取——配置不再生效,启动日志会明确列出并提示。 从 1.4.x 升级上来的实例,已有数据源保持不变,可删除 ops.yaml 中的历史配置行。

本页其余变量(令牌、子路径、保留时长、对象存储、Alloy 等)不受影响,始终以本页为准。

运维平台的配置全部通过环境变量传入:Docker Compose 写在 ops.yaml、Kubernetes 写在 ConfigMap。下表按用途分组,未标注的按需配置,未配置时使用默认值。

通用/网关 (Gateway)

环境变量名说明
ENV_OPS_TOKEN运维平台的访问认证密钥,首次部署务必修改
ENV_OPS_SUB_PATH反向代理子路径,直接端口访问时无需配置,配置后网关、Grafana 均自动适配 GF_SERVER_ROOT_URLGF_SERVER_SERVE_FROM_SUB_PATH。示例:/mdis
ENV_OPS_PORTops-server 内部监听端口,默认 8081,通常无需修改
ENV_OPS_GATEWAY_PORT网关对外端口,默认 48881

主机监控 (Node Exporter)

无环境变量。在 UI「数据源」页添加「主机」数据源,地址格式 IP:59100(端口固定 59100)。

Docker Compose 部署机与 Kubernetes 集群内节点已内置 ops-nodeagent(自动监听 59100), 不需要重复添加,也不需要额外安装 node_exporter;只有额外的外部主机才需要在本页添加。

集群监控 (Kubernetes)

运维平台 1.3.0 起支持监控 Kubernetes 集群(节点、容器、Pod、集群对象状态),完整配置见 Kubernetes 集群监控

环境变量名说明
ENV_K8S_MONITOR_MODEKubernetes 监控模式:off(默认,不启用)/ incluster(使用所在集群的 ServiceAccount 自动发现目标)。Kubernetes 形态部署的运维平台已预置为 incluster;运维平台在集群外时,该值由被监控集群内的采集组件使用。⚠️ 1.5.3 起移除了集群外拉取(static),配置该值不再生效
ENV_K8S_CLUSTER_NAME集群标识,作为 origin_prometheus 标签写入该集群指标,Kubernetes 面板顶部按该值切换集群。默认 default。多集群场景需为每个集群设置不同名称(如 prod-k8s/test-k8s),避免重名,不建议使用 IP
ENV_K8S_KSM_NAMESPACEincluster 模式 kube-state-metrics 所在命名空间,默认 mdis-monitoring。⚠️ 两套 Kubernetes 部署清单(单文件 ops.yaml 与 PVC 的 11-configmap.yaml)都将该值设为 hap-ops——清单自带的 kube-state-metrics 也位于 hap-ops,无需改动;只有部署在被监控集群内的采集组件才使用默认值 mdis-monitoring

incluster 模式下无需登记任何数据源:ops-prometheus 用自身 ServiceAccount 自动发现 kubelet/cAdvisor/kube-state-metrics,改动实时生效。

中间件与被监控目标

无环境变量。MySQL/MongoDB/Redis/Kafka/Elasticsearch 全部在 UI「数据源」页添加, 每条数据源可勾选用途:

  • 看图metrics):纳入指标采集,并在资源监控页展示图表
  • 告警alert):纳入告警监控
  • 诊断diagnose,仅 MongoDB):作为慢查询诊断的目标库。账号需 clusterMonitor,并需目标库的 dbAdmin——运维平台会为其执行 profile:1 开启 profiling

exporter 端口由运维平台自动分配,无需关心。

批量导入

数据源页右上角「批量导入」支持 YAML/JSON:先「下载 YAML 模板」,修改为当前环境的连接地址后上传。 建议先点「仅校验」——只做格式校验和逐条连接探测,不写入任何数据。

按「类型 + 名称」幂等:同名条目是更新而不是新建,同一份文件可反复导入;更新时密码留空 = 沿用原密码。探测不通不阻止导入,但结果里会逐条标出。

自动化部署可直接调接口:

curl -X POST "http://部署服务器IP:48881/api/alert/sources/import" \
-H "Content-Type: application/yaml" \
--data-binary @datasources.yaml
几个填写要点(模板注释里也有)
  • MySQL 集群填各节点真实地址,不要填 mysqlrouter 这类读写分离入口——那样只能采到被路由到的那一个后端,成员状态采不全
  • Elasticsearch 的用户名,私有部署内置 ES 使用 md,不是 elastic;填写错误时,采集进程运行中但无法获取指标
  • MongoDB 副本集把成员都写进 URI,用逗号分隔

数据源服务发现

agent 每 30 秒从 ops-server 拉取「已启用且用途含 metrics」的数据源,按需拉起/回收对应 exporter;Prometheus 的抓取目标同样由注册中心下发并热加载。因此数据源修改后即时生效。

环境变量名说明
ENV_OPS_SD_URLops-prometheus/agent 访问注册中心(ops-server)的地址,默认 http://gateway:8081。⚠️ 是 ops-server 直接监听的 8081,不是网关对外的 48881(那是 nginx,没有 /api/sd 路由)。Kubernetes 部署时 Service 必须同时暴露这两个端口
ENV_OPS_SD_TOKEN注册中心接口的访问令牌,在 gatewayops-prometheusagent 上保持一致;为空时不校验(仅建议 Docker 内网环境)
ENV_AGENT_SD_HOSTagent 服务的主机名(供 Prometheus 寻址 exporter),默认 agent,通常无需修改
排查:数据源配了但无数据

先查看 agent 容器日志。若持续出现 [sd] 拉取 xxx 失败,表示 agent 无法访问注册中心—— 最常见是 ENV_OPS_SD_URL 指到了 48881,或 Kubernetes 的 Service 只暴露了 48881 没暴露 8081。 此时 exporter 均无法启动,所有中间件监控为空。

数据保留时长

环境变量名说明
ENV_PROMETHEUS_RETENTIONPrometheus 指标数据保留时长,不配置时默认 15d。示例:30d
ENV_LOKI_RETENTIONLoki 日志数据保留时长,不配置时默认 720h(30 天)。示例:360h
ENV_TEMPO_RETENTIONTempo 链路数据保留时长,不配置时默认 720h(30 天)。示例:360h

可观测性采集 (Alloy)

环境变量名说明
ENV_TEMPO_GRPC_URLalloy 转发链路数据到 Tempo 的 gRPC 地址。示例:http://ops-tempo:4317
ENV_PROMETHEUS_REMOTE_WRITE_URLremote_write 写入地址,两个场景共用:① alloy 上报运维平台自身指标,同集群内直连即可,示例 http://ops-prometheus:9090/prometheus/server/api/v1/write;② 其它 Kubernetes 集群里的采集组件推指标回运维平台,必须走网关对外端口并带 token,示例 http://<运维平台地址>:30881/mdis/prometheus/server/api/v1/write(运维平台的 ops-prometheus 是 ClusterIP,集群外无法访问 :9090
ENV_PROMETHEUS_REMOTE_WRITE_TOKEN上一项走网关时的 Bearer token,填运维平台的 ENV_OPS_TOKEN。不填网关返回 401,且只在采集端日志里可见、界面上只表现为「无数据」。直连 :9090 的场景不需要
ENV_LOKI_PUSH_URLalloy 推送日志到 Loki 的 HTTP API 地址。示例:http://ops-loki:3100/loki/api/v1/push
ENV_LOKI_PUSH_TOKEN日志推送的 Bearer token。仅当采集端在其它集群、经运维平台网关推送时需要(填运维平台的 ENV_OPS_TOKEN);集群内直连 ops-loki 时留空。不填而又走网关会返回 401,且只在采集端日志里可见

日志存储后端 (Loki S3/MinIO,可选)

不配置时使用 Loki 本地文件系统存储。

环境变量名说明
ENV_S3_ENDPOINTS3 兼容存储端点,填 host:port不要带 http://。示例:minio:9000。腾讯云 COS 示例:cos.ap-hongkong.myqcloud.com(不带 bucket 前缀)。Tempo 的 minio-go 只接受 host:port,带 scheme 会报 Endpoint url cannot have fully qualified paths;Loki 侧协议由配置里的 insecure 控制,也不需要 scheme
ENV_S3_BUCKET_LOKI日志(Loki)的 bucket 名。示例:mdis-loki。⚠️ 部署前必须先在对象存储里建好这个桶——桶不存在时 Loki 报 NoSuchBucket 会反复重启
ENV_S3_BUCKET_TEMPO链路(Tempo)的 bucket 名。示例:mdis-tempo必须与 Loki 用不同的桶,同样要先建好
ENV_S3_BUCKET旧的通用桶名,仅为兼容存量部署保留(上面两个都没设时才回退到它)。⚠️ 新部署不要用:它会同时传给 Loki 和 Tempo,两者共桶时 Tempo 无法启动
ENV_S3_ACCESS_KEYS3 access key
ENV_S3_SECRET_KEYS3 secret key
ENV_S3_FORCE_PATH_STYLEbucket 寻址方式。true(默认)= path-style,适配 MinIO/UCloud US3;腾讯云 COS/阿里云 OSS 只支持 virtual-host,必须设 false。Loki(AWS SDK)与 Tempo(minio-go,内部据此映射 bucket_lookup_type 强制 DNS)共用此开关

告警子系统(1.4.0 起)

运维平台 1.4.0 内置自研告警子系统,告警配置数据(规则/状态/历史/通知渠道/数据源)存储在独立的 ops-mongo 容器中,与被监控的业务 MongoDB 完全解耦。

环境变量名说明
ENV_OPS_MONGODB_URI告警子系统自有存储 MongoDB 连接地址,默认指向内置 ops-mongo 容器。示例:mongodb://ops-mongo:27017
ENV_MONGODB_COLLECTION_PREFIX告警子系统集合名统一前缀。示例:mdis_
ENV_ALERT_CRYPTO_KEY数据源凭据(密码/URI)落库前的 AES 加密密钥,首次部署务必改成随机字符串并妥善保管。更换密钥后已保存的凭据将无法解密,需要重新录入

告警通知渠道(飞书/钉钉/企业微信/邮件/自定义 Webhook)在运维平台 UI 的「告警 → 通知渠道」页面配置,不再通过环境变量配置。其中邮件渠道的 SMTP 服务器信息也在该页面填写。

慢查询诊断调参(可选)

调整 MongoDB 慢查询的捕获灵敏度。默认值适合生产环境;测试环境如需降低复现门槛,可调低前两项。 四个捕获条件的完整说明见慢查询分析

环境变量名说明
ENV_GATEWAY_DOCS_EXAMINED扫描文档数达到多少才记录,默认 100000。查询较慢但扫描文档数较少时不会被记录
ENV_GATEWAY_CAPTURE_INTERVAL_MS采集周期(毫秒),默认 600000(10 分钟)。触发慢查询后需等待下一个采集周期
ENV_GATEWAY_PROFILE_SLOW_MS运维平台为被监控库设置的 slowms 阈值(毫秒),默认 100
ENV_GATEWAY_LOG_EXPIRE_MS慢查询历史在运维平台自有库中的保留时长(毫秒),默认 604800000(7 天)

配置在 gateway 服务上。另有一条固定条件不可配置:同一查询指纹需在最近 120 分钟内出现 50 次以上

服务日志接入(易混淆,务必看)

「服务日志」功能查询的是 HAP/HDP 微服务推送到 Loki 的日志。

配置位置变量作用默认
HAP/HDPENV_LOKI_URL写入端开关:logservice 是否把日志推送给 Loki。不配置则安装器把 StoreInLoki 置为 false,不会写入服务日志空(不写)
运维平台ENV_LOKI_URL查询端地址:运维平台从哪里读取日志http://ops-loki:3100,标准部署无需配置

两个变量同名但作用不同。「服务日志」页没有内容时,应配置 HAP/HDP 服务侧变量,填写运维平台 Loki 的 可达地址(如 http://运维平台主机IP:3100),配置后重启对应产品服务。