Compare commits

...
21 Commits
Author SHA1 Message Date
tomsun28andTJxiaobao 67ad4b04ef docs: update doc and add graduation blog (#3729)
Signed-off-by: tomsun28 <tomsun28@outlook.com>
Co-authored-by: TJxiaobao <2922035952@qq.com>
2025-08-30 17:34:50 +08:00
DeleiGuoandCalvin 6432d689dd [improve] optimize the incident list on the status page to support paginated queries (#3727)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-30 11:23:10 +08:00
carl pinto 2eb856fffb [Improve] changed scroll of intervals in New Monitor page (#3726) 2025-08-30 00:02:29 +08:00
liutianyouandtomsun28 56312831ca [release] release new version 1.7.3 (#3724)
Co-authored-by: tomsun28 <tomsun28@outlook.com>
2025-08-29 00:07:49 +08:00
Duansg fe54d42bc0 [improve] Improve Prometheus label PromQL parsing logic (#3725) 2025-08-28 23:56:22 +08:00
DeleiGuoandtomsun28 2ea24c1b3a [feature] add Synology NAS monitoring support (#3721)
Co-authored-by: tomsun28 <tomsun28@outlook.com>
2025-08-28 23:41:47 +08:00
DeleiGuoandCalvin e0040e2ede [feature] add macOS monitoring support (#3715)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-28 23:26:57 +08:00
Calvinandliutianyou 0ac0fd4a8d [doc] add japanese i18n in app-tdengine.yml (#3717)
Co-authored-by: liutianyou <tianyou.liu@qq.com>
2025-08-27 22:11:51 +08:00
DuansgandCalvin 0ef87bcc08 [improve] Improve performance issues when loading large numbers of metric cards in Monitors (#3719)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-27 12:41:41 +08:00
Calvinandlynx009 660bda6e14 [doc] add japanese i18n in app-valkey.yml (#3706)
Co-authored-by: lynx009 <2030509072@qq.com>
2025-08-27 11:41:22 +08:00
Calvinandtomsun28 242cf40135 [doc] add japanese i18n in app-ubuntu.yml, app-windows.yml and app-yarn.yml (#3703)
Co-authored-by: tomsun28 <tomsun28@outlook.com>
2025-08-25 23:20:17 +08:00
lynx009 7319c55430 [doc] modify github link. (#3714) 2025-08-25 21:44:56 +08:00
5ea29f610b [improve] Improve the parsing logic of prometheus label (#3662)
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: tomsun28 <tomsun28@outlook.com>
Co-authored-by: Sherlock Yin <sherlock.yin1994@gmail.com>
2025-08-25 19:26:31 +08:00
b74aff0500 refactor: Optimize the monitoring data chart component (#3668)
Co-authored-by: tuzy <tuzy.cq@chinaccs.cn>
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: tomsun28 <tomsun28@outlook.com>
Co-authored-by: Kerwin Bryant <kerwin612@qq.com>
2025-08-24 22:10:27 +08:00
d2e8f2f4aa [bugfix] fixed jexl keyword issue in vastbase monitoring template (#3708)
Co-authored-by: kangli <likang@apache.org>
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-24 20:51:41 +08:00
DeleiGuoandkangli 28681a1f9e [bugfix] fixed jexl keyword issue in greenplum monitoring template (#3707)
Co-authored-by: kangli <likang@apache.org>
2025-08-24 20:49:25 +08:00
DuansgandCalvin 6814c7c357 [feat] Support TDengine monitoring (#3678)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-24 14:23:23 +08:00
DeleiGuoandCalvin f475540508 [bugfix] fixed jexl keyword issue in kingbase monitoring template (#3705)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-24 13:04:09 +08:00
Calvin 44660a5042 [doc] add japanese i18n in app-vastbase.yml (#3704) 2025-08-24 12:02:44 +08:00
339386fd2b [bugfix] resolve translation value fetching for uppercase app names (#3690)
Signed-off-by: Wenqi Luo <495872803@qq.com>
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: Yang Chen <1597081640@qq.com>
2025-08-24 00:07:55 +08:00
tomsun28andCalvin faa7cb71db [doc] update website, doc while graduate (#3701)
Signed-off-by: tomsun28 <tomsun28@outlook.com>
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-08-23 22:11:37 +08:00
282 changed files with 6850 additions and 1124 deletions
+1 -1
View File
@@ -16,7 +16,7 @@
#
github:
description: Real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
description: Real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
homepage: https://hertzbeat.apache.org/
labels:
- monitoring
+1
View File
@@ -67,6 +67,7 @@ header:
- 'karma.conf.js'
- 'proxy.conf.js'
- '.helmignore'
- 'script/helm/**'
- 'web-app/src/app/core/**'
- 'web-app/src/app/layout/**'
- 'web-app/src/app/routes/exception/**'
+1 -1
View File
@@ -1,4 +1,4 @@
Apache HertzBeat
Apache HertzBeat
Copyright 2024-2025 The Apache Software Foundation
This product includes software developed at
+2 -2
View File
@@ -9,7 +9,7 @@
<b><a href="README.md">English</a></b> | <a href="README_CN.md">中文</a> | <a href="README_JP.md">日本語</a>
</p>
> A real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
> A real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
[![Discord](https://img.shields.io/badge/Chat-Discord-7289DA?logo=discord)](https://discord.gg/Fb6M73htGr)
[![Reddit](https://img.shields.io/badge/Reddit-Community-7289DA?logo=reddit)](https://www.reddit.com/r/hertzbeat/)
@@ -28,7 +28,7 @@
## 🎡 <font color="green">Introduction</font>
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time monitoring system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time observability system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
### Features
+2 -2
View File
@@ -9,7 +9,7 @@
<a href="README.md">English</a> | <b><a href="README_CN.md">中文</a></b> | <a href="README_JP.md">日本語</a>
</p>
> 实时监控系统,无需 Agent,性能集群,兼容 Prometheus,自定义监控和状态页构建能力。
> 实时观测系统,无需 Agent,性能集群,兼容 Prometheus,自定义监控和状态页构建能力。
[![Discord](https://img.shields.io/badge/Chat-Discord-7289DA?logo=discord)](https://discord.gg/Fb6M73htGr)
[![Reddit](https://img.shields.io/badge/Reddit-Community-7289DA?logo=reddit)](https://www.reddit.com/r/hertzbeat/)
@@ -28,7 +28,7 @@
## 🎡 <font color="green">介绍</font>
[Apache HertzBeat](https://github.com/apache/hertzbeat) 是一个易用友好的开源实时监控告警系统,无需 Agent,高性能集群,兼容 Prometheus,提供强大的自定义监控和状态页构建能力。
[Apache HertzBeat](https://github.com/apache/hertzbeat) 是一个易用友好的开源实时监控告警系统,无需 Agent,高性能集群,兼容 Prometheus,提供强大的自定义监控和状态页构建能力。
### 特点
+3 -3
View File
@@ -1,6 +1,6 @@
# Security Policy
Apache HertzBeat follows the [ASF vulnerability handling process](https://apache.org/security/#vulnerability-handling)
Apache HertzBeat follows the [ASF vulnerability handling process](https://apache.org/security/#vulnerability-handling)
## Supported Versions
@@ -17,6 +17,6 @@ To report a new vulnerability you have discovered please follow the [ASF vulnera
## Extra Information
- [Apache HertzBeat Security Model](https://hertzbeat.apache.org/docs/help/security_model)
- [Apache HertzBeat Security Model](https://hertzbeat.apache.org/docs/help/security_model)
- [ASF Security](https://www.apache.org/security/)
- [Apache HertzBeat Document](https://hertzbeat.apache.org/docs/)
- [Apache HertzBeat Document](https://hertzbeat.apache.org/docs/)
@@ -640,11 +640,13 @@ public class HttpCollectImpl extends AbstractCollect {
.collect(Collectors.toMap(MetricFamily.Label::getName, MetricFamily.Label::getValue));
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
for (String aliasField : aliasFields) {
if ("value".equals(aliasField)) {
String columnValue = labelMap.get(aliasField);
if (columnValue != null) {
valueRowBuilder.addColumn(columnValue);
} else if (CommonConstants.PROM_VALUE.equals(aliasField) || CommonConstants.PROM_METRIC_VALUE.equals(aliasField)) {
valueRowBuilder.addColumn(String.valueOf(metric.getValue()));
} else {
String columnValue = labelMap.get(aliasField);
valueRowBuilder.addColumn(columnValue == null ? CommonConstants.NULL_VALUE : columnValue);
valueRowBuilder.addColumn(CommonConstants.NULL_VALUE);
}
}
builder.addValueRow(valueRowBuilder.build());
@@ -60,7 +60,7 @@ public class PrometheusMatrixParser extends AbstractPrometheusParse {
boolean setValueFlag = false;
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
for (String aliasField : aliasFields) {
if (!CollectUtil.assertPromRequireField(aliasField)) {
if (!CollectUtil.assertPromRequireField(aliasField) || CollectUtil.isValueAsLabel(aliasField, r.getMetric())) {
JsonElement jsonElement = r.getMetric().get(aliasField);
if (jsonElement != null) {
valueRowBuilder.addColumn(jsonElement.getAsString());
@@ -93,7 +93,6 @@ public class PrometheusMatrixParser extends AbstractPrometheusParse {
}
builder.addValueRow(valueRowBuilder.build());
}
}
}
}
@@ -59,7 +59,7 @@ public class PrometheusVectorParser extends AbstractPrometheusParse {
for (PromVectorOrMatrix.Result r : result) {
CollectRep.ValueRow.Builder valueRowBuilder = CollectRep.ValueRow.newBuilder();
for (String aliasField : aliasFields) {
if (!CollectUtil.assertPromRequireField(aliasField)) {
if (!CollectUtil.assertPromRequireField(aliasField) || CollectUtil.isValueAsLabel(aliasField, r.getMetric())) {
JsonElement jsonElement = r.getMetric().get(aliasField);
if (jsonElement != null) {
valueRowBuilder.addColumn(jsonElement.getAsString());
@@ -25,7 +25,10 @@ import org.apache.hertzbeat.common.entity.message.CollectRep;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -289,4 +292,253 @@ class HttpCollectImplTest {
firstRow = capturedRows.get(0);
assertEquals("0.268751364291017", firstRow.getColumns(0));
}
@Test
void testParsePromQlLabelValue() throws Exception {
// Create Prometheus format test data
String prometheusData = """
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "taos_cluster_info_first_ep",
"cluster_id": "590779086215866783",
"instance": "host.docker.internal:6043",
"job": "tdengine",
"value": "localhost:6030"
},
"value": [
1756233177.048,
"1"
]
}
]
}
}""";
List<CollectRep.ValueRow> capturedRows = new ArrayList<>();
CollectRep.MetricsData.Builder builder = new CollectRep.MetricsData.Builder() {
@Override
public CollectRep.MetricsData.Builder addValueRow(CollectRep.ValueRow valueRow) {
capturedRows.add(valueRow);
return super.addValueRow(valueRow);
}
@Override
public String getMetrics() {
return "jvm_memory_used_bytes";
}
};
Method parseMethod = HttpCollectImpl.class.getDeclaredMethod(
"parseResponseByPromQl",
String.class,
List.class,
HttpProtocol.class,
CollectRep.MetricsData.Builder.class);
parseMethod.setAccessible(true);
parseMethod.invoke(httpCollectImpl, prometheusData, Lists.newArrayList("cluster_id", "value"), new HttpProtocol(), builder);
// Verify the results
assertEquals(1, capturedRows.size());
CollectRep.ValueRow firstRow = capturedRows.get(0);
assertEquals("590779086215866783", firstRow.getColumns(0));
assertEquals("localhost:6030", firstRow.getColumns(1));
}
@Test
void testParsePromQlMetricValue() throws Exception {
// Create Prometheus format test data
String prometheusData = """
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "taos_cluster_info_first_ep",
"cluster_id": "590779086215866783",
"instance": "host.docker.internal:6043",
"job": "tdengine",
"value": "localhost:6030"
},
"value": [
1756233177.048,
"1"
]
}
]
}
}""";
List<CollectRep.ValueRow> capturedRows = new ArrayList<>();
CollectRep.MetricsData.Builder builder = new CollectRep.MetricsData.Builder() {
@Override
public CollectRep.MetricsData.Builder addValueRow(CollectRep.ValueRow valueRow) {
capturedRows.add(valueRow);
return super.addValueRow(valueRow);
}
@Override
public String getMetrics() {
return "jvm_memory_used_bytes";
}
};
Method parseMethod = HttpCollectImpl.class.getDeclaredMethod(
"parseResponseByPromQl",
String.class,
List.class,
HttpProtocol.class,
CollectRep.MetricsData.Builder.class);
parseMethod.setAccessible(true);
parseMethod.invoke(httpCollectImpl, prometheusData, Lists.newArrayList("cluster_id", "value", "metric_value"), new HttpProtocol(), builder);
// Verify the results
assertEquals(1, capturedRows.size());
CollectRep.ValueRow firstRow = capturedRows.get(0);
assertEquals("590779086215866783", firstRow.getColumns(0));
assertEquals("localhost:6030", firstRow.getColumns(1));
assertEquals("1", firstRow.getColumns(2));
}
@Test
void testParsePromQlValue() throws Exception {
// Create Prometheus format test data
String prometheusData = """
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"__name__": "taos_cluster_info_first_ep",
"cluster_id": "590779086215866783",
"instance": "host.docker.internal:6043",
"job": "tdengine"
},
"value": [
1756233177.048,
"1"
]
}
]
}
}""";
List<CollectRep.ValueRow> capturedRows = new ArrayList<>();
CollectRep.MetricsData.Builder builder = new CollectRep.MetricsData.Builder() {
@Override
public CollectRep.MetricsData.Builder addValueRow(CollectRep.ValueRow valueRow) {
capturedRows.add(valueRow);
return super.addValueRow(valueRow);
}
@Override
public String getMetrics() {
return "jvm_memory_used_bytes";
}
};
Method parseMethod = HttpCollectImpl.class.getDeclaredMethod(
"parseResponseByPromQl",
String.class,
List.class,
HttpProtocol.class,
CollectRep.MetricsData.Builder.class);
parseMethod.setAccessible(true);
parseMethod.invoke(httpCollectImpl, prometheusData, Lists.newArrayList("cluster_id", "value"), new HttpProtocol(), builder);
// Verify the results
assertEquals(1, capturedRows.size());
CollectRep.ValueRow firstRow = capturedRows.get(0);
assertEquals("590779086215866783", firstRow.getColumns(0));
assertEquals("1", firstRow.getColumns(1));
}
@Test
void testParsePrometheusLabelValue() throws Exception {
// Create Prometheus format test data
String prometheusData = """
# HELP jvm_memory_used_bytes The amount of used memory in bytes
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",value="G1 Survivor Space"} 1048576
""";
InputStream inputStream = new ByteArrayInputStream(prometheusData.getBytes(StandardCharsets.UTF_8));
List<CollectRep.ValueRow> capturedRows = new ArrayList<>();
CollectRep.MetricsData.Builder builder = new CollectRep.MetricsData.Builder() {
@Override
public CollectRep.MetricsData.Builder addValueRow(CollectRep.ValueRow valueRow) {
capturedRows.add(valueRow);
return super.addValueRow(valueRow);
}
@Override
public String getMetrics() {
return "jvm_memory_used_bytes";
}
};
Method parseMethod = HttpCollectImpl.class.getDeclaredMethod(
"parseResponseByPrometheusExporter",
InputStream.class,
List.class,
CollectRep.MetricsData.Builder.class);
parseMethod.setAccessible(true);
parseMethod.invoke(httpCollectImpl, inputStream, Lists.newArrayList("area", "value"), builder);
// Verify the results
assertEquals(1, capturedRows.size());
CollectRep.ValueRow firstRow = capturedRows.get(0);
assertEquals("heap", firstRow.getColumns(0));
assertEquals("G1 Survivor Space", firstRow.getColumns(1));
}
@Test
void testParsePrometheus() throws Exception {
// Create Prometheus format test data
String prometheusData = """
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",id="G1 Eden Space"} 1.63577856E8
jvm_memory_used_bytes{area="heap",id="G1 Old Gen"} 2.7874304E7
jvm_memory_used_bytes{area="heap",id="G1 Survivor Space"} 512032.0
jvm_memory_used_bytes{area="nonheap",id="CodeCache"} 1.460288E7
jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space"} 5844504.0
jvm_memory_used_bytes{area="nonheap",id="Metaspace"} 4.1576344E7
""";
InputStream inputStream = new ByteArrayInputStream(prometheusData.getBytes(StandardCharsets.UTF_8));
List<CollectRep.ValueRow> capturedRows = new ArrayList<>();
CollectRep.MetricsData.Builder builder = new CollectRep.MetricsData.Builder() {
@Override
public CollectRep.MetricsData.Builder addValueRow(CollectRep.ValueRow valueRow) {
capturedRows.add(valueRow);
return super.addValueRow(valueRow);
}
@Override
public String getMetrics() {
return "jvm_memory_used_bytes";
}
};
Method parseMethod = HttpCollectImpl.class.getDeclaredMethod(
"parseResponseByPrometheusExporter",
InputStream.class,
List.class,
CollectRep.MetricsData.Builder.class);
parseMethod.setAccessible(true);
parseMethod.invoke(httpCollectImpl, inputStream, Lists.newArrayList("area", "id"), builder);
// Verify the results
assertEquals(6, capturedRows.size());
CollectRep.ValueRow firstRow = capturedRows.get(0);
assertEquals("heap", firstRow.getColumns(0));
assertEquals("G1 Eden Space", firstRow.getColumns(1));
capturedRows.forEach(t -> assertEquals(2, t.getColumnsList().size()));
}
}
@@ -55,7 +55,7 @@ spring:
collector:
info:
version: ${COLLECTOR_VERSION:1.7.2}
version: ${COLLECTOR_VERSION:1.7.3}
ip: ${COLLECTOR_IP:}
dispatch:
entrance:
@@ -171,7 +171,16 @@ public final class CollectUtil {
* assert prom field
*/
public static Boolean assertPromRequireField(String aliasField) {
return CommonConstants.PROM_TIME.equals(aliasField) || CommonConstants.PROM_VALUE.equals(aliasField);
return CommonConstants.PROM_TIME.equals(aliasField)
|| CommonConstants.PROM_VALUE.equals(aliasField)
|| CommonConstants.PROM_METRIC_VALUE.equals(aliasField);
}
/**
* Check if "value" field should be treated as a label instead of special field
*/
public static Boolean isValueAsLabel(String aliasField, JsonObject metric) {
return CommonConstants.PROM_VALUE.equals(aliasField) && null != metric && metric.has(aliasField);
}
/**
@@ -197,6 +197,11 @@ public interface CommonConstants {
*/
String PROM_VALUE = "value";
/**
* prometheus metric value alias
*/
String PROM_METRIC_VALUE = "metric_value";
/**
* Parameter Type Number
*/
@@ -17,10 +17,14 @@
package org.apache.hertzbeat.manager.controller;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.data.domain.Page;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.dto.Message;
@@ -37,6 +41,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -49,7 +54,7 @@ public class StatusPageController {
@Autowired
private StatusPageService statusPageService;
@GetMapping("/org")
@Operation(summary = "Query Status Page Organization")
public ResponseEntity<Message<StatusPageOrg>> queryStatusPageOrg() {
@@ -66,35 +71,35 @@ public class StatusPageController {
StatusPageOrg org = statusPageService.saveStatusPageOrg(statusPageOrg);
return ResponseEntity.ok(Message.success(org));
}
@GetMapping("/component")
@Operation(summary = "Query Status Page Components")
public ResponseEntity<Message<List<StatusPageComponent>>> queryStatusPageComponent() {
List<StatusPageComponent> statusPageComponents = statusPageService.queryStatusPageComponents();
return ResponseEntity.ok(Message.success(statusPageComponents));
}
@PostMapping("/component")
@Operation(summary = "Save Status Page Component")
public ResponseEntity<Message<Void>> newStatusPageComponent(@Valid @RequestBody StatusPageComponent statusPageComponent) {
statusPageService.newStatusPageComponent(statusPageComponent);
return ResponseEntity.ok(Message.success("Add success"));
}
@PutMapping("/component")
@Operation(summary = "Update Status Page Component")
public ResponseEntity<Message<Void>> updateStatusPageComponent(@Valid @RequestBody StatusPageComponent statusPageComponent) {
statusPageService.updateStatusPageComponent(statusPageComponent);
return ResponseEntity.ok(Message.success("Update success"));
}
@DeleteMapping("/component/{id}")
@Operation(summary = "Delete Status Page Component")
public ResponseEntity<Message<Void>> deleteStatusPageComponent(@PathVariable("id") final long id) {
statusPageService.deleteStatusPageComponent(id);
return ResponseEntity.ok(Message.success("Delete success"));
}
@GetMapping("/component/{id}")
@Operation(summary = "Query Status Page Component")
public ResponseEntity<Message<StatusPageComponent>> queryStatusPageComponent(@PathVariable("id") final long id) {
@@ -132,8 +137,13 @@ public class StatusPageController {
@GetMapping("/incident")
@Operation(summary = "Query Status Page Incidents")
public ResponseEntity<Message<List<StatusPageIncident>>> queryStatusPageIncident() {
List<StatusPageIncident> incidents = statusPageService.queryStatusPageIncidents();
public ResponseEntity<Message<Page<StatusPageIncident>>> queryStatusPageIncident(
@Parameter(description = "Search-Target", example = "x") @RequestParam(required = false) String search,
@Parameter(description = "Start Time", example = "1756384301907") @RequestParam(required = false) Long startTime,
@Parameter(description = "End Time", example = "1756384301907") @RequestParam(required = false) Long endTime,
@Parameter(description = "List current page", example = "0") @RequestParam(defaultValue = "0") int pageIndex,
@Parameter(description = "Number of list pages", example = "8") @RequestParam(defaultValue = "8") int pageSize) {
Page<StatusPageIncident> incidents = statusPageService.queryStatusPageIncidents(search, startTime, endTime, pageIndex, pageSize);
return ResponseEntity.ok(Message.success(incidents));
}
}
@@ -17,10 +17,14 @@
package org.apache.hertzbeat.manager.controller;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.data.domain.Page;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.dto.Message;
import org.apache.hertzbeat.common.entity.manager.StatusPageIncident;
@@ -32,6 +36,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -44,7 +49,7 @@ public class StatusPagePublicController {
@Autowired
private StatusPageService statusPageService;
@GetMapping("/org")
@Operation(summary = "Query Status Page Organization")
public ResponseEntity<Message<StatusPageOrg>> queryStatusPageOrg() {
@@ -54,14 +59,14 @@ public class StatusPagePublicController {
}
return ResponseEntity.ok(Message.success(statusPageOrg));
}
@GetMapping("/component")
@Operation(summary = "Query Status Page Components")
public ResponseEntity<Message<List<ComponentStatus>>> queryStatusPageComponent() {
List<ComponentStatus> componentStatusList = statusPageService.queryComponentsStatus();
return ResponseEntity.ok(Message.success(componentStatusList));
}
@GetMapping("/component/{id}")
@Operation(summary = "Query Status Page Component")
public ResponseEntity<Message<ComponentStatus>> queryStatusPageComponent(@PathVariable("id") final long id) {
@@ -71,8 +76,13 @@ public class StatusPagePublicController {
@GetMapping("/incident")
@Operation(summary = "Query Status Page Incidents")
public ResponseEntity<Message<List<StatusPageIncident>>> queryStatusPageIncident() {
List<StatusPageIncident> incidents = statusPageService.queryStatusPageIncidents();
public ResponseEntity<Message<Page<StatusPageIncident>>> queryStatusPageIncident(
@Parameter(description = "Search-Target", example = "x") @RequestParam(required = false) String search,
@Parameter(description = "Start Time", example = "1756384301907") @RequestParam(required = false) Long startTime,
@Parameter(description = "End Time", example = "1756384301907") @RequestParam(required = false) Long endTime,
@Parameter(description = "List current page", example = "0") @RequestParam(defaultValue = "0") int pageIndex,
@Parameter(description = "Number of list pages", example = "10") @RequestParam(defaultValue = "10") int pageSize) {
Page<StatusPageIncident> incidents = statusPageService.queryStatusPageIncidents(search, startTime, endTime, pageIndex, pageSize);
return ResponseEntity.ok(Message.success(incidents));
}
}
@@ -18,10 +18,12 @@
package org.apache.hertzbeat.manager.service;
import java.util.List;
import org.apache.hertzbeat.common.entity.manager.StatusPageComponent;
import org.apache.hertzbeat.common.entity.manager.StatusPageIncident;
import org.apache.hertzbeat.common.entity.manager.StatusPageOrg;
import org.apache.hertzbeat.manager.pojo.dto.ComponentStatus;
import org.springframework.data.domain.Page;
/**
* status page service interface.
@@ -30,42 +32,49 @@ public interface StatusPageService {
/**
* query status page organization.
*
* @return status page organization
*/
StatusPageOrg queryStatusPageOrg();
/**
* save status page organization.
*
* @return status page organization
*/
StatusPageOrg saveStatusPageOrg(StatusPageOrg statusPageOrg);
/**
* query status page components.
*
* @return status page components
*/
List<StatusPageComponent> queryStatusPageComponents();
/**
* save status page component.
*
* @param statusPageComponent status page component
*/
void newStatusPageComponent(StatusPageComponent statusPageComponent);
/**
* update status page component.
*
* @param statusPageComponent status page component
*/
void updateStatusPageComponent(StatusPageComponent statusPageComponent);
/**
* delete status page component.
*
* @param id status page component id
*/
void deleteStatusPageComponent(long id);
/**
* query status page component.
*
* @param id status page component id
* @return status page component
*/
@@ -73,44 +82,56 @@ public interface StatusPageService {
/**
* query status page components status.
*
* @return status page components status
*/
List<ComponentStatus> queryComponentsStatus();
/**
* query status page component status.
*
* @param id status page component id
* @return status page component status
*/
ComponentStatus queryComponentStatus(long id);
/**
* query status page incidents.
* @return status page incidents
*
* @param search Search Target
* @param startTime Start Time
* @param endTime End Time
* @param pageIndex List current page
* @param pageSize Number of list pages
* @return The query results
*/
List<StatusPageIncident> queryStatusPageIncidents();
Page<StatusPageIncident> queryStatusPageIncidents(String search, Long startTime, Long endTime, int pageIndex, int pageSize);
/**
* query status page incident.
*
* @param id status page incident id
* @return status page incident
*/
StatusPageIncident queryStatusPageIncident(long id);
/**
* save status page incident.
*
* @param statusPageIncident status page incident
*/
void newStatusPageIncident(StatusPageIncident statusPageIncident);
/**
* update status page incident.
*
* @param statusPageIncident status page incident
*/
void updateStatusPageIncident(StatusPageIncident statusPageIncident);
/**
* delete status page incident.
*
* @param id status page incident id
*/
void deleteStatusPageIncident(long id);
@@ -212,7 +212,7 @@ public class AppServiceImpl implements AppService, InitializingBean {
var name = job.getName();
var i18nName = CommonUtil.getLangMappingValueFromI18nMap(lang, name);
if (i18nName != null) {
i18nMap.put("monitor.app." + job.getApp().toLowerCase(), i18nName);
i18nMap.put("monitor.app." + job.getApp(), i18nName);
}
var help = job.getHelp();
var i18nHelp = CommonUtil.getLangMappingValueFromI18nMap(lang, help);
@@ -21,9 +21,12 @@ import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import jakarta.persistence.criteria.Predicate;
import lombok.RequiredArgsConstructor;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.manager.StatusPageComponent;
@@ -40,8 +43,12 @@ import org.apache.hertzbeat.manager.dao.StatusPageOrgDao;
import org.apache.hertzbeat.manager.pojo.dto.ComponentStatus;
import org.apache.hertzbeat.manager.service.StatusPageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* status page service implement.
@@ -257,9 +264,28 @@ public class StatusPageServiceImpl implements StatusPageService {
}
@Override
public List<StatusPageIncident> queryStatusPageIncidents() {
public Page<StatusPageIncident> queryStatusPageIncidents(String search, Long startTime, Long endTime, int pageIndex, int pageSize) {
// build search condition
Specification<StatusPageIncident> specification = (root, query, criteriaBuilder) -> {
List<Predicate> andList = new ArrayList<>();
if (StringUtils.hasText(search)) {
Predicate predicateName = criteriaBuilder.like(criteriaBuilder.lower(root.get("name")), "%" + search.toLowerCase() + "%");
andList.add(predicateName);
}
if (startTime != null) {
andList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("startTime"), startTime));
}
if (endTime != null) {
andList.add(criteriaBuilder.lessThanOrEqualTo(root.get("endTime"), endTime));
}
Predicate[] predicates = new Predicate[andList.size()];
return criteriaBuilder.and(andList.toArray(predicates));
};
Sort sort = Sort.by(Sort.Direction.DESC, "startTime");
return statusPageIncidentDao.findAll(sort);
PageRequest pageRequest = PageRequest.of(pageIndex, pageSize, sort);
return statusPageIncidentDao.findAll(specification, pageRequest);
}
@Override
@@ -490,7 +490,7 @@ metrics:
zh-CN: 次数
en-US: Num
ja-JP: 数量
- field: size
- field: Size
type: 0
unit: B
i18n:
@@ -26,7 +26,7 @@ help:
zh-CN: Hertzbeat 使用 Prometheus PromQL 从 Prometheus 服务器中查询到 InfluxDB 的通用指标数据来进行监控。此方案适用于 Prometheus 已监控 InfluxDB,需要从 Prometheus 服务器抓取 InfluxDB 的监控数据。<br>您可以点击 “<i>新建 InfluxDB-PromQL</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses Prometheus PromQL query metrics data from Prometheus Server to monitoring InfluxDB. This solution is suitable for Prometheus to monitor InfluxDB, and it need to capture InfluxDB monitoring data from the Prometheus server. <br>You could click the "<i>New InfluxDB-PromQL</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 Prometheus PromQL 從 Prometheus 服務器中查詢到 InfluxDB 的通用指標數據來進行監控。此方案適用于 Prometheus 已監控 InfluxDB,需要從 Prometheus 服務器抓取 InfluxDB 的監控數據。<br>您可以點擊 “<i>新建 InfluxDB-PromQL</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は Prometheus PromQL を介して Prometheus サーバーに InfluxDB の一般的なパフォーマンスのメトリクスをクエリして監視します。このシナリオは、PrometheusがすでにInfluxDBを監視しており、PrometheusサーバーからInfluxDBの監視データを取得する必要がある場合に適用されます。<br>「<i>新規 InfluxDB-PromQL</i>」をクリックして設定しましょう。
ja-JP: Hertzbeat は Prometheus PromQL を介して Prometheus サーバーに InfluxDB の一般的なパフォーマンスのメトリクスをクエリして監視します。このシナリオは、PrometheusがすでにInfluxDBを監視しており、PrometheusサーバーからInfluxDBの監視データを取得する必要がある場合に適用されます。<br>「<i>新規 InfluxDB-PromQL</i>」をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/influxdb_promql
en-US: https://hertzbeat.apache.org/docs/help/influxdb_promql
@@ -26,7 +26,7 @@ help:
zh-CN: Hertzbeat 使用 Prometheus PromQL 从 Prometheus 服务器中查询到 Kafka 的通用指标数据来进行监控。此方案适用于 Prometheus 已监控 Kafka,需要从 Prometheus 服务器抓取 Kafka 的监控数据。<br>您可以点击 “<i>新建 Kafka-PromQL</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses Prometheus PromQL query metrics data from Prometheus Server to monitoring Kafka. This solution is suitable for Prometheus to monitor Kafka, and it need to capture Kafka monitoring data from the Prometheus server. <br>You could click the "<i>New Kafka-PromQL</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 Prometheus PromQL 從 Prometheus 服務器中查詢到 Kafka 的通用指標數據來進行監控。此方案適用于 Prometheus 已監控 Kafka,需要從 Prometheus 服務器抓取 Kafka 的監控數據。<br>您可以點擊 “<i>新建 Kafka-PromQL</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は Prometheus PromQL を介して Prometheus サーバーに Kafka の一般的なパフォーマンスのメトリクスをクエリして監視します。このシナリオは、PrometheusがすでにKafkaを監視しており、PrometheusサーバーからKafkaの監視データを取得する必要がある場合に適用されます。<br>「<i>新規 Kafka-PromQL</i>」をクリックして設定しましょう。
ja-JP: Hertzbeat は Prometheus PromQL を介して Prometheus サーバーに Kafka の一般的なパフォーマンスのメトリクスをクエリして監視します。このシナリオは、PrometheusがすでにKafkaを監視しており、PrometheusサーバーからKafkaの監視データを取得する必要がある場合に適用されます。<br>「<i>新規 Kafka-PromQL</i>」をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/kafka_promql
en-US: https://hertzbeat.apache.org/docs/help/kafka_promql
@@ -490,7 +490,7 @@ metrics:
zh-CN: 次数
en-US: Num
ja-JP: 数量
- field: size
- field: Size
type: 0
unit: B
i18n:
@@ -0,0 +1,750 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The monitoring type categoryservice-application service monitoring db-database monitoring custom-custom monitoring os-operating system monitoring
category: os
# The monitoring type eg: linux windows tomcat mysql aws...
app: macos
# The monitoring i18n name
name:
zh-CN: macOS
en-US: macOS
ja-JP: macOS
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 macOS 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 macOS</i>”并配置 HOST 端口账户等相关参数进行添加,支持 SSH 账户密码或密钥认证。或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH protocol</a> to monitors macOS operating system's general performance metrics such as cpu, memory, disk, basic, interface, disk_free, top_process etc. <br>You can click the "<i>New macOS</i>" and config host port and other related params to add, auth support password or secretKey. Or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 對 macOS 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 macOS</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> macOS システムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 macOS</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/macos/
en-US: https://hertzbeat.apache.org/docs/help/macos/
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
- field: host
# name-param field display i18n name
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
required: true
# field-param field key
- field: port
# name-param field display i18n name
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[0,65535]'
# required-true or false
required: true
# default value
defaultValue: 22
# field-param field key
- field: timeout
# name-param field display i18n name
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[400,200000]'
# required-true or false
required: false
# default value
defaultValue: 6000
# field-param field key
- field: reuseConnection
# name-param field display i18n name
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
required: true
defaultValue: true
# field-param field key
- field: useProxy
# name-param field display i18n name
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
required: true
defaultValue: false
# field-param field key
- field: username
# name-param field display i18n name
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 50
# required-true or false
required: true
# field-param field key
- field: password
# name-param field display i18n name
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
# type-param field type(most mapping the html input tag)
type: password
# required-true or false
required: false
# field-param field key
- field: privateKey
# name-param field display i18n name
name:
zh-CN: 私钥
en-US: PrivateKey
ja-JP: 秘密鍵
# type-param field type(most mapping the html input type)
type: textarea
placeholder: -----BEGIN RSA PRIVATE KEY-----
# required-true or false
required: false
# hide param-true or false
hide: true
# field-param field key
- field: privateKeyPassphrase
# name-param field display i18n name
name:
zh-CN: 密钥短语
en-US: PrivateKey PassPhrase
ja-JP: 秘密鍵フレーズ
# type-param field type(most mapping the html input type)
type: password
# required-true or false
required: false
# hide param-true or false
hide: true
# field-param field key
- field: proxyHost
# name-param field display i18n name
name:
zh-CN: 代理主机
en-US: Proxy Host
ja-JP: プロキシホスト
# type-param field type(most mapping the html input type)
type: text
# required-true or false
required: false
# hide param-true or false
hide: true
- field: proxyPort
# name-param field display i18n name
name:
zh-CN: 代理端口
en-US: Proxy Port
ja-JP: プロキシポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[0,65535]'
# required-true or false
required: false
# hide param-true or false
hide: true
# default value
defaultValue: 22
# field-param field key
- field: proxyUsername
# name-param field display i18n name
name:
zh-CN: 代理用户名
en-US: Proxy Username
ja-JP: プロキシユーザー名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 50
# required-true or false
required: false
# hide param-true or false
hide: true
# field-param field key
- field: proxyPassword
# name-param field display i18n name
name:
zh-CN: 代理密码
en-US: Proxy Password
ja-JP: プロキシパスワード
# type-param field type(most mapping the html input tag)
type: password
# required-true or false
required: false
# hide param-true or false
hide: true
# field-param field key
- field: proxyPrivateKey
# name-param field display i18n name
name:
zh-CN: 代理主机私钥
en-US: proxyPrivateKey
ja-JP: プロキシ秘密鍵
# type-param field type(most mapping the html input type)
type: textarea
placeholder: -----BEGIN RSA PRIVATE KEY-----
# required-true or false
required: false
# hide param-true or false
hide: true
# collect metrics config list
metrics:
# metrics - basic, inner monitoring metrics (responseTime - response time)
- name: basic
i18n:
zh-CN: 系统基本信息
en-US: Basic Info
ja-JP: システム基礎情報
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
# collect metrics content
fields:
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: hostname
type: 1
label: true
i18n:
zh-CN: 主机名称
en-US: Host Name
ja-JP: ホスト名
- field: version
type: 1
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
zh-CN: 启动时间
en-US: Uptime
ja-JP: アップタイム
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: ssh
# the config content when protocol is ssh
ssh:
# ssh host: ipv4 ipv6 domain
host: ^_^host^_^
# ssh port
port: ^_^port^_^
# ssh username
username: ^_^username^_^
# ssh password
password: ^_^password^_^
# ssh private key
privateKey: ^_^privateKey^_^
# ssh private key passphrase
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
# ssh run collect script
script: scutil --get ComputerName; echo "$(sw_vers -productName) $(sw_vers -productVersion) ($(sw_vers -buildVersion))"; uptime| awk '{print $1,$2,$3,$4}' | sed 's/,//'
# ssh response data parse type: oneRow, multiRow
parseType: oneRow
- name: cpu
i18n:
zh-CN: CPU 信息
en-US: CPU Info
ja-JP: CPU情報
priority: 1
fields:
- field: info
type: 1
i18n:
zh-CN: 型号
en-US: Info
ja-JP: バージョン
- field: cores
type: 1
i18n:
zh-CN: 核数
en-US: Cores
ja-JP: コア数
- field: load
type: 1
i18n:
zh-CN: 负载
en-US: Load
ja-JP: ロード
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 使用率
en-US: Usage
ja-JP: 使用率
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- info
- cores
- load
- idle
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- info=info
- cores=cores
- load=load
- usage=idle
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: sysctl -n machdep.cpu.brand_string; sysctl -n hw.ncpu; sysctl -n vm.loadavg | awk '{print $2,$3,$4}'; top -l 1 | grep 'CPU usage' | awk '{print $3}' | sed 's/%//'
parseType: oneRow
- name: memory
i18n:
zh-CN: 内存信息
en-US: Memory Info
ja-JP: メモリ情報
priority: 2
fields:
- field: total
type: 1
unit: Mb
i18n:
zh-CN: 总内存容量
en-US: Total Memory
ja-JP: メモリ容量
- field: used
type: 0
unit: Mb
i18n:
zh-CN: 用户程序内存量
en-US: User Program Memory
ja-JP: ユーザープログラムメモリ
- field: free
type: 0
unit: Mb
i18n:
zh-CN: 空闲内存容量
en-US: Free Memory
ja-JP: 空きメモリ
- field: buff_cache
type: 0
unit: Mb
i18n:
zh-CN: 缓存占用内存
en-US: Buff Cache Memory
ja-JP: バッファメモリ
- field: available
type: 0
unit: Mb
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能のメモリ
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 内存使用率
en-US: Memory Usage
ja-JP: メモリ使用率
aliasFields:
- total
- used
- free
- buff_cache
- available
calculates:
- total=total
- used=used
- free=free
- buff_cache=buff_cache
- available=available
- usage=(used / total) * 100
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: echo "total used free buff_cache available"; vm_stat | awk 'BEGIN{cmd="sysctl -n hw.memsize";cmd|getline total;close(cmd);cmd="sysctl -n hw.pagesize";cmd|getline ps;close(cmd);total=total/1024/1024} /Pages free/{free=$3} /Pages active/{active=$3} /Pages inactive/{inactive=$3} /Pages wired/{wired=$4} /Pages occupied by compressor/{comp=$5} END{free_mb=free*ps/1024/1024;used_mb=(active+inactive+wired+comp)*ps/1024/1024;inactive_mb=inactive*ps/1024/1024;avail_mb=(free+inactive)*ps/1024/1024;printf "%.0f %.0f %.0f %.0f %.0f\n",total,used_mb,free_mb,inactive_mb,avail_mb}'
parseType: multiRow
- name: disk
i18n:
zh-CN: 磁盘信息
en-US: Disk Info
ja-JP: ディスク情報
priority: 3
fields:
- field: disk_num
type: 1
i18n:
zh-CN: 磁盘总数
en-US: Disk Num
ja-JP: ディスク番号
- field: partition_num
type: 1
i18n:
zh-CN: 分区总数
en-US: Partition Num
ja-JP: パーティション
- field: block_write
type: 0
i18n:
zh-CN: 写磁盘块数
en-US: Block Write
ja-JP: 書き込みディスクブロック数
- field: block_read
type: 0
i18n:
zh-CN: 读磁盘块数
en-US: Block Read
ja-JP: 読み取りブロック数
- field: write_rate
type: 0
unit: iops
i18n:
zh-CN: 磁盘写速率
en-US: Write Rate
ja-JP: ディスク書き込み速度
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: iostat -d | awk 'NR==3{print $1}'; iostat -d | awk 'NR==3{print $2}'; vm_stat | awk '/Pages free/{print $3}' | tr -d ':'; vm_stat | awk '/Pages active/{print $3}' | tr -d ':'; sysctl -n hw.memsize | awk '{print int($1/1024/1024)}'
parseType: oneRow
- name: interface
i18n:
zh-CN: 网卡信息
en-US: Interface Info
ja-JP: ネットワークカード情報
priority: 4
fields:
- field: interface_name
type: 1
label: true
i18n:
zh-CN: 网卡名称
en-US: Interface Name
ja-JP: ネットワークカード名
- field: receive_bytes
type: 0
unit: Mb
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: netstat -ibn | awk 'NR==1{print "interface_name receive_bytes transmit_bytes"} NR>1 && $1!~/Name/ && $7~/^[0-9]+$/{print $1,$7,$10}'
parseType: multiRow
- name: disk_free
i18n:
zh-CN: 文件系统
en-US: Disk Free
ja-JP: ファイルシステム
priority: 5
fields:
- field: filesystem
type: 1
i18n:
zh-CN: 文件系统
en-US: Filesystem
ja-JP: ファイルシステム
- field: used
type: 0
unit: Mb
i18n:
zh-CN: 已使用量
en-US: Used
ja-JP: 使用済み
- field: available
type: 0
unit: Mb
i18n:
zh-CN: 可用量
en-US: Available
ja-JP: 使用可能
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 使用率
en-US: Usage
ja-JP: 使用率
- field: mounted
type: 1
label: true
i18n:
zh-CN: 挂载点
en-US: Mounted
ja-JP: マウント
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: df -m | tail -n +2 | awk 'BEGIN{ print "filesystem used available usage mounted"} {print $1,$3,$4,$5,$9}'
parseType: multiRow
- name: top_cpu_process
i18n:
zh-CN: Top10 CPU 进程
en-US: Top10 CPU Process
ja-JP: トップ10 CPUプロセス
priority: 6
fields:
- field: pid
type: 1
label: true
i18n:
zh-CN: 进程ID
en-US: PID
ja-JP: プロセスID
- field: cpu_usage
type: 0
unit: '%'
i18n:
zh-CN: CPU占用率
en-US: CPU Usage
ja-JP: CPU使用率
- field: mem_usage
type: 0
unit: '%'
i18n:
zh-CN: 内存占用率
en-US: Memory Usage
ja-JP: メモリ使用率
- field: command
type: 1
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: ps aux | sort -k3nr | awk 'BEGIN{ print "pid cpu_usage mem_usage command" } {printf "%s %s %s ", $2, $3, $4; for (i=11; i<=NF; i++) { printf "%s", $i; if (i < NF) printf " "; } print ""}' | head -n 11
parseType: multiRow
- name: top_mem_process
i18n:
zh-CN: Top10 内存进程
en-US: Top10 Memory Process
ja-JP: トップ10 メモリプロセス
priority: 7
fields:
- field: pid
type: 1
label: true
i18n:
zh-CN: 进程ID
en-US: PID
ja-JP: プロセスID
- field: mem_usage
type: 0
unit: '%'
i18n:
zh-CN: 内存占用率
en-US: Memory Usage
ja-JP: メモリ使用率
- field: cpu_usage
type: 0
unit: '%'
i18n:
zh-CN: CPU占用率
en-US: CPU Usage
ja-JP: CPU使用率
- field: command
type: 1
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
port: ^_^port^_^
username: ^_^username^_^
password: ^_^password^_^
privateKey: ^_^privateKey^_^
privateKeyPassphrase: ^_^privateKeyPassphrase^_^
timeout: ^_^timeout^_^
reuseConnection: ^_^reuseConnection^_^
# whether to use proxy server for ssh connection
useProxy: ^_^useProxy^_^
# ssh proxy host: ipv4 domain
proxyHost: ^_^proxyHost^_^
# ssh proxy port
proxyPort: ^_^proxyPort^_^
# ssh proxy username
proxyUsername: ^_^proxyUsername^_^
# ssh proxy password
proxyPassword: ^_^proxyPassword^_^
# ssh proxy private key
proxyPrivateKey: ^_^proxyPrivateKey^_^
script: ps aux | sort -k4nr | awk 'BEGIN{ print "pid cpu_usage mem_usage command" } NR>1{cmd=""; for(i=11;i<=NF;i++) cmd=cmd $i (i==NF?"":" "); printf "%s %s %s %s\n", $2, $3, $4, cmd}' | head -n 11
parseType: multiRow
@@ -0,0 +1,863 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The monitoring type categoryservice-application service monitoring db-database monitoring mid-middleware custom-custom monitoring os-operating system monitoring
category: server
# The monitoring type eg: linux windows tomcat mysql aws...
app: synology
# The monitoring i18n name
name:
zh-CN: Synology NAS
en-US: Synology NAS
ja-JP: Synology NAS
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 Synology NAS 的通用指标进行采集监控。<br><span class='help_module_span'>注意⚠️Synology NAS 要开启 SNMP 服务,<a class='help_module_content' href='https://kb.synology.cn/zh-cn/DSM/help/DSM/AdminCenter/system_snmp'>点击查看开启步骤</a>。</span>您可以点击 “<i>新建 Synology NAS</i>” 并进行配置SNMP相关参数添加,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP Protocol</a> to monitoring Synology NAS general performance metrics. <br><span class='help_module_span'>Note⚠️:Synology NAS need enable the SNMP services <a class='help_module_content' href='https://kb.synology.com/en-global/DSM/help/DSM/AdminCenter/system_snmp'>Click here to view the specific steps.</a></span> You can click the "<i>Synology NAS</i>" button and config snmp params to add monitor or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 Synology NAS 的通用指标进行采集监控。<br><span class='help_module_span'>注意⚠️Synology NAS 需要开启 SNMP 服务,<a class='help_module_content' href='https://kb.synology.com/zh-tw/DSM/help/DSM/AdminCenter/system_snmp'>点击查看开启步骤</a>。</span>您可以点击 “<i>新建 Synology NAS</i>” 并进行配置SNMP相关参数添加,或者选择“<i>更多操作</i>”,导入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> Synology NAS 一般的なメトリクスを監視します。<br><span class='help_module_span'>注意⚠️Synology NAS で SNMP サービスを有効にする必要があります,<a class='help_module_content' href='https://kb.synology.com/ja-jp/DSM/help/DSM/AdminCenter/system_snmp'>クリックしてガイドを見ます</a>。<br>「<i>新規 Synology NAS</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/synology_nas
en-US: https://hertzbeat.apache.org/docs/help/synology_nas
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
- field: host
# name-param field display i18n name
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
required: true
# field-param field key
- field: port
# name-param field display i18n name
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[0,65535]'
# required-true or false
required: true
# default value
defaultValue: 161
# field-param field key
- field: snmpVersion
# name-param field display i18n name
name:
zh-CN: SNMP 版本
en-US: SNMP Version
ja-JP: SNMPバージョン
# type-param field type(radio mapping the html radio tag)
type: radio
# required-true or false
required: true
# when type is radio checkbox, use option to show optional values {name1:value1,name2:value2}
options:
- label: SNMPv1
value: 0
- label: SNMPv2c
value: 1
- label: SNMPv3
value: 3
# field-param field key
- field: community
# name-param field display i18n name
name:
zh-CN: SNMP 团体字
en-US: SNMP Community
ja-JP: SNMPコミュニティ
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 100
# required-true or false
required: false
# param field input placeholder
placeholder: 'Snmp community for v1 v2c'
# dependent parameter values list
depend:
snmpVersion:
- 0
- 1
# field-param field key
- field: username
# name-param field display i18n name
name:
zh-CN: SNMP username
en-US: SNMP username
ja-JP: SNMPユーザー名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 50
# required-true or false
required: false
# param field input placeholder
placeholder: 'Snmp username for v3'
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: contextName
# name-param field display i18n name
name:
zh-CN: SNMP contextName
en-US: SNMP contextName
ja-JP: SNMPコンテキスト名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 100
# required-true or false
required: false
# param field input placeholder
placeholder: 'Snmp contextName for v3'
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: authPassphrase
# name-param field display i18n name
name:
zh-CN: SNMP authPassword
en-US: SNMP authPassword
ja-JP: SNMP認証パスワード
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 100
# required-true or false
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: authPasswordEncryption
# name-param field display i18n name
name:
zh-CN: authPassword 加密方式
en-US: authPassword Encryption
ja-JP: 認証暗号
# type-param field type(radio mapping the html radio tag)
type: radio
# required-true or false
required: false
# when type is radio checkbox, use option to show optional values {name1:value1,name2:value2}
options:
- label: MD5
value: 0
- label: SHA1
value: 1
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: privPassphrase
# name-param field display i18n name
name:
zh-CN: SNMP privPassphrase
en-US: SNMP privPassphrase
ja-JP: SNMPパスワードフレーズ
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
limit: 100
# required-true or false
required: false
# param field input placeholder
placeholder: 'Snmp authPassword for v3'
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: privPasswordEncryption
# name-param field display i18n name
name:
zh-CN: privPassword 加密方式
en-US: privPassword Encryption
ja-JP: パスワードの暗号
# type-param field type(radio mapping the html radio tag)
type: radio
# required-true or false
required: false
# when type is radio checkbox, use option to show optional values {name1:value1,name2:value2}
options:
- label: DES
value: 0
- label: AES128
value: 1
# dependent parameter values list
depend:
snmpVersion:
- 3
# field-param field key
- field: timeout
# name-param field display i18n name
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
range: '[0,100000]'
# required-true or false
required: false
# hide-is hide this field and put it in advanced layout
hide: true
# default value
defaultValue: 6000
# collect metrics config list
metrics:
# metrics - system
- name: system
i18n:
zh-CN: 系统
en-US: System
ja-JP: システム
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
fields:
- field: modelName
type: 1
i18n:
zh-CN: 型号
en-US: Name
ja-JP: モデル
- field: serialNumber
type: 1
i18n:
zh-CN: 序列号
en-US: Serial Number
ja-JP: シリアル番号
- field: version
type: 1
i18n:
zh-CN: DSM 版本
en-US: Version
ja-JP: DSM バージョン
- field: controllerNumber
type: 1
i18n:
zh-CN: 控制器编号
en-US: Number of Users
ja-JP: コントローラー番号
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
modelName: 1.3.6.1.4.1.6574.1.5.1
serialNumber: 1.3.6.1.4.1.6574.1.5.2
version: 1.3.6.1.4.1.6574.1.5.3
controllerNumber: 1.3.6.1.4.1.6574.1.6
- name: status
i18n:
zh-CN: 状态
en-US: Status
ja-JP: ステータス
priority: 1
fields:
- field: powerStatus
type: 0
i18n:
zh-CN: 电源
en-US: Power
ja-JP: 電源
- field: systemFanStatus
type: 0
i18n:
zh-CN: 系统风扇
en-US: System Fan
ja-JP: システムファン
- field: cpuFanStatus
type: 0
i18n:
zh-CN: CPU 风扇
en-US: CPU Fan
ja-JP: CPUファン
- field: systemStatus
type: 0
i18n:
zh-CN: 系统分区
en-US: System Partition
ja-JP: システムパーティション
- field: thermalStatus
type: 0
i18n:
zh-CN: 散热状态
en-US: Thermal Partition
ja-JP: 熱源
- field: temperature
type: 0
i18n:
zh-CN: 温度
en-US: Temperature
ja-JP: 温度
- field: cpuUtilization
type: 0
i18n:
zh-CN: CPU 利用率
en-US: CPU Utilization
ja-JP: CPU 使用率
- field: memUtilization
type: 0
i18n:
zh-CN: 内存利用率
en-US: Memory Utilization
ja-JP: メモリ使用率
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
systemStatus: 1.3.6.1.4.1.6574.1.1
temperature: 1.3.6.1.4.1.6574.1.2
powerStatus: 1.3.6.1.4.1.6574.1.3
systemFanStatus: 1.3.6.1.4.1.6574.1.4.1
cpuFanStatus: 1.3.6.1.4.1.6574.1.4.2
cpuUtilization: 1.3.6.1.4.1.6574.1.7.1
memUtilization: 1.3.6.1.4.1.6574.1.7.2
thermalStatus: 1.3.6.1.4.1.6574.1.78
- name: disk
i18n:
zh-CN: 硬盘
en-US: Disk
ja-JP: ディスク
priority: 2
fields:
- field: diskID
type: 1
i18n:
zh-CN: ID
en-US: ID
ja-JP: ディスクID
- field: diskModel
type: 1
i18n:
zh-CN: 型号
en-US: Model
ja-JP: ディスクモデル
- field: diskType
type: 1
i18n:
zh-CN: 类型
en-US: Type
ja-JP: ディスクタイプ
- field: diskStatus
type: 1
i18n:
zh-CN: 状态
en-US: Status
ja-JP: ディスクステータス
- field: diskTemperature
type: 0
i18n:
zh-CN: 温度
en-US: Temperature
ja-JP: ディスク温度
- field: diskRole
type: 1
i18n:
zh-CN: 作用
en-US: Role
ja-JP: ディスク作用
- field: diskRetry
type: 0
i18n:
zh-CN: 连接重试次数
en-US: Retry count
ja-JP: ディスクリミネーション
- field: diskBadSector
type: 0
i18n:
zh-CN: 坏扇区数
en-US: Bad Sector
ja-JP: ディスクバッドセクタ
- field: diskIdentifyFail
type: 0
i18n:
zh-CN: 计数失败
en-US: Identify Fail
ja-JP: ディスク識別失敗
- field: diskRemainLife
type: 0
i18n:
zh-CN: 预计剩余寿命
en-US: Remain Life
ja-JP: ディスク残り寿命
- field: diskName
type: 1
i18n:
zh-CN: 保留名称
en-US: Disk Name
ja-JP: ディスク名
- field: diskHealthStatus
type: 0
i18n:
zh-CN: 健康状况
en-US: Health Status
ja-JP: ディスクヘルスステータス
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
diskID: 1.3.6.1.4.1.6574.2.1.1.2
diskModel: 1.3.6.1.4.1.6574.2.1.1.3
diskType: 1.3.6.1.4.1.6574.2.1.1.4
diskStatus: 1.3.6.1.4.1.6574.2.1.1.5
diskTemperature: 1.3.6.1.4.1.6574.2.1.1.6
diskRole: 1.3.6.1.4.1.6574.2.1.1.7
diskRetry: 1.3.6.1.4.1.6574.2.1.1.8
diskBadSector: 1.3.6.1.4.1.6574.2.1.1.9
diskIdentifyFail: 1.3.6.1.4.1.6574.2.1.1.10
diskRemainLife: 1.3.6.1.4.1.6574.2.1.1.11
diskName: 1.3.6.1.4.1.6574.2.1.1.12
diskHealthStatus: 1.3.6.1.4.1.6574.2.1.1.13
- name: raid
i18n:
zh-CN: RAID
en-US: RAID
ja-JP: RAID
priority: 3
fields:
- field: raidName
type: 1
i18n:
zh-CN: 名称
en-US: Name
ja-JP:
- field: raidStatus
type: 0
i18n:
zh-CN: 状态
en-US: Status
ja-JP: ディスクモデル
- field: raidFreeSize
type: 0
i18n:
zh-CN: 可用容量
en-US: Free Size
ja-JP: ディスク残りサイズ
- field: raidTotalSize
type: 0
i18n:
zh-CN: 总大小
en-US: Total Size
ja-JP: ディスクサイズ
- field: raidHotspareCnt
type: 0
i18n:
zh-CN: 热备数
en-US: Hot Spare Count
ja-JP: ディスクホットスパア数
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
raidName: 1.3.6.1.4.1.6574.3.1.1.2
raidStatus: 1.3.6.1.4.1.6574.3.1.1.3
raidFreeSize: 1.3.6.1.4.1.6574.3.1.1.4
raidTotalSize: 1.3.6.1.4.1.6574.3.1.1.5
raidHotspareCnt: 1.3.6.1.4.1.6574.3.1.1.6
- name: smart
i18n:
zh-CN: S.M.A.R.T
en-US: S.M.A.R.T
ja-JP: S.M.A.R.T
priority: 4
fields:
- field: diskSMARTInfoDevName
type: 1
i18n:
zh-CN: 设备名称
en-US: Device Name
ja-JP: ディスク名
- field: diskSMARTAttrName
type: 1
i18n:
zh-CN: 属性名
en-US: Attribute Name
ja-JP: ディスク属性名
- field: diskSMARTAttrId
type: 1
i18n:
zh-CN: 属性 ID
en-US: Attribute ID
ja-JP: ディスク属性ID
- field: diskSMARTAttrCurrent
type: 0
i18n:
zh-CN: 当前值
en-US: Attribute Current
ja-JP: ディスク属性現在値
- field: diskSMARTAttrWorst
type: 0
i18n:
zh-CN: 最差值
en-US: Attribute Worst
ja-JP: ディスク属性最差値
- field: diskSMARTAttrThreshold
type: 0
i18n:
zh-CN: 阈值
en-US: Attribute Threshold
ja-JP: ディスク属性しきい値
- field: diskSMARTAttrRaw
type: 0
i18n:
zh-CN: 原始值
en-US: Raw
ja-JP: ディスク属性原始値
- field: diskSMARTAttrStatus
type: 1
i18n:
zh-CN: 信息状态
en-US: Attribute Status
ja-JP: ディスク属性情報ステータス
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
diskSMARTInfoDevName: 1.3.6.1.4.1.6574.5.1.1.2
diskSMARTAttrName: 1.3.6.1.4.1.6574.5.1.1.3
diskSMARTAttrId: 1.3.6.1.4.1.6574.5.1.1.4
diskSMARTAttrCurrent: 1.3.6.1.4.1.6574.5.1.1.5
diskSMARTAttrWorst: 1.3.6.1.4.1.6574.5.1.1.6
diskSMARTAttrThreshold: 1.3.6.1.4.1.6574.5.1.1.7
diskSMARTAttrRaw: 1.3.6.1.4.1.6574.5.1.1.8
diskSMARTAttrStatus: 1.3.6.1.4.1.6574.5.1.1.9
- name: spaceio
i18n:
zh-CN: 存储空间 I/O
en-US: Space I/O
ja-JP: スペースI/O
priority: 5
fields:
- field: spaceIODevice
type: 1
i18n:
zh-CN: 设备名称
en-US: Device Name
ja-JP: ディスク名
- field: spaceIOReads
type: 0
i18n:
zh-CN: 读取访问次数
en-US: Read Accesses Count
ja-JP: ディスク属性読み込みアクセス回数
- field: spaceIOWrites
type: 0
i18n:
zh-CN: 写入访问次数
en-US: Write Accesses Count
ja-JP: ディスク属性書き込みアクセス回数
- field: spaceIOLA
type: 0
unit: '%'
i18n:
zh-CN: 硬盘负载
en-US: The load of disk
ja-JP: ディスク属性ディスクロード
- field: spaceIOLA1
type: 0
unit: '%'
i18n:
zh-CN: 1 分钟平均负载
en-US: The 1-minute average load of disk
ja-JP: 1分平均負荷
- field: spaceIOLA5
type: 0
unit: '%'
i18n:
zh-CN: 5分钟平均负载
en-US: The 5-minute average load of disk
ja-JP: 5分平均負荷
- field: spaceIOLA15
type: 0
unit: '%'
i18n:
zh-CN: 15 分钟平均负载
en-US: The-15 minute average load of disk
ja-JP: 15分平均負荷
- field: spaceUUID
type: 1
i18n:
zh-CN: 卷UUID
en-US: UUID
ja-JP: UUID
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
spaceIODevice: 1.3.6.1.4.1.6574.102.1.1.2
spaceIOReads: 1.3.6.1.4.1.6574.102.1.1.5
spaceIOWrites: 1.3.6.1.4.1.6574.102.1.1.6
spaceIOLA: 1.3.6.1.4.1.6574.102.1.1.7
spaceIOLA1: 1.3.6.1.4.1.6574.102.1.1.8
spaceIOLA5: 1.3.6.1.4.1.6574.102.1.1.9
spaceIOLA15: 1.3.6.1.4.1.6574.102.1.1.10
spaceUUID: 1.3.6.1.4.1.6574.102.1.1.13
- name: storageio
i18n:
zh-CN: 硬盘 I/O
en-US: Storage I/O
ja-JP: ハードディスクI/O
priority: 6
fields:
- field: storageIODevice
type: 1
i18n:
zh-CN: 设备名称
en-US: Device Name
ja-JP: ディスク名
- field: storageIOReads
type: 0
i18n:
zh-CN: 读取访问次数
en-US: Read Accesses Count
ja-JP: ディスク属性読み込みアクセス回数
- field: storageIOWrites
type: 0
i18n:
zh-CN: 写入访问次数
en-US: Write Accesses Count
ja-JP: ディスク属性書き込みアクセス回数
- field: storageIOLA
type: 0
unit: '%'
i18n:
zh-CN: 硬盘负载
en-US: The load of disk
ja-JP: ディスク属性ディスクロード
- field: storageIOLA1
type: 0
unit: '%'
i18n:
zh-CN: 1 分钟平均负载
en-US: The 1-minute average load of disk
ja-JP: 1分平均負荷
- field: storageIOLA5
type: 0
unit: '%'
i18n:
zh-CN: 5分钟平均负载
en-US: The 5-minute average load of disk
ja-JP: 5分平均負荷
- field: storageIOLA15
type: 0
unit: '%'
i18n:
zh-CN: 15 分钟平均负载
en-US: The-15 minute average load of disk
ja-JP: 15分平均負荷
- field: storageIODeviceSerial
type: 1
i18n:
zh-CN: 序列号
en-US: Serial Number
ja-JP: シリアルナンバー
protocol: snmp
snmp:
# server host: ipv4 ipv6 domain
host: ^_^host^_^
# server port
port: ^_^port^_^
# snmp username
username: ^_^username^_^
# snmp authPassphrase
authPassphrase: ^_^authPassphrase^_^
# snmp privPassphrase
privPassphrase: ^_^privPassphrase^_^
# snmp privPasswordEncryption
privPasswordEncryption: ^_^privPasswordEncryption^_^
# snmp authPasswordEncryption
authPasswordEncryption: ^_^authPasswordEncryption^_^
# contextName
contextName: ^_^contextName^_^
# snmp connect timeout
timeout: ^_^timeout^_^
# snmp community
community: ^_^community^_^
# snmp version
version: ^_^snmpVersion^_^
# snmp operation: get, walk
operation: walk
oids:
storageIODevice: 1.3.6.1.4.1.6574.101.1.1.2
storageIOReads: 1.3.6.1.4.1.6574.101.1.1.5
storageIOWrites: 1.3.6.1.4.1.6574.101.1.1.6
storageIOLA: 1.3.6.1.4.1.6574.101.1.1.7
storageIOLA1: 1.3.6.1.4.1.6574.101.1.1.8
storageIOLA5: 1.3.6.1.4.1.6574.101.1.1.9
storageIOLA15: 1.3.6.1.4.1.6574.101.1.1.10
storageIODeviceSerial: 1.3.6.1.4.1.6574.101.1.1.13
File diff suppressed because it is too large Load Diff
@@ -21,11 +21,13 @@ app: ubuntu
name:
zh-CN: Ubuntu Linux
en-US: Ubuntu Linux
ja-JP: Ubuntu Linux
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 Ubuntu 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 Ubuntu</i>”并配置HOST端口账户等相关参数进行添加,支持SSH账户密码或密钥认证。或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH protocol</a> to monitors Ubuntu operating system's general performance metrics such as cpu, memory, disk, basic, interface, disk_free, top_process etc. <br>You can click the "<i>New Ubuntu</i>" and config host port and other related params to add, auth support password or secretKey. Or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 對 Ubuntu 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Ubuntu</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Ubuntuシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Ubuntu</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/ubuntu
en-US: https://hertzbeat.apache.org/docs/help/ubuntu
@@ -37,6 +39,7 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
@@ -47,6 +50,7 @@ params:
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -61,6 +65,7 @@ params:
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -75,6 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -86,6 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -97,6 +104,7 @@ params:
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
@@ -109,6 +117,7 @@ params:
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
# type-param field type(most mapping the html input tag)
type: password
# required-true or false
@@ -119,6 +128,7 @@ params:
name:
zh-CN: 私钥
en-US: PrivateKey
ja-JP: 秘密鍵
# type-param field type(most mapping the html input type)
type: textarea
placeholder: -----BEGIN RSA PRIVATE KEY-----
@@ -132,6 +142,7 @@ params:
name:
zh-CN: 密钥短语
en-US: PrivateKey PassPhrase
ja-JP: 秘密鍵フレーズ
# type-param field type(most mapping the html input type)
type: password
# required-true or false
@@ -144,6 +155,7 @@ params:
name:
zh-CN: 代理主机
en-US: Proxy Host
ja-JP: プロキシホスト
# type-param field type(most mapping the html input type)
type: text
# required-true or false
@@ -155,6 +167,7 @@ params:
name:
zh-CN: 代理端口
en-US: Proxy Port
ja-JP: プロキシポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -171,6 +184,7 @@ params:
name:
zh-CN: 代理用户名
en-US: Proxy Username
ja-JP: プロキシユーザー名
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
@@ -185,6 +199,7 @@ params:
name:
zh-CN: 代理密码
en-US: Proxy Password
ja-JP: プロキシパスワード
# type-param field type(most mapping the html input tag)
type: password
# required-true or false
@@ -197,6 +212,7 @@ params:
name:
zh-CN: 代理主机私钥
en-US: proxyPrivateKey
ja-JP: プロキシ秘密鍵
# type-param field type(most mapping the html input type)
type: textarea
placeholder: -----BEGIN RSA PRIVATE KEY-----
@@ -211,6 +227,7 @@ metrics:
i18n:
zh-CN: 系统基本信息
en-US: Basic Info
ja-JP: システム基礎情報
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
@@ -223,16 +240,19 @@ metrics:
i18n:
zh-CN: 主机名称
en-US: Host Name
ja-JP: ホスト名
- field: version
type: 1
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
zh-CN: 启动时间
en-US: Uptime
ja-JP: アップタイム
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: ssh
# the config content when protocol is ssh
@@ -272,6 +292,7 @@ metrics:
i18n:
zh-CN: CPU 信息
en-US: CPU Info
ja-JP: CPU情報
priority: 1
fields:
- field: info
@@ -279,32 +300,38 @@ metrics:
i18n:
zh-CN: 型号
en-US: Info
ja-JP: バージョン
- field: cores
type: 1
i18n:
zh-CN: 核数
en-US: Cores
ja-JP: コア数
- field: interrupt
type: 0
i18n:
zh-CN: 中断数
en-US: Interrupt
ja-JP: 割り込み数
- field: load
type: 1
i18n:
zh-CN: 负载
en-US: Load
ja-JP: ロード
- field: context_switch
type: 0
i18n:
zh-CN: 上下文切换
en-US: Context Switch
ja-JP: コンテキストスイッチ
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 使用率
en-US: Usage
ja-JP: 使用率
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- info
@@ -351,6 +378,7 @@ metrics:
i18n:
zh-CN: 内存信息
en-US: Memory Info
ja-JP: メモリ情報
priority: 2
fields:
- field: total
@@ -359,36 +387,42 @@ metrics:
i18n:
zh-CN: 总内存容量
en-US: Total Memory
ja-JP: メモリ容量
- field: used
type: 0
unit: Mb
i18n:
zh-CN: 用户程序内存量
en-US: User Program Memory
ja-JP: ユーザープログラムメモリ
- field: free
type: 0
unit: Mb
i18n:
zh-CN: 空闲内存容量
en-US: Free Memory
ja-JP: 空きメモリ
- field: buff_cache
type: 0
unit: Mb
i18n:
zh-CN: 缓存占用内存
en-US: Buff Cache Memory
ja-JP: バッファメモリ
- field: available
type: 0
unit: Mb
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能のメモリ
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 内存使用率
en-US: Memory Usage
ja-JP: メモリ使用率
aliasFields:
- total
- used
@@ -431,6 +465,7 @@ metrics:
i18n:
zh-CN: 磁盘信息
en-US: Disk Info
ja-JP: ディスク情報
priority: 3
fields:
- field: disk_num
@@ -438,27 +473,32 @@ metrics:
i18n:
zh-CN: 磁盘总数
en-US: Disk Num
ja-JP: ディスク番号
- field: partition_num
type: 1
i18n:
zh-CN: 分区总数
en-US: Partition Num
ja-JP: パーティション
- field: block_write
type: 0
i18n:
zh-CN: 写磁盘块数
en-US: Block Write
ja-JP: 書き込みディスクブロック数
- field: block_read
type: 0
i18n:
zh-CN: 读磁盘块数
en-US: Block Read
ja-JP: 読み取りブロック数
- field: write_rate
type: 0
unit: iops
i18n:
zh-CN: 磁盘写速率
en-US: Write Rate
ja-JP: ディスク書き込み速度
protocol: ssh
ssh:
host: ^_^host^_^
@@ -488,6 +528,7 @@ metrics:
i18n:
zh-CN: 网卡信息
en-US: Interface Info
ja-JP: ネットワークカード情報
priority: 4
fields:
- field: interface_name
@@ -496,18 +537,21 @@ metrics:
i18n:
zh-CN: 网卡名称
en-US: Interface Name
ja-JP: ネットワークカード名
- field: receive_bytes
type: 0
unit: Mb
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -540,6 +584,7 @@ metrics:
i18n:
zh-CN: 文件系统
en-US: Disk Free
ja-JP: ファイルシステム
priority: 5
fields:
- field: filesystem
@@ -547,30 +592,35 @@ metrics:
i18n:
zh-CN: 文件系统
en-US: Filesystem
ja-JP: ファイルシステム
- field: used
type: 0
unit: Mb
i18n:
zh-CN: 已使用量
en-US: Used
ja-JP: 使用済み
- field: available
type: 0
unit: Mb
i18n:
zh-CN: 可用量
en-US: Available
ja-JP: 使用可能
- field: usage
type: 0
unit: '%'
i18n:
zh-CN: 使用率
en-US: Usage
ja-JP: 使用率
- field: mounted
type: 1
label: true
i18n:
zh-CN: 挂载点
en-US: Mounted
ja-JP: マウント
protocol: ssh
ssh:
host: ^_^host^_^
@@ -600,6 +650,7 @@ metrics:
i18n:
zh-CN: Top10 CPU 进程
en-US: Top10 CPU Process
ja-JP: トップ10 CPUプロセス
priority: 6
fields:
- field: pid
@@ -608,23 +659,27 @@ metrics:
i18n:
zh-CN: 进程ID
en-US: PID
ja-JP: プロセスID
- field: cpu_usage
type: 0
unit: '%'
i18n:
zh-CN: CPU占用率
en-US: CPU Usage
ja-JP: CPU使用率
- field: mem_usage
type: 0
unit: '%'
i18n:
zh-CN: 内存占用率
en-US: Memory Usage
ja-JP: メモリ使用率
- field: command
type: 1
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -654,6 +709,7 @@ metrics:
i18n:
zh-CN: Top10 内存进程
en-US: Top10 Memory Process
ja-JP: トップ10 メモリプロセス
priority: 7
fields:
- field: pid
@@ -662,23 +718,27 @@ metrics:
i18n:
zh-CN: 进程ID
en-US: PID
ja-JP: プロセスID
- field: mem_usage
type: 0
unit: '%'
i18n:
zh-CN: 内存占用率
en-US: Memory Usage
ja-JP: メモリ使用率
- field: cpu_usage
type: 0
unit: '%'
i18n:
zh-CN: CPU占用率
en-US: CPU Usage
ja-JP: CPU使用率
- field: command
type: 1
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
File diff suppressed because it is too large Load Diff
@@ -21,11 +21,13 @@ app: vastbase
name:
zh-CN: Vastbase数据库
en-US: Vastbase DB
ja-JP: Vastbase データベース
# The description and help of this monitoring type
help:
zh-CN: HertzBeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBC 协议</a> 通过配置 SQL 对 Vastbase 数据库的通用性能指标 (basic、state、activity etc) 进行采集监控,支持版本为 Vastbase 9.2.4+。<br>您可以点击“<i>新建 Vastbase 数据库</i>”并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBC Protocol</a> to configure SQL for collecting general metrics of Vastbase database (basic、state、activity etc). Supported version is Vastbase 9.2.4+. <br>You can click "<i>New Vastbase Database</i>" and configure it, or select "<i>More Action</i>" to import the existing configuration.
zh-TW: HertzBeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBC 協議</a> 通過配置 SQL 對 Vastbase 數據庫的通用性能指標 (basic、state、activity etc)進行采集監控,支持版本爲 Vastbase 9.2.4+。<br>您可以點擊“<i>新建 Vastbase 數據庫</i>”並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBCプロトコルを介して</a> Vastbase データベース(Vastbase 9.2.4+)の一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Vastbase データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/vastbase
en-US: https://hertzbeat.apache.org/docs/help/vastbase
@@ -37,6 +39,7 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
@@ -47,6 +50,7 @@ params:
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -59,6 +63,7 @@ params:
name:
zh-CN: 查询超时时间(ms)
en-US: Query Timeout(ms)
ja-JP: クエリタイムアウト(ms)
type: number
range: '[400,200000]'
required: false
@@ -68,6 +73,7 @@ params:
name:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
type: text
defaultValue: postgres
required: false
@@ -75,6 +81,7 @@ params:
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
type: text
limit: 50
required: false
@@ -82,12 +89,14 @@ params:
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
type: password
required: false
- field: url
name:
zh-CN: URL
en-US: URL
ja-JP: URL
type: text
required: false
hide: true
@@ -99,6 +108,7 @@ metrics:
i18n:
zh-CN: 基本信息
en-US: Basic Info
ja-JP: 基礎情報
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
@@ -111,26 +121,31 @@ metrics:
i18n:
zh-CN: 服务器版本
en-US: Server Version
ja-JP: バージョン
- field: port
type: 1
i18n:
zh-CN: 端口
en-US: Port
ja-JP: ポート
- field: server_encoding
type: 1
i18n:
zh-CN: 服务器编码
en-US: Server Encoding
ja-JP: サーバーのエンコード
- field: data_directory
type: 1
i18n:
zh-CN: 数据目录
en-US: Data Directory
ja-JP: データディレクトリ
- field: max_connections
type: 0
i18n:
zh-CN: 最大连接数
en-US: Max Connections
ja-JP: 最大接続数
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: jdbc
# the config content when protocol is jdbc
@@ -155,6 +170,7 @@ metrics:
i18n:
zh-CN: 状态信息
en-US: State Info
ja-JP: 状態情報
priority: 1
fields:
- field: db_name
@@ -163,47 +179,55 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: conflicts
type: 0
unit: times
i18n:
zh-CN: 冲突次数
en-US: Conflicts
ja-JP: コンフリクト回数
- field: deadlocks
type: 0
unit: times
i18n:
zh-CN: 死锁次数
en-US: Deadlocks
ja-JP: デッドロック回数
- field: blks_read
type: 0
unit: blocks per second
i18n:
zh-CN: 读取块
en-US: Blocks Read
ja-JP: 読み取られたブロック
- field: blks_hit
type: 0
unit: blocks per second
i18n:
zh-CN: 命中块
en-US: Blocks Hit
ja-JP: ヒットブロック
- field: blk_read_time
type: 0
unit: ms
i18n:
zh-CN: 读取时间
en-US: Read Time
ja-JP: 読み取られタイム
- field: blk_write_time
type: 0
unit: ms
i18n:
zh-CN: 写入时间
en-US: Write Time
ja-JP: 書き込まれタイム
- field: stats_reset
type: 1
i18n:
zh-CN: 统计重置
en-US: Stats Reset
ja-JP: 統計リセット
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -221,6 +245,7 @@ metrics:
i18n:
zh-CN: 活动信息
en-US: Activity Info
ja-JP: 活動情報
priority: 2
fields:
- field: running
@@ -229,6 +254,7 @@ metrics:
i18n:
zh-CN: 运行中
en-US: Running
ja-JP: 実行中
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -246,6 +272,7 @@ metrics:
i18n:
zh-CN: 资源配置
en-US: Resource Config
ja-JP: リソース設定
priority: 3
fields:
- field: work_mem
@@ -254,34 +281,40 @@ metrics:
i18n:
zh-CN: 工作内存
en-US: Work Memory
ja-JP: ワークメモリ
- field: shared_buffers
type: 0
unit: MB
i18n:
zh-CN: 共享缓冲区
en-US: Shared Buffers
ja-JP: 共有バッファ
- field: autovacuum
type: 1
i18n:
zh-CN: 自动清理
en-US: Auto Vacuum
ja-JP: オートバキューム
- field: max_connections
type: 0
i18n:
zh-CN: 最大连接数
en-US: Max Connections
ja-JP: 最大接続数
- field: effective_cache_size
type: 0
unit: MB
i18n:
zh-CN: 有效缓存大小
en-US: Effective Cache Size
ja-JP: キャッシュサイズ
- field: wal_buffers
type: 0
unit: MB
i18n:
zh-CN: WAL缓冲区
en-US: WAL Buffers
ja-JP: WALバッファ
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -299,6 +332,7 @@ metrics:
i18n:
zh-CN: 连接信息
en-US: Connection Info
ja-JP: 接続情報
priority: 4
fields:
- field: active
@@ -306,6 +340,7 @@ metrics:
i18n:
zh-CN: 活动连接
en-US: Active Connection
ja-JP: 活躍的な接続
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -323,6 +358,7 @@ metrics:
i18n:
zh-CN: 连接状态
en-US: Connection State
ja-JP: 接続状態
priority: 5
fields:
- field: state
@@ -331,11 +367,13 @@ metrics:
i18n:
zh-CN: 状态
en-US: State
ja-JP: 状態
- field: num
type: 0
i18n:
zh-CN: 数量
en-US: Num
ja-JP: 数量
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -353,6 +391,7 @@ metrics:
i18n:
zh-CN: 连接数据库
en-US: Connection Db
ja-JP: 接続データベース
priority: 6
fields:
- field: db_name
@@ -361,11 +400,13 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: active
type: 0
i18n:
zh-CN: 活动连接
en-US: Active Connection
ja-JP: 活躍的な接続
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -383,6 +424,7 @@ metrics:
i18n:
zh-CN: 元组信息
en-US: Tuple Info
ja-JP: 組情報
priority: 7
fields:
- field: fetched
@@ -390,26 +432,31 @@ metrics:
i18n:
zh-CN: 获取次数
en-US: Fetched
ja-JP: フェッチ回数
- field: returned
type: 0
i18n:
zh-CN: 返回次数
en-US: Returned
ja-JP: 戻る回数
- field: inserted
type: 0
i18n:
zh-CN: 插入次数
en-US: Inserted
ja-JP: インサート回数
- field: updated
type: 0
i18n:
zh-CN: 更新次数
en-US: Updated
ja-JP: 更新回数
- field: deleted
type: 0
i18n:
zh-CN: 删除次数
en-US: Deleted
ja-JP: 削除回数
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -427,6 +474,7 @@ metrics:
i18n:
zh-CN: 临时文件
en-US: Temp File
ja-JP: 一時ファイル
priority: 8
fields:
- field: db_name
@@ -435,17 +483,20 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: num
type: 0
i18n:
zh-CN: 次数
en-US: Num
- field: size
ja-JP: 数量
- field: Size
type: 0
unit: B
i18n:
zh-CN: 大小
en-US: Size
ja-JP: サイズ
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -463,6 +514,7 @@ metrics:
i18n:
zh-CN: 锁信息
en-US: Lock Info
ja-JP: ロック情報
priority: 9
fields:
- field: db_name
@@ -471,18 +523,21 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: conflicts
type: 0
unit: times
i18n:
zh-CN: 冲突次数
en-US: Conflicts
ja-JP: コンフリクト回数
- field: deadlocks
type: 0
unit: times
i18n:
zh-CN: 死锁次数
en-US: Deadlocks
ja-JP: デッドロック回数
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -500,6 +555,7 @@ metrics:
i18n:
zh-CN: 慢查询
en-US: Slow Sql
ja-JP: スローSQL
priority: 10
fields:
- field: sql_text
@@ -508,28 +564,33 @@ metrics:
i18n:
zh-CN: SQL语句
en-US: SQL Text
ja-JP: SQL文のテキスト
- field: calls
type: 0
i18n:
zh-CN: 调用次数
en-US: Calls
ja-JP: コール回数
- field: rows
type: 0
i18n:
zh-CN: 行数
en-US: Rows
ja-JP:
- field: avg_time
type: 0
unit: ms
i18n:
zh-CN: 平均时间
en-US: Avg Time
ja-JP: 平均時間
- field: total_time
type: 0
unit: ms
i18n:
zh-CN: 总时间
en-US: Total Time
ja-JP: 合計時間
aliasFields:
- query
- calls
@@ -557,6 +618,7 @@ metrics:
i18n:
zh-CN: 事务信息
en-US: Transaction Info
ja-JP: トランザクション情報
priority: 11
fields:
- field: db_name
@@ -565,18 +627,21 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: commits
type: 0
unit: times
i18n:
zh-CN: 提交次数
en-US: Commits
ja-JP: コミット回数
- field: rollbacks
type: 0
unit: times
i18n:
zh-CN: 回滚次数
en-US: Rollbacks
ja-JP: ロールバック回数
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -594,6 +659,7 @@ metrics:
i18n:
zh-CN: 冲突信息
en-US: Conflicts Info
ja-JP: コンフリクト情報
priority: 12
fields:
- field: db_name
@@ -602,31 +668,37 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: tablespace
type: 0
i18n:
zh-CN: 表空间
en-US: Tablespace
ja-JP: 表領域
- field: lock
type: 0
i18n:
zh-CN:
en-US: Lock
ja-JP: ロック
- field: snapshot
type: 0
i18n:
zh-CN: 快照
en-US: Snapshot
ja-JP: スナップショット
- field: bufferpin
type: 0
i18n:
zh-CN: 缓冲区
en-US: Bufferpin
ja-JP: バッファ
- field: deadlock
type: 0
i18n:
zh-CN: 死锁
en-US: Deadlock
ja-JP: デッドロック
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -644,6 +716,7 @@ metrics:
i18n:
zh-CN: 缓存命中率
en-US: Cache Hit Ratio
ja-JP: キャッシュ命中率
priority: 13
fields:
- field: db_name
@@ -652,12 +725,14 @@ metrics:
i18n:
zh-CN: 数据库名称
en-US: Database Name
ja-JP: データベース名
- field: ratio
type: 0
unit: '%'
i18n:
zh-CN: 命中率
en-US: Hit Ratio
ja-JP: 命中率
aliasFields:
- blks_hit
- blks_read
@@ -681,6 +756,7 @@ metrics:
i18n:
zh-CN: Checkpoint信息
en-US: Checkpoint Info
ja-JP: チェックポイント情報
priority: 14
fields:
- field: checkpoint_sync_time
@@ -689,12 +765,14 @@ metrics:
i18n:
zh-CN: Checkpoint同步时间
en-US: Checkpoint Sync Time
ja-JP: チェックポイント同期時間
- field: checkpoint_write_time
type: 0
unit: ms
i18n:
zh-CN: Checkpoint写入时间
en-US: Checkpoint Write Time
ja-JP: Checkpoint書き込まれた時間
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -712,6 +790,7 @@ metrics:
i18n:
zh-CN: Buffer信息
en-US: Buffer Info
ja-JP: バッファ情報
priority: 15
fields:
- field: allocated
@@ -719,26 +798,31 @@ metrics:
i18n:
zh-CN: 已分配
en-US: Allocated
ja-JP: 割り当てバッファ
- field: fsync_calls_by_backend
type: 0
i18n:
zh-CN: 后端进程直接执行的文件同步调用次数
en-US: Fsync Calls By Backend
ja-JP: バックエンド同期コール回数
- field: written_directly_by_backend
type: 0
i18n:
zh-CN: 后台写入到数据文件
en-US: Written Directly By Backend
ja-JP: バックエンドによる直接書き込まれたファイル
- field: written_by_background_writer
type: 0
i18n:
zh-CN: 后台写入
en-US: Written By Background Writer
ja-JP: バックグラウンドライターに書き込まれた
- field: written_during_checkpoints
type: 0
i18n:
zh-CN: 检查点期间写入
en-US: Written During Checkpoints
ja-JP: チェックポイント中の書き込み
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -21,11 +21,13 @@ app: windows
name:
zh-CN: Windows操作系统
en-US: OS Windows
ja-JP: Windowsオーエス
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 Windows操作系统 的通用指标(用户数、进程数量、响应时间等)进行采集监控。<br><span class='help_module_span'>注意⚠️Windows 服务器需要开启 SNMP 服务,<a class='help_module_content' href='https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/configure-snmp-service'>点击查看开启步骤</a>。</span>您可以点击 “<i>新建 Windows操作系统</i>” 并进行配置SNMP相关参数添加,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP Protocol</a> to monitoring OS Windows general performance metrics such as number of users, number of processes, response time. <br><span class='help_module_span'>Note⚠️:Windows server need enable the SNMP services <a class='help_module_content' href='https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-snmp-service'>Click here to view the specific steps.</a></span> You can click the "<i>New OS Windows</i>" button and config snmp params to add monitor or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 Windows操作系统 的通用指标(用户数、进程数量、响应时间等)进行采集监控。<br><span class='help_module_span'>注意⚠️Windows 服务器需要开启 SNMP 服务,<a class='help_module_content' href='https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/configure-snmp-service'>点击查看开启步骤</a>。</span>您可以点击 “<i>新建 Windows操作系统</i>” 并进行配置SNMP相关参数添加,或者选择“<i>更多操作</i>”,导入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> Windowsオーエスの一般的なメトリクスを監視します。<br><span class='help_module_span'>注意⚠️Windowsサーバー で SNMP サービスを有効にする必要があります,<a class='help_module_content' href='https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-snmp-service'>クリックしてガイドを見ます</a>。<br>「<i>新規 Windowsオーエス</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/windows
en-US: https://hertzbeat.apache.org/docs/help/windows
@@ -37,6 +39,7 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
@@ -47,6 +50,7 @@ params:
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -61,6 +65,7 @@ params:
name:
zh-CN: SNMP 版本
en-US: SNMP Version
ja-JP: SNMPバージョン
# type-param field type(radio mapping the html radio tag)
type: radio
# required-true or false
@@ -77,6 +82,7 @@ params:
name:
zh-CN: SNMP 团体字
en-US: SNMP Community
ja-JP: SNMPコミュニティ
# type-param field type(most mapping the html input type)
type: text
# when type is text, use limit to limit string length
@@ -96,6 +102,7 @@ params:
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -113,6 +120,7 @@ metrics:
i18n:
zh-CN: 系统
en-US: System
ja-JP: システム情報
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
@@ -122,47 +130,56 @@ metrics:
i18n:
zh-CN: 名称
en-US: Name
ja-JP: 名前
- field: descr
type: 1
i18n:
zh-CN: 描述
en-US: Description
ja-JP: 説明
- field: uptime
type: 1
i18n:
zh-CN: 运行时间
en-US: Uptime
ja-JP: アップタイム
- field: numUsers
type: 0
i18n:
zh-CN: 用户数
en-US: Number of Users
ja-JP: ユーザー数
- field: services
type: 0
i18n:
zh-CN: 服务数
en-US: Number of Services
ja-JP: サービス数
- field: processes
type: 0
i18n:
zh-CN: 进程数
en-US: Number of Processes
ja-JP: プロセス数
- field: responseTime
type: 0
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
unit: ms
- field: location
type: 1
i18n:
zh-CN: 位置
en-US: Location
ja-JP: 位置
- field: memory
type: 0
i18n:
zh-CN: 内存
en-US: Memory
ja-JP: メモリ
unit: GB
units:
- memory=KB->GB
@@ -188,6 +205,7 @@ metrics:
i18n:
zh-CN: 进程
en-US: Processes
ja-JP: プロセス
priority: 1
fields:
- field: hrSWRunIndex
@@ -195,48 +213,57 @@ metrics:
i18n:
zh-CN: 编号
en-US: Index
ja-JP: 番号
- field: hrSWRunName
type: 1
i18n:
zh-CN: 进程名称
en-US: Process Name
ja-JP: プロセス名
label: true
- field: hrSWRunID
type: 1
i18n:
zh-CN: 进程 ID
en-US: Process ID
ja-JP: プロセスID
- field: hrSWRunPath
type: 1
i18n:
zh-CN: 进程路径
en-US: Process Path
ja-JP: プロセスパス
- field: hrSWRunParameters
type: 1
i18n:
zh-CN: 进程参数
en-US: Process Parameters
ja-JP: プロセスパラメータ
- field: hrSWRunType
type: 0
i18n:
zh-CN: 进程类型
en-US: Process Type
ja-JP: プロセスタイプ
- field: hrSWRunStatus
type: 0
i18n:
zh-CN: 进程状态
en-US: Process Status
ja-JP: プロセス状態
- field: hrSWRunPerfCPU
type: 0
i18n:
zh-CN: 进程占用 CPU
en-US: Process CPU
ja-JP: プロセスが使用したCPU
unit: 's'
- field: hrSWRunPerfMem
type: 0
i18n:
zh-CN: 进程占用内存
en-US: Process Memory
ja-JP: プロセスが使用したメモリ
unit: 'KB'
calculates:
- hrSWRunPerfCPU = hrSWRunPerfCPU / 100
@@ -263,6 +290,7 @@ metrics:
i18n:
zh-CN: 服务
en-US: Services
ja-JP: サービス
priority: 2
fields:
- field: svSvcName
@@ -270,27 +298,32 @@ metrics:
i18n:
zh-CN: 服务名称
en-US: Service Name
ja-JP: サービス名
label: true
- field: svSvcInstalledState
type: 0
i18n:
zh-CN: 服务安装状态
en-US: Service Installed State
ja-JP: サービスのインストール状態
- field: svSvcOperatingState
type: 0
i18n:
zh-CN: 服务运行状态
en-US: Service Operating State
ja-JP: サービスの実行状態
- field: svSvcCanBeUninstalled
type: 0
i18n:
zh-CN: 服务是否可以被卸载
en-US: Service Can Be Uninstalled
ja-JP: サービスはアンインストールできる
- field: svSvcCanBePaused
type: 0
i18n:
zh-CN: 服务是否可以被暂停
en-US: Service Can Be Paused
ja-JP: サービスは一時停止できる
protocol: snmp
snmp:
host: ^_^host^_^
@@ -310,6 +343,7 @@ metrics:
i18n:
zh-CN: 安装
en-US: Installed
ja-JP: インストール
priority: 3
fields:
- field: hrSWInstalledIndex
@@ -317,22 +351,26 @@ metrics:
i18n:
zh-CN: 编号
en-US: Index
ja-JP: 番号
- field: hrSWInstalledName
type: 1
i18n:
zh-CN: 安装名称
en-US: Installed Name
ja-JP: インストール名
label: true
- field: hrSWInstalledID
type: 1
i18n:
zh-CN: 安装 ID
en-US: Installed ID
ja-JP: インストールID
- field: hrSWInstalledType
type: 0
i18n:
zh-CN: 安装类型
en-US: Installed Type
ja-JP: インストールタイプ
protocol: snmp
snmp:
host: ^_^host^_^
@@ -351,6 +389,7 @@ metrics:
i18n:
zh-CN: 存储
en-US: Storages
ja-JP: ストレージ
priority: 5
fields:
- field: index
@@ -358,16 +397,19 @@ metrics:
i18n:
zh-CN: 编号
en-US: Index
ja-JP: 番号
- field: descr
type: 1
i18n:
zh-CN: 存储描述
en-US: Storage Description
ja-JP: ストレージ説明
label: true
- field: Size
i18n:
zh-CN: 存储大小
en-US: Storage Size
ja-JP: ストレージサイズ
type: 0
unit: Mb
- field: free
@@ -375,18 +417,21 @@ metrics:
i18n:
zh-CN: 存储空闲
en-US: Storage Free
ja-JP: 空きストレージ
unit: Mb
- field: used
type: 0
i18n:
zh-CN: 存储占用
en-US: Storage Used
ja-JP: 使用したストレージ
unit: Mb
- field: usage
type: 0
i18n:
zh-CN: 存储使用率
en-US: Storage Usage
ja-JP: ストレージ使用率
unit: '%'
# (Not required) Monitor indicator alias, which maps to the indicator name above. The field used to collect interface data is not directly the final indicator name, and this alias is required for mapping translation
aliasFields:
@@ -428,6 +473,7 @@ metrics:
i18n:
zh-CN: 接口详情
en-US: Interfaces Detail
ja-JP: ネットワークカード詳細
priority: 8
fields:
- field: index
@@ -435,65 +481,77 @@ metrics:
i18n:
zh-CN: 编号
en-US: Index
ja-JP: 番号
- field: descr
type: 1
label: true
i18n:
zh-CN: 接口名称
en-US: Interface Name
ja-JP: ネットワークカード名
- field: speed
type: 0
unit: 'Mbps'
i18n:
zh-CN: 接口速率
en-US: Interface Speed
ja-JP: ネットワークカード速度
- field: in_octets
type: 0
unit: 'Kbps'
i18n:
zh-CN: 入流量
en-US: In Octets
ja-JP: 受信されたバイト数
- field: out_octets
type: 0
unit: 'Kbps'
i18n:
zh-CN: 出流量
en-US: Out Octets
ja-JP: 転送されたバイト数
- field: admin_status
type: 1
i18n:
zh-CN: 配置状态
en-US: Config Status
ja-JP: 設定ステータス
- field: oper_status
type: 1
i18n:
zh-CN: 当前状态
en-US: Current Status
ja-JP: 現在のステータス
- field: mtu
type: 0
i18n:
zh-CN: MTU
en-US: MTU
ja-JP: MTU
- field: in_discards
type: 0
i18n:
zh-CN: 入丢包数
en-US: In Discards
ja-JP: 受信されたパケットのロス数
- field: in_errors
type: 0
i18n:
zh-CN: 入错包数
en-US: In Errors
ja-JP: 受信異常パケット数
- field: out_discards
type: 0
i18n:
zh-CN: 出丢包数
en-US: Out Discards
ja-JP: 転送されたパケットロス数
- field: out_errors
type: 0
i18n:
zh-CN: 出错包数
en-US: Out Errors
ja-JP: 転送された異常パケット数
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- ifIndex
@@ -555,6 +613,7 @@ metrics:
i18n:
zh-CN: 设备
en-US: Devices
ja-JP: デバイス
priority: 9
fields:
- field: index
@@ -562,17 +621,20 @@ metrics:
i18n:
zh-CN: 编号
en-US: Index
ja-JP: 番号
label: true
- field: descr
type: 1
i18n:
zh-CN: 描述
en-US: Description
ja-JP: 説明
- field: status
type: 1
i18n:
zh-CN: 状态
en-US: Status
ja-JP: 状態
aliasFields:
- hrDeviceIndex
- hrDeviceDescr
@@ -21,11 +21,13 @@ app: yarn
name:
zh-CN: Apache Yarn
en-US: Apache Yarn
ja-JP: Apache Yarn
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 对 Yarn 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache Yarn</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the Yarn metrics. <br>You can click "<i>New Apache Yarn</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 Yarn 節點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache Yarn</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は Yarnノードの一般的なメトリクスを監視します。<br>「<i>新規 Yarn</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/yarn/
@@ -38,6 +40,7 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
type: host
# required-true or false
@@ -48,6 +51,7 @@ params:
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
type: number
# when type is number, range is required
@@ -62,6 +66,7 @@ params:
name:
zh-CN: 查询超时时间
en-US: Query Timeout
ja-JP: クエリタイムアウト
# type-param field type(most mapping the html input type)
type: number
# required-true or false
@@ -74,6 +79,10 @@ params:
metrics:
# metrics - Server
- name: ClusterMetrics
i18n:
zh-CN: 集群指标
en-US: Cluster Metrics
ja-JP: クラスターメトリクス
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 0
@@ -85,30 +94,35 @@ metrics:
i18n:
zh-CN: 当前存活的 NodeManager 个数
en-US: NumActiveNMs
ja-JP: アクティブなNodeManager総数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDecommissionedNMs
type: 0
i18n:
zh-CN: 当前 Decommissioned 的 NodeManager 个数
en-US: NumDecommissionedNMs
ja-JP: オフラインしたNodeManager数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDecommissioningNMs
type: 0
i18n:
zh-CN: 集群正在下线的节点数
en-US: NumDecommissioningNMs
ja-JP: オフライン中のNodeManager数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumLostNMs
type: 0
i18n:
zh-CN: 集群丢失的节点数
en-US: NumLostNMs
ja-JP: ロストしたNodeManager数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumUnhealthyNMs
type: 0
i18n:
zh-CN: 集群不健康的节点数
en-US: NumUnhealthyNMs
ja-JP: 不健全なNodeManager数
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.NumActiveNMs
@@ -136,6 +150,10 @@ metrics:
parseType: jsonPath
parseScript: '$.beans[?(@.name == "Hadoop:service=ResourceManager,name=ClusterMetrics")]'
- name: JvmMetrics
i18n:
zh-CN: JVM指标
en-US: Jvm Metrics
ja-JP: Java仮想マシンのメトリクス
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 1
@@ -149,6 +167,7 @@ metrics:
i18n:
zh-CN: JVM当前非堆内存大小已提交大小
en-US: MemNonHeapCommittedM
ja-JP: コミットされたノンヒープメモリのサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: MemNonHeapMaxM
type: 0
@@ -156,6 +175,7 @@ metrics:
i18n:
zh-CN: JVM非堆最大可用内存
en-US: MemNonHeapMaxM
ja-JP: 使用可能なノンヒープメモリの最大サイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: MemNonHeapUsedM
type: 0
@@ -163,6 +183,7 @@ metrics:
i18n:
zh-CN: JVM当前已使用的非堆内存大小
en-US: MemNonHeapUsedM
ja-JP: 使用したノンヒープメモリのサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: MemHeapCommittedM
type: 0
@@ -170,6 +191,7 @@ metrics:
i18n:
zh-CN: JVM当前已使用堆内存大小
en-US: MemHeapCommittedM
ja-JP: コミットされたヒープメモリのサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: MemHeapMaxM
type: 0
@@ -177,6 +199,7 @@ metrics:
i18n:
zh-CN: JVM堆内存最大可用内存
en-US: MemHeapMaxM
ja-JP: 配置のヒープメモリのサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: MemHeapUsedM
type: 0
@@ -184,18 +207,21 @@ metrics:
i18n:
zh-CN: JVM当前已使用堆内存大小
en-US: MemHeapUsedM
ja-JP: 使用したヒープメモリのサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: GcTimeMillis
type: 0
i18n:
zh-CN: JVM GC时间
en-US: GcTimeMillis
ja-JP: GC時間
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: GcCount
type: 0
i18n:
zh-CN: JVM GC次数
en-US: GcCount
ja-JP: GC回数
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.MemNonHeapCommittedM
@@ -225,6 +251,10 @@ metrics:
parseType: jsonPath
parseScript: '$.beans[?(@.name == "Hadoop:service=ResourceManager,name=JvmMetrics")]'
- name: QueueMetrics
i18n:
zh-CN: 队列指标
en-US: Queue Metrics
ja-JP: キューメトリクス
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 2
@@ -238,30 +268,35 @@ metrics:
i18n:
zh-CN: 队列名称
en-US: queue
ja-JP: キュー
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AllocatedVCores
type: 0
i18n:
zh-CN: 分配的虚拟核数(已分配)
en-US: AllocatedVCores
ja-JP: 割り当てられたコア数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: ReservedVCores
type: 0
i18n:
zh-CN: 预留核数
en-US: ReservedVCores
ja-JP: 予約されているコア数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AvailableVCores
type: 0
i18n:
zh-CN: 可用核数(尚未分配)
en-US: AvailableVCores
ja-JP: 利用可能なコア数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: PendingVCores
type: 0
i18n:
zh-CN: 阻塞调度核数
en-US: PendingVCores
ja-JP: 保留中のコア数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AllocatedMB
type: 0
@@ -269,6 +304,7 @@ metrics:
i18n:
zh-CN: 已分配(已用)的内存大小
en-US: AllocatedMB
ja-JP: 割り当てられたメモリ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AvailableMB
type: 0
@@ -276,6 +312,7 @@ metrics:
i18n:
zh-CN: 可用内存(尚未分配)
en-US: AvailableMB
ja-JP: 使用可能なメモリ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: PendingMB
type: 0
@@ -283,6 +320,7 @@ metrics:
i18n:
zh-CN: 阻塞调度内存
en-US: PendingMB
ja-JP: 保留中のメモリ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: ReservedMB
type: 0
@@ -290,96 +328,112 @@ metrics:
i18n:
zh-CN: 预留内存
en-US: ReservedMB
ja-JP: 予約されているメモリ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AllocatedContainers
type: 0
i18n:
zh-CN: 已分配(已用)的container数
en-US: AllocatedContainers
ja-JP: 割り当てられたコンテナ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: PendingContainers
type: 0
i18n:
zh-CN: 阻塞调度container个数
en-US: PendingContainers
ja-JP: 保留中のコンテナ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: ReservedContainers
type: 0
i18n:
zh-CN: 预留container数
en-US: ReservedContainers
ja-JP: 予約されているコンテナ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AggregateContainersAllocated
type: 0
i18n:
zh-CN: 累积的container分配总数
en-US: AggregateContainersAllocated
ja-JP: 割り当てられたコンテナ総数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AggregateContainersReleased
type: 0
i18n:
zh-CN: 累积的container释放总数
en-US: AggregateContainersReleased
ja-JP: リリースされたコンテナ総数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsCompleted
type: 0
i18n:
zh-CN: 完成的任务数
en-US: AppsCompleted
ja-JP: 完了したタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsKilled
type: 0
i18n:
zh-CN: 被杀掉的任务数
en-US: AppsKilled
ja-JP: 終了したタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsFailed
type: 0
i18n:
zh-CN: 失败的任务数
en-US: AppsFailed
ja-JP: 失敗したタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsPending
type: 0
i18n:
zh-CN: 阻塞的任务数
en-US: AppsPending
ja-JP: ブロックされたタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsRunning
type: 0
i18n:
zh-CN: 提正在运行的任务数
en-US: AppsRunning
ja-JP: 実行中のタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: AppsSubmitted
type: 0
i18n:
zh-CN: 提交过的任务数
en-US: AppsSubmitted
ja-JP: 提出されたタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: running_0
type: 0
i18n:
zh-CN: 运行时间小于60分钟的作业个数
en-US: running_0
ja-JP: 実行時間60分未満のタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: running_60
type: 0
i18n:
zh-CN: 运行时间介于60~300分钟的作业个数
en-US: running_60
ja-JP: 実行時間が60分以上300分未満のタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: running_300
type: 0
i18n:
zh-CN: 运行时间介于300~1440分钟的作业个数
en-US: running_300
ja-JP: 実行時間が300分以上1440分未満のタスク数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: running_1440
type: 0
i18n:
zh-CN: 运行时间大于1440分钟的作业个数
en-US: running_1440
ja-JP: 実行時間が1440分以上のタスク数
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.['tag.Queue']
@@ -442,6 +496,10 @@ metrics:
parseScript: '$.beans[?(@.name =~ /Hadoop:service=ResourceManager,name=QueueMetrics.*/)]'
- name: runtime
i18n:
zh-CN: 运行时信息
en-US: Runtime
ja-JP: ランタイム情報
# metrics scheduling priority(0->127)->(high->low), metrics with the same priority will be scheduled in parallel
# priority 0's metrics is availability metrics, it will be scheduled first, only availability metrics collect success will the scheduling continue
priority: 3
@@ -453,6 +511,7 @@ metrics:
i18n:
zh-CN: 启动时间戳
en-US: StartTime
ja-JP: 起動時間
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.StartTime
@@ -72,7 +72,6 @@ resourceRole:
# rule: api===method
# eg: /api/v1/source3===get means /api/v1/source3===get can be access by anyone, no need auth.
excludedResource:
- /api/alerts/report/**===*
- /api/alert/sse/**===*
- /api/account/auth/**===*
- /api/i18n/**===get
@@ -25,8 +25,10 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
import java.util.Collections;
import java.util.List;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.manager.StatusPageComponent;
import org.apache.hertzbeat.common.entity.manager.StatusPageIncident;
@@ -219,14 +221,10 @@ class StatusPageControllerTest {
@Test
public void testQueryStatusPageIncident() throws Exception {
List<StatusPageIncident> incidents = Collections.singletonList(new StatusPageIncident());
when(statusPageService.queryStatusPageIncidents()).thenReturn(incidents);
mockMvc.perform(get("/api/status/page/incident")
.accept(MediaType.APPLICATION_JSON))
mockMvc.perform(get("/api/status/page/incident?pageIndex=0&pageSize=10"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value((int) CommonConstants.SUCCESS_CODE));
.andExpect(jsonPath("$.code").value((int) CommonConstants.SUCCESS_CODE))
.andReturn();
}
}
@@ -22,10 +22,11 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
import java.util.Collections;
import java.util.List;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.manager.StatusPageIncident;
import org.apache.hertzbeat.common.entity.manager.StatusPageOrg;
import org.apache.hertzbeat.manager.pojo.dto.ComponentStatus;
import org.apache.hertzbeat.manager.service.StatusPageService;
@@ -110,11 +111,7 @@ class StatusPagePublicControllerTest {
@Test
public void testQueryStatusPageIncident() throws Exception {
List<StatusPageIncident> incidents = Collections.singletonList(new StatusPageIncident());
when(statusPageService.queryStatusPageIncidents()).thenReturn(incidents);
mockMvc.perform(get("/api/status/page/public/incident")
.accept(MediaType.APPLICATION_JSON))
mockMvc.perform(get("/api/status/page/public/incident"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value((int) CommonConstants.SUCCESS_CODE));
}
@@ -18,11 +18,15 @@
package org.apache.hertzbeat.manager.service;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.List;
import org.apache.hertzbeat.common.entity.manager.StatusPageComponent;
import org.apache.hertzbeat.common.entity.manager.StatusPageIncident;
import org.apache.hertzbeat.common.entity.manager.StatusPageOrg;
@@ -38,7 +42,9 @@ import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
/**
* test case for {@link StatusPageServiceImpl}
@@ -121,13 +127,8 @@ class StatusPageServiceTest {
@Test
void testQueryStatusPageIncidents() {
StatusPageIncident incident = new StatusPageIncident();
when(statusPageIncidentDao.findAll(Sort.by(Sort.Direction.DESC, "startTime"))).thenReturn(List.of(incident));
List<StatusPageIncident> incidents = statusPageService.queryStatusPageIncidents();
assertEquals(1, incidents.size());
assertEquals(incident, incidents.get(0));
when(statusPageIncidentDao.findAll(any(Specification.class), any(PageRequest.class))).thenReturn(Page.empty());
assertNotNull(statusPageService.queryStatusPageIncidents(null, null, null, 1, 10));
}
@Test
-1
View File
@@ -3,7 +3,6 @@ title: Cloud Monitoring System HertzBeat v1.0 Officially Released
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: Cloud Monitoring System HertzBeat v1.1.0 Released! Start Your Monitoring
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat Monitoring System v1.1.0 Released! Start Your Monitoring Journe
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.1.1 is Publish
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: Cloud monitoring system HertzBeat v1.1.3 released!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: Best Practices for SSL Certificate Expiration Monitoring
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.2.0 Released! Easy-to-use and friendly open source real-time
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.2.2Support K8S Monitor And More.
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: 恭喜 HertzBeat 迎来了两位新晋社区Committer
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.2.3Support Prometheus,ShenYu and IotDb
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: Use HertzBeat Monitoring IoTDB
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat's Monitoring Practice for API Gateway Apache ShenYu
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
---
@@ -3,7 +3,6 @@ title: Monitoring Practices for DynamicTp Thread Pooling Framework with HertzBea
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
---
-1
View File
@@ -3,7 +3,6 @@ title: Welcome two new Committers from HertzBeat
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource]
---
-1
View File
@@ -3,7 +3,6 @@ title: Use the open source real-time monitoring tool HertzBeat to monitor and al
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
Keywords: [Open source monitoring tool, open source database monitoring, Mysql database monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: Monitoring Linux Operating Systems Using Open Source Real-Time Monitoring
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [Open source monitoring tool, operating system monitoring, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: Open source real-time monitoring tool HertzBeat v1.3.0 released, online c
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
@@ -3,7 +3,6 @@ title: Monitoring SpringBoot2 Metrics with HertzBeat in 5 minutes
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [opensource monitoring, SpringBoot monitoring, alert]
---
-1
View File
@@ -3,7 +3,6 @@ title: Open source real-time monitoring tool HertzBeat v1.3.1 released
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: GreptimeDB & HertzBeat, using the open source temporal database GreptimeD
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, open source temporal database, HertzBeat, GreptimeDB]
---
-1
View File
@@ -3,7 +3,6 @@ title: Open source monitoring HertzBeat v1.3.2 released, Easier to use
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.4.0 released, cluster is coming!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.4.1 released, better experience!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.4.2 released, custom notice template!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Linux monitoring]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.4.3 released, prometheus-compatible!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
-1
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
-1
View File
@@ -3,7 +3,6 @@ title: HertzBeat v1.4.4 released now!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
+1 -2
View File
@@ -3,7 +3,6 @@ title: The open-source real-time monitoring HertzBeat is donated to the Apache I
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -22,7 +21,7 @@ We warmly welcome everyone to join the HertzBeat community. The community accept
## What is HertzBeat
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time monitoring system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time observability system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
### Features
@@ -100,6 +100,6 @@ Some of you may wonder what can be gained by participating in Open Source Summer
2. **【 Win the maximum 12000 bonus 】 The total bonus is divided into advanced 12000 Yuan and basic 8000 Yuan according to the difficulty of the project (Note: the bonus amount is RMB before tax)**
3. **【 Community core staff counseling rapid growth 】 As long as you sign up and are selected, the tutor of each topic will carefully teach you to integrate into the community, and help you complete the design of the topic and the final landing.**
4. **【Recommended Entry/Internship】 Students with excellent performance in this Programming Summer project can be recommended to work in your preferred company.**
5. **【Additional community surprise】 All students participating in this Summer of Programming project have the opportunity to become Apache HertzBeat committer and have their own apache email.**
5. **【Additional community surprise】 All students participating in this Summer of Programming project have the opportunity to become Apache HertzBeat committer and have their own apache email.**
**There are 100% prizes to take oh**, now the only problem is that time is running out, hurry up to sign up! The deadline for registration is June 4, so hurry up and sign up for 2023 Summer of Programming.
+5 -6
View File
@@ -3,14 +3,13 @@ title: HertzBeat First Apache version v1.6.0 released now!
author: tom
author_title: tom
author_url: https://github.com/tomsun28
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, practice]
keywords: [open source, monitoring, alerting]
---
**Hi guys, We are excited to announce that Apache HertzBeat has released its first Apache version v1.6.0! 🎉.**
**Hi guys, We are excited to announce that Apache HertzBeat has released its first Apache version v1.6.0! 🎉.**
Through nearly five months of community development iteration and two months of Apache Incubator incubation process, Apache HertzBeat v1.6.0 is finally out.
Through nearly five months of community development iteration and two months of Apache Incubator incubation process, Apache HertzBeat v1.6.0 is finally out.
In this version, we added monitoring for OpenAi, Redfish protocol servers, plugin mechanism, and support for NebulaGraph, Apache Yarn, HDFS, Hbase, Storm, and more functional features.
Due to license compatibility issues, we replaced multiple dependencies at the bottom layer, Hibernate -> EclipseLink, which is also a rare migration pitfall practice in the JPA ecosystem.
At the same time, some bugs were fixed and some functions were optimized, and more complete documents. Welcome everyone to try to use, put forward valuable opinions and suggestions, and promote the development of HertzBeat together.
@@ -23,7 +22,7 @@ Upgrade Guide: <https://hertzbeat.apache.org/blog/2024/06/11/hertzbeat-v1.6.0-up
## What is HertzBeat?
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time monitoring system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time observability system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
## Features
@@ -117,7 +116,7 @@ Upgrade Guide: <https://hertzbeat.apache.org/blog/2024/06/11/hertzbeat-v1.6.0-up
* bugfix npe monitor jobid may be null by @tomsun28 in <https://github.com/apache/hertzbeat/pull/1701>
* support custom main menus in monitor template by @tomsun28 in <https://github.com/apache/hertzbeat/pull/1703>
* update home website doc by @tomsun28 in <https://github.com/apache/hertzbeat/pull/1712>
* [Improve] change package group to org apache hertzbeat by @vinci-897 in <https://github.com/apache/hertzbeat/pull/1724>
* [Improve] change package group to org Apache HertzBeat by @vinci-897 in <https://github.com/apache/hertzbeat/pull/1724>
* [improve] initial license clean up by @tomsun28 in <https://github.com/apache/hertzbeat/pull/1725>
* update manager and collector logback config(#1704) by @handy-git in <https://github.com/apache/hertzbeat/pull/1723>
* fix(sec): upgrade com.h2database:h2 to by @WinterKi1ler in <https://github.com/apache/hertzbeat/pull/1718>
@@ -389,4 +388,4 @@ Have Fun!
HertzBeat, Make Monitoring Easier!
Apache HertzBeat Team
Apache HertzBeat Team
+1 -2
View File
@@ -3,14 +3,13 @@ title: Welcome to HertzBeat Community Committer!
author: crossoverJie
author_title: crossoverJie
author_url: https://github.com/crossoverjie
author_image_url: https://avatars.githubusercontent.com/u/15684156?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
![HertzBeat](/img/blog/new-committer.png)
> 🎉 I am very pleased to become a Committer for the Apache HertzBeat project, and I have been invited by the community to introduce myself 🥰.
> 🎉 I am very pleased to become a Committer for the Apache HertzBeat project, and I have been invited by the community to introduce myself 🥰.
I have been working in backend development since I started my career in 2015, engaging in business development, infrastructure, and technical management. Currently, I am working as an infrastructure engineer at an internet company.
+4 -5
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: zhangshenghang
author_title: zhangshenghang
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/29418975?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -12,7 +11,7 @@ keywords: [open source monitoring system, alerting system]
### First acquaintance with Apache Hertzbeat
I first came into contact with the Apache Hertzbeat project by chance. At that time, I was looking for an open source project to monitor our company's related services. As a general monitoring project, Apache Hertzbeat naturally came into my sight. I began to understand its architecture and functions by reading official documents and browsing the project's code base.
I first came into contact with the Apache HertzBeat project by chance. At that time, I was looking for an open source project to monitor our company's related services. As a general monitoring project, Apache HertzBeat naturally came into my sight. I began to understand its architecture and functions by reading official documents and browsing the project's code base.
### Start contributing
@@ -41,11 +40,11 @@ In this process, I also received help and support from many people. The predeces
### Personal feelings
Becoming a Committer of Apache Hertzbeat is an important milestone in my career. This is not only a recognition of my technical ability, but also an affirmation of my contribution to the open source community. Becoming a Committer is not an end, but a new beginning. I still have a lot to learn and improve.
Becoming a Committer of Apache HertzBeat is an important milestone in my career. This is not only a recognition of my technical ability, but also an affirmation of my contribution to the open source community. Becoming a Committer is not an end, but a new beginning. I still have a lot to learn and improve.
This process made me understand the importance of cooperation and made me feel the charm of the open source spirit. Open source is not only a way to share technology, but also a concept of collaboration and common progress. I am very honored to be a member of the Apache Hertzbeat community and hope to continue to contribute to the development of the project in the future.
This process made me understand the importance of cooperation and made me feel the charm of the open source spirit. Open source is not only a way to share technology, but also a concept of collaboration and common progress. I am very honored to be a member of the Apache HertzBeat community and hope to continue to contribute to the development of the project in the future.
### Conclusion
Becoming a Committer of the Apache Hertzbeat project is a challenging and rewarding journey. Through continuous learning and contribution, I have not only improved my technical ability, but also found a sense of belonging and accomplishment in the community.
Becoming a Committer of the Apache HertzBeat project is a challenging and rewarding journey. Through continuous learning and contribution, I have not only improved my technical ability, but also found a sense of belonging and accomplishment in the community.
I hope that my experience can inspire more people to participate in the open source community and jointly promote the progress and development of technology. To borrow the words of Tom: Participating in open source should not affect everyone's work and life, otherwise it will go against the original intention. Everyone should participate in the free time after get off work.
+1 -2
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: LiuTianyou
author_title: LiuTianyou
author_url: https://github.com/LiuTianyou
author_image_url: https://avatars.githubusercontent.com/u/30208283?v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -31,4 +30,4 @@ Due to my continuous writing of documents and contributing code, I started to be
### Conclusion
I am very honored to be able to participate in this project and be recognized by the community. I would like to thank @tomsun28, @TJxiaobao, @zqr10159, @tuohai666, @yuluo-yx, @crossoverJie, @zhangshenghang, and @pwallk for reviewing my code, providing guidance, and helping me. Finally, I wish Apache HertzBeat to grow strong and have more and more contributors participating.
I am very honored to be able to participate in this project and be recognized by the community. I would like to thank @tomsun28, @TJxiaobao, @zqr10159, @tuohai666, @yuluo-yx, @crossoverJie, @zhangshenghang, and @pwallk for reviewing my code, providing guidance, and helping me. Finally, I wish Apache HertzBeat to grow strong and have more and more contributors participating.
+1 -2
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: Calvin979
author_title: Calvin979
author_url: https://github.com/Calvin979
author_image_url: https://avatars.githubusercontent.com/u/131688897?v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -36,4 +35,4 @@ During the reading of Hertzbeat source code, I learned a lot of code writing and
## Conclusion
It's an interesting experience for me to become a Committer of Apache Hertzbeat and it motivates me day by day. I will continue to contribute to the Apache Hertzbeat community in the future, and I hope that Apache Hertzbeat can successfully graduate from the Apache incubator.
It's an interesting experience for me to become a Committer of Apache HertzBeat and it motivates me day by day. I will continue to contribute to the Apache HertzBeat community in the future, and I hope that Apache HertzBeat can successfully graduate from the Apache incubator.
+1 -2
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: linDong
author_title: linDong
author_url: https://github.com/Yanshuming1
author_image_url: https://avatars.githubusercontent.com/u/118667222?v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -36,4 +35,4 @@ After several months of contributing to open source, I have reaped a lot. I have
## Conclusion
Becoming a Committer of Apache Hertzbeat is a very meaningful thing for me. In the future, I will continue to contribute to the Apache Hertzbeat community. I also hope that Apache Hertzbeat can successfully graduate from the incubator and that the community will become better and better.
Becoming a Committer of Apache HertzBeat is a very meaningful thing for me. In the future, I will continue to contribute to the Apache HertzBeat community. I also hope that Apache HertzBeat can successfully graduate from the incubator and that the community will become better and better.
+2 -3
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: kerwin612
author_title: Le Zhang
author_url: https://github.com/kerwin612
author_image_url: https://avatars.githubusercontent.com/u/3371163?v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -14,7 +13,7 @@ keywords: [open source monitoring system, alerting system]
## Becoming Part of a Stronger Team: My Contributions and Growth
In the open-source community, every contribution not only pushes the project forward but also signifies personal growth. Recently, in the Apache HertzBeat project, I have contributed through a series of optimizations and feature enhancements, which have not only advanced the project but also improved my skills. Today, I would like to share my contribution experience and insights into my growth.
In the open-source community, every contribution not only pushes the project forward but also signifies personal growth. Recently, in the Apache HertzBeat project, I have contributed through a series of optimizations and feature enhancements, which have not only advanced the project but also improved my skills. Today, I would like to share my contribution experience and insights into my growth.
## Starting from the Details: Optimizing Visuals and Interactions
@@ -37,4 +36,4 @@ In this process, I realized the importance of a user-centric approach. Only by g
## Looking Ahead: Continuous Contribution and Growth
Reflecting on my past contributions, I feel a profound sense of pride and satisfaction. However, I am also acutely aware of the many areas where I still have room for improvement and need to continue learning and growing. Moving forward, I will uphold the spirit of rigor, innovation, and user-centricity, continuously exploring and practicing to contribute even more to the Apache HertzBeat project. I eagerly anticipate the opportunity to grow and progress alongside my fellow team members, jointly driving the project towards prosperity and success.
Reflecting on my past contributions, I feel a profound sense of pride and satisfaction. However, I am also acutely aware of the many areas where I still have room for improvement and need to continue learning and growing. Moving forward, I will uphold the spirit of rigor, innovation, and user-centricity, continuously exploring and practicing to contribute even more to the Apache HertzBeat project. I eagerly anticipate the opportunity to grow and progress alongside my fellow team members, jointly driving the project towards prosperity and success.
+4 -5
View File
@@ -3,7 +3,6 @@ title: Becoming an Apache Committer is a recognition of my participation in open
author: yuluo-yx
author_title: Shown Ji
author_url: https://github.com/yuluo-yx
author_image_url: https://avatars.githubusercontent.com/u/77964041
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Apache, Apache Committer, Hertzbeat]
---
@@ -36,7 +35,7 @@ The first contribution in the Apache community should be to delete a `{@link}` c
### Get nominated and become a Committer
This nomination was recommended by PPMC Member [Logic](https://github.com/zqr10159) of Apache HertzbeatP(Incubating). Thanks to the Apache Hertzbeat Team. I was successfully nominated to become a Hertzbeat Committer and got my own Apache mailbox.
This nomination was recommended by PPMC Member [Logic](https://github.com/zqr10159) of Apache HertzbeatP(Incubating). Thanks to the Apache HertzBeat Team. I was successfully nominated to become a Hertzbeat Committer and got my own Apache mailbox.
![Apache ID Email](/img/blog/committer/yuluo-yx/3.jpg)
@@ -70,9 +69,9 @@ Before contributing to the community, it is important to understand the communit
#### Project Committer Nomination Criteria
The conditions for a Project PPMC Team to nominate a Committer are different. Take Apache Hertzbeat for example:
The conditions for a Project PPMC Team to nominate a Committer are different. Take Apache HertzBeat for example:
! [Apache Hertzbeat becoming committer](/img/blog/committer/yuluo-yx/7.jpg)
! [Apache HertzBeat becoming committer](/img/blog/committer/yuluo-yx/7.jpg)
Each project has its own standards, and these standards are not set in stone and will be adjusted at each stage of the project.
@@ -96,5 +95,5 @@ Project communities tend to welcome contributions in all ways: be it code, docum
## Random Thoughts
I'm writing this post to commemorate the special occasion of becoming an Apache Hertzbeat Committer, and to motivate me to get involved in open source in the future.
I'm writing this post to commemorate the special occasion of becoming an Apache HertzBeat Committer, and to motivate me to get involved in open source in the future.
Keep up the enthusiasm, keep up the coding, and thank you for all the people who have helped me while I've been involved in open source. I wish Hertzbeat the best of luck in its incubation and graduation to become a top Apache project! 🎉
+3 -4
View File
@@ -3,7 +3,6 @@ title: Welcome to HertzBeat Community Committer!
author: aias00
author_title: Hongyu Liu
author_url: https://github.com/Aias00
author_image_url: https://avatars.githubusercontent.com/u/25810623
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system, Apache, Apache Committer, Hertzbeat]
---
@@ -14,7 +13,7 @@ Hello everyone, I am deeply honored to be invited as a Committer for Apache Hert
I have been in the software development industry for many years, currently working as a backend development engineer in my company, mainly responsible for the development and maintenance of core business systems. In my daily work, I not only focus on code quality and system performance but also actively participate in the design and optimization of technical solutions.
Besides work, I am also passionate about the open-source community. Participating in open-source projects not only allows me to continuously learn new technologies and best practices but also helps me meet like-minded developers and jointly promote technological advancement. Becoming a Committer for Apache HertzBeat is an important milestone in my open-source journey, and I will continue to strive to make more contributions to the project and community.
Besides work, I am also passionate about the open-source community. Participating in open-source projects not only allows me to continuously learn new technologies and best practices but also helps me meet like-minded developers and jointly promote technological advancement. Becoming a Committer for Apache HertzBeat is an important milestone in my open-source journey, and I will continue to strive to make more contributions to the project and community.
## Participating in the Apache Community
@@ -24,7 +23,7 @@ This experience gave me a deeper understanding of the Apache community and laid
## Encountering HertzBeat and Starting to Contribute
After participating in the Apache ShenYu project, I gained a deeper understanding of how open-source communities operate. At this time, I came across the Apache HertzBeat project by chance, which aims to create an easy-to-use, high-performance open-source real-time monitoring and alerting system.
After participating in the Apache ShenYu project, I gained a deeper understanding of how open-source communities operate. At this time, I came across the Apache HertzBeat project by chance, which aims to create an easy-to-use, high-performance open-source real-time monitoring and alerting system.
HertzBeat's philosophy and functionality immediately caught my interest. As a backend development engineer, I deeply understand the importance of monitoring systems in modern software architecture. HertzBeat not only provides rich monitoring features but also focuses on user experience and scalability, which aligns very well with my technical philosophy.
@@ -36,4 +35,4 @@ Through continuous contributions and interactions with community members, I grad
## Conclusion
Becoming a Committer for Apache HertzBeat is an important milestone in my open-source journey. I will continue to strive to make more contributions to the project and community, while also looking forward to growing and progressing together with more team members, jointly promoting the prosperity and development of the project.
Becoming a Committer for Apache HertzBeat is an important milestone in my open-source journey. I will continue to strive to make more contributions to the project and community, while also looking forward to growing and progressing together with more team members, jointly promoting the prosperity and development of the project.
+2 -3
View File
@@ -3,7 +3,6 @@ title: Warmly Welcome HertzBeat's New Community Committer!
author: zuobiao-zhou
author_title: Yuxuan Zhang
author_url: https://github.com/zuobiao-zhou
author_image_url: https://avatars.githubusercontent.com/u/61108539
tags: [opensource, practice]
keywords:
[
@@ -17,7 +16,7 @@ keywords:
## Self-Introduction
Hello everyone, I'm Yuxuan Zhang, a graduate student from Beijing University of Technology. I am deeply honored to become a Committer for the Apache HertzBeat project.
Hello everyone, I'm Yuxuan Zhang, a graduate student from Beijing University of Technology. I am deeply honored to become a Committer for the Apache HertzBeat project.
## My Journey with Apache HertzBeat
@@ -43,6 +42,6 @@ Once you've found a project that meets the above criteria, you can pull the proj
## Conclusion
I'm very happy to become a Committer for the community. This is an important milestone for me, and I will continue contributing to the Apache HertzBeat community in the future. I also hope that Apache HertzBeat will successfully graduate from the incubator and that the community will continue to grow.
I'm very happy to become a Committer for the community. This is an important milestone for me, and I will continue contributing to the Apache HertzBeat community in the future. I also hope that Apache HertzBeat will successfully graduate from the incubator and that the community will continue to grow.
I want to extend my heartfelt thanks to [TJxiaobao](https://github.com/TJxiaobao) for guiding me in getting started with the project and for always supporting my contributions. I also want to thank [Tom](https://github.com/tomsun28) for the prompt and detailed reviews of my PRs.
+8 -9
View File
@@ -1,21 +1,20 @@
---
title: Announcement of Apache Hertzbeat 1.6.1 Release
title: Announcement of Apache HertzBeat 1.6.1 Release
author: zhangshenghang
author_title: zhangshenghang
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/29418975?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
Dear Community Members,
We are thrilled to announce the official release of Apache Hertzbeat version 1.6.1! This release incorporates 468 pull requests, introducing numerous new features and enhancements. In this post, well delve into the key updates of version 1.6.1. We warmly welcome more developers and users to join our open-source community!
We are thrilled to announce the official release of Apache HertzBeat version 1.6.1! This release incorporates 468 pull requests, introducing numerous new features and enhancements. In this post, well delve into the key updates of version 1.6.1. We warmly welcome more developers and users to join our open-source community!
## Downloads and Documentation
- **Apache Hertzbeat 1.6.1 Download Link**: <https://hertzbeat.apache.org/zh-cn/docs/download>
- **Apache Hertzbeat Documentation**: <https://hertzbeat.apache.org/zh-cn/docs/>
- **Apache HertzBeat 1.6.1 Download Link**: <https://hertzbeat.apache.org/zh-cn/docs/download>
- **Apache HertzBeat Documentation**: <https://hertzbeat.apache.org/zh-cn/docs/>
## Major Updates
@@ -75,17 +74,17 @@ Special thanks to **@zqr10159** for supporting this release and to the following
<https://hertzbeat.apache.org/>
**Apache Hertzbeat Download Link:**
**Apache HertzBeat Download Link:**
<https://hertzbeat.apache.org/zh-cn/docs/download>
**Apache Hertzbeat Docker Images:**
**Apache HertzBeat Docker Images:**
Apache Hertzbeat provides Docker images for each release, available on Docker Hub:
Apache HertzBeat provides Docker images for each release, available on Docker Hub:
- HertzBeat: <https://hub.docker.com/r/apache/hertzbeat>
- HertzBeat Collector: <https://hub.docker.com/r/apache/hertzbeat-collector>
**How to Contribute to the Apache Hertzbeat Open Source Community?**
**How to Contribute to the Apache HertzBeat Open Source Community?**
<https://hertzbeat.apache.org/zh-cn/docs/community/contribution>
@@ -3,7 +3,6 @@ title: How to Participate in Developing Custom Collectors
author: zhangshenghang
author_title: zhangshenghang
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/29418975?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
+2 -3
View File
@@ -3,7 +3,6 @@ title: GSOC Google Summer of Code 2025 Recruitment is Underway | We Look Forward
author: zhangshenghang
author_title: zhangshenghang
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/29418975?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
@@ -22,7 +21,7 @@ GSOC, namely Google Summer of Code, is a global initiative launched by Google. I
### Background
Apache HertzBeat is an open-source real-time monitoring tool that supports a wide range of monitoring targets, including web services, databases, middleware, and more. It is characterized by high performance, scalability, and security.
Apache HertzBeat is an open-source real-time monitoring tool that supports a wide range of monitoring targets, including web services, databases, middleware, and more. It is characterized by high performance, scalability, and security.
With the continuous advancement of artificial intelligence (AI) technology, integrating AI with monitoring systems can significantly improve their usability and interactivity. By developing an AI agent based on the Model Context Protocol (MCP), we aim to enable conversational interaction for querying monitoring information, adding new monitoring tasks, and retrieving monitoring metrics. This will provide a more user-friendly and intelligent monitoring management experience.
@@ -68,7 +67,7 @@ With the continuous advancement of artificial intelligence (AI) technology, inte
### Recommended Skills
- **Java + TypeScript**: Apache HertzBeat is developed based on this technology stack. Therefore, mastering these technologies is crucial for integrating with HertzBeat.
- **Java + TypeScript**: Apache HertzBeat is developed based on this technology stack. Therefore, mastering these technologies is crucial for integrating with HertzBeat.
- **SpringAi**: It is recommended to use SpringAi to build the AI agent.
- **LLM + MCP**: You need to understand large language models (LLM) and the MCP protocol. SpringAi seems to support the MCP protocol, or you can consider using the mcp-sdk directly.
+2 -3
View File
@@ -3,7 +3,6 @@ title: Warmly Welcome HertzBeat's New Community Committer!
author: yunfan24
author_title: Lixin Diao
author_url: https://github.com/yunfan24
author_image_url: https://avatars.githubusercontent.com/u/91836599?v=4
tags: [opensource, practice]
keywords:
[
@@ -14,7 +13,7 @@ keywords:
Hertzbeat,
]
---
🎉 Hello everyone. I'm very glad to receive an invitation from the Apache HertzBeat community and officially become a Committer of the project!
🎉 Hello everyone. I'm very glad to receive an invitation from the Apache HertzBeat community and officially become a Committer of the project!
## My Open Source Journey
@@ -45,4 +44,4 @@ Most importantly, I've connected with experts from diverse regions and industrie
## Closing Thoughts
Thank you to the community and everyone who reviewed my code! Wishing Apache HertzBeat a successful graduation from the Apache Incubator and continued growth! 🚀
Thank you to the community and everyone who reviewed my code! Wishing Apache HertzBeat a successful graduation from the Apache Incubator and continued growth! 🚀
+2 -3
View File
@@ -1,16 +1,15 @@
---
title: From Commiter to PMC The Journey of Growth at Apache Hertzbeat
title: From Commiter to PMC The Journey of Growth at Apache HertzBeat
author: zhangshenghang
author_title: zhangshenghang
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/29418975?s=400&v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
## From Committer to PMC: The Transformation and Growth of Roles
A year ago, when I received the notification of becoming an Apache HertzBeat **Committer**, the joy and sense of mission I felt are still vivid in my memory. At that time, I was more focused on specific technical implementations and feature developments. Now, being invited to join the **PMC** means that I need to view the project's development from a more comprehensive perspective. This is not only an acknowledgment of my participation in open source but also a call for future responsibilities.
A year ago, when I received the notification of becoming an Apache HertzBeat **Committer**, the joy and sense of mission I felt are still vivid in my memory. At that time, I was more focused on specific technical implementations and feature developments. Now, being invited to join the **PMC** means that I need to view the project's development from a more comprehensive perspective. This is not only an acknowledgment of my participation in open source but also a call for future responsibilities.
### In-depth Participation: Accumulation during the Committer Period
+8 -9
View File
@@ -1,21 +1,20 @@
---
title: Announcement of Apache Hertzbeat 1.7.0 Release
title: Announcement of Apache HertzBeat 1.7.0 Release
author: tomsun28
author_title: tomsun28
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, release]
keywords: [open source monitoring system, alerting system, Hertzbeat, release]
---
Dear Community Members,
We are thrilled to announce the official release of Apache Hertzbeat version 1.7.0!
We are thrilled to announce the official release of Apache HertzBeat version 1.7.0!
## Downloads and Documentation
- **Apache Hertzbeat 1.7.0 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache Hertzbeat Documentation**: <https://hertzbeat.apache.org/docs/>
- **Apache HertzBeat 1.7.0 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache HertzBeat Documentation**: <https://hertzbeat.apache.org/docs/>
## Major Updates
@@ -300,17 +299,17 @@ Special thanks to the following community members for their collaborative effort
<https://hertzbeat.apache.org/>
**Apache Hertzbeat Download Link:**
**Apache HertzBeat Download Link:**
<https://hertzbeat.apache.org/docs/download>
**Apache Hertzbeat Docker Images:**
**Apache HertzBeat Docker Images:**
Apache Hertzbeat provides Docker images for each release, available on Docker Hub:
Apache HertzBeat provides Docker images for each release, available on Docker Hub:
- HertzBeat: <https://hub.docker.com/r/apache/hertzbeat>
- HertzBeat Collector: <https://hub.docker.com/r/apache/hertzbeat-collector>
**How to Contribute to the Apache Hertzbeat Open Source Community?**
**How to Contribute to the Apache HertzBeat Open Source Community?**
<https://hertzbeat.apache.org/docs/community/contribution>
+5 -6
View File
@@ -3,7 +3,6 @@ title: Welcome HertzBeat's New Community Committer!
author: pwallk
author_title: Kang Li
author_url: https://github.com/pwallk
author_image_url: https://avatars.githubusercontent.com/u/69385076
tags: [opensource, practice]
keywords:
[
@@ -15,7 +14,7 @@ keywords:
]
---
> Hello everyone, it's a great honor to be invited by the community to become a Committer of the Apache HertzBeat project.
> Hello everyone, it's a great honor to be invited by the community to become a Committer of the Apache HertzBeat project.
## Self-Introduction
@@ -23,16 +22,16 @@ I have been engaged in Java backend development since 2022. Currently, I am work
## Getting to know Apache HertzBeat
Last year, I came across the Apache HertzBeat project by chance. After reading the documentation, I found that this monitoring tool is easy to use, does not require an Agent, and can be operated entirely through a web page. So, I quickly set it up within the company based on Docker and put it into use.
Last year, I came across the Apache HertzBeat project by chance. After reading the documentation, I found that this monitoring tool is easy to use, does not require an Agent, and can be operated entirely through a web page. So, I quickly set it up within the company based on Docker and put it into use.
Due to the `All in one` design architecture of Apache HertzBeat, it has greatly reduced my mental burden, and I was able to quickly integrate various internal company services into the monitoring system.
Due to the `All in one` design architecture of Apache HertzBeat, it has greatly reduced my mental burden, and I was able to quickly integrate various internal company services into the monitoring system.
## Participate and Contribute
During the usage process, I discovered a database query bug. So, I forked the code and started debugging it locally. I found that the fix was not complicated and since no one else had addressed it, I submitted my first PR. To my surprise, it was merged quickly, which greatly encouraged me.
In the following period, I continued to familiarize myself with the Apache HertzBeat code, paying close attention to ISSUES and PRs. As my understanding of the system deepened, apart from fixing BUGs and improving documentation, I also developed some new features, such as database storage templates and SSH tunnels.
In the following period, I continued to familiarize myself with the Apache HertzBeat code, paying close attention to ISSUES and PRs. As my understanding of the system deepened, apart from fixing BUGs and improving documentation, I also developed some new features, such as database storage templates and SSH tunnels.
## Conclusion
I'm deeply grateful to [@tomsun28](https://github.com/tomsun28) for inviting me to become a committer for this project. I also want to thank other members of the community for assisting me in reviewing code and providing invaluable help. Apache Hertzbeat boasts a highly active community, and I sincerely hope more people will join and contribute to it, Finally, I wish Apache HertzBeat can graduate from the incubator soon!
I'm deeply grateful to [@tomsun28](https://github.com/tomsun28) for inviting me to become a committer for this project. I also want to thank other members of the community for assisting me in reviewing code and providing invaluable help. Apache HertzBeat boasts a highly active community, and I sincerely hope more people will join and contribute to it, Finally, I wish Apache HertzBeat can graduate from the incubator soon!
+8 -9
View File
@@ -1,21 +1,20 @@
---
title: Announcement of Apache Hertzbeat 1.7.1 Release
title: Announcement of Apache HertzBeat 1.7.1 Release
author: tomsun28
author_title: tomsun28
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, release]
keywords: [open source monitoring system, alerting system, Hertzbeat, release]
---
Dear Community Members,
We are thrilled to announce the official release of Apache Hertzbeat version 1.7.1!
We are thrilled to announce the official release of Apache HertzBeat version 1.7.1!
## Downloads and Documentation
- **Apache Hertzbeat 1.7.1 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache Hertzbeat Documentation**: <https://hertzbeat.apache.org/docs/>
- **Apache HertzBeat 1.7.1 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache HertzBeat Documentation**: <https://hertzbeat.apache.org/docs/>
## Major Updates
@@ -210,17 +209,17 @@ Special thanks to the following community members for their collaborative effort
<https://hertzbeat.apache.org/>
**Apache Hertzbeat Download Link:**
**Apache HertzBeat Download Link:**
<https://hertzbeat.apache.org/docs/download>
**Apache Hertzbeat Docker Images:**
**Apache HertzBeat Docker Images:**
Apache Hertzbeat provides Docker images for each release, available on Docker Hub:
Apache HertzBeat provides Docker images for each release, available on Docker Hub:
- HertzBeat: <https://hub.docker.com/r/apache/hertzbeat>
- HertzBeat Collector: <https://hub.docker.com/r/apache/hertzbeat-collector>
**How to Contribute to the Apache Hertzbeat Open Source Community?**
**How to Contribute to the Apache HertzBeat Open Source Community?**
<https://hertzbeat.apache.org/docs/community/contribution>
+2 -3
View File
@@ -3,7 +3,6 @@ title: Welcome HertzBeat's New Community Committer!
author: MasamiYui
author_title: Yijun Yin
author_url: https://github.com/MasamiYui
author_image_url: https://avatars.githubusercontent.com/u/22274133
tags: [opensource, practice]
keywords:
[
@@ -15,7 +14,7 @@ keywords:
]
---
> Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.
> Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.
## Self-Introduction
@@ -39,4 +38,4 @@ For me, open source is a vessel for technical passion; growing alongside the com
## Conclusion
A heartfelt thank you to [@tomsun28](https://github.com/tomsun28) for the nomination and guidance. I hope this encouragement drives me to make even more valuable contributions to the community. Finally, wishing Apache HertzBeat a smooth graduation from the Apache Incubator and may the community continue to grow and thrive!
A heartfelt thank you to [@tomsun28](https://github.com/tomsun28) for the nomination and guidance. I hope this encouragement drives me to make even more valuable contributions to the community. Finally, wishing Apache HertzBeat a smooth graduation from the Apache Incubator and may the community continue to grow and thrive!
+8 -9
View File
@@ -1,21 +1,20 @@
---
title: Announcement of Apache Hertzbeat 1.7.2 Release
title: Announcement of Apache HertzBeat 1.7.2 Release
author: tomsun28
author_title: tomsun28
author_url: https://github.com/zhangshenghang
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
tags: [opensource, release]
keywords: [open source monitoring system, alerting system, Hertzbeat, release]
---
Dear Community Members,
We are thrilled to announce the official release of Apache Hertzbeat version 1.7.2!
We are thrilled to announce the official release of Apache HertzBeat version 1.7.2!
## Downloads and Documentation
- **Apache Hertzbeat 1.7.2 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache Hertzbeat Documentation**: <https://hertzbeat.apache.org/docs/>
- **Apache HertzBeat 1.7.2 Download Link**: <https://hertzbeat.apache.org/docs/download>
- **Apache HertzBeat Documentation**: <https://hertzbeat.apache.org/docs/>
## Major Updates
@@ -182,17 +181,17 @@ Special thanks to the following community members for their collaborative effort
<https://hertzbeat.apache.org/>
**Apache Hertzbeat Download Link:**
**Apache HertzBeat Download Link:**
<https://hertzbeat.apache.org/docs/download>
**Apache Hertzbeat Docker Images:**
**Apache HertzBeat Docker Images:**
Apache Hertzbeat provides Docker images for each release, available on Docker Hub:
Apache HertzBeat provides Docker images for each release, available on Docker Hub:
- HertzBeat: <https://hub.docker.com/r/apache/hertzbeat>
- HertzBeat Collector: <https://hub.docker.com/r/apache/hertzbeat-collector>
**How to Contribute to the Apache Hertzbeat Open Source Community?**
**How to Contribute to the Apache HertzBeat Open Source Community?**
<https://hertzbeat.apache.org/docs/community/contribution>
+3 -4
View File
@@ -3,7 +3,6 @@ title: Welcome HertzBeat's New Community Committer!
author: bigcyy
author_title: Yang Chen
author_url: https://github.com/bigcyy
author_image_url: https://avatars.githubusercontent.com/u/73413979
tags: [opensource, practice]
keywords:
[
@@ -15,7 +14,7 @@ keywords:
]
---
Hello everyone, I'm Yang Chen, currently a graduate student at Chongqing University of Posts and Telecommunications. I'm deeply honored to receive recognition and invitation from the Apache HertzBeat community to officially become a project Committer. This marks the true beginning of my open-source journey!
Hello everyone, I'm Yang Chen, currently a graduate student at Chongqing University of Posts and Telecommunications. I'm deeply honored to receive recognition and invitation from the Apache HertzBeat community to officially become a project Committer. This marks the true beginning of my open-source journey!
## My Open Source Exploration
@@ -41,8 +40,8 @@ Participating in open source has indeed significantly improved my abilities. By
My experience has convinced me that open source is not just about writing code, but an excellent platform for learning, growing, and contributing.
If you're also passionate about technology, eager to improve yourself through practice, and want to experience true community collaboration, then the Apache HertzBeat community is definitely your best choice!
If you're also passionate about technology, eager to improve yourself through practice, and want to experience true community collaboration, then the Apache HertzBeat community is definitely your best choice!
## Finally
I sincerely thank [Tom](https://github.com/tomsun28), [Shenghang](https://github.com/zhangshenghang), [Logic](https://github.com/zqr10159), and other community members for their meticulous code reviews and patient guidance. I hope Apache HertzBeat continues to thrive!
I sincerely thank [Tom](https://github.com/tomsun28), [Shenghang](https://github.com/zhangshenghang), [Logic](https://github.com/zqr10159), and other community members for their meticulous code reviews and patient guidance. I hope Apache HertzBeat continues to thrive!
@@ -0,0 +1,126 @@
---
title: Apache HertzBeat™ Graduates as an Apache Top-Level Project!
author: TJxiaobao
author_url: https://github.com/TJxiaobao
tags: [opensource, apache]
---
> **A Milestone Moment for Our Open-Source Project**
>
> On August 21, 2025, the Apache Software Foundation (ASF), the world's largest open-source software foundation, officially announced that Apache HertzBeat™ has graduated to become an Apache Top-Level Project (TLP).
>
> Apache HertzBeat™ applied to join the Apache Incubator in April 2024 and released its first Apache version two months later. On August 21, 2025, the Apache Board of Directors approved the resolution for Apache HertzBeat's graduation, ending a 17-month incubation period and officially establishing Apache HertzBeat™ as an Apache Top-Level Project.
>
> This achievement signifies that Apache HertzBeat's technological innovation, community governance, and ecosystem maturity in the monitoring field have fully met the stringent standards of the Apache Foundation, making it a key choice for global open-source monitoring infrastructure.
## 1. What is Apache HertzBeat?
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open-source, real-time monitoring and alerting system that requires no agent, features a high-performance cluster, is compatible with Prometheus, and offers powerful custom monitoring and status page building capabilities.
![hertzBeat](/img/docs/hertzbeat-arch.png)
### Features
- **All-in-one monitoring, alerting, and notification**, supporting one-stop monitoring, threshold alerting, and notifications for application services, applications, databases, caches, operating systems, big data, middleware, web servers, cloud-native, network, custom, and more.
- **User-friendly and easy to use**, requiring no `Agent`. All operations are done through a `WEB` interface, allowing you to set up monitoring and alerts with just a few clicks, with no learning curve.
- **Configurable protocol specifications** such as `Http, Jmx, Ssh, Snmp, Jdbc, Prometheus`. You only need to configure a monitoring template `YML` in your browser to use these protocols to collect any desired metrics. Can you believe that you can quickly adapt to a new monitoring type like `K8s` or `Docker` with just a simple configuration?
- **Compatible with the `Prometheus` ecosystem and more**, allowing you to monitor everything that Prometheus can with simple page operations.
- **High performance**, supporting horizontal scaling of multi-collector clusters, multi-isolated network monitoring, and cloud-edge collaboration.
- **Flexible alert threshold rules**, with timely notifications via `Email`, `Discord`, `Slack`, `Telegram`, `DingTalk`, `WeChat`, `Feishu`, `SMS`, `Webhook`, `ServerChan`, and other methods.
- **Powerful status page building capabilities**, making it easy to convey the real-time status of your product services to users.
## 2. Incubation Journey and Milestones
#### **I. Incubation Journey**
- **April 2024**:
HertzBeat officially applied to join the Apache Incubator and became an Apache Incubator project.
- **June 2024**:
The first Apache version was released, marking the project's official entry into the Apache ecosystem. (During this period, a large number of non-compliant third-party dependencies were replaced, such as the database JPA specification implementation being replaced from Hibernate to EclipseLink).
- **August 21, 2025**:
After **17 months of efficient incubation**, the Apache Board of Directors passed the resolution for HertzBeat's graduation, officially promoting it to an Apache Top-Level Project (TLP).
Under the guidance of the Apache Foundation Incubator, three major transformations were completed:
- **Structured Governance:** Established a PMC-led open governance model, with community decisions made publicly through mailing lists.
- **Standardized Processes:** Adopted the Apache release process, with all versions approved by IPMC vote.
- **Global Collaboration:** Attracted developers and users from all over the world to contribute to Apache HertzBeat.
#### **II. Technical Milestones**
During the incubation period, Hertzbeat maintained an active pace of research, development, and iteration, releasing multiple versions to bring users richer features, more stable performance, and a better experience.
- Released 5 ASF-compliant versions (1.6.0 - 1.7.2)
- Key feature enhancements include:
- **Multi-protocol expansion** - Added support for key components or protocols such as Ipmi, PLC, NVIDIA, Redfish.
- **Intelligent alert center** - Implemented multi-expression alerts, periodic thresholds, and alert suppression/silencing/dispatch functions.
- **Dynamic service discovery** - Achieved automatic task discovery through http_sd and Zookeeper/Nacos.
- **Cloud service integration** - Supported integration with alert sources from Alibaba Cloud SLS, Huawei Cloud, and Volcano Engine.
- **AI capability enhancement** - Integrated AI platforms such as OpenAI.
- **Storage optimization** - Upgraded storage performance for VictoriaMetrics and GreptimeDB.
- **Internationalization support** - Added multi-language interfaces, including Japanese/Traditional Chinese.
- **Data processing enhancement** - Supported SQL/PromQL expression syntax analysis, refactoring data flow with Apache Arrow.
The continuous iteration of these versions fully demonstrates Hertzbeat's dedication to technology and its high regard for user needs. Each version release is a solid step in Hertzbeat's growth, bringing users a more powerful and user-friendly monitoring experience.
#### **3. Community Development**
During the Apache incubation period, Hertzbeat strictly adhered to the Apache Way:
- **Equal contribution and authority accumulation**: All developers participate equally, gradually building a reputation and gaining access, such as code repository submission rights, through code contributions, documentation improvements, and issue resolution.
- **Open and transparent communication**: Technical selections, version planning, and other discussions are conducted openly via mailing lists, with communication records archived and searchable. Members can participate anytime, anywhere, and new members can quickly integrate by reviewing these records.
- **Consensus-driven decision-making**: For key decisions such as adding or removing features and choosing technical routes, the community engages in thorough discussions, weighing various factors. If a complete consensus cannot be reached, voting is used to assist, ensuring that the project's direction aligns with the overall interests of the community.
- **Contributor Growth**:
- During the incubation period, **13 new Committers** were added, including **3 nominated PPMC members**, and the number of contributors reached 275. The core team also covers multiple time zones in China, the US, and Europe.
- GitHub **Stars surpassed 6K+**, with an average of **30+** monthly active developers.
- **User Ecosystem**:
- **Application Areas**: Since its incubation, Apache HertzBeat™ has been successfully implemented in various industry scenarios due to its lightweight, agentless, and highly scalable features, becoming a new choice for enterprise monitoring infrastructure.
- **Developer Ecosystem**: The community has contributed a large number of monitoring templates covering mainstream technology stacks such as Kubernetes, Docker, Redis, and MySQL, significantly reducing the cost of monitoring configuration.
## 3. Future Outlook and Plans
Becoming an Apache Top-Level Project is a milestone, but it is also a new beginning. The Apache HertzBeat™ community will continue to uphold the Apache Foundation's "community over code" philosophy and evolve around the following core directions, striving to become a world-leading open-source observability platform:
1. AI and Intelligent Capabilities
- Explore the application of AI in monitoring data analysis, anomaly detection, and intelligent alerting.
- Integrate more AI models and services to enhance the user experience.
2. Enhance Product Performance and Scalability
- Continuously optimize collection scheduling algorithms and cluster architecture to support larger-scale monitoring scenarios.
- Improve system stability, reduce resource consumption, and enhance data processing efficiency.
3. Improve Functionality and User Experience
- Simplify the monitoring configuration process and provide a more intuitive and user-friendly interface.
- Enhance the status page functionality and support more customization options.
4. Strengthen Community Building and Internationalization
- Expand the community size and attract more contributors to participate in project development.
- Improve multi-language support, including document internationalization and interface localization.
## 4. Acknowledgments
The successful graduation of Apache HertzBeat™ from the incubator would not have been possible without the collective efforts of all community members and supporters. We would like to express our sincerest gratitude to:
- **The Apache Foundation & Incubator**
Thank you to the Apache Foundation for providing a neutral collaboration platform, a comprehensive incubation process, and the help of incubator members in project governance, version releases, and community building.
- **Sincere thanks to our Apache mentors for their selfless dedication and guidance**
Thank you to our mentors (a tribute to the guidance of mentors such as **Yonglun Zhang**, **Yu Xiao**, **Justin Mclean**, and **Francis Chuang**) for their valuable advice, architectural reviews, and community governance guidance during the incubation process. Your professional experience and selfless help have guided the project in the right direction, in line with the Apache Way.
- **Sincere thanks to all code contributors, documentation maintainers, and community participants**
Thank you to the hundreds of contributors worldwide for their wisdom and efforts. Whether it's code submissions, issue feedback, document translation, or community discussions, your every effort is a vital driving force for the project's progress.
- **A special tribute to the core contributors and Project Management Committee members**
Thank you for your long-term persistence and dedication, which have played a key role in the evolution of the technical architecture, the establishment of community norms, and project promotion.
- **Thank you to all users and adopting organizations for their trust and support**
Thank you for your practical validation and continuous feedback in production environments. These valuable experiences have greatly promoted the maturity and improvement of the product.
Finally, we have always believed that: **Community Achieves Greatness**. A tribute to open source, a tribute to every participant, and may our code run on machines worldwide!
We welcome more developers to join us and have fun!
—— The Apache HertzBeat™ Community
+4 -5
View File
@@ -3,14 +3,13 @@ title: "From User to PPMC Member: Contributing to Open Source with Passion at Ap
author: liutianyou
author_title: liutianyou
author_url: https://github.com/Liutianyou
author_image_url: https://avatars.githubusercontent.com/u/30208283?v=4
tags: [opensource, practice]
keywords: [open source monitoring system, alerting system]
---
### From Contributor to PMC
About a year ago, I discovered Apache HertzBeat - an agentless monitoring system with out-of-the-box features that immediately caught my interest through its pure web-based operations. After starting to use it, I made my first code contribution. When that initial PR got merged, my confidence in open source contribution skyrocketed. Since then, I've continuously looked for opportunities to contribute through documentation improvements, feature testing, code refactoring, and more in the community issue list.
About a year ago, I discovered Apache HertzBeat - an agentless monitoring system with out-of-the-box features that immediately caught my interest through its pure web-based operations. After starting to use it, I made my first code contribution. When that initial PR got merged, my confidence in open source contribution skyrocketed. Since then, I've continuously looked for opportunities to contribute through documentation improvements, feature testing, code refactoring, and more in the community issue list.
As my contributions grew, I gradually evolved from an "occasional code submitter" to a "deep project participant". Fixing bugs, optimizing documentation, designing new features... This journey not only enhanced my technical skills but more importantly taught me how to collaborate effectively within a community.
@@ -31,12 +30,12 @@ My deep involvement in open source over this past year has brought significant g
For the future, I plan to focus on:
- **User Support**: Helping resolve user issues
- **Technology Promotion**: Making Apache HertzBeat a top choice in monitoring through wider adoption
- **Technology Promotion**: Making Apache HertzBeat a top choice in monitoring through wider adoption
- **Contributor Ecosystem**: Nurturing and developing more contributors for Apache HertzBeat
### What is Apache HertzBeat?
Apache HertzBeat is an open source real-time monitoring system emphasizing ease-of-use and lightweight design. It supports monitoring and alerting for servers, databases, middleware, and application services, providing a simple yet powerful solution for IT infrastructure monitoring.
Apache HertzBeat is an open source real-time monitoring system emphasizing ease-of-use and lightweight design. It supports monitoring and alerting for servers, databases, middleware, and application services, providing a simple yet powerful solution for IT infrastructure monitoring.
### How to Contribute?
@@ -50,4 +49,4 @@ Feel free to email me at <liutianyou@apache.org> - I'm happy to help you take yo
### Acknowledgments
Special thanks to **Tom**, **Qingran Zhao**, **TJxiaobao**, **Jast** for guidance, and all Apache HertzBeat community members for support.
Special thanks to **Tom**, **Qingran Zhao**, **TJxiaobao**, **Jast** for guidance, and all Apache HertzBeat community members for support.
+5 -6
View File
@@ -24,7 +24,7 @@ limitations under the License.
## Become A Committer of Apache HertzBeat
Anyone being supportive of the community and working in any of the
CoPDoC areas can become an Apache HertzBeat committer. The CoPDoC is an
CoPDoC areas can become an Apache HertzBeat committer. The CoPDoC is an
acronym from ASF to describe how we recognize your contributions not
only by code.
@@ -36,10 +36,10 @@ only by code.
of the authors
- **Code** - discussion goes nowhere without code
Apache HertzBeat community strives to be meritocratic. Thus, once someone
Apache HertzBeat community strives to be meritocratic. Thus, once someone
has contributed sufficiently to any area of CoPDoC they can be a
candidate for committer-ship and at last voted in as a HertzBeat
committer. Being an Apache HertzBeat committer does not necessarily mean
committer. Being an Apache HertzBeat committer does not necessarily mean
you must commit code with your commit privilege to the codebase; it
means you are committed to the HertzBeat project and are productively
contributing to our community's success.
@@ -58,8 +58,7 @@ and fair.
Committer candidates should have a decent amount of continuous
engagements and contributions (fixing bugs, adding new features,
writing documentation, maintaining issues boards, code review, or answering
community questions) to HertzBeat either by contributing to the codebase
of the main website or HertzBeat's GitHub repositories.
community questions) to HertzBeat.
- 3+ months with activity and engagement.
- 20+ pr coding, document, test or other contributions.
@@ -67,7 +66,7 @@ of the main website or HertzBeat's GitHub repositories.
### Quality of contributions
- A solid general understanding of the project
- Well tested, well-designed, following Apache HertzBeat coding
- Well tested, well-designed, following Apache HertzBeat coding
standards, and simple patches.
- Well-organized and detailed user-oriented documentation.
+5 -6
View File
@@ -24,7 +24,7 @@ limitations under the License.
## Become A PPMC member of Apache HertzBeat
Anyone being supportive of the community and working in any of the
CoPDoC areas can become an Apache HertzBeat PPMC member. The CoPDoC is an
CoPDoC areas can become an Apache HertzBeat PPMC member. The CoPDoC is an
acronym from ASF to describe how we recognize your contributions not
only by code.
@@ -36,10 +36,10 @@ only by code.
of the authors
- **Code** - discussion goes nowhere without code
Apache HertzBeat community strives to be meritocratic. Thus, once someone
Apache HertzBeat community strives to be meritocratic. Thus, once someone
has contributed sufficiently to any area of CoPDoC they can be a
candidate for PPMC membership and at last voted in as a HertzBeat
PMC member. Being an Apache HertzBeat PPMC member does not necessarily mean
PMC member. Being an Apache HertzBeat PPMC member does not necessarily mean
you must commit code with your commit privilege to the codebase; it
means you are committed to the HertzBeat project and are productively
contributing to our community's success.
@@ -58,15 +58,14 @@ and fair.
PMC member candidates should have a decent amount of continuous
engagements and contributions (fixing bugs, adding new features,
writing documentation, maintaining issues boards, code review, or answering
community questions) to HertzBeat either by contributing to the codebase
of the main website or HertzBeat's GitHub repositories.
community questions) to HertzBeat.
- 12+ months with activity and engagement.
### Quality of contributions
- A solid general understanding of the project
- Well tested, well-designed, following Apache HertzBeat coding
- Well tested, well-designed, following Apache HertzBeat coding
standards, and simple patches.
- Well-organized and detailed user-oriented documentation.
+28 -19
View File
@@ -139,6 +139,33 @@ git checkout master
git pull upstream master
```
### Get Contributor Certificate
After your pr is merged, you can send an email `dev@hertzbeat.apache.org` to request your Apache HertzBeat™ contributor electronic certificate.
```
Title: [Contributor] Request for a Contributor Certificate: <Your Full Name>
Body:
Hello,
I would like to request a Contributor Certificate for my contributions to the Apache HertzBeat™ project.
- Full Name: <Your Full Name> # The Full Name will be printed on the certificate, any name you want.
- GitHub Username: <Your GitHub Username>
- Pull Request Links: <List the URLs of the pull requests you have submitted>
- Email Address: <Your Email Address>
Best regards,
<Your Name>
```
You will receive a reply with an electronic certificate within a few working days, and your name will also appear in the list of contributors.
Attention contributor certificates are electronic, and certificates for you to become a `Committer` or `PMC` are physical.
Certificate Sample:
![cert](/img/docs/hertzbeat-cert.png)
### HertzBeat Improvement Proposal (HIP)
If you have major new features(e.g., support metrics push gateway, support logs monitoring), you need to write a design document known as a HertzBeat Improvement Proposal (HIP). Before starting to write a HIP, make sure you follow the process [guide](https://github.com/apache/hertzbeat/tree/master/hip).
@@ -149,23 +176,5 @@ With the above steps, you are a contributor to HertzBeat. Repeat the previous st
### Join Discussion
[Join the Mailing Lists](https://lists.apache.org/list.html?dev@hertzbeat.apache.org) : Mail to `dev-subscribe@hertzbeat.apache.org` to subscribe mailing lists.
[Discussion](contact)
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/hertzbeat-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/hertzbeat-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.
![hertzBeat](/img/docs/hertzbeat-arch.png)
+20 -20
View File
@@ -4,7 +4,7 @@ title: How to Release
sidebar_position: 4
---
This tutorial describes in detail how to release Apache HertzBeat, take the release of version 1.6.0 as an example.
This tutorial describes in detail how to release Apache HertzBeat, take the release of version 1.6.0 as an example.
## 1. Environmental requirements
@@ -133,8 +133,8 @@ Or enter <https://keyserver.ubuntu.com/> address in the browser, enter the name
#### 2.4 Add the gpg public key to the KEYS file of the Apache SVN project repo
- Apache HertzBeat Branch Dev <https://dist.apache.org/repos/dist/dev/incubator/hertzbeat>
- Apache HertzBeat Branch Release <https://dist.apache.org/repos/dist/release/incubator/hertzbeat>
- Apache HertzBeat Branch Dev <https://dist.apache.org/repos/dist/dev/incubator/hertzbeat>
- Apache HertzBeat Branch Release <https://dist.apache.org/repos/dist/release/incubator/hertzbeat>
##### 2.4.1 Add public key to KEYS in dev branch
@@ -305,7 +305,7 @@ apache-hertzbeat-collector-1.6.0-bin.tar.gz: OK
- Clone the dev directory
```shell
# Check out the dev directory of the Apache SVN to the svn/dev directory under dist in the root directory of the Apache HertzBeat project
# Check out the dev directory of the Apache SVN to the svn/dev directory under dist in the root directory of the Apache HertzBeat project
svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat svn/dev
svn co --depth empty https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
@@ -350,15 +350,15 @@ svn commit -m "release for HertzBeat 1.6.0"
Send a voting email in the community requires at least three `+1` and no `-1`.
> `Send to`: <dev@hertzbeat.apache.org> <br />
> `Title`: [VOTE] Release Apache HertzBeat 1.6.0 rc1 <br />
> `Title`: [VOTE] Release Apache HertzBeat 1.6.0 rc1 <br />
> `Body`:
```text
Hello HertzBeat Community:
This is a call for vote to release Apache HertzBeat version release-1.6.0-RC1.
This is a call for vote to release Apache HertzBeat version release-1.6.0-RC1.
Apache HertzBeat - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Apache HertzBeat - A real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Release notes:
https://github.com/apache/hertzbeat/releases/tag/v1.6.0-rc1
@@ -406,13 +406,13 @@ Thanks!
After 72 hours, the voting results will be counted, and the voting result email will be sent, as follows.
> `Send to`: <dev@hertzbeat.apache.org> <br />
> `Title`: [RESULT]\[VOTE\] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Title`: [RESULT]\[VOTE\] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Body`:
```text
Dear HertzBeat community,
Thanks for your review and vote for "Release Apache HertzBeat 1.6.0-rc1"
Thanks for your review and vote for "Release Apache HertzBeat 1.6.0-rc1"
I'm happy to announce the vote has passed:
---
4 binding +1, from:
@@ -441,16 +441,16 @@ One item of the email content is `Vote thread`, and the link is obtained here: <
Send a voting email in the incubator community requires at least three `+1` and no `-1`.
> `Send to`: <general@incubator.apache.org> <br />
> `Title`: [VOTE] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Title`: [VOTE] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Body`:
```text
Hello Incubator Community:
This is a call for a vote to release Apache HertzBeat version 1.6.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat version 1.6.0-RC1.
This is a call for a vote to release Apache HertzBeat version 1.6.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat version 1.6.0-RC1.
We now kindly request the Incubator PPMC members review and vote on this incubator release.
Apache HertzBeat, a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Apache HertzBeat, A real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
HertzBeat community vote thread:
https://lists.apache.org/thread/t01b2lbtqzyt7j4dsbdp5qjc3gngjsdq
@@ -486,7 +486,7 @@ https://hertzbeat.apache.org/docs/community/development/#build-hertzbeat-binary-
---
Thanks,
On behalf of Apache HertzBeat community
On behalf of Apache HertzBeat community
---
Best,
ChunJin Mu
@@ -507,13 +507,13 @@ Chunjin Mu
Then the voting results will be counted, and the voting result email will be sent, as follows.
> `Send to`: <general@incubator.apache.org> <br />
> `Title`: [RESULT]\[VOTE\] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Title`: [RESULT]\[VOTE\] Release Apache HertzBeat 1.6.0-rc1 <br />
> `Body`:
```text
Hi Incubator Community,
The vote to release Apache HertzBeat 1.6.0-rc4 has passed with 3 +1 binding and no +0 or -1 votes.
The vote to release Apache HertzBeat 1.6.0-rc4 has passed with 3 +1 binding and no +0 or -1 votes.
3 binding votes, no +0 or -1 votes.
@@ -584,16 +584,16 @@ The rename the release-1.6.0-rc1 branch to release-1.6.0.
> `Send to`: <general@incubator.apache.org> <br />
> `cc`: <dev@hertzbeat.apache.org> <br />
> `Title`: [ANNOUNCE] Apache HertzBeat 1.6.0 released <br />
> `Title`: [ANNOUNCE] Apache HertzBeat 1.6.0 released <br />
> `Body`:
```text
Hi Community,
We are glad to announce the release of Apache HertzBeat 1.6.0.
We are glad to announce the release of Apache HertzBeat 1.6.0.
Thanks again for your help.
Apache HertzBeat (https://hertzbeat.apache.org/) - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Apache HertzBeat (https://hertzbeat.apache.org/) - A real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Download Link:
https://hertzbeat.apache.org/docs/download/
@@ -608,7 +608,7 @@ HertzBeat Resources:
- Issue: https://github.com/apache/hertzbeat/issues
- Mailing list: dev@hertzbeat.apache.org
---
Apache HertzBeat Team
Apache HertzBeat Team
---
Best,
ChunJin Mu
+2 -2
View File
@@ -4,7 +4,7 @@ title: Download Apache HertzBeat
sidebar_label: Download
---
> **Here is the Apache HertzBeat official download page.**
> **Here is the Apache HertzBeat official download page.**
> **Please choose version to download from the following tables. It is recommended use the latest.**
:::tip
@@ -26,7 +26,7 @@ Previous releases of HertzBeat may be affected by security issues, please use th
## Release Docker Image
> Apache HertzBeat provides a docker image for each release. You can pull the image from the [Docker Hub](https://hub.docker.com/r/apache/hertzbeat).
> Apache HertzBeat provides a docker image for each release. You can pull the image from the [Docker Hub](https://hub.docker.com/r/apache/hertzbeat).
- HertzBeat <https://hub.docker.com/r/apache/hertzbeat>
- HertzBeat Collector <https://hub.docker.com/r/apache/hertzbeat-collector>
+1 -1
View File
@@ -9,7 +9,7 @@ keywords: [monitoring, observability, collector, metrics]
## Introduction
HertzBeat Collector is a versatile and lightweight metrics collection module within the Apache HertzBeat monitoring system. It's designed to gather monitoring data from various targets and send the collected metrics to the main HertzBeat server for processing, alerting, and visualization.
HertzBeat Collector is a versatile and lightweight metrics collection module within the Apache HertzBeat monitoring system. It's designed to gather monitoring data from various targets and send the collected metrics to the main HertzBeat server for processing, alerting, and visualization.
With the collector module, you can implement:
+116
View File
@@ -0,0 +1,116 @@
---
id: macos
title: macOS operating system monitoring
sidebar_label: macOS operating system
keywords: [open source monitoring tool, open source os monitoring tool, monitoring macOS operating system metrics]
---
> Collect and monitor the general performance Metrics of macOS operating system.
## Pre-monitoring operations
Please refer to [Allow a remote computer to access your Mac](https://support.apple.com/guide/mac-help/allow-a-remote-computer-to-access-your-mac-mchlp1066/mac) to enable remote login.
## Configuration parameter
| Parameter Name | Parameter Help Description |
|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Monitored Host | The IPV4, IPV6, or domain name of the host being monitored. Note ⚠️ No protocol header (e.g., https://, http://). |
| Task Name | The name that identifies this monitoring, which must be unique. |
| Port | The port provided by SSH, default is 22. |
| Timeout | Sets the connection timeout in milliseconds, default is 6000 ms. |
| Connection Reuse | Sets whether SSH connections are reused, default is :false. If false, a new connection is created each time information is retrieved. |
| Use Proxy Connection | Sets Whether connect via proxy, default is false. |
| Username | SSH connection username, optional. |
| Password | SSH connection password, optional. |
| Collector | Configures which collector is used to schedule data collection for this monitoring. |
| Monitoring Period | The interval time for periodic data collection in seconds, with a minimum interval of 30 seconds. |
| Binding Tags | Used for categorized management of monitoring resources. |
| Description | Additional notes and descriptions for this monitoring, where users can make notes. |
| PrivateKey | The private key required to connect to the server. |
| PrivateKey PassPhrase | The password phrase used to encrypt the SSH private key. If the private key was generated with a passphrase, this field must be filled to decrypt and use the key for authentication. |
| Proxy Host | The address of the proxy server, supporting IPV4, IPV6, or domain name format. Required when using SSH jump host to access the target host. |
| Proxy Port | The port number of the proxy service, default is 22. |
| Proxy Username | The authentication username required to connect to the proxy server. |
| Proxy Username | The authentication password required to connect to the proxy server. |
| Proxy PrivateKey | The private key required to authenticate with the proxy server. |
## Data Collection Metrics
### Metric Set: Basic System Information
| Metric Name | Metric Unit | Metric Help Description |
|-------------|-------------|-------------------------|
| hostname | None | Host name |
| version | None | System version |
| uptime | None | System Uptime |
### Metric Set: CPU Information
| Metric Name | Metric Unit | Metric Help Description |
|----------------|-------------|-----------------------------------|
| info | None | CPU model |
| cores | None | Number of CPU cores |
| load | None | Average CPU load (1/5/15 minutes) |
| usage | % | CPU usage |
### Metric Set: Memory Information
| Metric Name | Metric Unit | Metric Help Description |
|-------------|-------------|-------------------------------------|
| total | Mb | Total memory capacity |
| used | Mb | Memory used by user programs |
| free | Mb | Free memory capacity |
| buff_cache | Mb | Memory used for cache |
| available | Mb | Remaining available memory capacity |
| usage | % | Memory usage rate |
### Metric Set: Disk Information
| Metric Name | Metric Unit | Metric Help Description |
|---------------|-------------|----------------------------------------|
| disk_num | None | Total number of disks |
| partition_num | None | Total number of partitions |
| block_write | None | Total number of blocks written to disk |
| block_read | None | Total number of blocks read from disk |
| write_rate | iops | Disk block write rate per second |
### Metric Set: Network Card Information
| Metric Name | Metric Unit | Metric Help Description |
|----------------|-------------|-------------------------------|
| interface_name | None | Network card name |
| receive_bytes | Byte | Inbound data traffic (bytes) |
| transmit_bytes | Byte | Outbound data traffic (bytes) |
### Metric Set: File System
| Metric Name | Metric Unit | Metric Help Description |
|-------------|-------------|-------------------------|
| filesystem | None | Name of the file system |
| used | Mb | Used disk size |
| available | Mb | Available disk size |
| usage | % | Usage rate |
| mounted | None | Mount point directory |
### Metric Set: Top 10 CPU Processes
Statistics for the top 10 processes using the CPU. Statistics include: process ID, CPU usage, memory usage, and executed command.
| Metric Name | Metric Unit | Metric Help Description |
|-------------|-------------|-------------------------|
| pid | None | Process ID |
| cpu_usage | % | CPU usage |
| mem_usage | % | Memory usage |
| command | None | Executed command |
### Metric Set: Top 10 Memory Processes
Statistics for the top 10 processes using memory. Statistics include: process ID, memory usage, CPU usage, and executed command.
| Metric Name | Metric Unit | Metric Help Description |
|-------------|-------------|-------------------------|
| pid | None | Process ID |
| mem_usage | % | Memory usage |
| cpu_usage | % | CPU usage |
| command | None | Executed command |
+7 -7
View File
@@ -5,38 +5,38 @@ sidebar_label: Security Model
---
:::tip
Apache HertzBeat is a highly extensible system that provides users with a lot of custom capabilities. Users can enhance the platform by customizing monitoring templates, custom monitoring, custom plugins, etc. In this case, security is very important.
Apache HertzBeat is a highly extensible system that provides users with a lot of custom capabilities. Users can enhance the platform by customizing monitoring templates, custom monitoring, custom plugins, etc. In this case, security is very important.
This document will introduce the security model of Apache HertzBeat.
The security model here mainly involves the security boundaries that users need to pay attention to in the extension process, and how to ensure that user customization will not cause security risks to the system.
:::
## User Permission Security
Apache HertzBeat uses [Sureness](https://github.com/dromara/sureness) to support system user security.
Apache HertzBeat uses [Sureness](https://github.com/dromara/sureness) to support system user security.
Use the `sureness.yml` provided by Sureness to configure user accounts, roles, API resources, etc. It is strongly recommended that the initial user modify the account password. For details, refer to [Account Permission Management](../start/account-modify)
## Monitoring Template Security
Apache HertzBeat provides monitoring template functions, and users can define monitoring rules by configuring custom scripts in the monitoring template.
Apache HertzBeat provides monitoring template functions, and users can define monitoring rules by configuring custom scripts in the monitoring template.
The script types include `SQL` `SHELL` `JMX` `URL` `API`, etc. When users customize scripts, they need to ensure the security of the custom scripts themselves to avoid malicious code in the scripts.
## Custom Plugin Security
Apache HertzBeat supports users to upload custom code plugins to run in the life cycle of multiple systems, and users need to ensure the security of the custom plugin code themselves.
Apache HertzBeat supports users to upload custom code plugins to run in the life cycle of multiple systems, and users need to ensure the security of the custom plugin code themselves.
## Custom Collector Security
Apache HertzBeat supports users to customize collectors to personalize the collection of monitoring indicators, and users need to ensure the security of the custom collectors themselves.
Apache HertzBeat supports users to customize collectors to personalize the collection of monitoring indicators, and users need to ensure the security of the custom collectors themselves.
## Custom URL and Other Parameter Security
Apache HertzBeat provides the ability to configure custom parameters. All users authorized to configure URLs and other parameters are considered highly trusted and are expected to trigger certain behaviors.
Apache HertzBeat provides the ability to configure custom parameters. All users authorized to configure URLs and other parameters are considered highly trusted and are expected to trigger certain behaviors.
## Security Constraints in Other Customizations
Apache HertzBeat provides a variety of system extension methods and custom capabilities. Users need to pay attention to the security of customizations during use. Of course, all extension capabilities need to be within the scope of authenticated users.
Apache HertzBeat provides a variety of system extension methods and custom capabilities. Users need to pay attention to the security of customizations during use. Of course, all extension capabilities need to be within the scope of authenticated users.
----
+1 -1
View File
@@ -16,7 +16,7 @@ The fields that need to be filled in are as follows:
| Field Name | Field Description | Example |
|--------------------------|----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Organization Name | Name of the organization | HertzBeat |
| Organization Description | Detailed description of the organization | Apache HertzBeat is an easy-to-use and user-friendly open-source real-time monitoring and alerting system, no agent required, high-performance cluster, compatible with Prometheus, providing powerful custom monitoring and status page building capabilities. |
| Organization Description | Detailed description of the organization | Apache HertzBeat is an easy-to-use and user-friendly open-source real-time monitoring and alerting system, no agent required, high-performance cluster, compatible with Prometheus, providing powerful custom monitoring and status page building capabilities. |
| Website Link | URL of the organization's website for more information | <https://hertzbeat.apache.org/> |
| Logo Image | Path or URL of the organization's official logo image, preferably in .svg format | <https://hertzbeat.apache.org/zh-cn/img/hertzbeat-logo.svg> |
| Feedback Address | Address to receive feedback | <https://github.com/apache/hertzbeat/issues> |
+128
View File
@@ -0,0 +1,128 @@
---
id: synology_nas
title: MonitoringSynology NAS
sidebar_label: Synology NAS
keywords: [ open source monitoring tool, server monitoring, Synology Nas ]
---
> Collect and monitor the general performance Metrics of Synology NAS device.
**Protocol Use: SNMP**
## Pre-monitoring operations
Please refer to [SNMP](https://kb.synology.com/en-global/DSM/help/DSM/AdminCenter/system_snmp) to enable SNMP service. Currently, SNMPv1, SNMPv2c and SNMPv3 protocols are supported.
### Configuration parameter
| Parameter name | Parameter help description |
|-------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Target Host | Monitored IPV4, IPV6 or domain name. Note⚠️Without protocol header (eg: https://, http://) |
| Task Name | Identify the name of this monitoring. The name needs to be unique |
| Port | Port of SNMP. The default is 161 |
| SNMP Version | SNMP version to use |
| SNMP Community | Used in SNMP v1 and SNMP v2c, used to complete authentication in SNMP Agent, in string form. Group name includes "read" and "write", when performing SNMP query operation, "read" group name is used for authentication; when performing SNMP setting operation, "write" group name is used for authentication. When performing SNMP query operation, "read" group name is used for authentication; when performing SNMP setting operation, "write" group name is used for authentication. |
| SNMP username | For SNMP v3, MSG username |
| SNMP contextName | For SNMP v3, used to determine the MIB view of the Context EngineID to the managed device |
| SNMP authPassword | For SNMP v3, SNMP authentication passwords |
| authPassword Encryption | For SNMP v3, SNMP authentication algorithm |
| SNMP privPassphrase | For SNMP v3, SNMP encrypted passwords |
| privPassword Encryption | For SNMP v3, SNMP encrypted algorithm |
| Timeout | Set the timeout time when querying unresponsive data, in milliseconds, the default is 6000 milliseconds |
| Intervals | Interval time of monitor periodic data collection, unit: second, and the minimum interval that can be set is 30 seconds |
| Description | For more information about identifying and describing this monitoring, users can note information here |
### Collection Metric
Since there are too many metrics that can be queried, detailed metrics can be queried
on [SNMP MIB Guide](https://kb.synology.com/en-global/DG/Synology_DiskStation_MIB_Guide/3).
This document only introduces the monitoring indicators queried in the monitor template.
### Metric Set: system
| Metric Name | Metric Unit | Metric Help Description |
|------------------|-------------|-------------------------|
| modelName | None | Model name of this NAS |
| serialNumber | None | Model serial number |
| version | None | The version of DSM |
| controllerNumber | None | The controller number |
### Metric Set: status
| Metric Name | Metric Unit | Metric Help Description |
|-----------------|---------------|---------------------------------------------------------|
| powerStatus | None | Power statusreturns error if power supplies fail |
| systemFanStatus | None | System fan status, returns error if system fan fails |
| cpuFanStatus | None | CPU fan status, returns error if CPU fan fails |
| systemStatus | None | System partition status |
| thermalStatus | None | returns error if thermal status is abnormal |
| temperature | None | Temperature of this NAS |
| cpuUtilization | Percentage(%) | Utilization (%) is the sum of user and system CPU usage |
| memUtilization | Percentage(%) | Utilization (%) is the sum of memory usage |
### Metric Set: disk
| Metric Name | Metric Unit | Metric Help Description |
|------------------|-------------|-------------------------------------------------------------------|
| diskID | None | Disk name in DSM |
| diskModel | None | Disk model |
| diskType | None | Disk type, e.g. SATA, SSD |
| diskStatus | None | Current disk status |
| diskTemperature | None | Disk temperature |
| diskRole | None | The role of the disk in system |
| diskRetry | None | The count of each disk connection retries |
| diskBadSector | None | The count of each disk I/O bad sector |
| diskIdentifyFail | None | The count of each disk identify fails |
| diskRemainLife | None | The estimate remain life of each disk |
| diskName | None | Disk name which will keep the same value in different DSM version |
| diskHealthStatus | None | Current disk health status |
### Metric Set: RAID
| Metric Name | Metric Unit | Metric Help Description |
|-----------------|-------------|------------------------------------------------------------------------------------------|
| raidName | None | The name of each RAID in DSM |
| raidStatus | None | It shows the RAID status right now |
| raidFreeSize | None | The free size of volume / disk group |
| raidTotalSize | None | The total size of volume / disk group |
| raidHotspareCnt | None | Total hotspare disks count which can protect RAID (smaller than 0 means something wrong) |
### Metric Set: S.M.A.R.T
| Metric Name | Metric Unit | Metric Help Description |
|------------------------|-------------|--------------------------------------------------------|
| diskSMARTInfoDevName | None | Describes the disk to which this SMART info belongs to |
| diskSMARTAttrName | None | The name of the SMART info attribute |
| diskSMARTAttrId | None | SMART attribute ID number |
| diskSMARTAttrCurrent | None | SMART attribute current value |
| diskSMARTAttrWorst | None | SMART attribute worst value |
| diskSMARTAttrThreshold | None | SMART attribute threshold value |
| diskSMARTAttrRaw | None | SMART attribute raw value |
| diskSMARTAttrStatus | None | Status of this SMART info |
### Metric Set: space io
| Metric Name | Metric Unit | Metric Help Description |
|---------------|---------------|---------------------------------------------------------|
| spaceIODevice | None | The name of the device this volume mounted on |
| spaceIOReads | None | The number of read accesses from this volume since boot |
| spaceIOWrites | None | The number of write accesses to this volume since boot |
| spaceIOLA | Percentage(%) | The load of disk in the volume |
| spaceIOLA1 | Percentage(%) | The 1 minute average load of disk in the volume |
| spaceIOLA5 | Percentage(%) | The 5 minute average load of disk in the volume |
| spaceIOLA15 | Percentage(%) | The 15 minute average load of disk in the volume |
| spaceUUID | None | The UUID of this volume |
### Metric Set: storage io
| Metric Name | Metric Unit | Metric Help Description |
|-----------------------|---------------|---------------------------------------------------------|
| storageIODevice | None | The name of the device we are counting/checking |
| storageIOReads | None | The number of read accesses from this device since boot |
| storageIOWrites | None | The number of write accesses to this device since boot |
| storageIOLA | Percentage(%) | The load of disk |
| storageIOLA1 | Percentage(%) | The 1-minute average load of disk |
| storageIOLA5 | Percentage(%) | The 5-minute average load of disk |
| storageIOLA15 | Percentage(%) | The 15-minute average load of disk |
| storageIODeviceSerial | None | The serial number of this device |
+96
View File
@@ -0,0 +1,96 @@
---
id: tdengine_promql
title: Monitoring TDengine-PromQL
sidebar_label: TDengine-PromQL
keywords: [ Open Source Monitoring System, Open Source Middleware Monitoring, TDengine Monitoring, TDengine-PromQL Monitoring ]
---
> Use Prometheus PromQL to query general metric data from the Prometheus server to monitor TDengine. This solution is
> suitable for situations where Prometheus is already monitoring TDengine and you need to retrieve TDengine monitoring
> data from the Prometheus server.
### Prerequisites
1. Deploy TDengine;
2. Deploy taosKeeper; note that installing the official TDengine installation package will automatically install
taosKeeper. For details, please refer to: [taosKeeper](https://docs.taosdata.com/reference/components/taoskeeper/);
3. Collect monitoring metrics exposed by TDengine taosKeeper through prometheus;
### Configuration parameters
| Parameter Name | Parameter Description |
|---------------------|----------------------------------------------------------------------------------------------------------------------------|
| Monitoring Host | IP, IPv6, or domain name of the target being monitored. Note ⚠️: Do not include protocol header (e.g., https://, http://). |
| Monitoring name | Name to identify this monitoring, ensuring uniqueness of names. |
| Port | Prometheus API port, default: 9090. |
| Relative path | Relative path of Prometheus to query PromQL, default: /api/v1/query |
| Request mode | Set the request method for API calls: GET, POST, PUT, DELETE, default: GET |
| Enable HTTPS | Whether to access the website via HTTPS, note ⚠️: enabling HTTPS generally requires changing the corresponding port to 443 |
| Username | Username for Basic or Digest authentication when accessing the API. |
| Password | Password for Basic or Digest authentication when accessing the API. |
| Content-Type | Resource type when carrying BODY request data. |
| Request BODY | Set the BODY request data, effective for PUT and POST request methods. |
| Collection interval | Interval for periodic data collection in seconds, the minimum interval that can be set is 30 seconds |
| Description remarks | Additional remarks and descriptions for this monitoring. Users can add notes here. |
### Collection indicators
#### Indicator set: Basic information indicators
| Indicator name | indicator unit | Indicators help describe |
|---------------------------------|----------------|--------------------------|
| taos_cluster_info_first_ep | none | first endpoint |
| taos_cluster_info_version | none | Version Information |
| taos_cluster_info_master_uptime | day | Master node runtime |
#### Indicator set: Number of nodes indicator
| Indicator name | indicator unit | Indicators help describe |
|---------------------------------|----------------|------------------------------------|
| taos_cluster_info_dnodes_total | none | Total number of dnodes |
| taos_cluster_info_dnodes_alive | none | Number of surviving dnodes |
| taos_cluster_info_mnodes_total | none | Total number of mnodes |
| taos_cluster_info_mnodes_alive | none | Number of surviving mnodes |
| taos_cluster_info_vgroups_total | none | Total number of virtual groups |
| taos_cluster_info_vgroups_alive | none | Number of surviving virtual groups |
| taos_cluster_info_vnodes_total | none | Total number of virtual nodes |
| taos_cluster_info_vnodes_alive | none | Number of surviving virtual nodes |
### Indicator set: Database and table statistics
| Indicator name | indicator unit | Indicators help describe |
|-------------------------------------|----------------|-----------------------------|
| taos_cluster_info_dbs_total | none | Total number of databases |
| taos_cluster_info_tbs_total | none | Total number of tables |
| taos_cluster_info_connections_total | day | total number of connections |
### Indicator set: Dnode information
| Indicator name | indicator unit | Indicators help describe |
| --- | | --- |
| taos_d_info_status | Ready indicates normal, offline indicates offline, and unknown indicates unknown. | dnode
status |
| taos_dnodes_info_uptime | s | The startup time of this dnode |
| taos_dnodes_info_cpu_engine | none | The percentage of CPU used by the process of this dnode. |
| taos_dnodes_info_cpu_system | none | The percentage of CPU used by the system of the node where the dnode is
located. |
| taos_dnodes_info_mem_engine | KB | Memory used by the process of this dnode |
| taos_dnodes_info_mem_system | KB | The memory used by the system of the node where the dnode is located. |
| taos_dnodes_info_disk_total | Byte | The total disk capacity of the node where the dnode is located. |
| taos_dnodes_info_disk_used | Byte | The amount of disk space used on the node where the dnode is located. |
| taos_dnodes_info_io_write_disk | Bytes per second | The disk IO write rate of the node where the dnode is located. |
| taos_dnodes_info_io_read_disk | Bytes per second | The disk IO read rate of the node where the dnode is located. |
### Indicator set: taosadapter related
| Indicator name | indicator unit | Indicators help describe |
|--------------------------------------|----------------|-------------------------------|
| total_requests_for_adapter_transfers | none | Total number of requests |
| taos_adapter_requests_success | none | Number of successful requests |
| taos_adapter_requests_fail | none | Number of failed requests |
| taos_adapter_requests_query | none | Number of query requests |
### Other TDengine monitoring methods supported by HertzBeat
1. Through the monitoring metrics exposed by taosKeeper, you can refer to [Prometheus Task](prometheus) to configure
Prometheus collection tasks for monitoring TDengine.
+3 -3
View File
@@ -1,17 +1,17 @@
---
id: introduce
title: Apache HertzBeat
title: Apache HertzBeat
sidebar_label: Introduce
slug: /
---
> A real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
> A real-time observability system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
**Home: [hertzbeat.apache.org](https://hertzbeat.apache.org)**
## 🎡 <font color="green">Introduction</font>
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time monitoring system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
[Apache HertzBeat](https://github.com/apache/hertzbeat) is an easy-to-use, open source, real-time observability system with agentless, high performance cluster, prometheus-compatible, offers powerful custom monitoring and status page building capabilities.
### Features
+1 -2
View File
@@ -6,7 +6,7 @@ sidebar_label: Update Account Secret
## Update Account
Apache HertzBeat default built-in three user accounts, respectively admin/hertzbeat tom/hertzbeat guest/hertzbeat
Apache HertzBeat default built-in three user accounts, respectively admin/hertzbeat tom/hertzbeat guest/hertzbeat
If you need add, delete or modify account or password, configure `sureness.yml`. Ignore this step without this demand.
Modify the following **part parameters** in sureness.yml**[Note⚠️Other default sureness configuration parameters should be retained]**
@@ -56,7 +56,6 @@ resourceRole:
# rule: api===method
# eg: /api/v1/source3===get means /api/v1/source3===get can be access by anyone, no need auth.
excludedResource:
- /api/alerts/report/**===*
- /api/account/auth/**===*
- /api/i18n/**===get
- /api/apps/hierarchy===get

Some files were not shown because too many files have changed in this diff Show More