mirror of
https://github.com/dromara/hertzbeat.git
synced 2026-09-17 18:19:02 +00:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8dd0cd0c9 | ||
|
|
592fdd99bf | ||
|
|
fd2202fcaf | ||
|
|
a7629e317a | ||
|
|
3a378f8710 | ||
|
|
cf59907fcd | ||
|
|
624ba8dc8d |
@@ -20,9 +20,11 @@ github:
|
||||
homepage: https://hertzbeat.apache.org/
|
||||
labels:
|
||||
- ai
|
||||
- agent
|
||||
- llm
|
||||
- monitoring
|
||||
- logs
|
||||
- monitor
|
||||
- monitoring
|
||||
- notifications
|
||||
- alerting
|
||||
- self-hosted
|
||||
@@ -34,12 +36,9 @@ github:
|
||||
- uptime
|
||||
- status
|
||||
- status-page
|
||||
- devops
|
||||
- server
|
||||
- linux
|
||||
- database
|
||||
- mysql
|
||||
- cloud
|
||||
enabled_merge_buttons:
|
||||
squash: true
|
||||
merge: false
|
||||
|
||||
+10
-10
@@ -90,24 +90,24 @@ e2e:
|
||||
backend:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "alerter/**/*"
|
||||
- "collector/**/*"
|
||||
- "common/**/*"
|
||||
- "grafana/**/*"
|
||||
- "manager/**/*"
|
||||
- "push/**/*"
|
||||
- "remoting/**/*"
|
||||
- "warehouse/**/*"
|
||||
- "hertzbeat-alerter/**/*"
|
||||
- "hertzbeat-collector/**/*"
|
||||
- "hertzbeat-common/**/*"
|
||||
- "hertzbeat-grafana/**/*"
|
||||
- "hertzbeat-manager/**/*"
|
||||
- "hertzbeat-push/**/*"
|
||||
- "hertzbeat-remoting/**/*"
|
||||
- "hertzbeat-warehouse/**/*"
|
||||
|
||||
collector:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "collector/**/*"
|
||||
- "hertzbeat-collector/**/*"
|
||||
|
||||
monitoring-template:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- "manager/src/main/resources/define/**/*"
|
||||
- "hertzbeat-manager/src/main/resources/define/**/*"
|
||||
|
||||
HIP:
|
||||
- changed-files:
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@ image:
|
||||
tasks:
|
||||
|
||||
- name: Run backend
|
||||
before: cd hertzbeat-manager
|
||||
before: cd hertzbeat-startup
|
||||
command: |
|
||||
gp sync-await setup-backend
|
||||
mvn spring-boot:run
|
||||
@@ -13,7 +13,7 @@ tasks:
|
||||
before: cd web-app
|
||||
command: |
|
||||
gp sync-await setup-frontend
|
||||
yarn start --public-host "`gp url 4200`"
|
||||
pnpm start --public-host "`gp url 4200`"
|
||||
openMode: split-right
|
||||
|
||||
- name: Setup backend
|
||||
@@ -25,7 +25,7 @@ tasks:
|
||||
|
||||
- name: Setup frontend
|
||||
init: |
|
||||
cd web-app && yarn install
|
||||
cd web-app && pnpm install
|
||||
command: |
|
||||
gp sync-done setup-frontend
|
||||
exit 0
|
||||
|
||||
+6
-28
@@ -27,20 +27,20 @@ Even small corrections to typos are very welcome :)
|
||||
### Getting HertzBeat up and running
|
||||
|
||||
> To get HertzBeat code running on your development tools, and able to debug with breakpoints.
|
||||
> This is a front-end and back-end separation project. To start the local code, the back-end [manager](manager) and the front-end [web-app](web-app) must be started separately.
|
||||
> This is a front-end and back-end separation project. To start the local code, the back-end [startup](hertzbeat-startup) and the front-end [web-app](web-app) must be started separately.
|
||||
|
||||
|
||||
#### Backend start
|
||||
|
||||
1. Requires `maven3+`, `java17` and `lombok` environments
|
||||
|
||||
2. (Optional) Modify the configuration file: `manager/src/main/resources/application.yml`
|
||||
2. (Optional) Modify the configuration file: `hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. Execute under the project root directory: `mvn clean install -DskipTests`
|
||||
|
||||
4. Add VM Options: `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. Start `springboot manager` service: `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. Start `springboot startup` service: `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
#### Frontend start
|
||||
|
||||
@@ -131,17 +131,6 @@ Add WeChat account `ahertzbeat` to pull you into the WeChat group.
|
||||
|
||||
## 🥐 Architecture
|
||||
|
||||
- **[manager](https://github.com/apache/hertzbeat/tree/master/hertzbeat-manager)** Provide monitoring management, system management basic services.
|
||||
> Provides monitoring management, monitoring configuration management, system user management, etc.
|
||||
- **[collector](https://github.com/apache/hertzbeat/tree/master/collector)** Provide metrics data collection services.
|
||||
> Use common protocols to remotely collect and obtain peer-to-peer metrics data.
|
||||
- **[warehouse](https://github.com/apache/hertzbeat/tree/master/warehouse)** Provide monitoring data warehousing services.
|
||||
> Metrics data management, data query, calculation and statistics.
|
||||
- **[alerter](https://github.com/apache/hertzbeat/tree/master/hertzbeat-alerter)** Provide alert service.
|
||||
> Alarm calculation trigger, monitoring status linkage, alarm configuration, and alarm notification.
|
||||
- **[web-app](https://github.com/apache/hertzbeat/tree/master/web-app)** Provide web ui.
|
||||
> Angular Web UI.
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
@@ -179,19 +168,19 @@ Add WeChat account `ahertzbeat` to pull you into the WeChat group.
|
||||
### 让 HertzBeat 运行起来
|
||||
|
||||
> 让 HertzBeat 的代码在您的开发工具上运行起来,并且能够断点调试。
|
||||
> 此为前后端分离项目,本地代码启动需将后端[manager](manager)和前端[web-app](web-app)分别启动生效。
|
||||
> 此为前后端分离项目,本地代码启动需将后端[hertzbeat-startup](hertzbeat-startup)和前端[web-app](web-app)分别启动生效。
|
||||
|
||||
#### 后端启动
|
||||
|
||||
1. 需要 `maven3+`, `java17` 和 `lombok` 环境
|
||||
|
||||
2. (可选)修改配置文件配置信息-`manager/src/main/resources/application.yml`
|
||||
2. (可选)修改配置文件配置信息-`hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. 在项目根目录运行编译: `mvn clean install -DskipTests`
|
||||
|
||||
4. 在 `jvm` 加入参数 `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. 启动`springboot manager`服务 `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. 启动`springboot startup`服务 `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
|
||||
#### 前端启动
|
||||
@@ -282,15 +271,4 @@ Add WeChat account `ahertzbeat` to pull you into the WeChat group.
|
||||
|
||||
### 模块
|
||||
|
||||
- **[manager](https://github.com/apache/hertzbeat/tree/master/hertzbeat-manager)** 提供监控管理,系统管理基础服务
|
||||
> 提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
|
||||
- **[collector](https://github.com/apache/hertzbeat/tree/master/collector)** 提供监控数据采集服务
|
||||
> 使用通用协议远程采集获取对端指标数据。
|
||||
- **[warehouse](https://github.com/apache/hertzbeat/tree/master/warehouse)** 提供监控数据仓储服务
|
||||
> 采集指标结果数据管理,数据落盘,查询,计算统计。
|
||||
- **[alerter](https://github.com/apache/hertzbeat/tree/master/hertzbeat-alerter)** 提供告警服务
|
||||
> 告警计算触发,任务状态联动,告警配置,告警通知。
|
||||
- **[web-app](https://github.com/apache/hertzbeat/tree/master/web-app)** 提供可视化控制台页面
|
||||
> 监控告警系统可视化控制台前端
|
||||
|
||||

|
||||
|
||||
@@ -155,8 +155,8 @@ Detailed config refer to [Install HertzBeat via Package](https://hertzbeat.apach
|
||||
|
||||
##### 3:Start via source code
|
||||
|
||||
1. Local source code debugging needs to start the back-end project `manager` and the front-end project `web-app`.
|
||||
2. Backend:need `maven3+`, `java17`, `lombok`, add VM options in IDE: ` --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED `, then start the `manager` service.
|
||||
1. Local source code debugging needs to start the back-end project `hertzbeat-startup` and the front-end project `web-app`.
|
||||
2. Backend:need `maven3+`, `java17`, `lombok`, add VM options in IDE: ` --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED `, then start the `hertzbeat-startup` service.
|
||||
3. Web:need `nodejs npm angular-cli` environment, Run `ng serve --open` in `web-app` directory after backend startup.
|
||||
4. Access `http://localhost:4200` to start, default account: `admin/hertzbeat`
|
||||
|
||||
|
||||
+2
-2
@@ -152,8 +152,8 @@
|
||||
|
||||
##### 方式三:本地代码启动
|
||||
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程 `manager` 和前端工程 `web-app`
|
||||
2. 后端:需要 `maven3+`, `java17` 和 `lombok` 环境,修改 `YML` 配置信息,添加JVM参数`--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`后启动 `manager` 服务即可。
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程 `hertzbeat-startup` 和前端工程 `web-app`
|
||||
2. 后端:需要 `maven3+`, `java17` 和 `lombok` 环境,修改 `YML` 配置信息,添加JVM参数`--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`后启动 `hertzbeat-startup` 服务即可。
|
||||
3. 前端:需要 `nodejs npm angular-cli`环境,待本地后端启动后,在 `web-app` 目录下启动 `ng serve --open`
|
||||
4. 浏览器访问 `http://localhost:4200` 即可开始,默认账号密码 `admin/hertzbeat`
|
||||
|
||||
|
||||
+2
-2
@@ -155,8 +155,8 @@
|
||||
|
||||
##### 方式3:ローカルの実行
|
||||
|
||||
1. ローカルの実行には、バックエンドのプロジェクト`manager`とフロントエンドのプロジェクト`web-app`を起動する必要があります。
|
||||
2. バックエンド:`maven3+`、`java17`と`lombok`の環境は必要です。`YML` 設定を修正し、Java仮想マシンパラメータに`--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED` を追加し、`manager` を起動します。
|
||||
1. ローカルの実行には、バックエンドのプロジェクト`hertzbeat-startup`とフロントエンドのプロジェクト`web-app`を起動する必要があります。
|
||||
2. バックエンド:`maven3+`、`java17`と`lombok`の環境は必要です。`YML` 設定を修正し、Java仮想マシンパラメータに`--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED` を追加し、`hertzbeat-startup` を起動します。
|
||||
3. フロントエンド:`nodejs npm angular-cli`の環境は必要です。ローカルのバックエンドが立ち上がったら、`web-app` ディレクトリで `ng serve --open` というコマンドを実行します。
|
||||
4. スタート:`http://localhost:4200`にアクセスします。デフォルトのアカウントとパスワード:`admin/hertzbeat`。
|
||||
|
||||
|
||||
+20
-2
@@ -18,12 +18,17 @@
|
||||
package org.apache.hertzbeat.alert.notice.impl;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.hertzbeat.alert.notice.AlertNoticeException;
|
||||
import org.apache.hertzbeat.alert.util.CryptoUtils;
|
||||
import org.apache.hertzbeat.common.entity.alerter.GroupAlert;
|
||||
import org.apache.hertzbeat.common.entity.alerter.NoticeReceiver;
|
||||
import org.apache.hertzbeat.common.entity.alerter.NoticeTemplate;
|
||||
@@ -54,7 +59,13 @@ final class DingTalkRobotAlertNotifyHandlerImpl extends AbstractAlertNotifyHandl
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
HttpEntity<DingTalkWebHookDto> httpEntity = new HttpEntity<>(dingTalkWebHookDto, headers);
|
||||
String webHookUrl = alerterProperties.getDingTalkWebhookUrl() + receiver.getAccessToken();
|
||||
StringBuilder webHookUrlBuilder = new StringBuilder()
|
||||
.append(alerterProperties.getDingTalkWebhookUrl())
|
||||
.append(receiver.getAccessToken());
|
||||
if (StringUtils.isNotBlank(receiver.getAppSecret())) {
|
||||
webHookUrlBuilder.append(signSecret(receiver.getAppSecret()));
|
||||
}
|
||||
String webHookUrl = webHookUrlBuilder.toString();
|
||||
ResponseEntity<CommonRobotNotifyResp> responseEntity = restTemplate.postForEntity(webHookUrl,
|
||||
httpEntity, CommonRobotNotifyResp.class);
|
||||
if (responseEntity.getStatusCode() == HttpStatus.OK) {
|
||||
@@ -102,6 +113,13 @@ final class DingTalkRobotAlertNotifyHandlerImpl extends AbstractAlertNotifyHandl
|
||||
return dingTalkWebHookDto;
|
||||
}
|
||||
|
||||
private String signSecret(String secret) throws Exception {
|
||||
Long timestamp = System.currentTimeMillis();
|
||||
String sign = URLEncoder.encode(CryptoUtils.hmacSha256Base64(secret, timestamp + "\n" + secret),
|
||||
StandardCharsets.UTF_8);
|
||||
return String.format("×tamp=%s&sign=%s", timestamp, sign);
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte type() {
|
||||
return 5;
|
||||
@@ -109,6 +127,7 @@ final class DingTalkRobotAlertNotifyHandlerImpl extends AbstractAlertNotifyHandl
|
||||
|
||||
/**
|
||||
* DingTalk robot request body
|
||||
*
|
||||
* @version 1.0
|
||||
*/
|
||||
@Data
|
||||
@@ -187,5 +206,4 @@ final class DingTalkRobotAlertNotifyHandlerImpl extends AbstractAlertNotifyHandl
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public class CryptoUtils {
|
||||
* @return lowercase hexadecimal string
|
||||
*/
|
||||
public static String hmacSha256Hex(String key, String data) {
|
||||
return hmacSha256Hex(hmac256(key.getBytes(UTF8), data), data);
|
||||
return hmacSha256Hex(key.getBytes(UTF8), data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class CryptoUtilsTest {
|
||||
@Test
|
||||
void testHmacSha256Hex() {
|
||||
String signature = CryptoUtils.hmacSha256Hex("your-real-key", "your-real-data");;
|
||||
assertEquals("41878ccd7ecd795a2dd7ec39be7f33fed4be3ec75f5307689e39dd6f41fdbaac", signature);
|
||||
assertEquals("f09adf5f4bf94eddecf0f7c8f39a3a8dc7f95ccdc2faf2e5330bc5a78e4bba95", signature);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
# HertzBeat Startup Module
|
||||
|
||||
## 概述
|
||||
|
||||
`hertzbeat-startup` 模块是为了实现 HertzBeat 项目的模块化重构而创建的启动模块。该模块专门负责应用的启动和初始化任务,将原本由 `hertzbeat-manager` 模块承担的启动职责分离出来,实现更好的关注点分离。
|
||||
|
||||
## 模块职责
|
||||
|
||||
该启动模块主要负责以下启动任务:
|
||||
|
||||
1. **主应用启动** - 通过 `HertzBeatApplication` 类作为主入口点
|
||||
2. **系统配置初始化** - 通过 `SystemConfigInitializer` 初始化系统配置、JWT密钥、AES密钥等
|
||||
3. **调度系统初始化** - 通过 `SchedulerSystemInitializer` 初始化收集器状态和监控任务
|
||||
4. **Netty服务器启动** - 通过 `NettyServerInitializer` 启动集群通信服务器
|
||||
|
||||
## 架构设计
|
||||
|
||||
### 原有架构问题
|
||||
- `manager` 模块既负责业务逻辑又负责启动,职责不够清晰
|
||||
- 启动代码散布在多个文件中,不利于维护
|
||||
|
||||
### 重构后的架构
|
||||
```
|
||||
hertzbeat-startup/
|
||||
├── src/main/java/org/apache/hertzbeat/startup/
|
||||
│ ├── HertzBeatApplication.java # 主启动类
|
||||
│ ├── config/
|
||||
│ │ └── SystemConfigInitializer.java # 系统配置初始化
|
||||
│ └── scheduler/
|
||||
│ ├── SchedulerSystemInitializer.java # 调度系统初始化
|
||||
│ └── NettyServerInitializer.java # Netty服务器初始化
|
||||
└── pom.xml
|
||||
```
|
||||
|
||||
## 使用方式
|
||||
|
||||
### 主入口点
|
||||
```java
|
||||
// 原来的启动方式
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Manager.class, args);
|
||||
}
|
||||
|
||||
// 现在的启动方式
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(HertzBeatApplication.class, args);
|
||||
}
|
||||
```
|
||||
|
||||
### 启动顺序
|
||||
1. `HertzBeatApplication` 作为主启动类启动Spring Boot应用
|
||||
2. `SystemConfigInitializer` (最高优先级 +2) 初始化系统配置
|
||||
3. `SchedulerSystemInitializer` (最低优先级 -1) 初始化调度系统
|
||||
4. `NettyServerInitializer` (最低优先级) 启动Netty服务器
|
||||
|
||||
## 迁移说明
|
||||
|
||||
### 从 Manager 模块迁移的组件
|
||||
1. **启动主类** - `Manager.java` → `HertzBeatApplication.java`
|
||||
2. **配置初始化** - `ConfigInitializer.java` → `SystemConfigInitializer.java`
|
||||
3. **调度初始化** - `SchedulerInit.java` → `SchedulerSystemInitializer.java`
|
||||
4. **Netty服务器** - `ManageServer.java` → `NettyServerInitializer.java`
|
||||
|
||||
### Manager 模块的变化
|
||||
- 移除了所有启动相关的代码
|
||||
- 保留 `Manager.java` 作为 Spring Boot 配置类
|
||||
- 专注于业务逻辑处理
|
||||
|
||||
## 资源文件迁移
|
||||
|
||||
### 迁移到 startup 模块的资源
|
||||
- **应用配置文件** - `application*.yml`(包含dev、test、mysql、pg等配置)
|
||||
- **数据库迁移脚本** - `db/migration/`(支持H2、MySQL、PostgreSQL)
|
||||
- **启动横幅** - `banner.txt`
|
||||
- **安全配置** - `sureness.yml`
|
||||
|
||||
### 保留在 manager 模块的资源
|
||||
- **监控应用定义** - `define/app-*.yml`(各种监控应用的定义文件)
|
||||
- **告警模板** - `templates/`(告警通知模板文件)
|
||||
|
||||
## 依赖关系
|
||||
|
||||
### 当前依赖
|
||||
- `spring-boot-starter` - Spring Boot核心
|
||||
- `spring-boot-starter-web` - Web应用支持
|
||||
- `spring-boot-starter-data-jpa` - 数据持久化
|
||||
- `flyway-core` - 数据库迁移核心
|
||||
- `flyway-mysql` - MySQL数据库迁移支持
|
||||
- `flyway-database-postgresql` - PostgreSQL数据库迁移支持
|
||||
- `h2database` - H2数据库(默认)
|
||||
- `hertzbeat-common` - 通用组件
|
||||
- `hertzbeat-base` - 基础组件
|
||||
- `hertzbeat-warehouse` - 数据仓库
|
||||
- `hertzbeat-alerter` - 告警模块
|
||||
- `hertzbeat-remoting` - 远程通信
|
||||
- `hertzbeat-manager` - 管理模块(业务逻辑)
|
||||
|
||||
### 注意事项
|
||||
由于启动模块需要访问管理模块的服务和配置,存在对 `hertzbeat-manager` 的依赖。在实际部署时,需要确保依赖的正确性。
|
||||
|
||||
## 配置属性
|
||||
|
||||
### 系统配置相关
|
||||
- `sureness.jwt.secret` - JWT密钥配置
|
||||
- `common.secret` - AES密钥配置
|
||||
|
||||
### 调度器相关
|
||||
- `scheduler.server.enabled` - 是否启用Netty服务器
|
||||
- `scheduler.server.port` - Netty服务器端口
|
||||
- `scheduler.server.idleStateEventTriggerTime` - 空闲状态触发时间
|
||||
|
||||
## 优势
|
||||
|
||||
1. **职责分离** - 启动逻辑与业务逻辑分离,模块职责更加清晰
|
||||
2. **易于维护** - 所有启动相关代码集中在一个模块中
|
||||
3. **可扩展性** - 新的启动功能可以轻松添加到启动模块
|
||||
4. **向后兼容** - 保持了原有的配置和功能不变
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **依赖管理** - 需要正确处理启动模块与业务模块之间的依赖关系
|
||||
2. **启动顺序** - 确保各个初始化组件按照正确的顺序执行
|
||||
3. **配置传递** - 启动模块需要能够访问业务模块的配置和服务
|
||||
4. **测试验证** - 重构后需要充分测试启动流程的正确性
|
||||
|
||||
## 总结
|
||||
|
||||
通过创建 `hertzbeat-startup` 模块,我们成功地将启动职责从业务模块中分离出来,实现了更清晰的模块划分。这种设计使得:
|
||||
|
||||
- 启动逻辑更加集中和易于维护
|
||||
- 业务模块可以专注于业务逻辑
|
||||
- 整体架构更加模块化和可扩展
|
||||
- 保持了原有功能的完整性和稳定性
|
||||
|
||||
这是一个典型的关注点分离重构实践,提高了代码的可维护性和可扩展性。
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
title: Welcome HertzBeat's New Community Committer!
|
||||
author: Duansg
|
||||
author_title: SiGuo Duan
|
||||
author_url: https://github.com/Duansg
|
||||
tags: [opensource, practice]
|
||||
keywords:
|
||||
[
|
||||
open source monitoring system,
|
||||
alerting system,
|
||||
Apache,
|
||||
Apache Committer,
|
||||
HertzBeat,
|
||||
]
|
||||
---
|
||||
|
||||
> Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.
|
||||
|
||||
## Self-Introduction
|
||||
|
||||
- **Name**: Siguo Duan
|
||||
- **Github**: [Duansg](https://github.com/Duansg)
|
||||
- **Email**: [duansg@apache.org](mailto:duansg@apache.org)
|
||||
- **Position**: Senior Development Engineer
|
||||
- **Primary Technical Focus**: Currently engaged in the e-commerce industry, primarily focused on the research and development of data processing and management for a billion-item product middle platform.
|
||||
|
||||
## First Encounter Apache HertzBeat
|
||||
|
||||
In practical projects, to enhance the existing monitoring system, we aim to implement visual monitoring and alerts for existing metrics. However, we also wish to avoid introducing or integrating overly complex monitoring systems. Consequently, I began searching for a monitoring solution that is ready-to-use, feature-rich, and easily extensible. It was during this process that I gradually encountered and became familiar with Apache HertzBeat.
|
||||
|
||||
Through continuous research and debugging, I began delving into its source code and gradually became involved in community contributions. Today, keeping up with community updates, reviewing pull requests, and discussing issues have become part of my daily routine.
|
||||
|
||||
## The Path to Open Source Contributions
|
||||
|
||||
The initial biggest challenge in formally contributing to the Apache HertzBeat project was unfamiliarity with its architecture, particularly the collaboration mechanisms between modules. By reading official documentation, source code, and historical PRs from the community, I gradually gained clarity on the project's structure. Simultaneously, discussions with community members during PR reviews provided invaluable advice and fresh perspectives—these exchanges fostered significant growth.
|
||||
|
||||
Through systematic reading of source code and analysis of historical changes, I gradually gained a deep understanding of the project structure and actively participated in code fixes and feature enhancements. To date, I have submitted and merged multiple contributions to the Apache HertzBeat project, including but not limited to:
|
||||
|
||||
> [47 commits](https://github.com/apache/hertzbeat/commits?author=Duansg) 23,649 ++ 5,547 --
|
||||
|
||||
**Submitted PR (47 commits)**
|
||||
|
||||
- Fix:
|
||||
|
||||
Prometheus real-time thresholds not taking effect issue([#3434](https://github.com/apache/hertzbeat/pull/3434))、null pointer exception in custom dashboards([#3448](https://github.com/apache/hertzbeat/pull/3448))、Jacoco test report generation failure([#3455](https://github.com/apache/hertzbeat/pull/3455))、
|
||||
Page count calculation error([#3467](https://github.com/apache/hertzbeat/pull/3467))、ANTLR4 semantic parsing fixes and optimizations([#3482](https://github.com/apache/hertzbeat/pull/3482)、[#3488](https://github.com/apache/hertzbeat/pull/3488))、collector startup notification exception([#3579](https://github.com/apache/hertzbeat/pull/3579))、
|
||||
Failure to send notifications when collector is offline([#3601](https://github.com/apache/hertzbeat/pull/3601))、JEXL keyword issue fixes and additions([#3629](https://github.com/apache/hertzbeat/pull/3629))、Security handling for JDBC URL([#3625](https://github.com/apache/hertzbeat/pull/3625))、
|
||||
Monitoring template fixes([#3636](https://github.com/apache/hertzbeat/pull/3636)、[#3649](https://github.com/apache/hertzbeat/pull/3649))、Server-chan whitelist optimization([#3740](https://github.com/apache/hertzbeat/pull/3740))、Grafana visualization integration display issues([#3666](https://github.com/apache/hertzbeat/pull/3666))
|
||||
|
||||
- Improvement:
|
||||
|
||||
Prometheus parse([#3761](https://github.com/apache/hertzbeat/pull/3761)、[#3752](https://github.com/apache/hertzbeat/pull/3752)、[#3745](https://github.com/apache/hertzbeat/pull/3745)、[#3725](https://github.com/apache/hertzbeat/pull/3725)、[#3662](https://github.com/apache/hertzbeat/pull/3662))、Improved metric rendering performance[#3719](https://github.com/apache/hertzbeat/pull/3719)、
|
||||
Styling improvements([#3734](https://github.com/apache/hertzbeat/pull/3734))、SSE exception handling improvements([#3775](https://github.com/apache/hertzbeat/pull/3775))、Threshold rule operation enhancements([#3780](https://github.com/apache/hertzbeat/pull/3780))
|
||||
|
||||
- Refactor:
|
||||
|
||||
Alert cache management([#3525](https://github.com/apache/hertzbeat/pull/3525))、PromQL threshold comparison logic([#3574](https://github.com/apache/hertzbeat/pull/3574))、Prometheus tag value UTF-8 support([#3810](https://github.com/apache/hertzbeat/pull/3810))
|
||||
|
||||
- New Features:
|
||||
|
||||
PromQL threshold configuration preview([#3505](https://github.com/apache/hertzbeat/pull/3505))、System time zone feature([#3588](https://github.com/apache/hertzbeat/pull/3588))、Metric Favorites Feature([#3735](https://github.com/apache/hertzbeat/pull/3735))
|
||||
Jenkins Monitoring([#3774](https://github.com/apache/hertzbeat/pull/3774))、Apollo Configuration Center Monitoring([#3768](https://github.com/apache/hertzbeat/pull/3768))、TDengine monitoring([#3678](https://github.com/apache/hertzbeat/pull/3678))
|
||||
Huawei Cloud alert integration([#3443](https://github.com/apache/hertzbeat/pull/3443))、Alibaba Cloud SLS alert integration([#3422](https://github.com/apache/hertzbeat/pull/3422))、Metrics Parsing([#3645](https://github.com/apache/hertzbeat/pull/3645)、[#3612](https://github.com/apache/hertzbeat/pull/3612))
|
||||
Internationalization-Related([#3585](https://github.com/apache/hertzbeat/pull/3585)[#3565](https://github.com/apache/hertzbeat/pull/3565))
|
||||
|
||||
- Document:
|
||||
|
||||
Document-related([#3383](https://github.com/apache/hertzbeat/pull/3383)、[#3380](https://github.com/apache/hertzbeat/pull/3380)、[#3526](https://github.com/apache/hertzbeat/pull/3526)、[#3559](https://github.com/apache/hertzbeat/pull/3559)、[#3600](https://github.com/apache/hertzbeat/pull/3600)、[#3658](https://github.com/apache/hertzbeat/pull/3658)、[#3695](https://github.com/apache/hertzbeat/pull/3695))
|
||||
|
||||
## Community Engagement and Growth
|
||||
|
||||
By participating in Apache HertzBeat's regular meetings and contributing daily, I not only broadened my technical horizons but also learned how to collaborate more effectively within open-source projects. Communicating and working alongside community members has given me a deeper appreciation for the open, inclusive, and supportive spirit of the open-source community.
|
||||
|
||||
Becoming a Committer means taking on greater responsibility. Beyond continuing to refine the code, it is even more crucial to maintain a rigorous approach during code reviews, providing contributors with constructive feedback and recognition to help more people participate and grow.
|
||||
|
||||
## Advice for Open Source Developers
|
||||
|
||||
The journey into open source begins with passion and grows through practice. Open source is not only a vehicle for technical enthusiasm but also a journey of mutual growth with the community.
|
||||
|
||||
For developers new to open source, taking the plunge is the most crucial step. Even the smallest contributions can accumulate into invaluable experience. In your daily work, actively participate in community discussions and code reviews, learning continuously through collaboration. Maintain patience and persistence—every challenge you encounter presents an opportunity for growth.
|
||||
|
||||
Within the Apache HertzBeat community, there are ample opportunities to actively participate in projects. Keep a close eye on the issue list and engage in frequent communication—you'll always find someone eager to respond to your ideas and gain inspiration from your perspectives. This is the very essence of community collaboration: a mutual journey forward.
|
||||
|
||||
## Contribute to Apache HertzBeat
|
||||
|
||||
The best time to plant a tree was ten years ago. The second-best time is now. If you'd like to contribute to Apache HertzBeat, you can start in the following ways:
|
||||
|
||||
1. Documentation and Translation: Improving or translating project documentation not only helps you quickly familiarize yourself with the project but also enables more users to understand it.
|
||||
2. Issue Fixing: Browse project issues and attempt to claim and resolve some simple issues or optimization points.
|
||||
3. Functional Expansion: Participate in discussions and development of new features based on interests and project requirements, gradually deepening understanding of the project architecture and refining functionality.
|
||||
|
||||
## Conclusion
|
||||
|
||||
We hope Apache HertzBeat will continue to uphold the spirit of open source, attracting more talented developers to jointly build a technologically advanced and vibrant community. I will also continue to contribute my efforts to Apache HertzBeat, and I look forward to welcoming more developers to join us in advancing the project's development.
|
||||
|
||||
A huge thank you to everyone in the community for your meticulous reviews and patient guidance on every PR. May the project's impact continue to grow, and may the community thrive!
|
||||
@@ -53,10 +53,10 @@ Even small corrections to typos are very welcome :)
|
||||
#### Backend start
|
||||
|
||||
1. Requires `maven3+`, `java17` and `lombok` environments
|
||||
2. (Optional) Modify the configuration file: `manager/src/main/resources/application.yml`
|
||||
2. (Optional) Modify the configuration file: `hertzbeat-startup/src/main/resources/application.yml`
|
||||
3. Execute under the project root directory: `mvn clean install -DskipTests`
|
||||
4. Add VM Options: `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
5. Start `springboot manager` service: `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. Start `springboot startup` service: `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
#### Frontend start
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ sidebar_label: Development
|
||||
### Backend start
|
||||
|
||||
1. Requires `maven3+`, `java17` and `lombok` environments
|
||||
2. (Optional) Modify the configuration file: `manager/src/main/resources/application.yml`
|
||||
2. (Optional) Modify the configuration file: `hertzbeat-startup/src/main/resources/application.yml`
|
||||
3. Execute under the project root directory: `mvn clean install -DskipTests`
|
||||
4. Add VM Options: `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
5. Start `springboot manager` service: `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. Start `springboot startup` service: `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
### Frontend start
|
||||
|
||||
|
||||
@@ -108,6 +108,6 @@ spring:
|
||||
|
||||
- It is recommended to set the host field in the MySQL URL to the public IP address when using Hertzbeat in docker.
|
||||
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./mysql-change#database-creation) and modify the configuration in `hertzbeat-manager/src/main/resources/application.yml`.
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./mysql-change#database-creation) and modify the configuration in `hertzbeat-startup/src/main/resources/application.yml`.
|
||||
|
||||
**Start HertzBeat visit <http://ip:1157/> on the browser You can use HertzBeat monitoring alarm, default account and password are admin/hertzbeat**
|
||||
|
||||
@@ -96,6 +96,6 @@ spring:
|
||||
level: SEVERE
|
||||
```
|
||||
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./postgresql-change#database-creation) and modify the configuration in `hertzbeat-manager/src/main/resources/application.yml`.
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./postgresql-change#database-creation) and modify the configuration in `hertzbeat-startup/src/main/resources/application.yml`.
|
||||
|
||||
**Start HertzBeat visit <http://ip:1157/> on the browser You can use HertzBeat monitoring alarm, default account and password are admin/hertzbeat**
|
||||
|
||||
@@ -63,7 +63,7 @@ Detailed config refer to [Install HertzBeat via Package](package-deploy)
|
||||
##### 3:Start via source code
|
||||
|
||||
1. Local source code debugging needs to start the back-end project `manager` and the front-end project `web-app`.
|
||||
2. Backend:need `maven3+`, `java17`, `lombok`, start the `manager` service.
|
||||
2. Backend:need `maven3+`, `java17`, `lombok`, start the `hertzbeat-startup` service.
|
||||
3. Web:need `nodejs npm angular-cli` environment, Run `ng serve --open` in `web-app` directory after backend startup.
|
||||
4. Access `http://localhost:4200` to start, default account: `admin/hertzbeat`
|
||||
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
---
|
||||
title: 热烈欢迎 HertzBeat 小伙伴新晋社区 Committer!
|
||||
author: Duansg
|
||||
author_title: SiGuo Duan
|
||||
author_url: https://github.com/Duansg
|
||||
tags: [opensource, practice]
|
||||
keywords:
|
||||
[
|
||||
open source monitoring system,
|
||||
alerting system,
|
||||
Apache,
|
||||
Apache Committer,
|
||||
HertzBeat,
|
||||
]
|
||||
---
|
||||
|
||||
> 大家好,非常荣幸收到社区邀请,成为 Apache HertzBeat™ Committer。
|
||||
|
||||
## 个人介绍
|
||||
|
||||
- **姓名**: 段嗣国
|
||||
- **Github**: [Duansg](https://github.com/Duansg)
|
||||
- **邮箱**: [duansg@apache.org](mailto:duansg@apache.org)
|
||||
- **职位**: 资深开发工程师
|
||||
- **主要技术方向**: 目前从事于电商行业,主要聚焦在亿级商品中台业务的数据处理及管理的研发领域。
|
||||
|
||||
## 初识 Apache HertzBeat
|
||||
|
||||
在实际项目中,为了改善现有的监控体系,我们希望对已有指标进行可视化监控与告警。但同时,又不希望引入或兼容过于复杂的监控系统。因此,我开始寻找一款开箱即用、功能全面且易于扩展的监控解决方案,也正是在这个过程中,我逐渐接触并了解了 Apache HertzBeat。
|
||||
|
||||
随着不断的调研与调试,我开始深入其源码,并逐步参与到社区的贡献中。如今,关注社区动态、阅读 PR 和讨论问题,已经成为我日常的一部分。
|
||||
|
||||
## 开源贡献之路
|
||||
|
||||
在正式参与 Apache HertzBeat 项目的贡献过程中,起初最大的挑战是对项目架构的不熟悉,尤其是各模块之间的协作机制。 我通过阅读官方文档、源码以及社区的历史 PR,逐渐梳理清了脉络。与此同时,在 PR Review 的过程中,与社区成员的讨论也让我获得了许多宝贵的建议与新的思路——这些交流带来了巨大的成长。
|
||||
|
||||
通过系统地阅读源码与分析历史改动,我逐步深入理解了项目结构,并积极参与代码修复与功能完善。目前,我已在 Apache HertzBeat 项目中提交并合并了多项贡献,包括但不限于:
|
||||
|
||||
> [47 commits](https://github.com/apache/hertzbeat/commits?author=Duansg) 23,649 ++ 5,547 --
|
||||
|
||||
**Submitted PR (47 commits)**
|
||||
|
||||
- 修复:
|
||||
|
||||
Prometheus 实时阈值未生效的问题([#3434](https://github.com/apache/hertzbeat/pull/3434))、自定义看板的空指针异常([#3448](https://github.com/apache/hertzbeat/pull/3448))、Jacoco 无法生成测试报告的问题([#3455](https://github.com/apache/hertzbeat/pull/3455))、
|
||||
页面数量计算错误([#3467](https://github.com/apache/hertzbeat/pull/3467))、ANTLR4 语义解析修复与优化([#3482](https://github.com/apache/hertzbeat/pull/3482)、[#3488](https://github.com/apache/hertzbeat/pull/3488))、收集器启动通知异常([#3579](https://github.com/apache/hertzbeat/pull/3579))、
|
||||
收集器离线时未发送通知([#3601](https://github.com/apache/hertzbeat/pull/3601))、JEXL 关键字问题修复与补充([#3629](https://github.com/apache/hertzbeat/pull/3629))、JDBC URL 的安全相关处理问题([#3625](https://github.com/apache/hertzbeat/pull/3625))、
|
||||
监控模板修复([#3636](https://github.com/apache/hertzbeat/pull/3636)、[#3649](https://github.com/apache/hertzbeat/pull/3649))、Server酱白名单优化([#3740](https://github.com/apache/hertzbeat/pull/3740))、Grafana 可视化集成显示问题([#3666](https://github.com/apache/hertzbeat/pull/3666))
|
||||
|
||||
- 改进:
|
||||
|
||||
Prometheus解析([#3761](https://github.com/apache/hertzbeat/pull/3761)、[#3752](https://github.com/apache/hertzbeat/pull/3752)、[#3745](https://github.com/apache/hertzbeat/pull/3745)、[#3725](https://github.com/apache/hertzbeat/pull/3725)、[#3662](https://github.com/apache/hertzbeat/pull/3662))、指标渲染性能改进[#3719](https://github.com/apache/hertzbeat/pull/3719)、样式改进([#3734](https://github.com/apache/hertzbeat/pull/3734))、SSE异常处理改进([#3775](https://github.com/apache/hertzbeat/pull/3775))、阈值规则操作改进([#3780](https://github.com/apache/hertzbeat/pull/3780))
|
||||
|
||||
- 重构:
|
||||
|
||||
告警缓存管理([#3525](https://github.com/apache/hertzbeat/pull/3525))、PromQL阈值比较逻辑([#3574](https://github.com/apache/hertzbeat/pull/3574))、Prometheus 标签值 UTF-8支持([#3810](https://github.com/apache/hertzbeat/pull/3810))
|
||||
|
||||
- 新功能:
|
||||
|
||||
PromQL阈值配置预览([#3505](https://github.com/apache/hertzbeat/pull/3505))、系统时区功能([#3588](https://github.com/apache/hertzbeat/pull/3588))、指标收藏功能([#3735](https://github.com/apache/hertzbeat/pull/3735))
|
||||
jenkins监控([#3774](https://github.com/apache/hertzbeat/pull/3774))、apollo配置中心监控([#3768](https://github.com/apache/hertzbeat/pull/3768))、TDengine监控([#3678](https://github.com/apache/hertzbeat/pull/3678))
|
||||
华为云告警集成([#3443](https://github.com/apache/hertzbeat/pull/3443))、阿里云SLS告警集成([#3422](https://github.com/apache/hertzbeat/pull/3422))、指标解析([#3645](https://github.com/apache/hertzbeat/pull/3645)、[#3612](https://github.com/apache/hertzbeat/pull/3612))
|
||||
国际化相关([#3585](https://github.com/apache/hertzbeat/pull/3585)[#3565](https://github.com/apache/hertzbeat/pull/3565))
|
||||
|
||||
- 文档:
|
||||
|
||||
文档相关([#3383](https://github.com/apache/hertzbeat/pull/3383)、[#3380](https://github.com/apache/hertzbeat/pull/3380)、[#3526](https://github.com/apache/hertzbeat/pull/3526)、[#3559](https://github.com/apache/hertzbeat/pull/3559)、[#3600](https://github.com/apache/hertzbeat/pull/3600)、[#3658](https://github.com/apache/hertzbeat/pull/3658)、[#3695](https://github.com/apache/hertzbeat/pull/3695))
|
||||
|
||||
## 社区参与和成长
|
||||
|
||||
通过参与 Apache HertzBeat 的例会与日常贡献,不仅拓宽了个人的技术视野,也学习到如何更高效地在开源项目中协作。与社区成员的沟通与协作,让我更加深刻地体会到开源社区的开放、包容与互助精神。
|
||||
|
||||
成为 Committer 意味着肩负更多责任。除了继续完善代码之外,更重要的是在 Review 时保持严谨的态度,给予贡献者建设性的反馈与认可,帮助更多人参与并成长。
|
||||
|
||||
## 给开源开发者的建议
|
||||
|
||||
开源之路始于兴趣,成长于实践。开源不仅是技术热情的载体,更是一段与社区共同成长的旅程。
|
||||
|
||||
对于初次参与开源的开发者来说,勇于尝试是最重要的一步。即使是最小的贡献,也能积累宝贵的经验。
|
||||
在日常中,多参与社区讨论与代码评审,在交流中不断学习;保持耐心与坚持,每一次遇到的难题与挑战,都是成长的契机。
|
||||
|
||||
在 Apache HertzBeat 社区中,实际参与项目的机会很多。多关注 Issue 列表,多沟通交流——总会有人积极回应你的想法,并从你的观点中获得启发,这正是社区的“双向奔赴”。
|
||||
|
||||
## 为 Apache HertzBeat 贡献力量
|
||||
|
||||
种一棵树最好的时间是十年前,其次是现在。 如果你也想为 Apache HertzBeat 贡献力量,可以从以下几个方向开始:
|
||||
|
||||
1. 文档与翻译:改进或翻译项目文档,既能快速熟悉项目,也能帮助更多用户了解项目。
|
||||
2. 问题修复:浏览项目的 issue,尝试认领并修复一些简单的问题或优化点。
|
||||
3. 功能扩展:根据兴趣与项目需求,参与新功能的讨论与开发,逐步深入理解项目架构并完善功能。
|
||||
|
||||
## 结语
|
||||
|
||||
期望 Apache HertzBeat 能够继续秉持开源精神,吸引更多优秀的开发者,共同打造一个技术领先且充满活力的社区。我也将持续为 Apache HertzBeat 贡献一份力量,期待更多开发者加入我们,一起推动项目的发展。
|
||||
|
||||
非常感谢社区的伙伴们,感谢你们对每一个 PR 的细致 Review 与耐心指导,希望项目未来影响力越来越大,社区越来越好!
|
||||
@@ -54,13 +54,13 @@ limitations under the License.
|
||||
|
||||
1. 需要 `maven3+`, `java17` 和 `lombok` 环境
|
||||
|
||||
2. (可选)修改配置文件配置信息-`manager/src/main/resources/application.yml`
|
||||
2. (可选)修改配置文件配置信息-`hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. 在项目根目录运行编译: `mvn clean install -DskipTests`
|
||||
|
||||
4. 在 `jvm` 加入参数 `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. 启动`springboot manager`服务 `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. 启动`springboot startup`服务 `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
#### 前端启动
|
||||
|
||||
|
||||
@@ -13,13 +13,13 @@ sidebar_label: 运行编译
|
||||
|
||||
1. 需要 `maven3+`, `java17` 和 `lombok` 环境
|
||||
|
||||
2. (可选)修改配置文件配置信息-`manager/src/main/resources/application.yml`
|
||||
2. (可选)修改配置文件配置信息-`hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. 在项目根目录运行编译: `mvn clean install -DskipTests`
|
||||
|
||||
4. 在 `jvm` 加入参数 `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. 启动`springboot manager`服务 `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. 启动`springboot startup`服务 `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
### 前端启动
|
||||
|
||||
|
||||
@@ -111,6 +111,6 @@ spring:
|
||||
|
||||
- 通过docker启动时,建议修改host为宿主机的外网IP地址,包括mysql连接字符串。
|
||||
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./mysql-change#数据库创建)以及修改`hertzbeat-manager/src/main/resources/application.yml`中的配置即可。
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./mysql-change#数据库创建)以及修改`hertzbeat-startup/src/main/resources/application.yml`中的配置即可。
|
||||
|
||||
**启动 HertzBeat 浏览器访问 <http://ip:1157/> 开始使用HertzBeat进行监控告警,默认账户密码 admin/hertzbeat**
|
||||
|
||||
@@ -98,6 +98,6 @@ spring:
|
||||
level: SEVERE
|
||||
```
|
||||
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./postgresql-change#数据库创建)以及修改`hertzbeat-manager/src/main/resources/application.yml`中的配置即可。
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./postgresql-change#数据库创建)以及修改`hertzbeat-startup/src/main/resources/application.yml`中的配置即可。
|
||||
|
||||
**启动 HertzBeat 浏览器访问 <http://ip:1157/> 开始使用HertzBeat进行监控告警,默认账户密码 admin/hertzbeat**
|
||||
|
||||
@@ -66,8 +66,8 @@ sidebar_label: 快速开始
|
||||
|
||||
#### 方式三:本地代码启动
|
||||
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程`manager`和前端工程`web-app`
|
||||
2. 后端:需要`maven3+`, `java17`和`lombok`环境,修改`YML`配置信息并启动`manager`服务
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程`hertzbeat-startup`和前端工程`web-app`
|
||||
2. 后端:需要`maven3+`, `java17`和`lombok`环境,修改`YML`配置信息并启动`hertzbeat-startup`服务
|
||||
3. 前端:需要`nodejs npm angular-cli`环境,待本地后端启动后,在`web-app`目录下启动 `ng serve --open`
|
||||
4. 浏览器访问 `http://localhost:4200` 即可开始,默认账号密码 `admin/hertzbeat`
|
||||
|
||||
|
||||
+2
-2
@@ -54,13 +54,13 @@ limitations under the License.
|
||||
|
||||
1. 需要 `maven3+`, `java17` 和 `lombok` 环境
|
||||
|
||||
2. (可选)修改配置文件配置信息-`manager/src/main/resources/application.yml`
|
||||
2. (可选)修改配置文件配置信息-`hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. 在项目根目录运行编译: `mvn clean install -DskipTests`
|
||||
|
||||
4. 在 `jvm` 加入参数 `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. 启动`springboot manager`服务 `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. 启动`springboot startup`服务 `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
#### 前端启动
|
||||
|
||||
|
||||
+2
-2
@@ -13,13 +13,13 @@ sidebar_label: 运行编译
|
||||
|
||||
1. 需要 `maven3+`, `java17` 和 `lombok` 环境
|
||||
|
||||
2. (可选)修改配置文件配置信息-`manager/src/main/resources/application.yml`
|
||||
2. (可选)修改配置文件配置信息-`hertzbeat-startup/src/main/resources/application.yml`
|
||||
|
||||
3. 在项目根目录运行编译: `mvn clean install -DskipTests`
|
||||
|
||||
4. 在 `jvm` 加入参数 `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
|
||||
5. 启动`springboot manager`服务 `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. 启动`springboot startup`服务 `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
### 前端启动
|
||||
|
||||
|
||||
@@ -111,6 +111,6 @@ spring:
|
||||
|
||||
- 通过docker启动时,建议修改host为宿主机的外网IP地址,包括mysql连接字符串。
|
||||
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./mysql-change#数据库创建)以及修改`hertzbeat-manager/src/main/resources/application.yml`中的配置即可。
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./mysql-change#数据库创建)以及修改`hertzbeat-startup/src/main/resources/application.yml`中的配置即可。
|
||||
|
||||
**启动 HertzBeat 浏览器访问 <http://ip:1157/> 开始使用HertzBeat进行监控告警,默认账户密码 admin/hertzbeat**
|
||||
|
||||
+1
-1
@@ -98,6 +98,6 @@ spring:
|
||||
level: SEVERE
|
||||
```
|
||||
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./postgresql-change#数据库创建)以及修改`hertzbeat-manager/src/main/resources/application.yml`中的配置即可。
|
||||
> 注意:上述是针对下载安装包的方式,对于本地切换数据源,只需完成[数据库创建](./postgresql-change#数据库创建)以及修改`hertzbeat-startup/src/main/resources/application.yml`中的配置即可。
|
||||
|
||||
**启动 HertzBeat 浏览器访问 <http://ip:1157/> 开始使用HertzBeat进行监控告警,默认账户密码 admin/hertzbeat**
|
||||
|
||||
@@ -66,7 +66,7 @@ sidebar_label: 快速开始
|
||||
|
||||
#### 方式三:本地代码启动
|
||||
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程`manager`和前端工程`web-app`
|
||||
1. 此为前后端分离项目,本地代码调试需要分别启动后端工程`hertzbeat-startup`和前端工程`web-app`
|
||||
2. 后端:需要`maven3+`, `java17`和`lombok`环境,修改`YML`配置信息并启动`manager`服务
|
||||
3. 前端:需要`nodejs npm angular-cli`环境,待本地后端启动后,在`web-app`目录下启动 `ng serve --open`
|
||||
4. 浏览器访问 `http://localhost:4200` 即可开始,默认账号密码 `admin/hertzbeat`
|
||||
|
||||
@@ -53,10 +53,10 @@ Even small corrections to typos are very welcome :)
|
||||
#### Backend start
|
||||
|
||||
1. Requires `maven3+`, `java17` and `lombok` environments
|
||||
2. (Optional) Modify the configuration file: `manager/src/main/resources/application.yml`
|
||||
2. (Optional) Modify the configuration file: `hertzbeat-startup/src/main/resources/application.yml`
|
||||
3. Execute under the project root directory: `mvn clean install -DskipTests`
|
||||
4. Add VM Options: `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
5. Start `springboot manager` service: `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. Start `springboot startup` service: `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
#### Frontend start
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ sidebar_label: Development
|
||||
### Backend start
|
||||
|
||||
1. Requires `maven3+`, `java17` and `lombok` environments
|
||||
2. (Optional) Modify the configuration file: `manager/src/main/resources/application.yml`
|
||||
2. (Optional) Modify the configuration file: `hertzbeat-startup/src/main/resources/application.yml`
|
||||
3. Execute under the project root directory: `mvn clean install -DskipTests`
|
||||
4. Add VM Options: `--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED`
|
||||
5. Start `springboot manager` service: `manager/src/main/java/org/apache/hertzbeat/hertzbeat-manager/Manager.java`
|
||||
5. Start `springboot startup` service: `hertzbeat-startup/src/main/java/org/apache/hertzbeat/startup/HertzBeatApplication.java`
|
||||
|
||||
### Frontend start
|
||||
|
||||
|
||||
@@ -108,6 +108,6 @@ spring:
|
||||
|
||||
- It is recommended to set the host field in the MySQL URL to the public IP address when using Hertzbeat in docker.
|
||||
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./mysql-change#database-creation) and modify the configuration in `hertzbeat-manager/src/main/resources/application.yml`.
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./mysql-change#database-creation) and modify the configuration in `hertzbeat-startup/src/main/resources/application.yml`.
|
||||
|
||||
**Start HertzBeat visit <http://ip:1157/> on the browser You can use HertzBeat monitoring alarm, default account and password are admin/hertzbeat**
|
||||
|
||||
@@ -96,6 +96,6 @@ spring:
|
||||
level: SEVERE
|
||||
```
|
||||
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./postgresql-change#database-creation) and modify the configuration in `hertzbeat-manager/src/main/resources/application.yml`.
|
||||
> Note: The above applies to the method of downloading and installing the package. For local data source switching, simply complete the [Database creation](./postgresql-change#database-creation) and modify the configuration in `hertzbeat-startup/src/main/resources/application.yml`.
|
||||
|
||||
**Start HertzBeat visit <http://ip:1157/> on the browser You can use HertzBeat monitoring alarm, default account and password are admin/hertzbeat**
|
||||
|
||||
+8
@@ -295,6 +295,14 @@
|
||||
/>
|
||||
</nz-form-control>
|
||||
</nz-form-item>
|
||||
<nz-form-item *ngIf="receiver.type === 5">
|
||||
<nz-form-label [nzSpan]="7" nzFor="appSecret">
|
||||
{{ 'alert.notice.type.ding-secret' | i18n }}
|
||||
</nz-form-label>
|
||||
<nz-form-control [nzErrorTip]="'validation.required' | i18n" [nzSpan]="12">
|
||||
<input [(ngModel)]="receiver.appSecret" name="appSecret" nz-input type="text" />
|
||||
</nz-form-control>
|
||||
</nz-form-item>
|
||||
<nz-form-item *ngIf="receiver.type === 5">
|
||||
<nz-form-label [nzSpan]="7" nzFor="phone">{{ 'alert.notice.type.phone' | i18n }}</nz-form-label>
|
||||
<nz-form-control [nzErrorTip]="'validation.phone.invalid' | i18n" [nzSpan]="12">
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"alert.notice.type.WeComApp-userId": "User ID(separated by | symbol)",
|
||||
"alert.notice.type.access-token": "Robot ACCESS_TOKEN",
|
||||
"alert.notice.type.ding": "DingDing Robot",
|
||||
"alert.notice.type.ding-secret": "Robot Secret",
|
||||
"alert.notice.type.discord": "Discord Bot",
|
||||
"alert.notice.type.discord-bot-token": "Discord Bot Token",
|
||||
"alert.notice.type.discord-channel-id": "Discord Channel ID",
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"alert.notice.type.WeComApp-userId": "ユーザーID(|記号で区切る)",
|
||||
"alert.notice.type.access-token": "ロボットACCESS_TOKEN",
|
||||
"alert.notice.type.ding": "DingDing ロボット",
|
||||
"alert.notice.type.ding-secret": "DingTalkロボット秘密鍵",
|
||||
"alert.notice.type.discord": "Discord ボット",
|
||||
"alert.notice.type.discord-bot-token": "Discord ボットトークン",
|
||||
"alert.notice.type.discord-channel-id": "Discord チャンネルID",
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
"alert.notice.type.WeCom-robot-key": "Chave do Robô WeCom",
|
||||
"alert.notice.type.access-token": "Token de Acesso do Robô",
|
||||
"alert.notice.type.ding": "Robô DingDing",
|
||||
"alert.notice.type.ding-secret": "Chave Secreta do Robô DingDing",
|
||||
"alert.notice.type.fei-shu": "Robô FeiShu",
|
||||
"alert.notice.type.fei-shu-key": "Chave do Robô FeiShu",
|
||||
"alert.notice.type.telegram-bot": "Bot do Telegram",
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"alert.notice.type.WeComApp-userId": "用户id(多个使用|符号分隔)",
|
||||
"alert.notice.type.access-token": "机器人ACCESS_TOKEN",
|
||||
"alert.notice.type.ding": "钉钉机器人",
|
||||
"alert.notice.type.ding-secret": "钉钉机器人密钥",
|
||||
"alert.notice.type.discord": "Discord机器人",
|
||||
"alert.notice.type.discord-bot-token": "Discord Bot Token",
|
||||
"alert.notice.type.discord-channel-id": "Discord频道ID",
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
"alert.notice.type.WeComApp-userId": "使用者id(多個使用|符號分隔)",
|
||||
"alert.notice.type.access-token": "機器人ACCESS_TOKEN",
|
||||
"alert.notice.type.ding": "釘釘機器人",
|
||||
"alert.notice.type.ding-secret": "釘釘機器人密鑰",
|
||||
"alert.notice.type.discord": "Discord機器人",
|
||||
"alert.notice.type.discord-bot-token": "Discord Bot Token",
|
||||
"alert.notice.type.discord-channel-id": "Discord頻道ID",
|
||||
|
||||
Reference in New Issue
Block a user