# frostmourne **Repository Path**: javaCoderlj/frostmourne ## Basic Information - **Project Name**: frostmourne - **Description**: frostmourne是基于Elasticsearch, Prometheus, SkyWalking, InfluxDB数据的监控,报警,分析系统. Monitor & alert & alarm & analyze for Elasticsearch && InfluxDB Log Data - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 127 - **Created**: 2025-05-11 - **Last Updated**: 2025-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
[Github地址](https://github.com/AutohomeCorp/frostmourne) | [Gitee地址](https://gitee.com/tim_guai/frostmourne) | [中文](./README.md) | [English](./README_en.md) # 📖 介绍 `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`登录认证 * 权限控制,数据隔离,各团队互不影响 #### 企业微信机器人报警截图展示: (查看完整功能截图展示)
## 目录
- [介绍](#-介绍)
- [主要功能](#-主要功能)
- [在线demo](#-在线demo)
- [快速启动](#-快速启动)
- [部署](#-部署)
- [环境准备](#预备环境准备mysql数据库表创建)
- [k8s部署方式](#一k8s部署方式)
- [zip包部署方式](#二zip包部署方式)
- [自构建部署方式](#三自构建部署方式)
- [功能使用指南](#-功能使用指南)
- [开发调试](#-开发调试)
- [后续规划](#后续规划)
- [发版历史](./ReleaseNotes.md)
- [Contributors](#-contributors)
# 💻 在线demo
为了更快的理解本项目的作用,提供了一个接口全`mock`的静态站点供大家预览功能: 在线demo
在线`demo`更新不及时,请以项目实际运行效果为准,`demo`只是用于快速浏览
# 📦 快速启动
提供`docker-compose`方式,让你更快运行起来便于更好理解项目作用。详细请看文档:Quick-Start
# 🧰 部署
#### 预备环境准备:`MySQL`数据库表创建
> Frostmourne所有表的创建语句都在 [frostmourne.sql](./doc/mysql-schema/frostmourne.sql) 文件中。
数据库密码默认使用明文,没有加密策略。如果你需要对密码进行加密,请参考druid官方文档:[druid数据库密码加密](https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter)
#### 一、`k8s`部署方式
`k8s`部署参考以下三个配置文件
* [frostmourne-monitor-namespace.yaml](./doc/docker/k8s/frostmourne-monitor-namespace.yaml)
* [frostmourne-monitor-deployment.yaml](./doc/docker/k8s/frostmourne-monitor-deployment.yaml)
* [frostmourne-monitor-service.yaml](./doc/docker/k8s/frostmourne-monitor-service.yaml)
相关参数在 `frostmourne-monitor-deployment.yaml` 文件里配置。需要注意的是在`frostmourne-monitor-service.yaml`里指定对外映射端口,默认`nodePort=30054`
```bash
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](https://github.com/AutohomeCorp/frostmourne/releases) 中下载,解压后然后根据自己的环境修改应用配置文件`application.properties`文件和环境变量配置文件`env`,然后执行如下命令启动:
```bash
./scripts/startup.sh
```
执行如下命令停止应用:
```bash
./scripts/shutdown.sh
```
#### 三、自构建部署方式
依赖环境
* `JDK 1.8`
* `Maven 3.2.x+`
* `MySQL 5.7.8+`
在项目`frostmourne`主目录下执`maven`构建命令:
```bash
mvn -U clean package -DskipTests=true
```
前端项目`frostmourne-vue`会自动把资源构建到`frostmourne-monitor`的`resources/dist`下,所以你只需要部署`frostmourne-monitor`即可。
`frostmourne-monitor`已经配置了`assembly`打包,`target`目录下会生成`zip`包,你只需要将`zip`包解压,然后根据自己的
环境修改应用配置文件`application.properties`文件和环境变量配置文件env,然后执行如下命令启动:
```bash
./scripts/startup.sh
```
执行如下命令停止应用:
```bash
./scripts/shutdown.sh
```
# 📚 功能使用指南

![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |