夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
API FAQ
夜莺V6
项目介绍 架构介绍
快速开始 快速开始
黄埔营
安装部署 安装部署
升级
采集器 采集器
使用手册 使用手册
API API
数据库表结构 数据库表结构
FAQ FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵 第1章:天降奇兵
第2章:探索PromQL 第2章:探索PromQL
第3章:Prometheus告警处理 第3章:Prometheus告警处理
第4章:Exporter详解 第4章:Exporter详解
第5章:数据与可视化 第5章:数据与可视化
第6章:集群与高可用 第6章:集群与高可用
第7章:Prometheus服务发现 第7章:Prometheus服务发现
第8章:监控Kubernetes 第8章:监控Kubernetes
第9章:Prometheus Operator 第9章:Prometheus Operator
参考资料

ES日志告警规则

ES 日志告警

ES 日志告警可以通过对日志进行查询分析,来及时发现异常日志,并触发告警。

首先可以选择ES数据源,然后配置查询条件和告警条件,下面针对每个数字指向的功能,进行下详细说明

1 选择索引

支持多种配置方式

  1. 指定单个索引 gb 在 gb 索引中搜索所有的文档
  2. 指定多个索引 gb,us 在 gb 和 us 索引中搜索所有的文档
  3. 指定索引前缀 g*,u* 在任何以 g 或者 u 开头的索引中搜索所有的文档

2 设置过滤条件

目前支持的是 query string 语法

可以指定字段名称进行查询:

- status:active - 查询 status 字段包含 active 的记录
- title:(quick OR brown) - 查询 title 字段包含 quick 或 brown 的记录
- author:"John Smith" - 查询 author 字段包含完整短语 “John Smith” 的记录

支持使用 ? 和 * 通配符:

- qu?ck - ? 匹配单个字符
- bro* - * 匹配零个或多个字符

使用 ~ 运算符进行模糊匹配:

- quikc~ - 匹配与 quick 相似的词
- "fox quick"~5 - 短语查询中的词之间可以相隔最多5个位置

支持数值和日期范围:

- count:[1 TO 5] - 闭区间,包含1和5
- date:[2022-01-01 TO 2022-12-31]
- age:>=10 - 大于等于10

可以使用 AND、OR、NOT 等布尔操作符:

- quick AND brown - 同时包含两个词
- quick OR brown - 包含其中任意一个词
- quick NOT fox - 包含 quick 但不包含 fox

详细的语法可以参考 ES 文档

3 设置日期字段

点击可以选择日志中的日期字段,通过此字段来作为查询日志的时间范围的依据

4 设置查询日志的时间范围

如果是 5 分钟,表示在做告警查询时,会查询过去 5 分钟内的日志

5 数值提取

对日志进行统计分析的函数,比如 count、sum、avg、min、max 等

6 Group By

对日志进行分组,比如按照 host 字段进行分组,进行 count 统计, 查询到的结果会按照 host 字段进行分组

7 告警条件

统计分析得到的数值,会赋值给 告警条件中的 A、B、C 等变量,然后根据这些变量进行告警条件判断,比如 $A > 10 表示日志数量大于10条时触发告警

8 高级配置

在有的场景,日志会出现延迟,如果延迟3 分钟,查询最近 3 分钟的数据,会查不到数据,这时,可以在高级配置中,设置延迟查询时间,比如延迟 180s,表示查询查询的时候,把开始时间和终止时间都向前偏移 180s

使用样例

示例1:错误日志监控

  • 索引:app-logs-*
  • 查询条件:level:ERROR AND service:payment
  • 时间范围:5分钟
  • 数值提取:count()
  • 告警条件:$A > 10 说明:监控支付服务在5分钟内的错误日志数量是否超过10条

示例2:接口响应时间监控

  • 索引:nginx-access-*
  • 查询条件:path:"/api/v1/order*" AND response_time:>500
  • 时间范围:10分钟
  • 数值提取:avg(response_time)
  • Group By:path
  • 告警条件:$A > 1000 说明:监控订单相关接口的平均响应时间是否超过1秒

示例3:异常状态码监控

  • 索引:nginx-*
  • 查询条件:status:[500 TO 599]
  • 时间范围:15分钟
  • 数值提取:count()
  • Group By:host, status
  • 告警条件:$A > 50 说明:按主机和状态码分组统计5xx错误,如果某台主机的某个状态码出现次数超过50次则告警

示例4:业务异常关键字监控

  • 索引:business-logs-*
  • 查询条件:message:(“timeout” OR “connection refused” OR “out of memory”)
  • 时间范围:30分钟
  • 数值提取:count()
  • 告警条件:$A > 5 说明:监控包含特定错误关键字的日志数量
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat