如何修改继承gcr.io/spark-operator/spark:v3.0.0-hadoop3的spark-operator镜像Prometheus JMX Exporter规则
Prometheus自定义配置复制后不生效排查指南
1. 配置路径与启动参数不匹配
- 首先确认Prometheus进程启动时指定的
--config.file参数值是否为/etc/metrics/conf/prometheus.yaml。绝大多数官方Prometheus镜像默认的配置加载路径为/etc/prometheus/prometheus.yaml,如果没有修改启动参数,你复制到自定义路径的配置文件完全不会被读取 - 验证方法:进入运行中的容器执行
ps aux | grep prometheus,查看启动命令中的配置路径参数
2. 配置文件存在语法错误
- Prometheus对YAML格式、规则字段的合法性校验非常严格,只要存在缩进错误、字段拼写错误、告警/采集规则语法不符合规范,都会导致新配置加载失败,进程会自动沿用之前最后一次加载成功的合法配置
- 验证方法:执行
promtool check config /etc/metrics/conf/prometheus.yaml命令直接校验配置文件合法性,按照输出的报错信息修正对应问题即可
3. 配置文件被启动脚本覆盖
- 很多二次封装的Prometheus镜像会在
ENTRYPOINT或CMD阶段执行初始化脚本,会从环境变量、ConfigMap等位置动态生成配置文件,你在构建镜像阶段COPY进去的文件会被启动时生成的文件覆盖 - 验证方法:启动容器后直接执行
cat /etc/metrics/conf/prometheus.yaml,确认文件内容是否和你本地的新配置一致
4. 未触发配置重载操作
- 如果你是在容器运行过程中修改了配置文件,没有重新构建镜像启动新容器,需要手动触发配置重载才会生效:要么给Prometheus进程发送SIGHUP信号,要么调用
/-/reload接口(需要启动时添加--web.enable-lifecycle参数),Prometheus默认不会自动识别配置文件变更热加载
内容的提问来源于stack exchange,提问作者Eljah
相关产品推荐
相关产品推荐

