Frostmourne(霜之哀伤监控平台)是基于Elasticsearch, Prometheus, SkyWalking, InfluxDB,Mysql/TiDB,ClickHouse, SqlServer, IoTDB数据的分布式监控报警系统. Monitor & alert & alarm for Elasticsearch,Prometheus data。主要使用springboot2 + vue-element-admin
Github地址 | Gitee地址 | 中文 | English
Frostmourne
(霜之哀伤)是汽车之家经销商技术部监控系统的开源版本,用于帮助监控几乎所有数据库数据(包括Elasticsearch
, Prometheus
, SkyWalking
, MySql
等等)。如果你已经建立起了日志系统,
指标体系,却苦恼于没有一个配套监控系统,也许它能帮到你。使用本系统得当,至少可以做到线上应用出了什么问题,相关开发能第一时间了解报错情况,知道问题出在哪里,
可以快速响应处理,几乎先于所有人知道线上的情况,也因为心中有数所以可以从容应对各种问询,一点都不慌,你们团队值得拥有。
在用ELK
建立起日志系统之后,我们发现应用日志监控这块除了ElastAlert
之外,没有其他方案。我们初期使用ElastAlert
来解决日志监控的问题,
但是随着配置的增加,不仅管理成本和使用成本较高,稳定性方面也不能让我们满意,所以为了更好的易用性,稳定性,我们决定自己做一套简单的监控系统,
来解决日志监控的问题。
项目并不局限于Elasticsearch
数据,还支持HTTP
, PING
, Telnet
监控,Prometheus
, SkyWalking
, InfluxDB
,MySQL
, ClickHouse
, IoTDB
, SqlServer
数据监控,
后面还会加入更多的常用数据源(如:Loki
, MongoDB
, Redis
, Oracle
等)纳入监控范畴,需要做的东西还有很多,需要更多相关开发加入进来,欢迎联系我们,一起做大做强。
只需要写一条数据查询就可以轻松搞定监控
多种数据源支持:Elasticsearch, HTTP, SkyWalking, Prometheus, InfluxDB, MySQL/TiDb, ClickHouse, SqlServer, PING, IotDB, Telnet
数值计算类型监控:count, min, max, avg, sum, unique count, percentiles, standard deviation
; Elasticsearch
数据支持分桶
多种报警消息发送方式:钉钉(机器人)、企业微信(机器人)、飞书机器人、Email、短信、HTTP
多种消息格式:text, markdown
灵活的报警消息Freemarker
模板定制,支持变量占位符;消息模板管理
分布式调度实现,每个监控都是独立调度,互不影响
报警消息附带日志查询短链接,直达报警原因
数值同比,环比监控
HTTP
数据监控, Javascript
表达式判断是否报警; PING
连通监控, Telnet
端口连通监控
前端简单易用:监控管理、测试、另存、执行日志和历史消息
Elasticsearch
数据查询、分享和下载
报警消息抑制功能,防止消息轰炸;也有报警升级功能,避免故障相关方长时间得不到通知。
自带账号,团队,部门信息管理模块,也可自己实现内部对接
集成LDAP
登录认证
权限控制,数据隔离,各团队互不影响
为了更快的理解本项目的作用,提供了一个接口全mock
的静态站点供大家预览功能: 在线demo
在线demo
更新不及时,请以项目实际运行效果为准,demo
只是用于快速浏览
提供docker-compose
方式,让你更快运行起来便于更好理解项目作用。详细请看文档:Quick-Start
MySQL
数据库表创建Frostmourne所有表的创建语句都在 frostmourne.sql 文件中。
数据库密码默认使用明文,没有加密策略。如果你需要对密码进行加密,请参考druid官方文档:druid数据库密码加密
k8s
部署方式k8s
部署参考以下三个配置文件
相关参数在 frostmourne-monitor-deployment.yaml
文件里配置。需要注意的是在frostmourne-monitor-service.yaml
里指定对外映射端口,默认nodePort=30054
kubectl applt -f frostmourne-monitor-namespace.yaml
kubectl applt -f frostmourne-monitor-deployment.yaml
kubectl apply -f frostmourne-monitor-service.yaml
zip
包部署方式依赖环境
JDK 1.8
MySQL 5.7.8+
最新的Release版本zip包,请到 releases 中下载,解压后然后根据自己的环境修改应用配置文件application.properties
文件和环境变量配置文件env
,然后执行如下命令启动:
./scripts/startup.sh
执行如下命令停止应用:
./scripts/shutdown.sh
依赖环境
JDK 1.8
Maven 3.2.x+
MySQL 5.7.8+
在项目frostmourne
主目录下执maven
构建命令:
mvn -U clean package -DskipTests=true
前端项目frostmourne-vue
会自动把资源构建到frostmourne-monitor
的resources/dist
下,所以你只需要部署frostmourne-monitor
即可。
frostmourne-monitor
已经配置了assembly
打包,target
目录下会生成zip
包,你只需要将zip
包解压,然后根据自己的
环境修改应用配置文件application.properties
文件和环境变量配置文件env,然后执行如下命令启动:
./scripts/startup.sh
执行如下命令停止应用:
./scripts/shutdown.sh
调试环境要求
JDK 8 ~ 14
Node 16.14.2 (推荐)
Yarn 1.22.10 (推荐) 或 Npm 8.7.0
MySQL 5.7.8+
Elasticsearch 6.3.2+
启动frostmourne-monitor
项目, 启动参数增加:
-Dmysql.host=localhost -Dmysql.user=root -Dmysql.password=example -Dlog.console.level=INFO
MySQL
相关参数修改为自己环境的,active profile
设置为local
, 测试地址: http://localhost:10054
使用VS Code
打开frostmourne-vue
目录,进行前端调试。执行如下命令:
# install dependency
yarn install
# 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
yarn install --registry=https://registry.npm.taobao.org
# develop
yarn dev
会自动打开: http://localhost:9528
搭建本地开发调试环境或者需要做二次开发遇到什么困难的都可以加群沟通,欢迎各路英雄多多PR
技术说明项目基于Java8
实现,详细请看:技术说明
Database Layer
数据监控报警支持@menong-chen @fox2zz @xyzj91
@wxmclub @Aping @limbo
如果你觉得这个项目对你有所帮助想有所回馈,非常欢迎参与贡献。可以通过如下方式:
PR
github
或 gitee
告知issue
提出你的宝贵建议有问题需要帮助或者交流可以添加下边的微信群或QQ群,请优先选择提 issue ,便于问题的讨论和记录追踪,也方便有类似问题的伙伴搜索解决。也欢迎对项目感兴趣的同僚加群交流。
特别提一下:关于文档觉得哪里写的不通畅,不好理解,或者有哪方面缺失,都欢迎提 issue 。
github
gitee
PR
elastic
中文社区收录 Elastic日报988期star
,29个fork
github
gitee
推荐gitee star
破百github star
破百