使用 Elasticsearch 作为 Grafana 的直接替代 Prometheus 后端
作者来自 Elastic Felix Barnsteiner使用 Elasticsearch 作为 Grafana 仪表盘的 Prometheus 后端在无需更改 PromQL workflows 的情况下支持自动补全、Metrics Drilldown 和告警。在不改变 PromQL workflows 的情况下将 Elasticsearch 用作 Grafana 仪表盘、自动补全、Metrics Drilldown 和告警的 Prometheus 后端。Elasticsearch 已经是 Grafana 生态系统中最受欢迎的插件之一现在我们进一步增强了它在 metrics 使用场景中的能力。如果你目前运行 Prometheus并使用 Grafana 可视化 metrics现在可以直接将 Grafana 的 Prometheus data source 指向 Elasticsearch。无需 sidecar无需 adapter也无需修改 pipeline。Elasticsearch 现在实现了原生 Prometheus 兼容 API 层覆盖了通过 Remote Write 进行的摄入以及通过 PromQL 进行的查询。本文将端到端展示 Grafana 配置流程。配套文章还介绍了 Kibana 中的 PromQL 和 Remote Write 架构。为什么使用 Elasticsearch 作为 Prometheus 后端过去一年中Elasticsearch 已经成为先进的 metrics 存储系统时间序列 data streams、ES|QL 的 TS 命令以及能够为 Prometheus 风格工作负载提供高性能 metrics 处理能力 的存储和查询优化。Prometheus 兼容 API 层让你可以通过团队已经使用的工具访问这个引擎。许多团队已经在基于 Prometheus 的工具链上投入了大量资源仪表盘、引用 PromQL 查询的运行手册runbook、围绕 Grafana 面板构建的 on-call 工作流。Elasticsearch 的 Prometheus 兼容端点允许你迁移 metrics 存储同时保留这些 Grafana 工作流。如果你已经使用 Elasticsearch 存储日志或 traces并希望将可观测性数据整合到单一平台同时保持现有的 Grafana 工作流这一点尤其重要。Elasticsearch Prometheus API 包含哪些内容Elasticsearch Prometheus API 提供三类端点。查询 API核心查询端点允许 Grafana 针对存储在 Elasticsearch 中的数据执行 PromQL 表达式GET和POST /_prometheus/api/v1/query_range在指定时间窗口内执行 PromQL 表达式并返回 matrix 结果。这是大多数 Grafana 仪表盘面板的基础。GET和POST /_prometheus/api/v1/query在单个时间点执行 PromQL 表达式并返回 vector 结果。两个端点都实现了标准 Prometheus 响应封装包括结果类型vector、matrix、scalar、string、状态码以及错误处理。对于POST请求需要在application/x-www-form-urlencodedbody 中发送参数与 Prometheus client 的行为保持一致。元数据 APIGrafana 的 metrics explorer、自动补全以及变量下拉列表依赖元数据端点来发现可用内容。Elasticsearch 支持GET和POST /_prometheus/api/v1/series返回匹配 label selector 的时间序列。GET和POST /_prometheus/api/v1/labels返回所有可用的 label 名称。GET /_prometheus/api/v1/label/{name}/values返回指定 label 的所有值。GET /_prometheus/api/v1/metadata返回每个 metric 名称的类型和帮助文本。这些端点支持 Grafana 中的自动补全和 metric 浏览器。/metadata端点还支持 Grafana 的 Metrics Drilldown这是一个交互式 metric explorer它以实时 sparkline 网格的形式展示所有可用 metrics并允许你无需编写 PromQL 查询即可深入查看任意 metric。索引预过滤所有查询和元数据端点都支持可选的{index}路径段该路径段紧跟在/_prometheus/之后例如GET /_prometheus/metrics-prod-*/api/v1/query_range该预过滤会在执行任何表达式计算之前先限制 PromQL 查询运行的 Elasticsearch 索引范围。对于跨多个 data streams 的大量 metrics 数据限制查询范围可以减少仪表盘查询工作量。你可以针对不同 index pattern 配置独立的 Grafana data source从而让团队只访问自己的 metrics。Remote Write 摄入Elasticsearch 同样实现了 Prometheus Remote Write 协议允许你通过标准remote_write配置将 metrics 从 Prometheus 发送到 Elasticsearch。在现有 Prometheus 配置中添加 Elasticsearch 作为 remote write 目标只需要增加一个代码块remote_write: - url: es_endpoint/_prometheus/api/v1/write authorization: type: ApiKey credentials: api_key默认情况下metrics 会存储在metrics-generic.prometheus-defaultdata stream 中。你可以使用 dataset 和 namespace 路径段将来自不同 Prometheus 实例或环境的 metrics 路由到不同 data streamsPOST /_prometheus/metrics/{dataset}/api/v1/write将 metrics 存储到metrics-{dataset}.prometheus-defaultPOST /_prometheus/metrics/{dataset}/{namespace}/api/v1/write将 metrics 存储到metrics-{dataset}.prometheus-{namespace}如何将 Grafana 连接到 Elasticsearch第 1 步创建 serverless 项目登录 cloud.elastic.co创建一个新的Observabilityserverless 项目。项目创建完成后你会直接进入 Kibana。要查找 Elasticsearch 端点返回 Elastic Cloud 控制台打开Manage Application endpoints, cluster and component IDs然后点击Elasticsearch旁边的复制图标。该端点格式如下https://project-id.es.region.provider.elastic.cloud第 2 步创建 API keys创建两个具有受限权限范围的 API keys一个用于摄入ingestion一个用于查询querying。使用独立的 keys 意味着即使 Grafana key 泄露也无法被用于写入数据即使 ingest key 泄露也无法被用于读取数据。在你的项目中打开Admin and settings侧边导航栏左下角的 ⚙️ 图标进入API keys并创建第一个 key。Ingest keyprometheus-remote-write限制只能访问写入 metrics data streams。在Control security privileges部分粘贴以下 role descriptor{ ingest: { indices: [ { names: [metrics-*], privileges: [auto_configure, create_doc] } ] } }在同一部分创建第二个用于 Grafana 的 key。Query keyprometheus-grafana限制只能访问读取 metrics data streams。{ query: { indices: [ { names: [metrics-*], privileges: [read, view_index_metadata] } ] } }在关闭之前复制两个 key 的值。之后你将无法再次获取它们。第 3 步运行 Prometheus 和 Grafana创建一个prometheus.yml让它抓取 Prometheus 自身的 metrics并将这些 metrics 转发到 Elasticsearch。将es_endpoint替换为第 1 步中的端点并将ingest_api_key替换为第 2 步中的 ingest keyglobal: scrape_interval: 15s scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] remote_write: - url: es_endpoint/_prometheus/api/v1/write authorization: type: ApiKey credentials: ingest_api_key接下来创建 Grafana provisioning 目录mkdir -p grafana/provisioning/datasources grafana/provisioning/dashboards然后创建一个指向 Elasticsearch Prometheus API 的 Grafana data source 配置。创建grafana/provisioning/datasources/datasource.yml将es_endpoint和query_api_key替换为第 1 步和第 2 步中的值apiVersion: 1 datasources: - name: Elasticsearch type: prometheus access: proxy url: es_endpoint/_prometheus uid: elasticsearch-prometheus isDefault: true jsonData: httpHeaderName1: Authorization secureJsonData: httpHeaderValue1: ApiKey query_api_key该配置会创建一个由 Elasticsearch 支持的 Prometheus 类型 data source。Grafana 默认通过POST发送 Prometheus queriesElasticsearch 可以在经过身份验证的 HTTPS 端点例如 Serverless上接受这些请求。创建grafana/provisioning/dashboards/dashboards.yml用于告诉 Grafana 从哪里查找已配置的 dashboardsapiVersion: 1 providers: - name: default type: file options: path: /var/lib/grafana/dashboards最后创建一个docker-compose.yml来启动所有组件services: prometheus: image: prom/prometheus:latest ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro download-dashboard: image: curlimages/curl:latest user: root volumes: - dashboards:/dashboards command: sh -c curl -fsSL https://grafana.com/api/dashboards/3662/revisions/2/download | sed s/\$${DS_THEMIS}/elasticsearch-prometheus/g /dashboards/prometheus-overview.json grafana: image: grafana/grafana:latest ports: - 3000:3000 depends_on: download-dashboard: condition: service_completed_successfully environment: - GF_SECURITY_ADMIN_PASSWORDgrafana volumes: - ./grafana/provisioning:/etc/grafana/provisioning:ro - dashboards:/var/lib/grafana/dashboards:ro volumes: dashboards:download-dashboardservice 会从 Grafana marketplace 获取 Prometheus 2.0 Overview dashboard并对其进行修改使其使用 Elasticsearch data source。sed会将 dashboard 中的${DS_THEMIS}data source 占位符替换为我们的 data source UID。这是必要的因为 Grafana 的 provisioning 不会自行解析这些占位符grafana#10786。Grafana 会等待下载完成后再启动。使用以下命令启动两者docker compose up -dPrometheus 会开始抓取自身的 metrics并每 15 秒将它们发送到 Elasticsearch。在打开 dashboard 之前等待一个或两个 scrape interval。第 4 步打开 dashboard在http://localhost:3000打开 Grafana并使用admin/grafana登录。进入Dashboards打开Prometheus 2.0 Overview。该 dashboard 展示你的 Prometheus 自监控 metrics这些 metrics 通过 PromQL queries 从 Elasticsearch 中获取。第 5 步使用 Grafana 的 Metrics Drilldown 探索 metrics由于 Elasticsearch 实现了 Prometheus 元数据和发现端点Grafana 的 Metrics Drilldown 可以直接使用。在 Grafana 中进入左侧导航栏的Drilldown Metrics并选择Elasticsearch作为 data source。Grafana 会从 Elasticsearch 加载所有可用的 metrics并以实时 sparklines 网格的形式展示。从这里开始你可以通过 label 进行过滤通过名称搜索并且无需编写 PromQL 即可深入查看任意 metric。当前限制和未来计划这是第一个实现版本后续会持续更新。目前以下功能都在积极开发中PromQL 覆盖范围尚未完整使用 group modifiers例如on(instance, job)、set operatorsor、and、unless以及某些函数例如topk的查询目前尚不支持。Form-encoded POST 有部署要求带有application/x-www-form-urlencodedbody 的POST请求需要启用安全功能、在 Elasticsearch HTTP 接口上启用 TLS并且请求必须经过身份验证。Serverless 默认满足这些要求。如果 TLS 在 Elasticsearch 之前终止而节点接收到的是普通 HTTP则应改用带有 query-string 参数的GET请求。目前仅支持 Remote Write v1Remote Write v2 支持计划后续提供。Instant queries 目前还不是时间点查询instant query 端点当前底层运行的是一个短范围查询并返回最后一个 sample。未来会替换为真正的时间点评估。即将支持更广泛的 PromQL 函数和操作符覆盖、Remote Write v2以及 exemplar 端点。常见问题Grafana 可以查询存储在 Elasticsearch 中的 Prometheus metrics 吗可以。当 URL 指向/_prometheus时Grafana 可以使用 Elasticsearch 作为 Prometheus data source。查询使用 PromQL并返回标准 Prometheus 响应格式用于 Grafana dashboards、变量、Metrics Drilldown 和告警。我需要修改 Prometheus 或 Grafana dashboards 才能使用 Elasticsearch 吗对于常见的 Grafana 使用场景你不需要重写 PromQL queries 或 dashboard panels。配置 Prometheus Remote Write将 metrics 发送到 Elasticsearch然后将 Grafana 的 Prometheus data source 指向 Elasticsearch 的/_prometheusendpoint 即可。为什么使用 Elasticsearch而不是单独的 Prometheus 长期存储后端使用 Elasticsearch 作为 Prometheus 后端可以在相同的访问控制和 retention 模型下将 metrics 与日志和 traces 存储在一起。最近 Elasticsearch metrics engine 的相关工作也为 Prometheus 风格工作负载提供了出色的性能。有关基准测试详情请查看 Elasticsearch metrics 性能文章。目前 Elasticsearch 支持哪些 PromQL 功能Elasticsearch 支持 Grafana dashboards 中常用的 PromQL 查询模式。高级 group modifiers、set operators 和topk目前尚不支持。我可以限制 Grafana queries 只访问特定的 Elasticsearch indices 吗可以。在/_prometheus/后添加 index pattern例如/_prometheus/metrics-prod-*/api/v1/query_range。这会在 PromQL evaluation 之前预过滤 Elasticsearch indices并可以减少大型 metrics 部署中的查询工作量。Prometheus API 可用性Prometheus 兼容 API 目前已经可以在 Elasticsearch Serverless 上使用无需额外配置。如果遇到问题或有反馈请在 Elasticsearch repository 中提交 issue。原文Use Elasticsearch as a Drop-In Prometheus Backend for Grafana — Elastic Observability Labs

