
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Prometheus Elasticsearch Exporter用于从Elasticsearch集群收集两类指标:一是通过配置的查询获取的数据指标,二是集群自身的运行状态指标(如集群健康、节点统计、索引信息等),并将这些指标转换为Prometheus兼容的格式,以便进行监控和告警。
https://github.com/braedon/prometheus-es-exporter | Python包 | https://hub.docker.com/r/braedon/prometheus-es-exporter | https://braedon.github.io/helm/prometheus-es-exporter
exporter定期对Elasticsearch集群运行配置的查询,并将结果导出为Prometheus gauge指标。
hits.total计数(暴露为hits指标)和took时间(暴露为took_milliseconds指标)支持的聚合类型
有限的聚合类型有明确支持和测试,可查看tests/test_parser.py获取使用这些聚合的示例查询及其生成的指标。大多数其他聚合只要结果格式与明确支持的聚合结构相似,也应能正常工作。
如需使用特定聚合但遇到问题(且未明确不支持),请提交issue或PR。
不支持的聚合类型
部分聚合明确不支持,因实现复杂度或设计限制无法正常工作:
top_hits:该聚合返回文档而非文档指标,从任意文档中提取指标因复杂度超出本exporter范围。当exporter的指标端点被调用时,会查询Elasticsearch集群的_cluster/health、_nodes/stats和_stats端点,并将结果导出为Prometheus gauge指标。
端点响应会被尽可能通用地解析,以支持各版本Elasticsearch(过去和未来),这可能导致部分指标不够理想(如指标冗余、无 gauge 与 counter 区分,所有指标均为 gauge)。如有改进建议,可通过Github issue或PR反馈。
查看tests/test_cluster_health_parser.py、tests/test_nodes_stats_parser.py和tests/test_indices_stats_parser.py获取响应示例及生成的指标。
exporter还生成以下特定指标:
es_indices_aliases_alias{index, alias} (gauge)
索引别名及其指向的索引,从_alias端点解析。当前别名的指标值为1,别名移除或变更指向索引时,旧指标会立即删除。
注意:Prometheus可能在短时间内(通常5分钟)仍返回已删除指标。未来可能在删除前将旧指标值设为
0以缓解此问题,因此建议检查指标值而非仅判断存在性。
可通过and操作符结合此指标过滤其他索引指标,例如:
es_indices_mappings_field_count and on(index) (es_indices_aliases_alias{alias="logstash-today"} == 1)
es_indices_mappings_field_count{index, field_type} (gauge)
索引中特定类型的映射字段数量,从_mappings端点解析。按索引求和可计算每个索引的总字段数,有助于检查是否接近字段限制,例如:
sum(es_indices_mappings_field_count) by(index) > 900
exporter需要Python 3和Pip 3环境。通过Pip安装最新发布版本:
bash> pip3 install prometheus-es-exporter
注意:可能需要将启动脚本路径(见pip输出)添加到
PATH环境变量。
安装后可通过prometheus-es-exporter命令运行。默认绑定端口9206,查询localhost:9200的Elasticsearch,使用当前目录的exporter.cfg配置文件。可通过选项修改默认值:
bash> prometheus-es-exporter -p <端口> -e <Elasticsearch节点> -c <查询配置文件路径>
使用-h标志查看所有可用选项详情。
配置优先级
ES_EXPORTER,例如ES_EXPORTER_BASIC_USER=fred等效于--basic-user fred--config FILE从配置文件设置选项,文件格式为Configobj的unrepr模式(例如配置文件中basic-user="fred"等效于--basic-user fred)查询配置示例和说明见提供的exporter.cfg文件。
已发布版本的Docker镜像可在Docker Hub获取(无latest标签):
bash> sudo docker pull braedon/prometheus-es-exporter:<version>
运行容器需挂载查询配置文件到/usr/src/app/exporter.cfg,并映射容器端口9206到主机端口。镜像名后的选项会传递给容器内进程(例如配置Elasticsearch节点需使用-e):
bash> sudo docker run --rm --name exporter \ -v <查询配置文件路径>:/usr/src/app/exporter.cfg \ -p <主机端口>:9206 \ braedon/prometheus-es-exporter:<version> -e <Elasticsearch节点>
如需在构建时嵌入配置文件,可扩展现有镜像创建自定义Dockerfile。
Helm chart可从仓库https://braedon.github.io/helm/%E8%8E%B7%E5%8F%96%EF%BC%9A
bash> helm repo add braedon https://braedon.github.com/helm > helm repo update > helm install braedon/prometheus-es-exporter --name <发布名称> \ --set elasticsearch.cluster=<Elasticsearch节点> \ --set image.tag=<镜像标签>
配置详情见https://braedon.github.io/helm/prometheus-es-exporter/%E3%80%82
从源码安装
在项目根目录执行:
bash> pip3 install .
使用-e标志以"可编辑"模式安装,便于测试修改无需重新安装:
bash> pip3 install -e .
运行测试
在项目根目录执行(仅覆盖响应解析功能,无系统测试):
bash> python3 -m unittest
构建Docker镜像
从源码构建镜像:
bash> sudo docker build -t <仓库名称和标签> .
容器内开发
构建镜像后,在项目根目录运行(文件实时同步,可直接测试修改):
bash> sudo docker run --rm -it --name exporter --entrypoint bash -v $(pwd):/usr/src/app <仓库名称和标签>
如遇pkg_resources.DistributionNotFound错误,需在容器内重新运行pip install -e .。
欢迎通过PR贡献代码!
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务