ES 数据源
日志采集&存储
ES 存储部署和日志采集上报,可以参考此文档
Elasticsearch 数据源配置
数据源名称-名称:Elasticsearch 数据源标识名称;
HTTP - URL :Elasticsearch 服务地址;示例:http://server-ip:9200
HTTP -超时(单位:ms ):连接服务超时时间;
授权-用户名 & 密码:Elasticsearch 授权用户名和密码;
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 节点中;
开启允许写入后,就可以正常写入数据了。
关联告警引擎集群:配置绑定指定告警引擎的数据源;
如何查询数据
1.日志查询-即时查询—>2.选择对应es数据源—>3.选择查询语法—>4.输入查询语句
● KQL :一种用于过滤数据的简单基于文本的查询语言,KQL 仅过滤数据,并且不具有聚合、转换或排序数据的作用。KQL 官方语法介绍
● Lucene :查询语法的主要原因是使用高级 Lucene 功能,例如正则表达式或模糊术语匹配。但是,Lucene 语法无法搜索嵌套对象或脚本字段。Lucene 官方语法介绍
如何配置 ES 日志告警
日志类型和常规的指标告警规则非常相似,其唯一的区别在于告警条件的设置。指标告警规则使用 PromQL 作为查询条件,而日志类型的告警规则则使用布尔表达式作为查询条件。这些告警条件(如 A、B 等)需要通过查询统计来获取。
在配置查询统计时,会发现它和 ES日志即时查询 类似,先选择索引和查询条件以及日期字段,还有两个额外的数据字段组:数值提取和 Group By。
为了获得数值类型的结果,需要使用数值提取,选择适当的统计函数。除了常见的 count、sum、avg、min、max 等函数外,还支持一些百分位值函数,如 p90、p95、p99。
此外,通过配置 Group By,可以根据特定字段对结果进行分组。这将生成多个时间序列,并在满足告警条件的情况下产生多个异常点,从而生成多条告警事件。
例子1:HTTP CODE 为4xx的告警条件
说明:在每10分钟的时间段内,检查日志中的 message 字段。如果4xx的日志数量超过2次,产生告警,并且按照 host.hostname 字段进行分组统计,配置方式如下
例子2:接口的请求耗时95分位值超过 1700ms 时触发告警
说明:在每2分钟的时间段内,使用p95函数统计日志中的 request_time 。按 remote_addr 维度进行分组,检查是否有超过1700ms 的请求耗时,配置方式如下
例子3:request_time 大于1900ms,匹配日志超过10条时触发告警
说明:在每2分钟的时间段内,筛选出 request_time 大于1900ms 的日志。按 request_uri 维度进行分组,检查日志数量是否超过10条,配置方式如下
在配置完成所需的数据字段后,还可以通过数据预览按钮来预览查询结果。