相关新闻

ADP5350与STM32F205RB嵌入式电源管理方案解析

ADP5350与STM32F205RB嵌入式电源管理方案解析

1. 为什么选择ADP5350与STM32F205RB组合? 在嵌入式系统设计中,电源管理一直是决定产品可靠性的关键因素。ADP5350作为ADI公司推出的高级电源管理IC(PMIC),其最大特点在于集成了完整的电池管理功能与多路高效DC-DC转换器…

2026/7/8 16:00:49阅读更多 →
Windows B站客户端终极指南:如何用原生应用提升观影体验

Windows B站客户端终极指南:如何用原生应用提升观影体验

Windows B站客户端终极指南:如何用原生应用提升观影体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 你是否曾在Windows电脑上观看B站视频时&am…

2026/7/8 15:55:48阅读更多 →
XUnity Auto Translator终极指南:3步实现Unity游戏实时自动翻译的完整教程

XUnity Auto Translator终极指南:3步实现Unity游戏实时自动翻译的完整教程

XUnity Auto Translator终极指南:3步实现Unity游戏实时自动翻译的完整教程 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过优秀的日本或韩国游戏?XUn…

2026/7/8 15:55:48阅读更多 →
如何用FanControl彻底告别电脑风扇噪音,实现智能温控?

如何用FanControl彻底告别电脑风扇噪音,实现智能温控?

