夜莺监控支持 ES 日志告警了

夜莺项目( https://github.com/ccfos/nightingale )发布了 v8.0.0-beta.3 版本,这个版本主要是支持了 ES 日志告警,下面给大家介绍一下。

新版本下载

到如下地址下载发布包:

由于夜莺 v8 版本默认配置使用 sqlite 和 miniredis,不再强依赖 mysql、redis,所以解压缩发布包到一个临时目录下,直接运行二进制即可启动测试。当然了,生产环境还是要使用 mysql、redis。

配置 ES 数据源

首先添加一个 ElasticSearch 数据源,进入「数据源」菜单,点击「新增」,选择 ElasticSearch 类别:
选择数据源类别

在新建 ElasticSearch 数据源页面,填写 ElasticSearch 的连接地址、认证信息、版本、关联的告警引擎等信息。
创建ES数据源

关联的告警引擎默认是 default,如果你们使用了边缘机房部署架构,有多个告警引擎,可以选择其他告警引擎。一般来讲为了避免跨机房查询,最好选择数据源所在机房的告警引擎。

配置告警规则

进入告警规则配置页面,选中某个业务组,点击新增:
新增告警规则

选择 Log 类型,截图如下:
日志告警规则

几个关键配置解释如下:

  • 数据源类型:选择 elasticsearch
  • 数据源筛选:告警规则生效到哪些数据源,大部分公司都有多套 ES,可以选择让告警规则生效到一个或多个 ES 数据源
  • 查询统计:编写查询过滤条件,夜莺就会根据这些配置生成查询语句,然后去 ES 查询,查到之后再根据告警条件判定是否触发阈值
    • 索引:就是指定 ES 索引,可以写通配符,比如 logstash-*
    • 过滤条件:就是 ES 的 query string 查询语法,注意不是 KQL 语法。一些查询样例见 文档 📌
    • 日期字段:夜莺根据日期字段来做时间范围查询,比如 @timestamp
    • 时间间隔:就是告警规则查询的时间范围,比如查询最近 5m 的日志
    • 数值提取:对查询结果进行数值提取,比如使用 count 统计一下查到了几行日志,作为查询结果最终的数值和后面的告警条件做阈值判定。除了 count 之外,还可以使用 sum、avg、max、min 等统计函数,统计函数自然是对某个字段做统计,所以选择统计函数的时候要同时给出要统计的字段名
  • 告警条件:对查询统计结果进行阈值判定,如果满足条件就触发告警

其他的配置项是通用配置项,和 Prometheus 的告警规则配置类似,这里就不一一介绍了。

其他改动

beta.3 还对每个告警规则对应的 goroutine 的启动时机做了打散操作,避免了大量告警规则同时启动导致的时序库瞬间查询压力过大的问题。

结语

如果你有什么建议,欢迎在 https://github.com/ccfos/nightingale 上提 issue,如果能来个 star 就更好了,让更多人知道并参与,即便项目现在还有瑕疵也会越来越好哒,这就是开源的魅力所在。一起加油。

相关推荐
我的golang之路果然有问题3 小时前
ElasticSearch+Gin+Gorm简单示例
大数据·开发语言·后端·elasticsearch·搜索引擎·golang·gin
BillKu3 小时前
Vue3+Vite中lodash-es安装与使用指南
大数据·elasticsearch·搜索引擎
我科绝伦(Huanhuan Zhou)5 小时前
保姆级Elasticsearch集群部署指导
大数据·elasticsearch·jenkins
cnfelix13 小时前
vim&adb&git命令
elasticsearch·vim·excel
IT成长日记13 小时前
Elasticsearch集群状态为RED且存在未分配分片问题排查诊断
大数据·elasticsearch·搜索引擎·健康状态
Jeremy_Lee12317 小时前
ES海量数据更新及导入导出备份
大数据·elasticsearch
wangfy_18 小时前
es地理信息索引的类型以及geo_point‌和geo_hash的关系
大数据·elasticsearch·搜索引擎
IT成长日记1 天前
Elasticsearch集群最大分片数设置详解:从问题到解决方案
大数据·elasticsearch·最大分片数·shards
risc1234561 天前
【Elasticsearch】search_after不支持随机到哪一页,只能用于上一页或下一页的场景
elasticsearch
我的golang之路果然有问题1 天前
快速了解GO+ElasticSearch
开发语言·经验分享·笔记·后端·elasticsearch·golang