本篇目录6 节

05数据源Data Sources

Elasticsearch 数据源

Elasticsearch 在 Grafana 里有两副面孔:既能当日志库逐行检索,也能用聚合引擎把 Count、Terms 拼成指标。本文讲连接与索引模式、时间字段、Lucene 查询与常见坑。

约 2 分钟/637 字/GRAFANA 12.X

一个数据源,两种用法

Grafana 的 Elasticsearch 数据源同时支持两类查询:

  • 日志用法:按查询条件逐行翻检文档,在 Explore 或日志面板里看原文、展开字段。
  • 指标用法:不取原始文档,而是让 Elasticsearch 跑聚合(Count、Average、Terms、Date Histogram),把结果画成时间序列——这是它区别于 Loki 的地方:全文与数值都索引,灵活但存储成本高。

连接与索引模式

  1. 打开 Connections → Data sources → Add data source,选择 Elasticsearch
  2. URLhttp://localhost:9200(以 Grafana 服务器可达为准)。
  3. Access 保持默认代理模式;开了安全认证的集群在下方填用户名/密码或 API Key。
  4. Index name 填索引模式,如 logs-*;按天滚动的索引全靠这个通配符覆盖。
  5. Time field name 选文档里的时间字段,如 @timestampVersion 按服务端实际版本选择。
  6. Save & test 完成体检。

注意: 时间字段必须是日期类型且与实际查询需求一致。采集管道里常有「事件时间」与「入库时间」两个字段,选错会出现「日志明明在、时间范围里却查不到」。

Lucene 查询

指标与日志查询共用一个 Lucene 查询栏,常用的写法:

http.status_code:500 AND url.path:*checkout*
level:"error" AND NOT env:"staging"

字符串值含空格或特殊字符时加引号;* 通配符便利但放词首会拖慢查询。指标查询则是在查询栏之上叠聚合:例如 Count 聚合 + Date Histogram 分桶,再加一个按 host.keyword 的 Terms 拆线,等价于「每分钟每台主机的错误数」。

日志模式实操

在 Explore 选择该数据源、查询方式切到 Logs(较老的服务端版本可能不支持日志查询方式,以实际下拉为准),填好 Lucene 条件即可翻页看原文;点击某条日志可展开全部字段,字段旁的操作图标能把「此字段等于此值」追加进查询条件,逐层下钻。

常见坑

  • 每天零点后数据缺一块:新滚动出的索引名不匹配索引模式,或新索引的 time field 变了。
  • Terms 拆分线又慢又截断:对高基数字段做 Terms 是聚合大忌,先过滤时间范围与关键字段,并用 keyword 子字段而非 text 原字段。
  • 翻到几万条就报错:受 Elasticsearch 默认 max_result_window 限制,缩小范围比调大参数更明智。
  • 字段列表不全:Grafana 对字段数量有上限(默认约一千),宽表索引会触发警告,用脚本字段或减少选取。

下一步

本页为学习整理的中文改写,依据Grafana 官方文档最新版本编写(以 Grafana 12.x 为基准),操作路径请以实际产品界面为准。

Data Sources