如何用FanControl彻底告别电脑风扇噪音,实现智能温控? 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…

2026/7/8 20:19:07阅读更多 →
Magisk 27.0 后 Root 环境隐藏:Shamiko 与 Zygisk 配置的 3 种实战方案对比

Magisk 27.0 后 Root 环境隐藏:Shamiko 与 Zygisk 配置的 3 种实战方案对比

Magisk 27.0后Root环境隐藏:Shamiko与Zygisk的三种高阶配置方案实测 当手机成功获取Root权限后,许多金融类应用和游戏会检测到Root环境并拒绝运行。这给需要Root功能又不想放弃日常应用的用户带来了困扰。本文将深入分析三种主流的Root隐藏方案&#xff…

2026/7/8 20:19:07阅读更多 →
羽球联盟 HarmonyOS NEXT 实战系列 (19/20):构建、静态检查与质量门禁

羽球联盟 HarmonyOS NEXT 实战系列 (19/20):构建、静态检查与质量门禁

文章导读 一个 HarmonyOS 工程能不能交付,不能只看“代码写完了没有”,还要看构建、模块、权限和关键路径是否闭合。构建成功只是底线,不是结论;首页能打开、详情能进入、设置能生效,才说明应用真的站住了。对系列文章…

2026/7/8 20:19:07阅读更多 →
SQL注入与XSS攻击检测:对比 2 种机器学习模型在Web安全中的实战效果

