Elasticsearch 数据源

夜莺( Nightingale )ES 数据源

日志采集&存储

ES 存储部署和日志采集上报,可以参考此文档

Elasticsearch 数据源配置

es001

数据源名称-名称:Elasticsearch 数据源标识名称;

HTTP - URL :Elasticsearch 服务地址;示例:http://server-ip:9200

HTTP -超时(单位:ms ):连接服务超时时间;

授权-用户名 & 密码:Elasticsearch 授权用户名和密码;

es002

Elasticsearch 通过your_path/bin/elasticsearch-users list|useradd创建和查询用户,可以通过GET /_security/user或者在 Kibana 的管理界面中查看和管理用户。

自定义HTTP标头- Header & Value :配置请求 Elasticsearch 接口的校验参数;

ES详情- 版本&最大并发分片请求数

如果集群中的分片数量非常高,未配置的最大并发分片请求数可能会导致高内存使用、CPU 负载增加、延迟增加等问题。那么这种情况下设置最大并发分片请求书就显得十分有必要了。通过 Elasticsearch 的查询命令curl -X GET http://server_ip:port/_cat/shards?v可以查询到设置的最大并发分片请求数

最小时间间隔(s) :按时间间隔自动分组的下限。建议设置为写入频率,例如,如果数据每分钟写入一次,则为1m。

写配置- 允许写入(商业版功能)

这个功能和 Prometheus 数据源中的 Remote Write 类似,开启后就可以将日志提取数据回写到 ES 节点中;

es003

开启允许写入后,就可以正常写入数据了。

es004

关联告警引擎集群:配置绑定指定告警引擎的数据源;

如何查询数据

1.日志查询-即时查询—>2.选择对应es数据源—>3.选择查询语法—>4.输入查询语句

es004

● KQL :一种用于过滤数据的简单基于文本的查询语言,KQL 仅过滤数据,并且不具有聚合、转换或排序数据的作用。KQL 官方语法介绍

● Lucene :查询语法的主要原因是使用高级 Lucene 功能,例如正则表达式或模糊术语匹配。但是,Lucene 语法无法搜索嵌套对象或脚本字段。Lucene 官方语法介绍

如何配置 ES 日志告警

es005

日志类型和常规的指标告警规则非常相似,其唯一的区别在于告警条件的设置。指标告警规则使用 PromQL 作为查询条件,而日志类型的告警规则则使用布尔表达式作为查询条件。这些告警条件(如 A、B 等)需要通过查询统计来获取。

在配置查询统计时,会发现它和 ES日志即时查询 类似,先选择索引和查询条件以及日期字段,还有两个额外的数据字段组:数值提取和 Group By。

es006

为了获得数值类型的结果,需要使用数值提取,选择适当的统计函数。除了常见的 count、sum、avg、min、max 等函数外,还支持一些百分位值函数,如 p90、p95、p99。

此外,通过配置 Group By,可以根据特定字段对结果进行分组。这将生成多个时间序列,并在满足告警条件的情况下产生多个异常点,从而生成多条告警事件。

例子1:HTTP CODE 为4xx的告警条件

说明:在每10分钟的时间段内,检查日志中的 message 字段。如果4xx的日志数量超过2次,产生告警,并且按照 host.hostname 字段进行分组统计,配置方式如下

es007

例子2:接口的请求耗时95分位值超过 1700ms 时触发告警

说明:在每2分钟的时间段内,使用p95函数统计日志中的 request_time 。按 remote_addr 维度进行分组,检查是否有超过1700ms 的请求耗时,配置方式如下

es008

例子3:request_time 大于1900ms,匹配日志超过10条时触发告警

说明:在每2分钟的时间段内,筛选出 request_time 大于1900ms 的日志。按 request_uri 维度进行分组,检查日志数量是否超过10条,配置方式如下

es009

在配置完成所需的数据字段后,还可以通过数据预览按钮来预览查询结果。

es010

常见问题

Q1:保存数据源后状态显示异常?

A:按顺序排查:

  1. 网络:n9e Server 主机上 curl http://<es>:9200/_cluster/health 能否拿到 200;
  2. 用户名密码:ES 8.x 默认开启 X-Pack security,必须填账号密码;
  3. HTTPS 证书:ES 8.x 默认自签证书,需要在表单里开"跳过 TLS 验证"或导入 ES 的根证书;
  4. 版本兼容:n9e 支持 ES 6.x / 7.x / 8.x,但部分 API 行为不同 — 看夜莺 server 日志。

Q2:能查到索引但查不到数据?

A:

  • 时间字段映射:ES 数据源配置里要指定"时间字段名"(如 @timestamp),夜莺按这个字段过滤时间范围;
  • 索引模式logstash-* 这种通配符正确,但要确保有匹配的实际索引;
  • 查询 DSL 错误:在 日志查询 里测试简单查询确认连通性。

Q3:跨多个集群 / 索引怎么处理?

A:每个 ES 集群配一份数据源。同集群下多个索引可以在查询时用通配符(如 log-prod-*)一次跨多个索引查。

Q4:OpenSearch 能用 ES 数据源类型接入吗?

A:可以 — OpenSearch fork 自 ES 7.10,API 兼容。n9e 也提供了独立的 OpenSearch 数据源类型,优先用 OpenSearch 类型(针对 OS 做了一些优化),用 ES 类型也能跑。

参考资料

更新时间 2025-03-12

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云