SQL注入与XSS攻击检测:对比 2 种机器学习模型在Web安全中的实战效果

SQL注入与XSS攻击检测:随机森林与深度学习模型的实战性能对比 当Web应用每天处理数以亿计的请求时,安全团队最头疼的就是如何从海量流量中精准识别出那些精心伪装的恶意攻击。SQL注入和XSS作为OWASP Top 10的常客,传统规则库已经越来越力不从…

2026/7/8 20:19:07阅读更多 →
【无人机三维路径】基于A星算法实现低空单无人机城市路径规划环境激光雷达仿真 + 3D 占据栅格地图构建附Matlab代码

【无人机三维路径】基于A星算法实现低空单无人机城市路径规划环境激光雷达仿真 + 3D 占据栅格地图构建附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书…

2026/7/8 20:19:07阅读更多 →
STM32F756ZG与ISOM8710数字隔离器的高效接口设计

STM32F756ZG与ISOM8710数字隔离器的高效接口设计

1. 高压安全隔离技术背景与核心需求在工业自动化、电力电子和医疗设备等领域,高压电路与低压控制系统的安全隔离是确保设备可靠运行的关键技术。传统的光耦隔离方案存在传播延迟高、共模抑制比不足等问题,而ISOM8710这类数字隔离器提供了更优的解决方案。…

2026/7/8 20:14:07阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →