Compare commits

...
Author SHA1 Message Date
淞筱 7f075b0759 Merge branch 'master' into fix/fix_Vulnerability 2025-06-30 09:50:07 +08:00
Calvin 9ad5f77816 [doc] japanese influxdb promql (#3527) 2025-06-30 09:46:56 +08:00
Calvin 64ba910966 Merge branch 'master' into fix/fix_Vulnerability 2025-06-30 00:04:47 +08:00
aias00andCalvin 998f9059bc [feat]parallel ci (#3523)
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-06-30 00:04:10 +08:00
aias00 8badc98f19 Merge branch 'master' into fix/fix_Vulnerability 2025-06-29 20:20:21 +08:00
a1439c3ec2 [fix] fix i18n error and append two metrics about disk infos (#3514)
Signed-off-by: aias00 <liuhongyu@apache.org>
Co-authored-by: aias00 <liuhongyu@apache.org>
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-06-29 20:20:05 +08:00
liuhy 38c14a0801 fix: https://github.com/apache/hertzbeat/security/dependabot/275 2025-06-29 15:42:50 +08:00
742b6f6755 [doc] Add new commiter blog (#3522)
Co-authored-by: yinyijun <yingey2011>
Co-authored-by: 淞筱 <2030509072@qq.com>
2025-06-29 15:15:50 +08:00
5fdb34598c [doc] japanese hikvision (#3499)
Co-authored-by: aias00 <liuhongyu@apache.org>
Co-authored-by: 淞筱 <2030509072@qq.com>
2025-06-29 12:16:17 +08:00
Calvin 4f982d1ab0 [doc] japanese influxdb (#3521) 2025-06-29 11:50:42 +08:00
4a28056d9f [fix] Update the correct replacement of outdated functions and placeholders (#3516)
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: aias00 <liuhongyu@apache.org>
2025-06-28 22:31:18 +08:00
Calvinandaias00 3f2fa71e22 [doc] japanese iceberg (#3519)
Co-authored-by: aias00 <liuhongyu@apache.org>
2025-06-28 22:25:22 +08:00
Jastandaias00 08c81bf62f [Improve] Improve kafka e2e (#3520)
Co-authored-by: aias00 <liuhongyu@apache.org>
2025-06-28 22:23:07 +08:00
e16d6cb4ba [feature] Support for Periodic Threshold preview (#3505)
Co-authored-by: Sherlock Yin <sherlock.yin1994@gmail.com>
Co-authored-by: Calvin <zhengqiwei@apache.org>
2025-06-28 20:38:38 +08:00
Calvin a54d14e803 [doc] japanese hugeGraph (#3518) 2025-06-28 07:24:44 +08:00
Calvinandaias00 01ae281769 [doc] japanese hive (#3506)
Co-authored-by: aias00 <liuhongyu@apache.org>
2025-06-28 00:10:22 +08:00
Calvin 9cb10ff14d [doc] japanese huawei switch (#3515) 2025-06-27 20:55:27 +08:00
Calvin 62f40d3ad1 [doc] japanese hpe switch (#3511) 2025-06-26 00:07:54 +08:00
tomsun28 57601ef989 [release] release new version 1.7.2 (#3510)
Signed-off-by: tomsun28 <tomsun28@outlook.com>
2025-06-25 22:01:18 +08:00
puruidong 0a05edbec5 [bugfix]Fixed an error in the format of the flying book notification (#3508)
Signed-off-by: puruidong <pruidong@gmail.com>
2025-06-25 19:18:21 +08:00
Yang Chenandtomsun28 fcef24fdbf [bugfix] Correctly parse binary comparison expressions (#3504)
Co-authored-by: tomsun28 <tomsun28@outlook.com>
2025-06-25 11:01:12 +08:00
e45c31abfb [bugfix] Fix incorrect expression parsing in alert setting component (#3497)
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: tomsun28 <tomsun28@outlook.com>
2025-06-24 22:56:16 +08:00
198c190ca7 fixed:a minor issue change (#3428)
Signed-off-by: 淞筱 <2030509072@qq.com>
Co-authored-by: kangli <likang@apache.org>
Co-authored-by: Calvin <zhengqiwei@apache.org>
Co-authored-by: aias00 <liuhongyu@apache.org>
Co-authored-by: shown <yuluo08290126@gmail.com>
Co-authored-by: liutianyou <tianyou.liu@qq.com>
Co-authored-by: 淞筱 <2030509072@qq.com>
2025-06-24 22:50:22 +08:00
铁甲小宝anda-little-fool 392a59f9a9 add:a small jdbc modified. (#3500)
Co-authored-by: a-little-fool <2030509072@qq.com>
2025-06-24 22:07:18 +08:00
aias00 c01b7f7bce [feat] update_mvnd_version (#3498) 2025-06-23 21:18:04 +08:00
Calvin 0323b044b8 [doc] japanese hertzbeat token (#3493) 2025-06-23 08:54:47 +08:00
256302fdcf [fix] Fix antlr4 parsing of or and unless logical and set binary operators (#3488)
Co-authored-by: wordofwordof <black.jack.kaiqi@gmail.com>
Co-authored-by: aias00 <liuhongyu@apache.org>
2025-06-22 19:46:34 +08:00
Calvin 3f3330af41 [doc] japanese hertzbeat (#3492) 2025-06-22 19:13:18 +08:00
Calvin 33342baa3f [doc] japanese hdfs namenode (#3490) 2025-06-22 06:43:10 +08:00
Logic 563cbd7943 [ci]: add mvnd support and update backend build (#3491) 2025-06-21 20:07:10 +08:00
92 changed files with 2000 additions and 916 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ jobs:
- uses: ./script/ci/github-actions/setup-deps
- name: Build with Maven
run: mvn clean -B package -Prelease -Dmaven.test.skip=false --file pom.xml
run: mvnd clean -B package -Prelease -Dmaven.test.skip=false --file pom.xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4.0.1
+3 -5
View File
@@ -49,11 +49,9 @@ jobs:
- name: Dead Link Check
run: |
sudo npm install -g markdown-link-check@3.8.7
for file in $(find ./home -name "*.md"); do
if ! grep -Fxq "$file" ./script/ci/exclude_files.txt; then
markdown-link-check -c ./script/ci/link_check.json -q "$file"
fi
done
find ./home -name "*.md" > all_md_files.txt
grep -vFf ./script/ci/exclude_files.txt all_md_files.txt > to_check.txt
xargs -P 8 -a to_check.txt -I{} markdown-link-check -c ./script/ci/link_check.json -q "{}"
- name: NPM INSTALL
working-directory: home
@@ -17,17 +17,16 @@
package org.apache.hertzbeat.alert.controller;
import static org.apache.hertzbeat.common.constants.CommonConstants.MONITOR_NOT_EXIST_CODE;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import java.util.Objects;
import org.apache.hertzbeat.alert.service.AlertDefineService;
import org.apache.hertzbeat.common.entity.alerter.AlertDefine;
import org.apache.hertzbeat.common.entity.dto.Message;
import org.apache.hertzbeat.common.support.exception.AlertExpressionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -36,8 +35,17 @@ 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;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static org.apache.hertzbeat.common.constants.CommonConstants.FAIL_CODE;
import static org.apache.hertzbeat.common.constants.CommonConstants.MONITOR_NOT_EXIST_CODE;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
/**
* Alarm definition management API
*/
@@ -90,4 +98,18 @@ public class AlertDefineController {
return ResponseEntity.ok(Message.success("Delete success"));
}
@GetMapping(path = "/preview/{datasource}")
@Operation(summary = "Alarm definition expression preview",
description = "If the expression is formal, then the result of the query will be returned, otherwise it will respond with an error")
public ResponseEntity<Message<List<Map<String, Object>>>> getDefinePreview(
@Parameter(description = "Data Source Type", example = "promql") @PathVariable("datasource") String datasource,
@Parameter(description = "alert threshold type:realtime,periodic") @RequestParam String type,
@Parameter(description = "alert threshold expression") @RequestParam String expr) {
try {
return ResponseEntity.ok(Message.successWithData(alertDefineService.getDefinePreview(datasource, type, expr)));
} catch (AlertExpressionException ae) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(Message.fail(FAIL_CODE, ae.getMessage()));
}
}
}
@@ -115,92 +115,51 @@ public class AlertExpressionEvalVisitor extends AlertExpressionBaseVisitor<List<
List<Map<String, Object>> leftOperand = visit(ctx.left);
List<Map<String, Object>> rightOperand = visit(ctx.right);
Map<String, Object> leftMap = null;
boolean leftMatch = false;
Map<String, Object> rightMap = null;
boolean rightMatch = false;
for (Map<String, Object> item : leftOperand) {
if (leftMap == null) {
leftMap = item;
// build a hashMap of the left-hand label collection
Map<String, Map<String, Object>> leftLabelMap = leftOperand.stream()
.filter(item -> item.get(VALUE) != null)
.collect(Collectors.toMap(this::labelKey, HashMap::new, (k1, k2) -> k1));
// first add all the non-empty items on the left side
List<Map<String, Object>> results = new ArrayList<>(leftLabelMap.values());
// add the term that has a value on the right side and not on the left side
for (Map<String, Object> rightItem : rightOperand) {
Object rightVal = rightItem.get(VALUE);
if (rightVal == null) {
continue;
}
if (item.get(VALUE) != null) {
leftMap = item;
leftMatch = true;
break;
String key = labelKey(rightItem);
if (!leftLabelMap.containsKey(key)) {
results.add(new HashMap<>(rightItem));
}
}
for (Map<String, Object> item : rightOperand) {
if (rightMap == null) {
rightMap = item;
}
if (item.get(VALUE) != null) {
rightMap = item;
rightMatch = true;
break;
}
}
if (leftMatch && rightMatch) {
rightMap.putAll(leftMap);
return new LinkedList<>(List.of(rightMap));
} else if (leftMatch) {
return new LinkedList<>(List.of(leftMap));
} else if (rightMatch) {
return new LinkedList<>(List.of(rightMap));
} else {
if (leftMap != null && rightMap != null) {
rightMap.putAll(leftMap);
return new LinkedList<>(List.of(rightMap));
} else if (leftMap != null) {
return new LinkedList<>(List.of(leftMap));
} else if (rightMap != null) {
return new LinkedList<>(List.of(rightMap));
}
}
return new LinkedList<>();
return results;
}
@Override
public List<Map<String, Object>> visitUnlessExpr(AlertExpressionParser.UnlessExprContext ctx) {
List<Map<String, Object>> leftOperand = visit(ctx.left);
List<Map<String, Object>> rightOperand = visit(ctx.right);
Map<String, Object> leftMap = null;
boolean leftMatch = false;
Map<String, Object> rightMap = null;
boolean rightMatch = false;
for (Map<String, Object> item : leftOperand) {
if (leftMap == null) {
leftMap = item;
List<Map<String, Object>> results = new ArrayList<>();
// build a hash set of the right-side tag collection
Set<String> rightLabelSet = rightOperand.stream()
.filter(item -> item.get(VALUE) != null)
.map(this::labelKey)
.collect(Collectors.toSet());
// iterate over the left side, O(1) match
for (Map<String, Object> leftItem : leftOperand) {
Object leftVal = leftItem.get(VALUE);
if (leftVal == null) {
continue;
}
if (item.get(VALUE) != null) {
leftMap = item;
leftMatch = true;
break;
if (!rightLabelSet.contains(labelKey(leftItem))) {
results.add(new HashMap<>(leftItem));
}
}
for (Map<String, Object> item : rightOperand) {
if (rightMap == null) {
rightMap = item;
}
if (item.get(VALUE) != null) {
rightMap = item;
rightMatch = true;
break;
}
}
if (leftMatch && !rightMatch) {
return new LinkedList<>(List.of(leftMap));
} else {
if (leftMap != null) {
leftMap.put(VALUE, null);
return new LinkedList<>(List.of(leftMap));
} else {
if (rightMap != null) {
rightMap.put(VALUE, null);
return new LinkedList<>(List.of(rightMap));
}
}
}
return new LinkedList<>();
return results;
}
@Override
@@ -2177,11 +2177,8 @@ public class AlertExpressionParser extends Parser {
return getRuleContext(AggregationOperatorContext.class,0);
}
public TerminalNode LPAREN() { return getToken(AlertExpressionParser.LPAREN, 0); }
public List<PromqlContext> promql() {
return getRuleContexts(PromqlContext.class);
}
public PromqlContext promql(int i) {
return getRuleContext(PromqlContext.class,i);
public PromqlContext promql() {
return getRuleContext(PromqlContext.class,0);
}
public TerminalNode RPAREN() { return getToken(AlertExpressionParser.RPAREN, 0); }
public TerminalNode BY() { return getToken(AlertExpressionParser.BY, 0); }
@@ -2192,9 +2189,6 @@ public class AlertExpressionParser extends Parser {
return getRuleContext(FunctionCallContext.class,0);
}
public TerminalNode IDENTIFIER() { return getToken(AlertExpressionParser.IDENTIFIER, 0); }
public BinaryOperatorContext binaryOperator() {
return getRuleContext(BinaryOperatorContext.class,0);
}
public TerminalNode LBRACKET() { return getToken(AlertExpressionParser.LBRACKET, 0); }
public List<DurationContext> duration() {
return getRuleContexts(DurationContext.class);
@@ -2289,7 +2283,7 @@ public class AlertExpressionParser extends Parser {
break;
}
_ctx.stop = _input.LT(-1);
setState(351);
setState(347);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,39,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -2297,7 +2291,7 @@ public class AlertExpressionParser extends Parser {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(349);
setState(345);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
@@ -2305,24 +2299,30 @@ public class AlertExpressionParser extends Parser {
_localctx = new PromqlContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_promql);
setState(330);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(331);
binaryOperator();
match(LBRACKET);
setState(332);
promql(7);
duration();
setState(333);
match(RBRACKET);
}
break;
case 2:
{
_localctx = new PromqlContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_promql);
setState(334);
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(335);
match(LBRACKET);
if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(336);
duration();
match(LBRACKET);
setState(337);
duration();
setState(338);
match(COLON);
setState(339);
duration();
setState(340);
match(RBRACKET);
}
break;
@@ -2330,36 +2330,18 @@ public class AlertExpressionParser extends Parser {
{
_localctx = new PromqlContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_promql);
setState(339);
if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(340);
match(LBRACKET);
setState(341);
duration();
setState(342);
match(COLON);
setState(343);
duration();
setState(344);
match(RBRACKET);
}
break;
case 4:
{
_localctx = new PromqlContext(_parentctx, _parentState);
pushNewRecursionContext(_localctx, _startState, RULE_promql);
setState(346);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
setState(347);
setState(343);
match(OFFSET);
setState(348);
setState(344);
duration();
}
break;
}
}
}
setState(353);
setState(349);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,39,_ctx);
}
@@ -2401,19 +2383,19 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(354);
setState(350);
match(LBRACE);
setState(356);
setState(352);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IDENTIFIER) {
{
setState(355);
setState(351);
labelMatcherList();
}
}
setState(358);
setState(354);
match(RBRACE);
}
}
@@ -2458,21 +2440,21 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(360);
setState(356);
labelMatcherItem();
setState(365);
setState(361);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
setState(361);
setState(357);
match(COMMA);
setState(362);
setState(358);
labelMatcherItem();
}
}
setState(367);
setState(363);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2515,11 +2497,11 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(368);
setState(364);
match(IDENTIFIER);
setState(369);
setState(365);
labelMatcherOp();
setState(370);
setState(366);
string();
}
}
@@ -2556,7 +2538,7 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(372);
setState(368);
_la = _input.LA(1);
if ( !(_la==EQ || _la==NE) ) {
_errHandler.recoverInline(this);
@@ -2609,27 +2591,27 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(374);
setState(370);
match(LPAREN);
setState(375);
setState(371);
match(IDENTIFIER);
setState(380);
setState(376);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
setState(376);
setState(372);
match(COMMA);
setState(377);
setState(373);
match(IDENTIFIER);
}
}
setState(382);
setState(378);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(383);
setState(379);
match(RPAREN);
}
}
@@ -2668,11 +2650,11 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(385);
setState(381);
match(LBRACKET);
setState(386);
setState(382);
duration();
setState(387);
setState(383);
match(RBRACKET);
}
}
@@ -2717,7 +2699,7 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(389);
setState(385);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 121324437504L) != 0)) ) {
_errHandler.recoverInline(this);
@@ -2769,7 +2751,7 @@ public class AlertExpressionParser extends Parser {
try {
enterOuterAlt(_localctx, 1);
{
setState(391);
setState(387);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 2216615441596430L) != 0)) ) {
_errHandler.recoverInline(this);
@@ -2828,19 +2810,17 @@ public class AlertExpressionParser extends Parser {
private boolean promql_sempred(PromqlContext _localctx, int predIndex) {
switch (predIndex) {
case 6:
return precpred(_ctx, 6);
case 7:
return precpred(_ctx, 4);
case 8:
case 7:
return precpred(_ctx, 3);
case 9:
case 8:
return precpred(_ctx, 2);
}
return true;
}
public static final String _serializedATN =
"\u0004\u0001E\u018a\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
"\u0004\u0001E\u0186\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
"\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
@@ -2894,217 +2874,215 @@ public class AlertExpressionParser extends Parser {
"\u0016\u0001\u0016\u0003\u0016\u0149\b\u0016\u0001\u0016\u0001\u0016\u0001"+
"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0005\u0016\u015e"+
"\b\u0016\n\u0016\f\u0016\u0161\t\u0016\u0001\u0017\u0001\u0017\u0003\u0017"+
"\u0165\b\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018"+
"\u0005\u0018\u016c\b\u0018\n\u0018\f\u0018\u016f\t\u0018\u0001\u0019\u0001"+
"\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001"+
"\u001b\u0001\u001b\u0001\u001b\u0005\u001b\u017b\b\u001b\n\u001b\f\u001b"+
"\u017e\t\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c"+
"\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e"+
"\u0000\u0003\u0002$,\u001f\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012"+
"\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<\u0000\u0007\u0001"+
"\u0000-2\u0001\u0000=?\u0004\u0000\u0017\u001b\u001f!%*BB\u0001\u0000"+
"\u000f\u0010\u0001\u000012\u0002\u0000\u0017\u001d\"$\u0002\u0000\u0001"+
"\u0003-2\u01b3\u0000>\u0001\u0000\u0000\u0000\u0002S\u0001\u0000\u0000"+
"\u0000\u0004f\u0001\u0000\u0000\u0000\u0006k\u0001\u0000\u0000\u0000\b"+
"w\u0001\u0000\u0000\u0000\ny\u0001\u0000\u0000\u0000\f{\u0001\u0000\u0000"+
"\u0000\u000e}\u0001\u0000\u0000\u0000\u0010\u007f\u0001\u0000\u0000\u0000"+
"\u0012\u0081\u0001\u0000\u0000\u0000\u0014\u009b\u0001\u0000\u0000\u0000"+
"\u0016\u00c1\u0001\u0000\u0000\u0000\u0018\u00c3\u0001\u0000\u0000\u0000"+
"\u001a\u00cb\u0001\u0000\u0000\u0000\u001c\u00db\u0001\u0000\u0000\u0000"+
"\u001e\u00dd\u0001\u0000\u0000\u0000 \u00df\u0001\u0000\u0000\u0000\""+
"\u00f4\u0001\u0000\u0000\u0000$\u00fc\u0001\u0000\u0000\u0000&\u0118\u0001"+
"\u0000\u0000\u0000(\u0128\u0001\u0000\u0000\u0000*\u0136\u0001\u0000\u0000"+
"\u0000,\u0148\u0001\u0000\u0000\u0000.\u0162\u0001\u0000\u0000\u00000"+
"\u0168\u0001\u0000\u0000\u00002\u0170\u0001\u0000\u0000\u00004\u0174\u0001"+
"\u0000\u0000\u00006\u0176\u0001\u0000\u0000\u00008\u0181\u0001\u0000\u0000"+
"\u0000:\u0185\u0001\u0000\u0000\u0000<\u0187\u0001\u0000\u0000\u0000>"+
"?\u0003\u0002\u0001\u0000?@\u0005\u0000\u0000\u0001@\u0001\u0001\u0000"+
"\u0000\u0000AB\u0006\u0001\uffff\uffff\u0000BC\u00053\u0000\u0000CD\u0003"+
"\u0002\u0001\u0000DE\u00054\u0000\u0000ET\u0001\u0000\u0000\u0000FT\u0003"+
",\u0016\u0000GT\u0003\u0012\t\u0000HT\u0003\n\u0005\u0000IJ\u0005+\u0000"+
"\u0000JK\u00053\u0000\u0000KL\u0003\f\u0006\u0000LM\u00054\u0000\u0000"+
"MT\u0001\u0000\u0000\u0000NO\u0005,\u0000\u0000OP\u00053\u0000\u0000P"+
"Q\u0003\f\u0006\u0000QR\u00054\u0000\u0000RT\u0001\u0000\u0000\u0000S"+
"A\u0001\u0000\u0000\u0000SF\u0001\u0000\u0000\u0000SG\u0001\u0000\u0000"+
"\u0000SH\u0001\u0000\u0000\u0000SI\u0001\u0000\u0000\u0000SN\u0001\u0000"+
"\u0000\u0000Tc\u0001\u0000\u0000\u0000UV\n\t\u0000\u0000VW\u0007\u0000"+
"\u0000\u0000Wb\u0003\u0002\u0001\nXY\n\b\u0000\u0000YZ\u0005\u0001\u0000"+
"\u0000Zb\u0003\u0002\u0001\t[\\\n\u0007\u0000\u0000\\]\u0005\u0003\u0000"+
"\u0000]b\u0003\u0002\u0001\b^_\n\u0006\u0000\u0000_`\u0005\u0002\u0000"+
"\u0000`b\u0003\u0002\u0001\u0007aU\u0001\u0000\u0000\u0000aX\u0001\u0000"+
"\u0000\u0000a[\u0001\u0000\u0000\u0000a^\u0001\u0000\u0000\u0000be\u0001"+
"\u0000\u0000\u0000ca\u0001\u0000\u0000\u0000cd\u0001\u0000\u0000\u0000"+
"d\u0003\u0001\u0000\u0000\u0000ec\u0001\u0000\u0000\u0000fg\u0003\u0010"+
"\b\u0000gh\u00053\u0000\u0000hi\u0003\u0006\u0003\u0000ij\u00054\u0000"+
"\u0000j\u0005\u0001\u0000\u0000\u0000kp\u0003\b\u0004\u0000lm\u00059\u0000"+
"\u0000mo\u0003\b\u0004\u0000nl\u0001\u0000\u0000\u0000or\u0001\u0000\u0000"+
"\u0000pn\u0001\u0000\u0000\u0000pq\u0001\u0000\u0000\u0000q\u0007\u0001"+
"\u0000\u0000\u0000rp\u0001\u0000\u0000\u0000sx\u0003\u0002\u0001\u0000"+
"tx\u0005\u0016\u0000\u0000ux\u0003\f\u0006\u0000vx\u0003\u000e\u0007\u0000"+
"ws\u0001\u0000\u0000\u0000wt\u0001\u0000\u0000\u0000wu\u0001\u0000\u0000"+
"\u0000wv\u0001\u0000\u0000\u0000x\t\u0001\u0000\u0000\u0000yz\u0007\u0001"+
"\u0000\u0000z\u000b\u0001\u0000\u0000\u0000{|\u0005A\u0000\u0000|\r\u0001"+
"\u0000\u0000\u0000}~\u0005@\u0000\u0000~\u000f\u0001\u0000\u0000\u0000"+
"\u007f\u0080\u0007\u0002\u0000\u0000\u0080\u0011\u0001\u0000\u0000\u0000"+
"\u0081\u0082\u0005\u0005\u0000\u0000\u0082\u0083\u0003\u0014\n\u0000\u0083"+
"\u0084\u0005\u0006\u0000\u0000\u0084\u0087\u0003 \u0010\u0000\u0085\u0086"+
"\u0005\u0007\u0000\u0000\u0086\u0088\u0003$\u0012\u0000\u0087\u0085\u0001"+
"\u0000\u0000\u0000\u0087\u0088\u0001\u0000\u0000\u0000\u0088\u008c\u0001"+
"\u0000\u0000\u0000\u0089\u008a\u0005\b\u0000\u0000\u008a\u008b\u0005\t"+
"\u0000\u0000\u008b\u008d\u0003\u0018\f\u0000\u008c\u0089\u0001\u0000\u0000"+
"\u0000\u008c\u008d\u0001\u0000\u0000\u0000\u008d\u0090\u0001\u0000\u0000"+
"\u0000\u008e\u008f\u0005\n\u0000\u0000\u008f\u0091\u0003$\u0012\u0000"+
"\u0090\u008e\u0001\u0000\u0000\u0000\u0090\u0091\u0001\u0000\u0000\u0000"+
"\u0091\u0095\u0001\u0000\u0000\u0000\u0092\u0093\u0005\u000b\u0000\u0000"+
"\u0093\u0094\u0005\t\u0000\u0000\u0094\u0096\u0003\u001a\r\u0000\u0095"+
"\u0092\u0001\u0000\u0000\u0000\u0095\u0096\u0001\u0000\u0000\u0000\u0096"+
"\u0099\u0001\u0000\u0000\u0000\u0097\u0098\u0005\f\u0000\u0000\u0098\u009a"+
"\u0003\u001e\u000f\u0000\u0099\u0097\u0001\u0000\u0000\u0000\u0099\u009a"+
"\u0001\u0000\u0000\u0000\u009a\u0013\u0001\u0000\u0000\u0000\u009b\u00a0"+
"\u0003\u0016\u000b\u0000\u009c\u009d\u00059\u0000\u0000\u009d\u009f\u0003"+
"\u0016\u000b\u0000\u009e\u009c\u0001\u0000\u0000\u0000\u009f\u00a2\u0001"+
"\u0000\u0000\u0000\u00a0\u009e\u0001\u0000\u0000\u0000\u00a0\u00a1\u0001"+
"\u0000\u0000\u0000\u00a1\u0015\u0001\u0000\u0000\u0000\u00a2\u00a0\u0001"+
"\u0000\u0000\u0000\u00a3\u00a8\u0003\u0004\u0002\u0000\u00a4\u00a6\u0005"+
"\u000e\u0000\u0000\u00a5\u00a4\u0001\u0000\u0000\u0000\u00a5\u00a6\u0001"+
"\u0000\u0000\u0000\u00a6\u00a7\u0001\u0000\u0000\u0000\u00a7\u00a9\u0005"+
"B\u0000\u0000\u00a8\u00a5\u0001\u0000\u0000\u0000\u00a8\u00a9\u0001\u0000"+
"\u0000\u0000\u00a9\u00c2\u0001\u0000\u0000\u0000\u00aa\u00af\u0005B\u0000"+
"\u0000\u00ab\u00ad\u0005\u000e\u0000\u0000\u00ac\u00ab\u0001\u0000\u0000"+
"\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000\u00ad\u00ae\u0001\u0000\u0000"+
"\u0000\u00ae\u00b0\u0005B\u0000\u0000\u00af\u00ac\u0001\u0000\u0000\u0000"+
"\u00af\u00b0\u0001\u0000\u0000\u0000\u00b0\u00c2\u0001\u0000\u0000\u0000"+
"\u00b1\u00b6\u0005\u0016\u0000\u0000\u00b2\u00b4\u0005\u000e\u0000\u0000"+
"\u00b3\u00b2\u0001\u0000\u0000\u0000\u00b3\u00b4\u0001\u0000\u0000\u0000"+
"\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5\u00b7\u0005B\u0000\u0000\u00b6"+
"\u00b3\u0001\u0000\u0000\u0000\u00b6\u00b7\u0001\u0000\u0000\u0000\u00b7"+
"\u00c2\u0001\u0000\u0000\u0000\u00b8\u00b9\u0005B\u0000\u0000\u00b9\u00ba"+
"\u0005:\u0000\u0000\u00ba\u00bf\u0005B\u0000\u0000\u00bb\u00bd\u0005\u000e"+
"\u0000\u0000\u00bc\u00bb\u0001\u0000\u0000\u0000\u00bc\u00bd\u0001\u0000"+
"\u0000\u0000\u00bd\u00be\u0001\u0000\u0000\u0000\u00be\u00c0\u0005B\u0000"+
"\u0000\u00bf\u00bc\u0001\u0000\u0000\u0000\u00bf\u00c0\u0001\u0000\u0000"+
"\u0000\u00c0\u00c2\u0001\u0000\u0000\u0000\u00c1\u00a3\u0001\u0000\u0000"+
"\u0000\u00c1\u00aa\u0001\u0000\u0000\u0000\u00c1\u00b1\u0001\u0000\u0000"+
"\u0000\u00c1\u00b8\u0001\u0000\u0000\u0000\u00c2\u0017\u0001\u0000\u0000"+
"\u0000\u00c3\u00c8\u0005B\u0000\u0000\u00c4\u00c5\u00059\u0000\u0000\u00c5"+
"\u00c7\u0005B\u0000\u0000\u00c6\u00c4\u0001\u0000\u0000\u0000\u00c7\u00ca"+
"\u0001\u0000\u0000\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000\u00c8\u00c9"+
"\u0001\u0000\u0000\u0000\u00c9\u0019\u0001\u0000\u0000\u0000\u00ca\u00c8"+
"\u0001\u0000\u0000\u0000\u00cb\u00d0\u0003\u001c\u000e\u0000\u00cc\u00cd"+
"\u00059\u0000\u0000\u00cd\u00cf\u0003\u001c\u000e\u0000\u00ce\u00cc\u0001"+
"\u0000\u0000\u0000\u00cf\u00d2\u0001\u0000\u0000\u0000\u00d0\u00ce\u0001"+
"\u0000\u0000\u0000\u00d0\u00d1\u0001\u0000\u0000\u0000\u00d1\u001b\u0001"+
"\u0000\u0000\u0000\u00d2\u00d0\u0001\u0000\u0000\u0000\u00d3\u00d5\u0005"+
"B\u0000\u0000\u00d4\u00d6\u0007\u0003\u0000\u0000\u00d5\u00d4\u0001\u0000"+
"\u0000\u0000\u00d5\u00d6\u0001\u0000\u0000\u0000\u00d6\u00dc\u0001\u0000"+
"\u0000\u0000\u00d7\u00d9\u0003\u0004\u0002\u0000\u00d8\u00da\u0007\u0003"+
"\u0000\u0000\u00d9\u00d8\u0001\u0000\u0000\u0000\u00d9\u00da\u0001\u0000"+
"\u0000\u0000\u00da\u00dc\u0001\u0000\u0000\u0000\u00db\u00d3\u0001\u0000"+
"\u0000\u0000\u00db\u00d7\u0001\u0000\u0000\u0000\u00dc\u001d\u0001\u0000"+
"\u0000\u0000\u00dd\u00de\u0005?\u0000\u0000\u00de\u001f\u0001\u0000\u0000"+
"\u0000\u00df\u00e4\u0003\"\u0011\u0000\u00e0\u00e1\u00059\u0000\u0000"+
"\u00e1\u00e3\u0003\"\u0011\u0000\u00e2\u00e0\u0001\u0000\u0000\u0000\u00e3"+
"\u00e6\u0001\u0000\u0000\u0000\u00e4\u00e2\u0001\u0000\u0000\u0000\u00e4"+
"\u00e5\u0001\u0000\u0000\u0000\u00e5!\u0001\u0000\u0000\u0000\u00e6\u00e4"+
"\u0001\u0000\u0000\u0000\u00e7\u00ec\u0005B\u0000\u0000\u00e8\u00ea\u0005"+
"\u000e\u0000\u0000\u00e9\u00e8\u0001\u0000\u0000\u0000\u00e9\u00ea\u0001"+
"\u0000\u0000\u0000\u00ea\u00eb\u0001\u0000\u0000\u0000\u00eb\u00ed\u0005"+
"B\u0000\u0000\u00ec\u00e9\u0001\u0000\u0000\u0000\u00ec\u00ed\u0001\u0000"+
"\u0000\u0000\u00ed\u00f5\u0001\u0000\u0000\u0000\u00ee\u00ef\u00053\u0000"+
"\u0000\u00ef\u00f0\u0003\u0012\t\u0000\u00f0\u00f1\u00054\u0000\u0000"+
"\u00f1\u00f2\u0005\u000e\u0000\u0000\u00f2\u00f3\u0005B\u0000\u0000\u00f3"+
"\u00f5\u0001\u0000\u0000\u0000\u00f4\u00e7\u0001\u0000\u0000\u0000\u00f4"+
"\u00ee\u0001\u0000\u0000\u0000\u00f5#\u0001\u0000\u0000\u0000\u00f6\u00f7"+
"\u0006\u0012\uffff\uffff\u0000\u00f7\u00fd\u0003(\u0014\u0000\u00f8\u00f9"+
"\u00053\u0000\u0000\u00f9\u00fa\u0003$\u0012\u0000\u00fa\u00fb\u00054"+
"\u0000\u0000\u00fb\u00fd\u0001\u0000\u0000\u0000\u00fc\u00f6\u0001\u0000"+
"\u0000\u0000\u00fc\u00f8\u0001\u0000\u0000\u0000\u00fd\u0106\u0001\u0000"+
"\u0000\u0000\u00fe\u00ff\n\u0004\u0000\u0000\u00ff\u0100\u0005\u0001\u0000"+
"\u0000\u0100\u0105\u0003$\u0012\u0005\u0101\u0102\n\u0003\u0000\u0000"+
"\u0102\u0103\u0005\u0002\u0000\u0000\u0103\u0105\u0003$\u0012\u0004\u0104"+
"\u00fe\u0001\u0000\u0000\u0000\u0104\u0101\u0001\u0000\u0000\u0000\u0105"+
"\u0108\u0001\u0000\u0000\u0000\u0106\u0104\u0001\u0000\u0000\u0000\u0106"+
"\u0107\u0001\u0000\u0000\u0000\u0107%\u0001\u0000\u0000\u0000\u0108\u0106"+
"\u0001\u0000\u0000\u0000\u0109\u0119\u00051\u0000\u0000\u010a\u0119\u0005"+
"/\u0000\u0000\u010b\u0119\u0005-\u0000\u0000\u010c\u0119\u00050\u0000"+
"\u0000\u010d\u0119\u0005.\u0000\u0000\u010e\u0119\u00052\u0000\u0000\u010f"+
"\u0119\u0005\u0014\u0000\u0000\u0110\u0111\u0005\u0004\u0000\u0000\u0111"+
"\u0119\u0005\u0014\u0000\u0000\u0112\u0119\u0005\u0011\u0000\u0000\u0113"+
"\u0114\u0005\u0004\u0000\u0000\u0114\u0119\u0005\u0011\u0000\u0000\u0115"+
"\u0119\u0005\u0012\u0000\u0000\u0116\u0117\u0005\u0012\u0000\u0000\u0117"+
"\u0119\u0005\u0004\u0000\u0000\u0118\u0109\u0001\u0000\u0000\u0000\u0118"+
"\u010a\u0001\u0000\u0000\u0000\u0118\u010b\u0001\u0000\u0000\u0000\u0118"+
"\u010c\u0001\u0000\u0000\u0000\u0118\u010d\u0001\u0000\u0000\u0000\u0118"+
"\u010e\u0001\u0000\u0000\u0000\u0118\u010f\u0001\u0000\u0000\u0000\u0118"+
"\u0110\u0001\u0000\u0000\u0000\u0118\u0112\u0001\u0000\u0000\u0000\u0118"+
"\u0113\u0001\u0000\u0000\u0000\u0118\u0115\u0001\u0000\u0000\u0000\u0118"+
"\u0116\u0001\u0000\u0000\u0000\u0119\'\u0001\u0000\u0000\u0000\u011a\u011b"+
"\u0003*\u0015\u0000\u011b\u011c\u0003&\u0013\u0000\u011c\u011d\u0003*"+
"\u0015\u0000\u011d\u0129\u0001\u0000\u0000\u0000\u011e\u011f\u00053\u0000"+
"\u0000\u011f\u0120\u0003(\u0014\u0000\u0120\u0121\u00054\u0000\u0000\u0121"+
"\u0129\u0001\u0000\u0000\u0000\u0122\u0123\u0005B\u0000\u0000\u0123\u0124"+
"\u0005\u0015\u0000\u0000\u0124\u0125\u0003\n\u0005\u0000\u0125\u0126\u0005"+
"\u0001\u0000\u0000\u0126\u0127\u0003\n\u0005\u0000\u0127\u0129\u0001\u0000"+
"\u0000\u0000\u0128\u011a\u0001\u0000\u0000\u0000\u0128\u011e\u0001\u0000"+
"\u0000\u0000\u0128\u0122\u0001\u0000\u0000\u0000\u0129)\u0001\u0000\u0000"+
"\u0000\u012a\u0137\u0003\n\u0005\u0000\u012b\u0137\u0003\f\u0006\u0000"+
"\u012c\u0137\u0005B\u0000\u0000\u012d\u012e\u0005B\u0000\u0000\u012e\u012f"+
"\u0005:\u0000\u0000\u012f\u0137\u0005B\u0000\u0000\u0130\u0137\u0005\u0013"+
"\u0000\u0000\u0131\u0132\u00053\u0000\u0000\u0132\u0133\u0003\u0012\t"+
"\u0000\u0133\u0134\u00054\u0000\u0000\u0134\u0137\u0001\u0000\u0000\u0000"+
"\u0135\u0137\u0003\u0004\u0002\u0000\u0136\u012a\u0001\u0000\u0000\u0000"+
"\u0136\u012b\u0001\u0000\u0000\u0000\u0136\u012c\u0001\u0000\u0000\u0000"+
"\u0136\u012d\u0001\u0000\u0000\u0000\u0136\u0130\u0001\u0000\u0000\u0000"+
"\u0136\u0131\u0001\u0000\u0000\u0000\u0136\u0135\u0001\u0000\u0000\u0000"+
"\u0137+\u0001\u0000\u0000\u0000\u0138\u0139\u0006\u0016\uffff\uffff\u0000"+
"\u0139\u013b\u0003.\u0017\u0000\u013a\u013c\u00038\u001c\u0000\u013b\u013a"+
"\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000\u0000\u013c\u0149"+
"\u0001\u0000\u0000\u0000\u013d\u013e\u0003:\u001d\u0000\u013e\u013f\u0005"+
"3\u0000\u0000\u013f\u0142\u0003,\u0016\u0000\u0140\u0141\u0005\t\u0000"+
"\u0000\u0141\u0143\u00036\u001b\u0000\u0142\u0140\u0001\u0000\u0000\u0000"+
"\u0142\u0143\u0001\u0000\u0000\u0000\u0143\u0144\u0001\u0000\u0000\u0000"+
"\u0144\u0145\u00054\u0000\u0000\u0145\u0149\u0001\u0000\u0000\u0000\u0146"+
"\u0149\u0003\u0004\u0002\u0000\u0147\u0149\u0005B\u0000\u0000\u0148\u0138"+
"\u0001\u0000\u0000\u0000\u0148\u013d\u0001\u0000\u0000\u0000\u0148\u0146"+
"\u0001\u0000\u0000\u0000\u0148\u0147\u0001\u0000\u0000\u0000\u0149\u015f"+
"\u0001\u0000\u0000\u0000\u014a\u014b\n\u0006\u0000\u0000\u014b\u014c\u0003"+
"<\u001e\u0000\u014c\u014d\u0003,\u0016\u0007\u014d\u015e\u0001\u0000\u0000"+
"\u0000\u014e\u014f\n\u0004\u0000\u0000\u014f\u0150\u00057\u0000\u0000"+
"\u0150\u0151\u0003\u000e\u0007\u0000\u0151\u0152\u00058\u0000\u0000\u0152"+
"\u015e\u0001\u0000\u0000\u0000\u0153\u0154\n\u0003\u0000\u0000\u0154\u0155"+
"\u00057\u0000\u0000\u0155\u0156\u0003\u000e\u0007\u0000\u0156\u0157\u0005"+
";\u0000\u0000\u0157\u0158\u0003\u000e\u0007\u0000\u0158\u0159\u00058\u0000"+
"\u0000\u0159\u015e\u0001\u0000\u0000\u0000\u015a\u015b\n\u0002\u0000\u0000"+
"\u015b\u015c\u0005\r\u0000\u0000\u015c\u015e\u0003\u000e\u0007\u0000\u015d"+
"\u014a\u0001\u0000\u0000\u0000\u015d\u014e\u0001\u0000\u0000\u0000\u015d"+
"\u0153\u0001\u0000\u0000\u0000\u015d\u015a\u0001\u0000\u0000\u0000\u015e"+
"\u0161\u0001\u0000\u0000\u0000\u015f\u015d\u0001\u0000\u0000\u0000\u015f"+
"\u0160\u0001\u0000\u0000\u0000\u0160-\u0001\u0000\u0000\u0000\u0161\u015f"+
"\u0001\u0000\u0000\u0000\u0162\u0164\u00055\u0000\u0000\u0163\u0165\u0003"+
"0\u0018\u0000\u0164\u0163\u0001\u0000\u0000\u0000\u0164\u0165\u0001\u0000"+
"\u0000\u0000\u0165\u0166\u0001\u0000\u0000\u0000\u0166\u0167\u00056\u0000"+
"\u0000\u0167/\u0001\u0000\u0000\u0000\u0168\u016d\u00032\u0019\u0000\u0169"+
"\u016a\u00059\u0000\u0000\u016a\u016c\u00032\u0019\u0000\u016b\u0169\u0001"+
"\u0000\u0000\u0000\u016c\u016f\u0001\u0000\u0000\u0000\u016d\u016b\u0001"+
"\u0000\u0000\u0000\u016d\u016e\u0001\u0000\u0000\u0000\u016e1\u0001\u0000"+
"\u0000\u0000\u016f\u016d\u0001\u0000\u0000\u0000\u0170\u0171\u0005B\u0000"+
"\u0000\u0171\u0172\u00034\u001a\u0000\u0172\u0173\u0003\f\u0006\u0000"+
"\u01733\u0001\u0000\u0000\u0000\u0174\u0175\u0007\u0004\u0000\u0000\u0175"+
"5\u0001\u0000\u0000\u0000\u0176\u0177\u00053\u0000\u0000\u0177\u017c\u0005"+
"B\u0000\u0000\u0178\u0179\u00059\u0000\u0000\u0179\u017b\u0005B\u0000"+
"\u0000\u017a\u0178\u0001\u0000\u0000\u0000\u017b\u017e\u0001\u0000\u0000"+
"\u0000\u017c\u017a\u0001\u0000\u0000\u0000\u017c\u017d\u0001\u0000\u0000"+
"\u0000\u017d\u017f\u0001\u0000\u0000\u0000\u017e\u017c\u0001\u0000\u0000"+
"\u0000\u017f\u0180\u00054\u0000\u0000\u01807\u0001\u0000\u0000\u0000\u0181"+
"\u0182\u00057\u0000\u0000\u0182\u0183\u0003\u000e\u0007\u0000\u0183\u0184"+
"\u00058\u0000\u0000\u01849\u0001\u0000\u0000\u0000\u0185\u0186\u0007\u0005"+
"\u0000\u0000\u0186;\u0001\u0000\u0000\u0000\u0187\u0188\u0007\u0006\u0000"+
"\u0000\u0188=\u0001\u0000\u0000\u0000+Sacpw\u0087\u008c\u0090\u0095\u0099"+
"\u00a0\u00a5\u00a8\u00ac\u00af\u00b3\u00b6\u00bc\u00bf\u00c1\u00c8\u00d0"+
"\u00d5\u00d9\u00db\u00e4\u00e9\u00ec\u00f4\u00fc\u0104\u0106\u0118\u0128"+
"\u0136\u013b\u0142\u0148\u015d\u015f\u0164\u016d\u017c";
"\u0016\u0005\u0016\u015a\b\u0016\n\u0016\f\u0016\u015d\t\u0016\u0001\u0017"+
"\u0001\u0017\u0003\u0017\u0161\b\u0017\u0001\u0017\u0001\u0017\u0001\u0018"+
"\u0001\u0018\u0001\u0018\u0005\u0018\u0168\b\u0018\n\u0018\f\u0018\u016b"+
"\t\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001"+
"\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0005\u001b\u0177"+
"\b\u001b\n\u001b\f\u001b\u017a\t\u001b\u0001\u001b\u0001\u001b\u0001\u001c"+
"\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001e"+
"\u0001\u001e\u0001\u001e\u0000\u0003\u0002$,\u001f\u0000\u0002\u0004\u0006"+
"\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,."+
"02468:<\u0000\u0007\u0001\u0000-2\u0001\u0000=?\u0004\u0000\u0017\u001b"+
"\u001f!%*BB\u0001\u0000\u000f\u0010\u0001\u000012\u0002\u0000\u0017\u001d"+
"\"$\u0002\u0000\u0001\u0003-2\u01ae\u0000>\u0001\u0000\u0000\u0000\u0002"+
"S\u0001\u0000\u0000\u0000\u0004f\u0001\u0000\u0000\u0000\u0006k\u0001"+
"\u0000\u0000\u0000\bw\u0001\u0000\u0000\u0000\ny\u0001\u0000\u0000\u0000"+
"\f{\u0001\u0000\u0000\u0000\u000e}\u0001\u0000\u0000\u0000\u0010\u007f"+
"\u0001\u0000\u0000\u0000\u0012\u0081\u0001\u0000\u0000\u0000\u0014\u009b"+
"\u0001\u0000\u0000\u0000\u0016\u00c1\u0001\u0000\u0000\u0000\u0018\u00c3"+
"\u0001\u0000\u0000\u0000\u001a\u00cb\u0001\u0000\u0000\u0000\u001c\u00db"+
"\u0001\u0000\u0000\u0000\u001e\u00dd\u0001\u0000\u0000\u0000 \u00df\u0001"+
"\u0000\u0000\u0000\"\u00f4\u0001\u0000\u0000\u0000$\u00fc\u0001\u0000"+
"\u0000\u0000&\u0118\u0001\u0000\u0000\u0000(\u0128\u0001\u0000\u0000\u0000"+
"*\u0136\u0001\u0000\u0000\u0000,\u0148\u0001\u0000\u0000\u0000.\u015e"+
"\u0001\u0000\u0000\u00000\u0164\u0001\u0000\u0000\u00002\u016c\u0001\u0000"+
"\u0000\u00004\u0170\u0001\u0000\u0000\u00006\u0172\u0001\u0000\u0000\u0000"+
"8\u017d\u0001\u0000\u0000\u0000:\u0181\u0001\u0000\u0000\u0000<\u0183"+
"\u0001\u0000\u0000\u0000>?\u0003\u0002\u0001\u0000?@\u0005\u0000\u0000"+
"\u0001@\u0001\u0001\u0000\u0000\u0000AB\u0006\u0001\uffff\uffff\u0000"+
"BC\u00053\u0000\u0000CD\u0003\u0002\u0001\u0000DE\u00054\u0000\u0000E"+
"T\u0001\u0000\u0000\u0000FT\u0003,\u0016\u0000GT\u0003\u0012\t\u0000H"+
"T\u0003\n\u0005\u0000IJ\u0005+\u0000\u0000JK\u00053\u0000\u0000KL\u0003"+
"\f\u0006\u0000LM\u00054\u0000\u0000MT\u0001\u0000\u0000\u0000NO\u0005"+
",\u0000\u0000OP\u00053\u0000\u0000PQ\u0003\f\u0006\u0000QR\u00054\u0000"+
"\u0000RT\u0001\u0000\u0000\u0000SA\u0001\u0000\u0000\u0000SF\u0001\u0000"+
"\u0000\u0000SG\u0001\u0000\u0000\u0000SH\u0001\u0000\u0000\u0000SI\u0001"+
"\u0000\u0000\u0000SN\u0001\u0000\u0000\u0000Tc\u0001\u0000\u0000\u0000"+
"UV\n\t\u0000\u0000VW\u0007\u0000\u0000\u0000Wb\u0003\u0002\u0001\nXY\n"+
"\b\u0000\u0000YZ\u0005\u0001\u0000\u0000Zb\u0003\u0002\u0001\t[\\\n\u0007"+
"\u0000\u0000\\]\u0005\u0003\u0000\u0000]b\u0003\u0002\u0001\b^_\n\u0006"+
"\u0000\u0000_`\u0005\u0002\u0000\u0000`b\u0003\u0002\u0001\u0007aU\u0001"+
"\u0000\u0000\u0000aX\u0001\u0000\u0000\u0000a[\u0001\u0000\u0000\u0000"+
"a^\u0001\u0000\u0000\u0000be\u0001\u0000\u0000\u0000ca\u0001\u0000\u0000"+
"\u0000cd\u0001\u0000\u0000\u0000d\u0003\u0001\u0000\u0000\u0000ec\u0001"+
"\u0000\u0000\u0000fg\u0003\u0010\b\u0000gh\u00053\u0000\u0000hi\u0003"+
"\u0006\u0003\u0000ij\u00054\u0000\u0000j\u0005\u0001\u0000\u0000\u0000"+
"kp\u0003\b\u0004\u0000lm\u00059\u0000\u0000mo\u0003\b\u0004\u0000nl\u0001"+
"\u0000\u0000\u0000or\u0001\u0000\u0000\u0000pn\u0001\u0000\u0000\u0000"+
"pq\u0001\u0000\u0000\u0000q\u0007\u0001\u0000\u0000\u0000rp\u0001\u0000"+
"\u0000\u0000sx\u0003\u0002\u0001\u0000tx\u0005\u0016\u0000\u0000ux\u0003"+
"\f\u0006\u0000vx\u0003\u000e\u0007\u0000ws\u0001\u0000\u0000\u0000wt\u0001"+
"\u0000\u0000\u0000wu\u0001\u0000\u0000\u0000wv\u0001\u0000\u0000\u0000"+
"x\t\u0001\u0000\u0000\u0000yz\u0007\u0001\u0000\u0000z\u000b\u0001\u0000"+
"\u0000\u0000{|\u0005A\u0000\u0000|\r\u0001\u0000\u0000\u0000}~\u0005@"+
"\u0000\u0000~\u000f\u0001\u0000\u0000\u0000\u007f\u0080\u0007\u0002\u0000"+
"\u0000\u0080\u0011\u0001\u0000\u0000\u0000\u0081\u0082\u0005\u0005\u0000"+
"\u0000\u0082\u0083\u0003\u0014\n\u0000\u0083\u0084\u0005\u0006\u0000\u0000"+
"\u0084\u0087\u0003 \u0010\u0000\u0085\u0086\u0005\u0007\u0000\u0000\u0086"+
"\u0088\u0003$\u0012\u0000\u0087\u0085\u0001\u0000\u0000\u0000\u0087\u0088"+
"\u0001\u0000\u0000\u0000\u0088\u008c\u0001\u0000\u0000\u0000\u0089\u008a"+
"\u0005\b\u0000\u0000\u008a\u008b\u0005\t\u0000\u0000\u008b\u008d\u0003"+
"\u0018\f\u0000\u008c\u0089\u0001\u0000\u0000\u0000\u008c\u008d\u0001\u0000"+
"\u0000\u0000\u008d\u0090\u0001\u0000\u0000\u0000\u008e\u008f\u0005\n\u0000"+
"\u0000\u008f\u0091\u0003$\u0012\u0000\u0090\u008e\u0001\u0000\u0000\u0000"+
"\u0090\u0091\u0001\u0000\u0000\u0000\u0091\u0095\u0001\u0000\u0000\u0000"+
"\u0092\u0093\u0005\u000b\u0000\u0000\u0093\u0094\u0005\t\u0000\u0000\u0094"+
"\u0096\u0003\u001a\r\u0000\u0095\u0092\u0001\u0000\u0000\u0000\u0095\u0096"+
"\u0001\u0000\u0000\u0000\u0096\u0099\u0001\u0000\u0000\u0000\u0097\u0098"+
"\u0005\f\u0000\u0000\u0098\u009a\u0003\u001e\u000f\u0000\u0099\u0097\u0001"+
"\u0000\u0000\u0000\u0099\u009a\u0001\u0000\u0000\u0000\u009a\u0013\u0001"+
"\u0000\u0000\u0000\u009b\u00a0\u0003\u0016\u000b\u0000\u009c\u009d\u0005"+
"9\u0000\u0000\u009d\u009f\u0003\u0016\u000b\u0000\u009e\u009c\u0001\u0000"+
"\u0000\u0000\u009f\u00a2\u0001\u0000\u0000\u0000\u00a0\u009e\u0001\u0000"+
"\u0000\u0000\u00a0\u00a1\u0001\u0000\u0000\u0000\u00a1\u0015\u0001\u0000"+
"\u0000\u0000\u00a2\u00a0\u0001\u0000\u0000\u0000\u00a3\u00a8\u0003\u0004"+
"\u0002\u0000\u00a4\u00a6\u0005\u000e\u0000\u0000\u00a5\u00a4\u0001\u0000"+
"\u0000\u0000\u00a5\u00a6\u0001\u0000\u0000\u0000\u00a6\u00a7\u0001\u0000"+
"\u0000\u0000\u00a7\u00a9\u0005B\u0000\u0000\u00a8\u00a5\u0001\u0000\u0000"+
"\u0000\u00a8\u00a9\u0001\u0000\u0000\u0000\u00a9\u00c2\u0001\u0000\u0000"+
"\u0000\u00aa\u00af\u0005B\u0000\u0000\u00ab\u00ad\u0005\u000e\u0000\u0000"+
"\u00ac\u00ab\u0001\u0000\u0000\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000"+
"\u00ad\u00ae\u0001\u0000\u0000\u0000\u00ae\u00b0\u0005B\u0000\u0000\u00af"+
"\u00ac\u0001\u0000\u0000\u0000\u00af\u00b0\u0001\u0000\u0000\u0000\u00b0"+
"\u00c2\u0001\u0000\u0000\u0000\u00b1\u00b6\u0005\u0016\u0000\u0000\u00b2"+
"\u00b4\u0005\u000e\u0000\u0000\u00b3\u00b2\u0001\u0000\u0000\u0000\u00b3"+
"\u00b4\u0001\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5"+
"\u00b7\u0005B\u0000\u0000\u00b6\u00b3\u0001\u0000\u0000\u0000\u00b6\u00b7"+
"\u0001\u0000\u0000\u0000\u00b7\u00c2\u0001\u0000\u0000\u0000\u00b8\u00b9"+
"\u0005B\u0000\u0000\u00b9\u00ba\u0005:\u0000\u0000\u00ba\u00bf\u0005B"+
"\u0000\u0000\u00bb\u00bd\u0005\u000e\u0000\u0000\u00bc\u00bb\u0001\u0000"+
"\u0000\u0000\u00bc\u00bd\u0001\u0000\u0000\u0000\u00bd\u00be\u0001\u0000"+
"\u0000\u0000\u00be\u00c0\u0005B\u0000\u0000\u00bf\u00bc\u0001\u0000\u0000"+
"\u0000\u00bf\u00c0\u0001\u0000\u0000\u0000\u00c0\u00c2\u0001\u0000\u0000"+
"\u0000\u00c1\u00a3\u0001\u0000\u0000\u0000\u00c1\u00aa\u0001\u0000\u0000"+
"\u0000\u00c1\u00b1\u0001\u0000\u0000\u0000\u00c1\u00b8\u0001\u0000\u0000"+
"\u0000\u00c2\u0017\u0001\u0000\u0000\u0000\u00c3\u00c8\u0005B\u0000\u0000"+
"\u00c4\u00c5\u00059\u0000\u0000\u00c5\u00c7\u0005B\u0000\u0000\u00c6\u00c4"+
"\u0001\u0000\u0000\u0000\u00c7\u00ca\u0001\u0000\u0000\u0000\u00c8\u00c6"+
"\u0001\u0000\u0000\u0000\u00c8\u00c9\u0001\u0000\u0000\u0000\u00c9\u0019"+
"\u0001\u0000\u0000\u0000\u00ca\u00c8\u0001\u0000\u0000\u0000\u00cb\u00d0"+
"\u0003\u001c\u000e\u0000\u00cc\u00cd\u00059\u0000\u0000\u00cd\u00cf\u0003"+
"\u001c\u000e\u0000\u00ce\u00cc\u0001\u0000\u0000\u0000\u00cf\u00d2\u0001"+
"\u0000\u0000\u0000\u00d0\u00ce\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001"+
"\u0000\u0000\u0000\u00d1\u001b\u0001\u0000\u0000\u0000\u00d2\u00d0\u0001"+
"\u0000\u0000\u0000\u00d3\u00d5\u0005B\u0000\u0000\u00d4\u00d6\u0007\u0003"+
"\u0000\u0000\u00d5\u00d4\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001\u0000"+
"\u0000\u0000\u00d6\u00dc\u0001\u0000\u0000\u0000\u00d7\u00d9\u0003\u0004"+
"\u0002\u0000\u00d8\u00da\u0007\u0003\u0000\u0000\u00d9\u00d8\u0001\u0000"+
"\u0000\u0000\u00d9\u00da\u0001\u0000\u0000\u0000\u00da\u00dc\u0001\u0000"+
"\u0000\u0000\u00db\u00d3\u0001\u0000\u0000\u0000\u00db\u00d7\u0001\u0000"+
"\u0000\u0000\u00dc\u001d\u0001\u0000\u0000\u0000\u00dd\u00de\u0005?\u0000"+
"\u0000\u00de\u001f\u0001\u0000\u0000\u0000\u00df\u00e4\u0003\"\u0011\u0000"+
"\u00e0\u00e1\u00059\u0000\u0000\u00e1\u00e3\u0003\"\u0011\u0000\u00e2"+
"\u00e0\u0001\u0000\u0000\u0000\u00e3\u00e6\u0001\u0000\u0000\u0000\u00e4"+
"\u00e2\u0001\u0000\u0000\u0000\u00e4\u00e5\u0001\u0000\u0000\u0000\u00e5"+
"!\u0001\u0000\u0000\u0000\u00e6\u00e4\u0001\u0000\u0000\u0000\u00e7\u00ec"+
"\u0005B\u0000\u0000\u00e8\u00ea\u0005\u000e\u0000\u0000\u00e9\u00e8\u0001"+
"\u0000\u0000\u0000\u00e9\u00ea\u0001\u0000\u0000\u0000\u00ea\u00eb\u0001"+
"\u0000\u0000\u0000\u00eb\u00ed\u0005B\u0000\u0000\u00ec\u00e9\u0001\u0000"+
"\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed\u00f5\u0001\u0000"+
"\u0000\u0000\u00ee\u00ef\u00053\u0000\u0000\u00ef\u00f0\u0003\u0012\t"+
"\u0000\u00f0\u00f1\u00054\u0000\u0000\u00f1\u00f2\u0005\u000e\u0000\u0000"+
"\u00f2\u00f3\u0005B\u0000\u0000\u00f3\u00f5\u0001\u0000\u0000\u0000\u00f4"+
"\u00e7\u0001\u0000\u0000\u0000\u00f4\u00ee\u0001\u0000\u0000\u0000\u00f5"+
"#\u0001\u0000\u0000\u0000\u00f6\u00f7\u0006\u0012\uffff\uffff\u0000\u00f7"+
"\u00fd\u0003(\u0014\u0000\u00f8\u00f9\u00053\u0000\u0000\u00f9\u00fa\u0003"+
"$\u0012\u0000\u00fa\u00fb\u00054\u0000\u0000\u00fb\u00fd\u0001\u0000\u0000"+
"\u0000\u00fc\u00f6\u0001\u0000\u0000\u0000\u00fc\u00f8\u0001\u0000\u0000"+
"\u0000\u00fd\u0106\u0001\u0000\u0000\u0000\u00fe\u00ff\n\u0004\u0000\u0000"+
"\u00ff\u0100\u0005\u0001\u0000\u0000\u0100\u0105\u0003$\u0012\u0005\u0101"+
"\u0102\n\u0003\u0000\u0000\u0102\u0103\u0005\u0002\u0000\u0000\u0103\u0105"+
"\u0003$\u0012\u0004\u0104\u00fe\u0001\u0000\u0000\u0000\u0104\u0101\u0001"+
"\u0000\u0000\u0000\u0105\u0108\u0001\u0000\u0000\u0000\u0106\u0104\u0001"+
"\u0000\u0000\u0000\u0106\u0107\u0001\u0000\u0000\u0000\u0107%\u0001\u0000"+
"\u0000\u0000\u0108\u0106\u0001\u0000\u0000\u0000\u0109\u0119\u00051\u0000"+
"\u0000\u010a\u0119\u0005/\u0000\u0000\u010b\u0119\u0005-\u0000\u0000\u010c"+
"\u0119\u00050\u0000\u0000\u010d\u0119\u0005.\u0000\u0000\u010e\u0119\u0005"+
"2\u0000\u0000\u010f\u0119\u0005\u0014\u0000\u0000\u0110\u0111\u0005\u0004"+
"\u0000\u0000\u0111\u0119\u0005\u0014\u0000\u0000\u0112\u0119\u0005\u0011"+
"\u0000\u0000\u0113\u0114\u0005\u0004\u0000\u0000\u0114\u0119\u0005\u0011"+
"\u0000\u0000\u0115\u0119\u0005\u0012\u0000\u0000\u0116\u0117\u0005\u0012"+
"\u0000\u0000\u0117\u0119\u0005\u0004\u0000\u0000\u0118\u0109\u0001\u0000"+
"\u0000\u0000\u0118\u010a\u0001\u0000\u0000\u0000\u0118\u010b\u0001\u0000"+
"\u0000\u0000\u0118\u010c\u0001\u0000\u0000\u0000\u0118\u010d\u0001\u0000"+
"\u0000\u0000\u0118\u010e\u0001\u0000\u0000\u0000\u0118\u010f\u0001\u0000"+
"\u0000\u0000\u0118\u0110\u0001\u0000\u0000\u0000\u0118\u0112\u0001\u0000"+
"\u0000\u0000\u0118\u0113\u0001\u0000\u0000\u0000\u0118\u0115\u0001\u0000"+
"\u0000\u0000\u0118\u0116\u0001\u0000\u0000\u0000\u0119\'\u0001\u0000\u0000"+
"\u0000\u011a\u011b\u0003*\u0015\u0000\u011b\u011c\u0003&\u0013\u0000\u011c"+
"\u011d\u0003*\u0015\u0000\u011d\u0129\u0001\u0000\u0000\u0000\u011e\u011f"+
"\u00053\u0000\u0000\u011f\u0120\u0003(\u0014\u0000\u0120\u0121\u00054"+
"\u0000\u0000\u0121\u0129\u0001\u0000\u0000\u0000\u0122\u0123\u0005B\u0000"+
"\u0000\u0123\u0124\u0005\u0015\u0000\u0000\u0124\u0125\u0003\n\u0005\u0000"+
"\u0125\u0126\u0005\u0001\u0000\u0000\u0126\u0127\u0003\n\u0005\u0000\u0127"+
"\u0129\u0001\u0000\u0000\u0000\u0128\u011a\u0001\u0000\u0000\u0000\u0128"+
"\u011e\u0001\u0000\u0000\u0000\u0128\u0122\u0001\u0000\u0000\u0000\u0129"+
")\u0001\u0000\u0000\u0000\u012a\u0137\u0003\n\u0005\u0000\u012b\u0137"+
"\u0003\f\u0006\u0000\u012c\u0137\u0005B\u0000\u0000\u012d\u012e\u0005"+
"B\u0000\u0000\u012e\u012f\u0005:\u0000\u0000\u012f\u0137\u0005B\u0000"+
"\u0000\u0130\u0137\u0005\u0013\u0000\u0000\u0131\u0132\u00053\u0000\u0000"+
"\u0132\u0133\u0003\u0012\t\u0000\u0133\u0134\u00054\u0000\u0000\u0134"+
"\u0137\u0001\u0000\u0000\u0000\u0135\u0137\u0003\u0004\u0002\u0000\u0136"+
"\u012a\u0001\u0000\u0000\u0000\u0136\u012b\u0001\u0000\u0000\u0000\u0136"+
"\u012c\u0001\u0000\u0000\u0000\u0136\u012d\u0001\u0000\u0000\u0000\u0136"+
"\u0130\u0001\u0000\u0000\u0000\u0136\u0131\u0001\u0000\u0000\u0000\u0136"+
"\u0135\u0001\u0000\u0000\u0000\u0137+\u0001\u0000\u0000\u0000\u0138\u0139"+
"\u0006\u0016\uffff\uffff\u0000\u0139\u013b\u0003.\u0017\u0000\u013a\u013c"+
"\u00038\u001c\u0000\u013b\u013a\u0001\u0000\u0000\u0000\u013b\u013c\u0001"+
"\u0000\u0000\u0000\u013c\u0149\u0001\u0000\u0000\u0000\u013d\u013e\u0003"+
":\u001d\u0000\u013e\u013f\u00053\u0000\u0000\u013f\u0142\u0003,\u0016"+
"\u0000\u0140\u0141\u0005\t\u0000\u0000\u0141\u0143\u00036\u001b\u0000"+
"\u0142\u0140\u0001\u0000\u0000\u0000\u0142\u0143\u0001\u0000\u0000\u0000"+
"\u0143\u0144\u0001\u0000\u0000\u0000\u0144\u0145\u00054\u0000\u0000\u0145"+
"\u0149\u0001\u0000\u0000\u0000\u0146\u0149\u0003\u0004\u0002\u0000\u0147"+
"\u0149\u0005B\u0000\u0000\u0148\u0138\u0001\u0000\u0000\u0000\u0148\u013d"+
"\u0001\u0000\u0000\u0000\u0148\u0146\u0001\u0000\u0000\u0000\u0148\u0147"+
"\u0001\u0000\u0000\u0000\u0149\u015b\u0001\u0000\u0000\u0000\u014a\u014b"+
"\n\u0004\u0000\u0000\u014b\u014c\u00057\u0000\u0000\u014c\u014d\u0003"+
"\u000e\u0007\u0000\u014d\u014e\u00058\u0000\u0000\u014e\u015a\u0001\u0000"+
"\u0000\u0000\u014f\u0150\n\u0003\u0000\u0000\u0150\u0151\u00057\u0000"+
"\u0000\u0151\u0152\u0003\u000e\u0007\u0000\u0152\u0153\u0005;\u0000\u0000"+
"\u0153\u0154\u0003\u000e\u0007\u0000\u0154\u0155\u00058\u0000\u0000\u0155"+
"\u015a\u0001\u0000\u0000\u0000\u0156\u0157\n\u0002\u0000\u0000\u0157\u0158"+
"\u0005\r\u0000\u0000\u0158\u015a\u0003\u000e\u0007\u0000\u0159\u014a\u0001"+
"\u0000\u0000\u0000\u0159\u014f\u0001\u0000\u0000\u0000\u0159\u0156\u0001"+
"\u0000\u0000\u0000\u015a\u015d\u0001\u0000\u0000\u0000\u015b\u0159\u0001"+
"\u0000\u0000\u0000\u015b\u015c\u0001\u0000\u0000\u0000\u015c-\u0001\u0000"+
"\u0000\u0000\u015d\u015b\u0001\u0000\u0000\u0000\u015e\u0160\u00055\u0000"+
"\u0000\u015f\u0161\u00030\u0018\u0000\u0160\u015f\u0001\u0000\u0000\u0000"+
"\u0160\u0161\u0001\u0000\u0000\u0000\u0161\u0162\u0001\u0000\u0000\u0000"+
"\u0162\u0163\u00056\u0000\u0000\u0163/\u0001\u0000\u0000\u0000\u0164\u0169"+
"\u00032\u0019\u0000\u0165\u0166\u00059\u0000\u0000\u0166\u0168\u00032"+
"\u0019\u0000\u0167\u0165\u0001\u0000\u0000\u0000\u0168\u016b\u0001\u0000"+
"\u0000\u0000\u0169\u0167\u0001\u0000\u0000\u0000\u0169\u016a\u0001\u0000"+
"\u0000\u0000\u016a1\u0001\u0000\u0000\u0000\u016b\u0169\u0001\u0000\u0000"+
"\u0000\u016c\u016d\u0005B\u0000\u0000\u016d\u016e\u00034\u001a\u0000\u016e"+
"\u016f\u0003\f\u0006\u0000\u016f3\u0001\u0000\u0000\u0000\u0170\u0171"+
"\u0007\u0004\u0000\u0000\u01715\u0001\u0000\u0000\u0000\u0172\u0173\u0005"+
"3\u0000\u0000\u0173\u0178\u0005B\u0000\u0000\u0174\u0175\u00059\u0000"+
"\u0000\u0175\u0177\u0005B\u0000\u0000\u0176\u0174\u0001\u0000\u0000\u0000"+
"\u0177\u017a\u0001\u0000\u0000\u0000\u0178\u0176\u0001\u0000\u0000\u0000"+
"\u0178\u0179\u0001\u0000\u0000\u0000\u0179\u017b\u0001\u0000\u0000\u0000"+
"\u017a\u0178\u0001\u0000\u0000\u0000\u017b\u017c\u00054\u0000\u0000\u017c"+
"7\u0001\u0000\u0000\u0000\u017d\u017e\u00057\u0000\u0000\u017e\u017f\u0003"+
"\u000e\u0007\u0000\u017f\u0180\u00058\u0000\u0000\u01809\u0001\u0000\u0000"+
"\u0000\u0181\u0182\u0007\u0005\u0000\u0000\u0182;\u0001\u0000\u0000\u0000"+
"\u0183\u0184\u0007\u0006\u0000\u0000\u0184=\u0001\u0000\u0000\u0000+S"+
"acpw\u0087\u008c\u0090\u0095\u0099\u00a0\u00a5\u00a8\u00ac\u00af\u00b3"+
"\u00b6\u00bc\u00bf\u00c1\u00c8\u00d0\u00d5\u00d9\u00db\u00e4\u00e9\u00ec"+
"\u00f4\u00fc\u0104\u0106\u0118\u0128\u0136\u013b\u0142\u0148\u0159\u015b"+
"\u0160\u0169\u0178";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
@@ -17,8 +17,6 @@
package org.apache.hertzbeat.alert.notice.impl;
import java.util.Arrays;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -29,11 +27,14 @@ import org.apache.hertzbeat.common.entity.alerter.NoticeTemplate;
import org.apache.hertzbeat.common.util.JsonUtil;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.stream.Collectors;
/**
* Send alert information through FeiShu
*/
@@ -47,19 +48,18 @@ final class FlyBookAlertNotifyHandlerImpl extends AbstractAlertNotifyHandlerImpl
*/
private static final String[] TITLE_COLOR = {"red", "yellow", "orange"};
@Override
public void send(NoticeReceiver receiver, NoticeTemplate noticeTemplate, GroupAlert alert) {
try {
String notificationContent = JsonUtil.toJson(renderContent(noticeTemplate, alert));
// todo priority custom the color
// todo priority custom the color
String cardMessage = createLarkMessage(receiver.getUserId(), notificationContent, (byte) 1);
String webHookUrl = alerterProperties.getFlyBookWebhookUrl() + receiver.getAccessToken();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> flyEntity = new HttpEntity<>(cardMessage, headers);
ResponseEntity<CommonRobotNotifyResp> entity = restTemplate.postForEntity(webHookUrl,
flyEntity, CommonRobotNotifyResp.class);
flyEntity, CommonRobotNotifyResp.class);
if (entity.getStatusCode() == HttpStatus.OK) {
assert entity.getBody() != null;
if (entity.getBody().getCode() == null || entity.getBody().getCode() == 0) {
@@ -87,115 +87,120 @@ final class FlyBookAlertNotifyHandlerImpl extends AbstractAlertNotifyHandlerImpl
*/
private String createLarkMessage(String userId, String notificationContent, byte priority) {
String larkCardMessage = """
{
"msg_type": "interactive",
"card": {
"config": {
"update_multi": true
},
"i18n_elements": {
"zh_cn": [
{
"tag": "column_set",
"flex_mode": "none",
"horizontal_spacing": "default",
"background_style": "default",
"columns": [
{
"tag": "column",
"elements": [
{
"tag": "div",
"text": {
"tag": "plain_text",
"content": "",
"text_size": "normal",
"text_align": "left",
"text_color": "default"
}
}
],
"width": "weighted",
"weight": 1
}
]
},
{
"tag": "column_set",
"flex_mode": "none",
"horizontal_spacing": "default",
"background_style": "default",
"columns": [
{
"tag": "column",
"elements": [
{
"tag": "div",
"text": {
"tag": "plain_text",
"content": %s,
"text_size": "normal",
"text_align": "left",
"text_color": "default"
}
}
],
"width": "weighted",
"weight": 1
}
]
},
%s
{
"tag": "action",
"actions": [
{
"tag": "button",
"text": {
"tag": "plain_text",
"content": "登入控制台"
},
"type": "default",
"complex_interaction": true,
"width": "default",
"size": "medium",
"multi_url": {
"url": "%s"
}
}
]
}
]
},
"i18n_header": {
"zh_cn": {
"title": {
"tag": "plain_text",
"content": "HertzBeat 告警"
},
"template": "%s"
}
}
{
"msg_type": "interactive",
"card": {
"schema": "2.0",
"config": {
"update_multi": true,
"locales": [
"en_us",
"zh_cn"
],
"style": {
"text_size": {
"normal_v2": {
"default": "normal",
"pc": "normal",
"mobile": "heading"
}
}
}
},
"body": {
"direction": "vertical",
"padding": "12px 12px 12px 12px",
"elements": [
{
"tag": "markdown",
"content": "%s",
"i18n_content": {
"en_us": ""
},
"text_align": "left",
"text_size": "normal_v2",
"margin": "0px 0px 0px 0px"
},
{
"tag": "hr",
"margin": "0px 0px 0px 0px"
},
{
"tag": "column_set",
"horizontal_align": "left",
"columns": [
{
"tag": "column",
"width": "weighted",
"elements": [
{
"tag": "button",
"text": {
"tag": "plain_text",
"content": "登入控制台",
"i18n_content": {
"en_us": "Login In"
}
},
"type": "default",
"width": "default",
"size": "medium",
"behaviors": [
{
"type": "open_url",
"default_url": "%s",
"pc_url": "",
"ios_url": "",
"android_url": ""
}
]
}
],
"direction": "horizontal",
"vertical_spacing": "8px",
"horizontal_align": "left",
"vertical_align": "top",
"weight": 1
}
],
"margin": "0px 0px 0px 0px"
}
]
},
"header": {
"title": {
"tag": "plain_text",
"content": "HertzBeat 告警",
"i18n_content": {
"en_us": "HertzBeat Alarm"
}
},
"subtitle": {
"tag": "plain_text",
"content": ""
},
"template": "%s",
"padding": "12px 12px 12px 12px"
}
}
}
}
""";
""";
String atUserElement = "";
if (StringUtils.isNotBlank(userId)) {
String atUserId = Arrays.stream(userId.split(","))
.map(id -> "<at id=" + id + "></at>")
.collect(Collectors.joining(" "));
atUserElement = String.format("""
{
"tag": "div",
"text": {
"content": "%s",
"tag": "lark_md"
}
},
""", atUserId);
atUserElement = "\\n" + Arrays.stream(userId.split(","))
.map(id -> "<at id=" + id + "></at>")
.collect(Collectors.joining(" "));
}
return String.format(larkCardMessage, notificationContent, atUserElement, alerterProperties.getConsoleUrl(), TITLE_COLOR[priority]);
if (notificationContent.startsWith("\"") && notificationContent.endsWith("\"")) {
notificationContent = StringUtils.removeStart(notificationContent, "\"");
notificationContent = StringUtils.removeEnd(notificationContent, "\"");
}
return String.format(larkCardMessage,
notificationContent.replace("\"", "\\\"") + atUserElement,
alerterProperties.getConsoleUrl(), TITLE_COLOR[priority]);
}
@Override
@@ -18,12 +18,15 @@
package org.apache.hertzbeat.alert.service;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;
import org.apache.hertzbeat.common.entity.alerter.AlertDefine;
import org.apache.hertzbeat.common.support.exception.AlertExpressionException;
import org.springframework.data.domain.Page;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Alarm define manager service
*/
@@ -107,5 +110,11 @@ public interface AlertDefineService {
* @return Real-time alarm definition list
*/
List<AlertDefine> getRealTimeAlertDefines();
/**
* Get define preview
* @return Data queried based on expressions
* @throws AlertExpressionException expression error
*/
List<Map<String, Object>> getDefinePreview(String datasource, String type, String expr);
}
@@ -17,7 +17,6 @@
package org.apache.hertzbeat.alert.service.impl;
import static org.apache.hertzbeat.common.constants.CommonConstants.ALERT_THRESHOLD_TYPE_REALTIME;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -29,7 +28,9 @@ import org.apache.hertzbeat.alert.calculate.PeriodicAlertRuleScheduler;
import org.apache.hertzbeat.alert.dao.AlertDefineDao;
import org.apache.hertzbeat.alert.service.AlertDefineImExportService;
import org.apache.hertzbeat.alert.service.AlertDefineService;
import org.apache.hertzbeat.alert.service.DataSourceService;
import org.apache.hertzbeat.common.cache.CacheFactory;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.constants.ExportFileConstants;
import org.apache.hertzbeat.common.constants.SignConstants;
import org.apache.hertzbeat.common.entity.alerter.AlertDefine;
@@ -72,18 +73,21 @@ public class AlertDefineServiceImpl implements AlertDefineService {
@Autowired
private PeriodicAlertRuleScheduler periodicAlertRuleScheduler;
private final DataSourceService dataSourceService;
private final Map<String, AlertDefineImExportService> alertDefineImExportServiceMap = new HashMap<>();
private static final String CONTENT_TYPE = MediaType.APPLICATION_OCTET_STREAM_VALUE + SignConstants.SINGLE_MARK + "charset=" + StandardCharsets.UTF_8;
public AlertDefineServiceImpl(List<AlertDefineImExportService> alertDefineImExportServiceList) {
public AlertDefineServiceImpl(List<AlertDefineImExportService> alertDefineImExportServiceList, DataSourceService dataSourceService) {
alertDefineImExportServiceList.forEach(it -> alertDefineImExportServiceMap.put(it.type(), it));
this.dataSourceService = dataSourceService;
}
@Override
public void validate(AlertDefine alertDefine, boolean isModify) throws IllegalArgumentException {
if (StringUtils.hasText(alertDefine.getExpr())) {
if (ALERT_THRESHOLD_TYPE_REALTIME.equals(alertDefine.getType())) {
if (CommonConstants.ALERT_THRESHOLD_TYPE_REALTIME.equals(alertDefine.getType())) {
try {
JexlExpressionRunner.compile(alertDefine.getExpr());
} catch (Exception e) {
@@ -213,9 +217,23 @@ public class AlertDefineServiceImpl implements AlertDefineService {
public List<AlertDefine> getRealTimeAlertDefines() {
List<AlertDefine> alertDefines = CacheFactory.getAlertDefineCache();
if (alertDefines == null) {
alertDefines = alertDefineDao.findAlertDefinesByTypeAndEnableTrue(ALERT_THRESHOLD_TYPE_REALTIME);
alertDefines = alertDefineDao.findAlertDefinesByTypeAndEnableTrue(CommonConstants.ALERT_THRESHOLD_TYPE_REALTIME);
CacheFactory.setAlertDefineCache(alertDefines);
}
return alertDefines;
}
@Override
public List<Map<String, Object>> getDefinePreview(String datasource, String type, String expr) {
if (!StringUtils.hasText(expr) || !StringUtils.hasText(datasource) || !StringUtils.hasText(type)) {
return Collections.emptyList();
}
switch (type) {
case CommonConstants.ALERT_THRESHOLD_TYPE_PERIODIC:
return dataSourceService.calculate(datasource, expr);
default:
log.error("Get define preview unsupported type: {}", type);
return Collections.emptyList();
}
}
}
@@ -24,11 +24,14 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.ParseTree;
import org.apache.hertzbeat.alert.expr.AlertExpressionEvalVisitor;
import org.apache.hertzbeat.alert.expr.AlertExpressionLexer;
import org.apache.hertzbeat.alert.expr.AlertExpressionParser;
import org.apache.hertzbeat.alert.service.DataSourceService;
import org.apache.hertzbeat.common.support.exception.AlertExpressionException;
import org.apache.hertzbeat.common.util.ResourceBundleUtil;
import org.apache.hertzbeat.warehouse.db.QueryExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -36,6 +39,7 @@ import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.concurrent.TimeUnit;
/**
@@ -45,6 +49,8 @@ import java.util.concurrent.TimeUnit;
@Slf4j
public class DataSourceServiceImpl implements DataSourceService {
protected ResourceBundle bundle = ResourceBundleUtil.getBundle("alerter");
@Setter
@Autowired(required = false)
private List<QueryExecutor> executors;
@@ -80,6 +86,9 @@ public class DataSourceServiceImpl implements DataSourceService {
expr = expr.replaceAll("\\s+", " ");
try {
return evaluate(expr, executor);
} catch (AlertExpressionException ae) {
log.error("Calculate query parse error {}: {}", datasource, ae.getMessage());
throw ae;
} catch (Exception e) {
log.error("Error executing query on datasource {}: {}", datasource, e.getMessage());
throw new RuntimeException("Query execution failed", e);
@@ -90,9 +99,11 @@ public class DataSourceServiceImpl implements DataSourceService {
CommonTokenStream tokens = tokenStreamCache.get(expr, this::createTokenStream);
AlertExpressionParser parser = new AlertExpressionParser(tokens);
ParseTree tree = expressionCache.get(expr, e -> parser.expr());
if (null != tokens && tokens.LA(1) != Token.EOF) {
throw new AlertExpressionException(bundle.getString("alerter.calculate.parse.error"));
}
AlertExpressionEvalVisitor visitor = new AlertExpressionEvalVisitor(executor, tokens);
return visitor.visit(tree);
}
private CommonTokenStream createTokenStream(String expr) {
@@ -32,3 +32,4 @@ alerter.notify.console = Console Login
alerter.priority.0 = Emergency Alert
alerter.priority.1 = Critical Alert
alerter.priority.2 = Warning Alert
alerter.calculate.parse.error = Expression is not fully parsed, may have syntax errors or incomplete inputs
@@ -32,3 +32,4 @@ alerter.notify.console = 登入控制台
alerter.priority.0 = 紧急告警
alerter.priority.1 = 严重告警
alerter.priority.2 = 警告告警
alerter.calculate.parse.error = 表达式未完全解析,可能存在语法错误或输入不完整
@@ -32,3 +32,4 @@ alerter.notify.console = 控制台登錄
alerter.priority.0 = 緊急警報
alerter.priority.1 = 嚴重警報
alerter.priority.2 = 警告警報
alerter.calculate.parse.error = 表達式未完全解析,可能存在語法錯誤或輸入不完整
@@ -156,7 +156,6 @@ conditionUnit
promql
: metricSelector instantVectorOp?
| aggregationOperator LPAREN promql (BY labelList)? RPAREN
| promql binaryOperator promql
| functionCall
| promql LBRACKET duration RBRACKET
| promql LBRACKET duration COLON duration RBRACKET
@@ -17,15 +17,22 @@
package org.apache.hertzbeat.alert.controller;
import static org.mockito.ArgumentMatchers.anyString;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.hertzbeat.alert.service.impl.AlertDefineServiceImpl;
import org.apache.hertzbeat.common.constants.CommonConstants;
import org.apache.hertzbeat.common.entity.alerter.AlertDefine;
import org.apache.hertzbeat.common.entity.alerter.AlertDefineMonitorBind;
import org.apache.hertzbeat.common.entity.manager.Monitor;
import org.apache.hertzbeat.common.support.exception.AlertExpressionException;
import org.apache.hertzbeat.common.util.JsonUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -100,6 +107,37 @@ class AlertDefineControllerTest {
.andReturn();
}
@Test
void testGetDefinePreview() throws Exception {
List<Map<String, Object>> previewData = new ArrayList<>();
Map<String, Object> row = new HashMap<>();
row.put("__value__", 123);
row.put("job", "spring-boot");
previewData.add(row);
Mockito.when(alertDefineService.getDefinePreview(anyString(), anyString(), anyString()))
.thenReturn(previewData);
mockMvc.perform(MockMvcRequestBuilders.get("/api/alert/define/preview/{datasource}", "promql")
.param("type", "periodic")
.param("expr", "up == 1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(0))
.andExpect(jsonPath("$.data[0].__value__").value(123))
.andExpect(jsonPath("$.data[0].job").value("spring-boot"));
Mockito.when(alertDefineService.getDefinePreview(anyString(), anyString(), anyString()))
.thenThrow(new AlertExpressionException("Expression error"));
mockMvc.perform(MockMvcRequestBuilders.get("/api/alert/define/preview/{datasource}", "promql")
.param("type", "periodic")
.param("expr", "http_server_requests_seconds_count{!@~!!#$%^&}"))
.andExpect(status().isBadRequest())
.andExpect(jsonPath("$.code").exists())
.andExpect(jsonPath("$.msg").value("Expression error"));
}
@Test
void modifyAlertDefine() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.put("/api/alert/define")
@@ -24,12 +24,14 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;
/**
@@ -240,11 +242,187 @@ class AlertExpressionEvalVisitorTest {
assertEquals(10.0, result.get(0).get("__value__"));
}
@Test
void testUnlessOpPromql() {
String promql = "http_server_requests_seconds_count > 10 unless http_server_requests_seconds_max > 0";
Map<String, Object> countValue1 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 1307);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/prometheus");
put("outcome", "SUCCESS");
put("status", "200");
}
};
Map<String, Object> maxValue1 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 10.007799125);
put("method", "GET");
put("__name__", "http_server_requests_seconds_max");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/health");
put("outcome", "SUCCESS");
put("status", "200");
}
};
when(mockExecutor.execute("http_server_requests_seconds_count")).thenReturn(List.of(countValue1));
when(mockExecutor.execute("http_server_requests_seconds_max")).thenReturn(List.of(maxValue1));
List<Map<String, Object>> result = evaluate(promql);
assertEquals(1, result.size());
assertEquals(1307, result.get(0).get("__value__"));
maxValue1.put("uri", "/actuator/prometheus");
result = evaluate(promql);
assertEquals(0, result.size());
Map<String, Object> sumValue1 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 20.018);
put("method", "GET");
put("__name__", "http_server_requests_seconds_sum");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/**");
put("outcome", "SUCCESS");
put("status", "200");
}
};
maxValue1.put("uri", "/actuator/health");
when(mockExecutor.execute("http_server_requests_seconds_sum")).thenReturn(List.of(sumValue1));
promql = "(http_server_requests_seconds_count > 10 unless http_server_requests_seconds_max > 0) unless http_server_requests_seconds_sum > 10";
result = evaluate(promql);
assertEquals(1, result.size());
assertEquals(1307, result.get(0).get("__value__"));
}
@Test
void testOrOpPromql() {
String promql = "http_server_requests_seconds_count > 10 or jvm_threads_states_threads > 0";
Map<String, Object> countValue1 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 1307);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/prometheus");
put("outcome", "SUCCESS");
put("status", "200");
}
};
Map<String, Object> countValue2 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 16);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/**");
put("outcome", "SUCCESS");
put("status", "200");
}
};
Map<String, Object> countValue3 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 7);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/health");
put("outcome", "SUCCESS");
put("status", "200");
}
};
Map<String, Object> threadsValue1 = new HashMap<>() {
{
put("instance", "host.docker.internal:8989");
put("__value__", 10.007799125);
put("__name__", "jvm_threads_states_threads");
put("__timestamp__", "1.750320922467E9");
put("job", "spring-boot-app");
put("state=", "runnable");
}
};
Map<String, Object> threadsValue2 = new HashMap<>() {
{
put("instance", "host.docker.internal:8989");
put("__value__", 1);
put("__name__", "jvm_threads_states_threads");
put("__timestamp__", "1.750320922467E9");
put("job", "spring-boot-app");
put("state=", "timed-waiting");
}
};
Map<String, Object> threadsValue3 = new HashMap<>() {
{
put("instance", "host.docker.internal:8989");
put("__value__", 19.02);
put("__name__", "jvm_threads_states_threads");
put("__timestamp__", "1.750320922467E9");
put("job", "spring-boot-app");
put("state=", "waiting");
}
};
when(mockExecutor.execute("http_server_requests_seconds_count")).thenReturn(List.of(countValue1, countValue2, countValue3));
when(mockExecutor.execute("jvm_threads_states_threads")).thenReturn(List.of(threadsValue1, threadsValue2, threadsValue3));
List<Map<String, Object>> result = evaluate(promql);
assertEquals(5, result.size());
assertTrue(result.stream().allMatch(t -> null != t.get("__value__")));
when(mockExecutor.execute("jvm_threads_states_threads")).thenReturn(new ArrayList<>());
result = evaluate(promql);
assertEquals(2, result.size());
assertTrue(result.stream().allMatch(t -> null != t.get("__value__")));
assertEquals(1307, result.get(0).get("__value__"));
when(mockExecutor.execute("http_server_requests_seconds_count")).thenReturn(new ArrayList<>());
when(mockExecutor.execute("jvm_threads_states_threads")).thenReturn(List.of(threadsValue1, threadsValue2, threadsValue3));
result = evaluate(promql);
assertEquals(3, result.size());
assertTrue(result.stream().allMatch(t -> null != t.get("__value__")));
assertEquals(10.007799125, result.get(0).get("__value__"));
}
@Test
void testMultipleUnlessConditions() {
when(mockExecutor.execute("metric1")).thenReturn(List.of(new HashMap<>(Map.of("__value__", 40.0))));
when(mockExecutor.execute("metric2")).thenReturn(List.of(new HashMap<>(Map.of("__value__", 50.0))));
when(mockExecutor.execute("metric3")).thenReturn(List.of(new HashMap<>(Map.of("__value__", 60.0))));
when(mockExecutor.execute("metric1")).thenReturn(List.of(new HashMap<>(Map.of("job", "api", "__value__", 40.0))));
when(mockExecutor.execute("metric2")).thenReturn(List.of(new HashMap<>(Map.of("job", "web", "__value__", 50.0))));
when(mockExecutor.execute("metric3")).thenReturn(List.of(new HashMap<>(Map.of("job", "api", "__value__", 60.0))));
when(mockExecutor.execute("select cpu_usage from metrics where service = 'web'")).thenReturn(
List.of(new HashMap<>(Map.of("__value__", 40.0))));
when(mockExecutor.execute("select memory_usage from metrics where service = 'db'")).thenReturn(
@@ -252,15 +430,13 @@ class AlertExpressionEvalVisitorTest {
when(mockExecutor.execute("select disk_usage from metrics where service = 'cache'")).thenReturn(
List.of(new HashMap<>(Map.of("__value__", 60.0))));
// promql
List<Map<String, Object>> result = evaluate("metric1 > 30 unless metric2 > 45 unless metric3 < 70");
assertEquals(1, result.size());
assertNull(result.get(0).get("__value__"));
List<Map<String, Object>> result = evaluate("(metric1 > 30 unless metric2 > 45) unless metric3 > 50");
assertEquals(0, result.size());
// sql
result = evaluate("(select cpu_usage from metrics where service = 'web') > 30"
+ " unless (select memory_usage from metrics where service = 'db') > 45"
+ " unless (select disk_usage from metrics where service = 'cache') < 70");
assertEquals(1, result.size());
assertNull(result.get(0).get("__value__"));
result = evaluate("((select cpu_usage from metrics where service = 'web') > 30"
+ " unless (select memory_usage from metrics where service = 'db') > 55)"
+ " unless (select disk_usage from metrics where service = 'cache') > 50");
assertEquals(0, result.size());
}
@Test
@@ -17,19 +17,7 @@
package org.apache.hertzbeat.alert.service;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anySet;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import com.google.common.collect.Lists;
import org.apache.hertzbeat.alert.calculate.PeriodicAlertRuleScheduler;
import org.apache.hertzbeat.alert.dao.AlertDefineDao;
import org.apache.hertzbeat.alert.service.impl.AlertDefineServiceImpl;
@@ -45,6 +33,27 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static org.apache.hertzbeat.common.constants.CommonConstants.ALERT_THRESHOLD_TYPE_PERIODIC;
import static org.apache.hertzbeat.common.constants.CommonConstants.ALERT_THRESHOLD_TYPE_REALTIME;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anySet;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
* Test case for {@link AlertDefineService}
*/
@@ -62,6 +71,9 @@ class AlertDefineServiceTest {
@Mock
private List<AlertDefineImExportService> alertDefineImExportServiceList;
@Mock
private DataSourceService dataSourceService;
@InjectMocks
private AlertDefineServiceImpl alertDefineService;
@@ -131,4 +143,36 @@ class AlertDefineServiceTest {
assertNotNull(alertDefineService.getAlertDefines(null, null, "id", "desc", 1, 10));
verify(alertDefineDao, times(1)).findAll(any(Specification.class), any(PageRequest.class));
}
@Test
void getDefinePreview() {
String expr = "http_server_requests_seconds_count > 10";
Map<String, Object> countValue1 = new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 1307);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/prometheus");
put("outcome", "SUCCESS");
put("status", "200");
}
};
when(dataSourceService.calculate(eq("promql"), eq(expr))).thenReturn(Lists.newArrayList(countValue1));
List<Map<String, Object>> result = alertDefineService.getDefinePreview("promql", ALERT_THRESHOLD_TYPE_PERIODIC, expr);
assertNotNull(result);
assertEquals(1307, result.get(0).get("__value__"));
result = alertDefineService.getDefinePreview("promql", ALERT_THRESHOLD_TYPE_PERIODIC, null);
assertEquals(0, result.size());
result = alertDefineService.getDefinePreview("promql", ALERT_THRESHOLD_TYPE_REALTIME, null);
assertEquals(0, result.size());
}
}
@@ -21,6 +21,7 @@ import com.github.benmanes.caffeine.cache.Cache;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.apache.hertzbeat.alert.service.impl.DataSourceServiceImpl;
import org.apache.hertzbeat.common.support.exception.AlertExpressionException;
import org.apache.hertzbeat.warehouse.db.QueryExecutor;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -34,6 +35,9 @@ import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
/**
* test case for {@link DataSourceService}
@@ -392,8 +396,7 @@ class DataSourceServiceTest {
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "node_cpu_seconds_total{mode=\"user\"} > 250 or node_cpu_seconds_total{mode=\"idle\"} < 20");
assertEquals(1, result.size());
assertNull(result.get(0).get("__value__"));
assertEquals(0, result.size());
}
@Test
@@ -414,8 +417,7 @@ class DataSourceServiceTest {
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "node_cpu_seconds_total{mode=\"user\"} > 50 or node_cpu_seconds_total{mode=\"idle\"} < 320");
assertEquals(1, result.size());
assertNotNull(result.get(0).get("__value__"));
assertEquals(4, result.size());
}
@Test
@@ -436,8 +438,8 @@ class DataSourceServiceTest {
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "node_cpu_seconds_total{mode=\"user\"} > 50 unless node_cpu_seconds_total{mode=\"idle\"} < 320");
assertEquals(1, result.size());
assertNull(result.get(0).get("__value__"));
assertEquals(2, result.size());
assertEquals(100.0, result.get(0).get("__value__"));
}
@Test
@@ -458,8 +460,8 @@ class DataSourceServiceTest {
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "node_cpu_seconds_total{mode=\"user\"} > 50 unless node_cpu_seconds_total{mode=\"idle\"} < 20");
assertEquals(1, result.size());
assertNotNull(result.get(0).get("__value__"));
assertEquals(2, result.size());
assertEquals(100.0, result.get(0).get("__value__"));
}
@Test
@@ -480,8 +482,7 @@ class DataSourceServiceTest {
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "node_cpu_seconds_total{mode=\"user\"} > 250 unless node_cpu_seconds_total{mode=\"idle\"} < 20");
assertEquals(1, result.size());
assertNull(result.get(0).get("__value__"));
assertEquals(0, result.size());
}
@Test
@@ -558,7 +559,6 @@ class DataSourceServiceTest {
tokenStreamCache.invalidateAll();
long beforeHits = tokenStreamCache.stats().hitCount();
dataSourceService.calculate("promql", expr);
expressionCache.invalidateAll();
dataSourceService.calculate("promql", expr);
long actualHits = tokenStreamCache.stats().hitCount() - beforeHits;
assertEquals(1, actualHits, "expression cache should hit but miss");
@@ -609,4 +609,34 @@ class DataSourceServiceTest {
long actualHits = tokenStreamCache.stats().hitCount() - beforeHits;
assertEquals(0, actualHits, "expression cache should miss but hit");
}
@Test
void testAlertExpressionException() {
List<Map<String, Object>> prometheusData = List.of(
new HashMap<>() {
{
put("exception", "none");
put("instance", "host.docker.internal:8989");
put("__value__", 1307);
put("method", "GET");
put("__name__", "http_server_requests_seconds_count");
put("__timestamp__", "1.750320922467E9");
put("error", "none");
put("job", "spring-boot-app");
put("uri", "/actuator/prometheus");
put("outcome", "SUCCESS");
put("status", "200");
}
});
QueryExecutor mockExecutor = Mockito.mock(QueryExecutor.class);
when(mockExecutor.support(eq("promql"))).thenReturn(true);
when(mockExecutor.execute(eq("http_server_requests_seconds_count"))).thenReturn(prometheusData);
dataSourceService.setExecutors(List.of(mockExecutor));
List<Map<String, Object>> result = dataSourceService.calculate("promql", "http_server_requests_seconds_count > 10");
assertNotNull(result);
assertEquals(1307, result.get(0).get("__value__"));
assertThrows(AlertExpressionException.class, () -> dataSourceService.calculate("promql", "http_server_requests_seconds_count{!@~!!#$%^&}"));
}
}
@@ -17,6 +17,7 @@
package org.apache.hertzbeat.collector.collect.database;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -74,6 +75,7 @@ public class JdbcCommonCollect extends AbstractCollect {
// code execution related - may result in remote code execution
"init=", "javaobjectserializer=", "runscript", "serverstatusdiffinterceptor",
"queryinterceptors=", "statementinterceptors=", "exceptioninterceptors=",
"xp_cmdshell", "create function", "dbms_java", "sp_sysexecute", "load_file",
// multiple statement execution - may lead to SQL injection
"allowmultiqueries",
@@ -82,6 +84,96 @@ public class JdbcCommonCollect extends AbstractCollect {
"autodeserialize", "detectcustomcollations",
};
// universal bypass detection mode - applicable to all databases for dangerous command bypass detection
private static final String[] UNIVERSAL_BYPASS_PATTERNS = {
".*create\\s*([/\\\\]|\\\\n|/n|\\n)\\s*trigger.*",
".*create\\s*([/\\\\]|\\\\n|/n|\\n)\\s*function.*",
".*drop\\s*([/\\\\]|\\\\n|/n|\\n)\\s*table.*",
".*drop\\s*([/\\\\]|\\\\n|/n|\\n)\\s*database.*",
".*run\\s*([/\\\\]|\\\\n|/n|\\n)\\s*script.*",
".*alter\\s*([/\\\\]|\\\\n|/n|\\n)\\s*system.*",
".*grant\\s*([/\\\\]|\\\\n|/n|\\n)\\s*all.*",
".*revoke\\s*([/\\\\]|\\\\n|/n|\\n)\\s*all.*",
".*xp\\s*([/\\\\]|\\\\n|/n|\\n)\\s*cmdshell.*",
".*load\\s*([/\\\\]|\\\\n|/n|\\n)\\s*file.*"
};
// database platform specific bypass detection mode
private static final HashMap<String, String[]> PLATFORM_BYPASS_PATTERNS = new HashMap<>();
static {
// H2 database special character bypass mode
PLATFORM_BYPASS_PATTERNS.put("h2", new String[]{
".*(\\\\\\\\|/|\\\\|\\\\n|/n|\\n)\\s*init\\s*=.*",
".*in\\s*([/\\\\]|\\\\n|/n|\\n)\\s*it\\s*=.*",
".*(\\\\\\\\|/|\\\\|\\\\n|/n|\\n)\\s*runscript\\s+from.*",
".*ru\\s*([/\\\\]|\\\\n|/n|\\n)\\s*script\\s+from.*"
});
// MySQL/MariaDB bypass mode
String[] mysqlPatterns = {
".*allow\\s*([/\\\\]|\\\\n|/n|\\n)\\s*load\\s*([/\\\\]|\\\\n|/n|\\n)\\s*local\\s*([/\\\\]|\\\\n|/n|\\n)\\s*infile.*",
".*allow\\s*([/\\\\]|\\\\n|/n|\\n)\\s*multi\\s*([/\\\\]|\\\\n|/n|\\n)\\s*queries.*",
".*query\\s*([/\\\\]|\\\\n|/n|\\n)\\s*interceptors.*",
".*statement\\s*([/\\\\]|\\\\n|/n|\\n)\\s*interceptors.*",
".*exception\\s*([/\\\\]|\\\\n|/n|\\n)\\s*interceptors.*",
".*auto\\s*([/\\\\]|\\\\n|/n|\\n)\\s*deserialize.*"
};
PLATFORM_BYPASS_PATTERNS.put("mysql", mysqlPatterns);
PLATFORM_BYPASS_PATTERNS.put("mariadb", mysqlPatterns);
// PostgreSQL bypass mode
PLATFORM_BYPASS_PATTERNS.put("postgresql", new String[]{
".*socket\\s*([/\\\\]|\\\\n|/n|\\n)\\s*factory.*",
".*logger\\s*([/\\\\]|\\\\n|/n|\\n)\\s*file.*",
".*ssl\\s*([/\\\\]|\\\\n|/n|\\n)\\s*mode.*",
".*logger\\s*([/\\\\]|\\\\n|/n|\\n)\\s*level.*"
});
// SQL Server bypass mode
PLATFORM_BYPASS_PATTERNS.put("sqlserver", new String[]{
".*integrated\\s*([/\\\\]|\\\\n|/n|\\n)\\s*security.*",
".*authentication\\s*([/\\\\]|\\\\n|/n|\\n)\\s*scheme.*",
".*select\\s*([/\\\\]|\\\\n|/n|\\n)\\s*method.*",
".*send\\s*([/\\\\]|\\\\n|/n|\\n)\\s*string\\s*([/\\\\]|\\\\n|/n|\\n)\\s*parameters\\s*([/\\\\]|\\\\n|/n|\\n)\\s*as\\s*([/\\\\]|\\\\n|/n|\\n)\\s*unicode.*",
".*x\\s*([/\\\\]|\\\\n|/n|\\n)\\s*open\\s*([/\\\\]|\\\\n|/n|\\n)\\s*state.*",
".*application\\s*([/\\\\]|\\\\n|/n|\\n)\\s*intent.*"
});
// ClickHouse bypass mode
PLATFORM_BYPASS_PATTERNS.put("clickhouse", new String[]{
".*custom\\s*([/\\\\]|\\\\n|/n|\\n)\\s*http\\s*([/\\\\]|\\\\n|/n|\\n)\\s*params.*",
".*http\\s*([/\\\\]|\\\\n|/n|\\n)\\s*connection\\s*([/\\\\]|\\\\n|/n|\\n)\\s*provider.*",
".*check\\s*([/\\\\]|\\\\n|/n|\\n)\\s*all\\s*([/\\\\]|\\\\n|/n|\\n)\\s*nodes.*",
".*fail\\s*([/\\\\]|\\\\n|/n|\\n)\\s*over.*",
".*use\\s*([/\\\\]|\\\\n|/n|\\n)\\s*objects\\s*([/\\\\]|\\\\n|/n|\\n)\\s*in\\s*([/\\\\]|\\\\n|/n|\\n)\\s*arrays.*"
});
// Oracle bypass mode
PLATFORM_BYPASS_PATTERNS.put("oracle", new String[]{
".*oracle\\s*([/\\\\]|\\\\n|/n|\\n)\\s*jdbc.*",
".*oracle\\s*([/\\\\]|\\\\n|/n|\\n)\\s*net.*",
".*oracle\\.jdbc\\.timezoneinfotable\\s*=.*",
".*oracle\\.net\\.wallet_location\\s*=.*",
".*oracle\\.net\\.ssl_server_dn_match\\s*=\\s*false.*",
".*oracle\\.jdbc\\.enablesqlinjectionattack\\s*=\\s*true.*",
".*oracle\\.jdbc\\.implicitstatementcachesize\\s*=\\s*0.*",
".*oracle\\.jdbc\\.timezoneinfotable\\s*=.*",
".*oracle\\.net\\.wallet_location\\s*=.*",
".*oracle\\.net\\.ssl_server_dn_match\\s*=\\s*false.*",
".*oracle\\.jdbc\\.enablesqlinjectionattack\\s*=\\s*true.*",
".*oracle\\.jdbc\\.implicitstatementcachesize\\s*=\\s*0.*"
});
// DM bypass mode
PLATFORM_BYPASS_PATTERNS.put("dm", new String[]{
".*login\\s*([/\\\\]|\\\\n|/n|\\n)\\s*mode.*",
".*compatible\\s*([/\\\\]|\\\\n|/n|\\n)\\s*mode.*",
".*en\\s*([/\\\\]|\\\\n|/n|\\n)\\s*crypt.*",
".*ci\\s*([/\\\\]|\\\\n|/n|\\n)\\s*pher.*"
});
}
private final GlobalConnectionCache connectionCommonCache = GlobalConnectionCache.getInstance();
@@ -91,8 +183,9 @@ public class JdbcCommonCollect extends AbstractCollect {
throw new IllegalArgumentException("Database collect must has jdbc params");
}
if (StringUtils.hasText(metrics.getJdbc().getUrl())) {
String url = metrics.getJdbc().getUrl().toLowerCase();
for (String keyword : VULNERABLE_KEYWORDS) {
if (metrics.getJdbc().getUrl().contains(keyword)) {
if (url.contains(keyword.toLowerCase())) {
throw new IllegalArgumentException("Jdbc url prohibit contains vulnerable param " + keyword);
}
}
@@ -340,6 +433,27 @@ public class JdbcCommonCollect extends AbstractCollect {
}
}
/**
* Recursively decode the URL to prevent multiple encoding bypasses.
*
* @param url jdbc url
* @return decoded decoded jdbc url
*/
private String recursiveDecode(String url) {
String prev;
String decoded = url;
int max = 5; // Decode it at most 5 times to prevent infinite loops.
do {
prev = decoded;
try {
decoded = java.net.URLDecoder.decode(prev, StandardCharsets.UTF_8);
} catch (Exception e) {
break;
}
} while (!prev.equals(decoded) && --max > 0);
return decoded;
}
/**
* construct jdbc url due the jdbc protocol
*
@@ -355,20 +469,54 @@ public class JdbcCommonCollect extends AbstractCollect {
throw new IllegalArgumentException("JDBC URL length exceeds maximum limit of 2048 characters");
}
// remove special characters
String cleanedUrl = jdbcProtocol.getUrl().replaceAll("[\\x00-\\x1F\\x7F]", "");
String url = cleanedUrl.toLowerCase();
String cleanedUrl = jdbcProtocol.getUrl().replaceAll("[\\x00-\\x1F\\x7F\\xA0]", "");
String url = recursiveDecode(cleanedUrl);
url = url.toLowerCase();
// url format check
if (!url.matches("^jdbc:[a-zA-Z0-9]+:([^\\s;]+)(;[^\\s;]+)*$")) {
throw new IllegalArgumentException("Invalid JDBC URL format");
}
// backlist check
for (String keyword : BLACK_LIST) {
if (url.contains(keyword)) {
if (url.contains(keyword.toLowerCase())) {
throw new IllegalArgumentException("Invalid JDBC URL: contains potentially malicious parameter: " + keyword);
}
}
// url format check
if (!url.matches("^jdbc:[a-zA-Z0-9]+://[^\\s]+$")) {
throw new IllegalArgumentException("Invalid JDBC URL format");
// universal detection
String normalizedUrl = url.replaceAll("[\\x00-\\x1F\\x7F\\xA0]", " ").toLowerCase();
// universal detection of JDBC injection and deserialization attacks
if (normalizedUrl.matches(".*jndi\\s*[:=].*")
|| normalizedUrl.matches(".*ldap\\s*[:=].*")
|| normalizedUrl.matches(".*rmi\\s*[:=].*")
|| normalizedUrl.matches(".*java\\s*[:=].*")
|| normalizedUrl.matches(".*serialization\\s*[:=].*")
|| normalizedUrl.matches(".*deserializ.*\\s*[:=].*")
|| normalizedUrl.matches(".*objectinputstream\\s*[:=].*")
|| normalizedUrl.matches(".*readobject\\s*[:=].*")) {
throw new IllegalArgumentException("Invalid JDBC URL: contains potentially malicious JNDI or deserialization parameter");
}
return cleanedUrl;
// universal detection of bypass
for (String pattern : UNIVERSAL_BYPASS_PATTERNS) {
if (normalizedUrl.matches(pattern)) {
throw new IllegalArgumentException("Invalid JDBC URL: contains potentially malicious bypass pattern");
}
}
// database platform specific bypass detection
if (jdbcProtocol.getPlatform() != null) {
String platform = jdbcProtocol.getPlatform().toLowerCase();
// check for specific bypass modes on the platform
String[] platformPatterns = PLATFORM_BYPASS_PATTERNS.get(platform);
if (platformPatterns != null) {
for (String pattern : platformPatterns) {
if (normalizedUrl.matches(pattern)) {
throw new IllegalArgumentException("Invalid " + platform.toUpperCase() + " JDBC URL: contains potentially malicious bypass pattern");
}
}
}
}
return normalizedUrl;
}
assert jdbcProtocol.getPlatform() != null;
return switch (jdbcProtocol.getPlatform()) {
case "mysql", "mariadb" -> "jdbc:mysql://" + host + ":" + port
+ "/" + (jdbcProtocol.getDatabase() == null ? "" : jdbcProtocol.getDatabase())
@@ -39,7 +39,7 @@ spring:
collector:
info:
version: ${COLLECTOR_VERSION:1.7.1}
version: ${COLLECTOR_VERSION:1.7.2}
ip: ${COLLECTOR_IP:}
dispatch:
entrance:
@@ -0,0 +1,28 @@
/*
* 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.
*/
package org.apache.hertzbeat.common.support.exception;
/**
* Alert expression exception
*/
public class AlertExpressionException extends RuntimeException {
public AlertExpressionException(String message) {
super(message);
}
}
@@ -31,7 +31,6 @@
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mysql.version>8.0.30</mysql.version>
<postgresql.version>42.5.5</postgresql.version>
</properties>
@@ -82,9 +81,8 @@
<!-- JDBC Drivers -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>test</scope>
<optional>true</optional>
</dependency>
@@ -79,7 +79,7 @@ public class KafkaCollectE2eTest {
.withNetwork(network)
.withNetworkAliases(ZOOKEEPER_NAME)
.waitingFor(Wait.forListeningPort())
.withStartupTimeout(Duration.ofSeconds(30));
.withStartupTimeout(Duration.ofSeconds(120));
zookeeperContainer.setPortBindings(Collections.singletonList(ZOOKEEPER_PORT + ":" + ZOOKEEPER_PORT));
Startables.deepStart(Stream.of(zookeeperContainer)).join();
@@ -90,7 +90,8 @@ public class KafkaCollectE2eTest {
.withNetworkAliases(KAFKA_NAME)
.withLogConsumer(
new Slf4jLogConsumer(
DockerLoggerFactory.getLogger(KAFKA_IMAGE_NAME)));
DockerLoggerFactory.getLogger(KAFKA_IMAGE_NAME)))
.withStartupTimeout(Duration.ofSeconds(120));
Startables.deepStart(Stream.of(kafkaContainer)).join();
}
@@ -113,11 +114,12 @@ public class KafkaCollectE2eTest {
// Create Topic
Properties properties = new Properties();
properties.put("bootstrap.servers", bootstrapServers);
AdminClient adminClient = KafkaAdminClient.create(properties);
int numPartitions = 1;
short replicationFactor = 1;
NewTopic newTopic = new NewTopic(topicName, numPartitions, replicationFactor);
adminClient.createTopics(Collections.singletonList(newTopic)).all().get(60, TimeUnit.SECONDS);
try (AdminClient adminClient = KafkaAdminClient.create(properties)) {
NewTopic newTopic = new NewTopic(topicName, numPartitions, replicationFactor);
adminClient.createTopics(Collections.singletonList(newTopic)).all().get(60, TimeUnit.SECONDS);
}
// Verify the information of topic list monitoring
builder = CollectRep.MetricsData.newBuilder();
@@ -26,8 +26,8 @@ name:
help:
zh-CN: HertzBeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMX 协议</a> 对 Apache ActiveMQ 消息中间件的运行状态,节点,Topic等相关指标(broker、topic、memory pool、class loading、thread)进行监测。<br><span class='help_module_span'>⚠️注意:您需要在 ActiveMQ 开启 JMX 服务。<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/activemq'>点击查看开启步骤</a>。</span>
en-US: "HertzBeat uses <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMX protocol</a> to monitor the running status, nodes, topics, and other metrics of Apache ActiveMQ message-oriented middleware. <br><span class='help_module_span'>⚠️Note: You should enable the JMX service in ActiveMQ. <a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/activemq'>Click here to view the specific steps.</a></span>"
zh-TW: HertzBeat使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMX 協定</a> 對 Apache ActiveMQ 消息中介軟體的運行狀態,節點,Topic 等相關名額(broker、topic、memory pool、class loading、thread)進行監測。<br><span class='help_module_span'> ⚠️注意:您需要在 ActiveMQ 開啟 JMX 服務。<a class='help_module_content' href=' https://hertzbeat.apache.org/zh-cn/docs/help/activemq'>點擊查看開啟步驟</a>。</span>
ja-JP: HertzBeatは <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMXプロトコルを介して</a> Apache ActiveMQメッセージングシステムのランタイムステータス、ノード、トピック、その他の関連メトリクを監視します。<br><span class='help_module_span'> ⚠️注意:ActiveMQ で JMX サービスを有効にする必要があります。<a class='help_module_content' href=' https://hertzbeat.apache.org/zh-cn/docs/help/activemq'>クリックしてガイドを見ます</a>。</span>
zh-TW: HertzBeat使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMX 協定</a> 對 Apache ActiveMQ 消息中介軟體的運行狀態,節點,Topic 等相關名額(broker、topic、memory pool、class loading、thread)進行監測。<br><span class='help_module_span'> ⚠️注意:您需要在 ActiveMQ 開啟 JMX 服務。<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/activemq'>點擊查看開啟步驟</a>。</span>
ja-JP: HertzBeatは <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'> JMXプロトコルを介して</a> Apache ActiveMQメッセージングシステムのランタイムステータス、ノード、トピック、その他の関連メトリクを監視します。<br><span class='help_module_span'> ⚠️注意:ActiveMQ で JMX サービスを有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/activemq'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/activemq
en-US: https://hertzbeat.apache.org/docs/help/activemq
@@ -196,7 +196,7 @@ metrics:
i18n:
zh-CN: 持久化
en-US: Persistence
ja-JP: 永続
ja-JP: 永続
type: 1
- field: DataDirectory
i18n:
@@ -271,19 +271,19 @@ metrics:
i18n:
zh-CN: 平均消息大小
en-US: Average Message Size
ja-JP: 平均メッセージサイズ
ja-JP: メッセージの平均サイズ
type: 0
- field: MaxMessageSize
i18n:
zh-CN: 最大消息大小
en-US: Max Message Size
ja-JP: 最大メッセージサイズ
ja-JP: メッセージの最大サイズ
type: 0
- field: MinMessageSize
i18n:
zh-CN: 最小消息大小
en-US: Min Message Size
ja-JP: 最小メッセージサイズ
ja-JP: メッセージの最小サイズ
type: 0
protocol: jmx
jmx:
@@ -372,7 +372,7 @@ metrics:
i18n:
zh-CN: 存储消息大小
en-US: Store Message Size
ja-JP: ストレージメッセージサイズ
ja-JP: ストレージメッセージサイズ
- field: AverageEnqueueTime
type: 0
unit: ms
@@ -407,21 +407,21 @@ metrics:
i18n:
zh-CN: 平均消息大小
en-US: Average Message Size
ja-JP: 平均メッセージサイズ
ja-JP: メッセージの平均サイズ
- field: MaxMessageSize
type: 0
unit: B
i18n:
zh-CN: 最大消息大小
en-US: Max Message Size
ja-JP: 最大メッセージサイズ
ja-JP: メッセージの最大サイズ
- field: MinMessageSize
type: 0
unit: B
i18n:
zh-CN: 最小消息大小
en-US: Min Message Size
ja-JP: 最小メッセージサイズ
ja-JP: メッセージの最小サイズ
units:
- MemoryLimit=B->MB
protocol: jmx
@@ -446,14 +446,14 @@ metrics:
i18n:
zh-CN: 指标名称
en-US: Name
ja-JP: 指標
ja-JP: メトリクス
- field: committed
type: 0
unit: MB
i18n:
zh-CN: 已分配内存
en-US: Committed
ja-JP: コミットメモリ
ja-JP: コミットされたメモリ
- field: init
type: 0
unit: MB
@@ -474,7 +474,7 @@ metrics:
i18n:
zh-CN: 已使用内存
en-US: Used
ja-JP: 使用済みメモリ
ja-JP: 使用したメモリ
units:
- committed=B->MB
- init=B->MB
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 Apache Airflow 通用性能指标(airflow health、airflow version)进行采集监控。<br>您可以点击“<i>新建 Apache Airflow </i>”并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat monitors Apache Airflow through general performance metrics such as airflow health and airflow version. You could click the "<i>New Apache Airflow</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat對Apache Airflow通用性能指標(airflow health、airflow version)進行採集監控。<br>您可以點擊“<i>新建 Apache Airflow</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeatは、Apache Airflowの一般的なパフォーマンスのメトリクを監視します。 <br><i>新規Apache Airflow</i>をクリックして設定しましょう。
ja-JP: Hertzbeatは、Apache Airflowの一般的なパフォーマンスのメトリクを監視します。 <br><i>新規Apache Airflow</i>をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/airflow/
en-US: https://hertzbeat.apache.org/docs/help/airflow/
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 AlmaLinux 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 AlmaLinux</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 AlmaLinux 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 AlmaLinux</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> 對 AlmaLinux 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建AlmaLinux</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> AlmaLinuxシステムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 AlmaLinux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> AlmaLinuxシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 AlmaLinux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/almalinux
en-US: https://hertzbeat.apache.org/docs/help/almalinux
@@ -80,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -92,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -246,7 +246,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -415,7 +415,7 @@ metrics:
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -544,14 +544,14 @@ metrics:
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -679,7 +679,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -738,7 +738,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 将调用 HTTP API 接口,查看接口是否可用,并以 ms 为指标单位对其响应时间等指标进行监测。您可以先点击“新增 HTTP API”按钮并进行配置,或在“更多操作”中导入已有配置。
en-US: The platform will invoke an HTTP API endpoint to verify its accessibility and monitor various metrics, including response time, measured in milliseconds (ms). <br>To set up this functionality, you could click the "Add HTTP API" button and proceed with the configuration or import an existing setup through the "More Actions" menu.
zh-TW: Hertzbeat將調用HTTP API介面,查看介面是否可用,並以ms為名額組織對其回應時間等名額進行監測。 您可以先點擊“新增HTTP API”按鈕並進行配寘,或在“更多操作”中導入已有配寘。
ja-JP: Hertzbeatは、HTTP APIを呼び出して利用可能かどうかを確認し、応答時間(ms)などのメトリクを監視します。「新規HTTP API」をクリックして設定しましょう。
ja-JP: Hertzbeatは、HTTP APIを呼び出して利用可能かどうかを確認し、応答時間(ms)などのメトリクを監視します。「新規HTTP API」をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/api
en-US: https://hertzbeat.apache.org/docs/help/api
@@ -170,9 +170,9 @@ params:
name:
zh-CN: 请求BODY
en-US: BODY
ja-JP: ボディ
# type-param field type(most mapping the html input type)
type: textarea
# 参数输入框提示信息
# param field input placeholder
placeholder: 'Available When POST PUT'
# dependent parameter values list
@@ -27,7 +27,7 @@ help:
zh-CN: 监控 HTTP API 接口,对 API 返回的业务自定义状态码(非 Http 状态码)进行监控。此需通过配置 JsonPath 来解析您 API 的业务状态码路径。<br>您可以点击 “<i>新建 API Code</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Monitor HTTP API to monitor business-defined status codes (non-HTTP status codes) returned by API. To do this, you need to configure JsonPath to resolve the business status code path of your API. <br>You could click the "<i>New API Codes</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: 監控 HTTP API 接口,對 API 返回的業務自定義狀態碼(非 Http 狀態碼)進行監控。此需通過配置 JsonPath 來解析您 API 的業務狀態碼路徑。<br>您可以點擊“<i>新建API Code</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeatは、HTTP APIを呼び出して利用可能かどうかを確認し、ビジネスステータスコード(HTTPステータスコードではない)のメトリクを監視します。これには、API のビジネスステータスコードのパスを解析するように JsonPath を構成する必要があります。「新規API Code」をクリックして設定しましょう。
ja-JP: Hertzbeatは、HTTP APIを呼び出して利用可能かどうかを確認し、ビジネスステータスコード(HTTPステータスコードではない)のメトリクを監視します。これには、API のビジネスステータスコードのパスを解析するように JsonPath を構成する必要があります。「新規API Code」をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/api_code
en-US: https://hertzbeat.apache.org/docs/help/api_code
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 Centos 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 Centos</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 Centos 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 Centos</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> 對 Centos 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Centos</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Centos Linux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Centos Linux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/centos/
en-US: https://hertzbeat.apache.org/docs/help/centos/
@@ -73,7 +73,6 @@ params:
# required-true or false
required: false
# default value
# 默认值
defaultValue: 6000
# field-param field key
- field: reuseConnection
@@ -81,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -93,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -247,7 +246,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -416,7 +415,7 @@ metrics:
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -545,14 +544,14 @@ metrics:
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -680,7 +679,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -739,7 +738,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 思科交换机 的通用指标(可用性,系统信息,端口流量等)进行采集监控。<br>您可以点击 “<i>新建 思科通用交换机</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 Cisco Switch general performance metrics. <br>You can click the "<i>New Cisco Switch</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> 對 思科交換機 的通用指標(可用性,系統信息,端口流量等)進行采集監控。<br>您可以點擊 “<i>新建 思科通用交換機</i>” 並進行配置SNMP相關參數添加,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> シスコ・スイッチングハブの一般的なメトリク監視します。<br>「<i>新規 シスコ・スイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> シスコ・スイッチングハブの一般的なメトリクスを監視します。<br>「<i>新規 シスコ・スイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/cisco_switch
en-US: https://hertzbeat.apache.org/docs/help/cisco_switch
@@ -361,13 +361,13 @@ metrics:
i18n:
zh-CN: 入流量
en-US: In Octets
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: in_discards
type: 0
i18n:
zh-CN: 入丢包数
en-US: In Discards
ja-JP: 受信パケットロス数
ja-JP: 受信されたパケットロス数
- field: in_errors
type: 0
i18n:
@@ -380,19 +380,19 @@ metrics:
i18n:
zh-CN: 出流量
en-US: Out Octets
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
- field: out_discards
type: 0
i18n:
zh-CN: 出丢包数
en-US: Out Discards
ja-JP: 送信パケットロス数
ja-JP: 転送されたパケットロス数
- field: out_errors
type: 0
i18n:
zh-CN: 出错包数
en-US: Out Errors
ja-JP: 送信異常パケット数
ja-JP: 転送された異常パケット数
- field: admin_status
type: 1
i18n:
@@ -404,7 +404,7 @@ metrics:
i18n:
zh-CN: 当前状态
en-US: Current Status
ja-JP: ステータス
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
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 ClickHouse 数据库监控通用指标进行测量监控。<br>您可以点击 “<i>新建 ClickHouse 数据库</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the status codes which returned by the API. You could click the "<i>New ClickHouse Database</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 ClickHouse 資料庫監控通用名額進行量測監控。<br>您可以點擊 “<i>新建ClickHouse資料庫</i>” 並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は ClickHouse データベースの一般的なメトリク監視します。<br>「<i>新規 ClickHouse データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は ClickHouse データベースの一般的なメトリクスを監視します。<br>「<i>新規 ClickHouse データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/clickhouse
en-US: https://hertzbeat.apache.org/docs/help/clickhouse
@@ -161,19 +161,19 @@ metrics:
i18n:
zh-CN: 指标名称
en-US: metric
ja-JP: メトリク名
ja-JP: メトリク
- field: value
type: 0
i18n:
zh-CN: 指标值
en-US: value
ja-JP: メトリク値
ja-JP: メトリク
- field: description
type: 1
i18n:
zh-CN: 说明
en-US: description
ja-JP: メトリク説明
ja-JP: メトリク説明
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -236,19 +236,19 @@ metrics:
i18n:
zh-CN: 指标名称
en-US: metric
ja-JP: メトリク名
ja-JP: メトリク
- field: value
type: 0
i18n:
zh-CN: 指标值
en-US: value
ja-JP: メトリク値
ja-JP: メトリク
- field: description
type: 1
i18n:
zh-CN: 说明
en-US: description
ja-JP: メトリク説明
ja-JP: メトリク説明
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 Fedora CoreOS 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 Fedora CoreOS</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 Fedora CoreOS 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 Fedora CoreOS</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> 對 Fedora CoreOS 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Fedora CoreOS</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH プロトコルを介して</a> Fedora CoreOSの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Fedora CoreOS</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH プロトコルを介して</a> Fedora CoreOSの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Fedora CoreOS</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/coreos
en-US: https://hertzbeat.apache.org/docs/help/coreos
@@ -80,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -92,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -246,7 +246,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -415,7 +415,7 @@ metrics:
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -544,14 +544,14 @@ metrics:
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -679,7 +679,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -738,7 +738,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -80,7 +80,7 @@ params:
# collect metrics config list
metrics:
- name: network_info # 指标集合名称
- name: network_info
i18n:
zh-CN: 网络信息
en-US: Network Info
@@ -20,18 +20,18 @@ app: darwin
# The monitoring i18n name
name:
zh-CN: Darwin操作系统
en-US: Darwin Linux
ja-JP: Darwin Linux
en-US: OS Darwin
ja-JP: Darwinオーエス
zh-TW: Darwin操作系統
# 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> 对 Darwin 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 Darwin</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 Darwin 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 Darwin</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> 對 Darwin 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Darwin</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
# ja-JP: HertzBeat は <a class='help_module_content' href='https://HertzBeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Darwinシステムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Darwin Linux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
zh-TW: HertzBeat 使用 <a class='help_module_content' href='https://HertzBeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 對 Darwin 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Darwin</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: HertzBeat は <a class='help_module_content' href='https://HertzBeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Darwinシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Darwin Linux</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://HertzBeat.apache.org/zh-cn/docs/help/Darwin/
en-US: https://HertzBeat.apache.org/docs/help/Darwin/
zh-CN: https://HertzBeat.apache.org/zh-cn/docs/help/darwin/
en-US: https://HertzBeat.apache.org/docs/help/darwin/
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
@@ -77,7 +77,6 @@ params:
# required-true or false
required: false
# default value
# 默认值
defaultValue: 6000
# field-param field key
- field: reuseConnection
@@ -85,7 +84,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
zh-TW: 復用連接
# type-param field type(most mapping the html input type)
type: boolean
@@ -98,7 +97,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
zh-TW: 使用代理
# type-param field type(most mapping the html input type)
type: boolean
@@ -264,7 +263,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
zh-TW: 操作系統版本
- field: uptime
type: 1
@@ -453,7 +452,7 @@ metrics:
zh-CN: 剩余可用内存
zh-TW: 剩餘可用內存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -526,74 +525,75 @@ metrics:
}'
parseType: multiRow
# - name: disk
# i18n:
# zh-CN: 磁盘信息
# zh-TW: 磁盤信息
# en-US: Disk Info
# ja-JP: ディスク情報
# priority: 3
# fields:
# - field: disk_num
# type: 1
# i18n:
# zh-CN: 磁盘总数
# zh-TW: 磁盤總數
# en-US: Disk Num
# ja-JP: ディスク番号
# - field: partition_num
# type: 1
# i18n:
# zh-CN: 分区总数
# zh-TW: 分區總數
# en-US: Partition Num
# ja-JP: パーティション
# - field: block_write
# type: 0
# i18n:
# zh-CN: 写磁盘块数
# zh-TW: 寫磁盤塊數
# en-US: Block Write
# ja-JP: 書き込みディスクブロック数
# - field: block_read
# type: 0
# i18n:
# zh-CN: 读磁盘块数
# zh-TW: 讀磁盤塊數
# en-US: Block Read
# ja-JP: 読み取りブロック数
# - field: write_rate
# type: 0
# unit: iops
# i18n:
# zh-CN: 磁盘写速率
# zh-TW: 磁盤寫速率
# 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: cat /proc/net/dev | tail -n +3 | awk 'BEGIN{ print "interface_name receive_bytes transmit_bytes"} {gsub(":", "", $1); print $1,$2,$10}'
# parseType: oneRow
- name: disk
i18n:
zh-CN: 磁盘信息
zh-TW: 磁盤信息
en-US: Disk Info
ja-JP: ディスク情報
priority: 3
fields:
- field: disk_num
type: 1
i18n:
zh-CN: 磁盘总数
zh-TW: 磁盤總數
en-US: Disk Num
ja-JP: ディスク番号
- field: partition_num
type: 1
i18n:
zh-CN: 分区总数
zh-TW: 分區總數
en-US: Partition Num
ja-JP: パーティション
# - field: block_write
# type: 0
# i18n:
# zh-CN: 写磁盘块数
# zh-TW: 寫磁盤塊數
# en-US: Block Write
# ja-JP: 書き込みディスクブロック数
# - field: block_read
# type: 0
# i18n:
# zh-CN: 读磁盘块数
# zh-TW: 讀磁盤塊數
# en-US: Block Read
# ja-JP: 読み取りブロック数
# - field: write_rate
# type: 0
# unit: iops
# i18n:
# zh-CN: 磁盘写速率
# zh-TW: 磁盤寫速率
# 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: cat /proc/net/dev | tail -n +3 | awk 'BEGIN{ print "interface_name receive_bytes transmit_bytes"} {gsub(":", "", $1); print $1,$2,$10}'
script: diskutil list | grep '^/dev/' | wc -l; diskutil list | grep -E 'Apple_HFS|Apple_APFS|Microsoft Basic Data|Linux Filesystem' | wc -l;
parseType: oneRow
- name: interface
i18n:
@@ -618,7 +618,7 @@ metrics:
zh-CN: 入站数据流量
zh-TW: 入站數據流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
@@ -626,7 +626,7 @@ metrics:
zh-CN: 出站数据流量
zh-TW: 出站數據流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -765,7 +765,7 @@ metrics:
zh-CN: 执行命令
zh-TW: 執行指令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -829,7 +829,7 @@ metrics:
zh-CN: 执行命令
zh-TW: 執行指令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 Debian 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 Debian</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 Debian 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 Debian</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> 對 Debian 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 Debian</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Debian</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Debian</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/debian
en-US: https://hertzbeat.apache.org/docs/help/debian
@@ -80,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -92,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -245,7 +245,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -414,7 +414,7 @@ metrics:
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -543,14 +543,14 @@ metrics:
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -678,7 +678,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -737,7 +737,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: HertzBeat 对 DM达梦数据库 的通用性能指标(basic、status、thread)进行采集监控,支持版本为 DM8+。<br>您可以点击“<i>新建 达梦数据库</i>”并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: HertzBeat monitors DM database of basic performance metrics such as status and thread, the version we support is DM8+. You could click the "<i>New DM</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: HertzBeat 對 DM達夢數據庫 的通用性能指標(basic、status、thread)進行采集監控,支持版本爲 DM8+。<br>您可以點擊“<i>新建 達夢數據庫</i>”並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は DM データベースの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 DM データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は DM データベースの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 DM データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/dm
en-US: https://hertzbeat.apache.org/docs/help/dm
@@ -27,7 +27,7 @@ help:
zh-CN: HertzBeat 对 DNS 服务相关指标进行监测。
en-US: HertzBeat monitors related indicators of the DNS service.
zh-TW: HertzBeat對DNS服務相關名額進行監測。
ja-JP: HertzBeatはDNSのメトリクを監視します。
ja-JP: HertzBeatはDNSのメトリクを監視します。
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
@@ -27,7 +27,7 @@ help:
zh-CN: HertzBeat 对 Docker 容器的通用性能指标(system、containers、stats)进行采集监控。<br><span class='help_module_span'>注意⚠️:为了监控 Docker 中的容器信息,您需要打开端口,让采集请求获取到对应的信息, <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/docker'>点击查看开启步骤</a>。</span>
en-US: HertzBeat monitoring Docker of general performance metrics such as containers, status etc. <br><span class='help_module_span'>Note⚠️:In order to monitoring metrics of Docker, you need to enable the data export port so that the collector can collect data from here<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/docker'>Click here to view the steps</a>.</span>
zh-TW: HertzBeat 對 Docker 容器的通用性能指標(system、containers、stats)進行采集監控。<br><span class='help_module_span'>注意⚠️:爲了監控 Docker 中的容器信息,您需要打開端口,讓采集請求獲取到對應的信息, <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/docker'>點擊查看開啓步驟</a>。</span>
ja-JP: HertzBeat は Dockerコンテナの一般的なパフォーマンスのメトリク監視します。<br><span class='help_module_span'>注意⚠️Dockerコンテナの情報を監視するために、ポートを有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/docker'>クリックしてガイドを見ます</a>。</span>
ja-JP: HertzBeat は Dockerコンテナの一般的なパフォーマンスのメトリクスを監視します。<br><span class='help_module_span'>注意⚠️Dockerコンテナの情報を監視するために、ポートを有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/docker'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/docker/
en-US: https://hertzbeat.apache.org/docs/help/docker/
@@ -226,7 +226,7 @@ metrics:
i18n:
zh-CN: 命令行
en-US: command
ja-JP: 指令
ja-JP: コマンド
type: 1
- field: state
i18n:
@@ -274,9 +274,9 @@ metrics:
- name: stats
i18n:
zh-CN: 状态
zh-CN: 统计
en-US: stats
ja-JP: スタッツ
ja-JP: 統計
priority: 2
fields:
- field: name
@@ -289,14 +289,14 @@ metrics:
i18n:
zh-CN: 可用内存
en-US: available memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
type: 0
unit: MB
- field: used_memory
i18n:
zh-CN: 已用内存
en-US: used memory
ja-JP: 使用済みメモリ
ja-JP: 使用したメモリ
type: 0
unit: MB
- field: memory_usage
@@ -316,7 +316,7 @@ metrics:
i18n:
zh-CN: 可使用CPU数
en-US: cpus number
ja-JP: 使用可能CPUコア数
ja-JP: 使用可能CPUコア数
type: 0
- field: cpu_usage
i18n:
@@ -26,7 +26,7 @@ help:
zh-CN: Hertzbeat 对 DORIS 数据库BE的通用性能指标(load channel count、memtable flush total、process thread num、light work max threads等)进行采集监控,支持版本为DORIS2.0.0。<br>您可以点击 “<i>新建 Doris DatabaseBE</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring Doris DatabaseBE through general performance metric such as load channel count, memtable flush total, process thread num and light work max threads. The version we support is DORIS2.0.0. You could click the "<i>New Doris DatabaseBE Monitor</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 DORIS 資料庫BE的通用性能指標(load channel count、memtable flush total、process thread num、light work max threads等)進行採集監控,支持版本為DORIS2.0.0。<br>您可以點擊“<i>新建Doris DatabaseBE</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は DORIS 2.0.0のデータベースBEの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Doris DatabaseBE</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は DORIS 2.0.0のデータベースBEの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Doris DatabaseBE</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/doris_be/
en-US: https://hertzbeat.apache.org/docs/help/doris_be/
@@ -178,7 +178,7 @@ metrics:
i18n:
zh-CN: 批量发送线程池队列大小
en-US: Send Batch Thread Pool Queue Size
ja-JP: バッチ送信スレッドプールのキューサイズ
ja-JP: バッチ転送されたスレッドプールのキューサイズ
priority: 6
fields:
- field: value
@@ -26,7 +26,7 @@ help:
zh-CN: Hertzbeat 对 Doris 数据库FE的通用指标(doris_fe connection total、doris_fe edit log clean、doris_fe image、doris_fe rps等)进行测量监控,支持版本为DORIS2.0.0。<br>您可以点击 “<i>新建 Doris DatabaseFE</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring Doris DatabaseFE through general performance metric such as doris_fe connection total, doris_fe edit log clean, doris_fe image and doris_fe rps. The version we support is DORIS2.0.0. You could click the "<i>New Doris DatabaseFE Monitor</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 Doris 資料庫FE的通用名額(doris_fe connection total、doris_fe edit log clean、doris_fe image、doris_fe rps等)進行量測監控,支持版本為DORIS2.0.0。<br>您可以點擊“<i>新建Doris DatabaseFE</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は DORIS 2.0.0のデータベースFEの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 Doris DatabaseFE</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は DORIS 2.0.0のデータベースFEの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 Doris DatabaseFE</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/doris_fe/
en-US: https://hertzbeat.apache.org/docs/help/doris_fe/
@@ -70,7 +70,7 @@ metrics:
i18n:
zh-CN: 连接总数
en-US: Connection Total
ja-JP: コネクション
ja-JP: 接続総
priority: 0
fields:
- field: value
@@ -26,8 +26,8 @@ name:
help:
zh-CN: HertzBeat 对 DynamicTp actuator 暴露的线程池性能指标(thread pool)进行采集监控。<br><span class='help_module_span'>注意⚠️:您需要集成使用 DynamicTp<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/dynamic_tp'>点击查看集成步骤</a>。
en-US: HertzBeat monitoring DynamicTp of the thread Pool Performance Metrics which exposed by DynamicTp actuator. <br><span class='help_module_span'>Note⚠️:You should integrate and use DynamicTp, <a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/dynamic_tp'>Click here to view the specific steps.</a>"
zh-TW: HertzBeat 對 DynamicTp actuator暴露的執行緒池性能指標(thread pool)進行採集監控。<br><span class='help_ module_ span'>注意⚠️:您需要集成使用DynamicTp<a class='help_ module_ content' href='https://hertzbeat.apache.org/zh-cn/docs/help/dynamic_tp'>點擊查看集成步驟</a>。
ja-JP: HertzBeat は DynamicTpスレッドプールの一般的なパフォーマンスのメトリク監視します。<br><span class='help_module_span'>注意⚠️DynamicTpの使用を統合する必要があり、<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/dynamic_tp'>クリックしてガイドを見ます</a>。
zh-TW: HertzBeat 對 DynamicTp actuator暴露的執行緒池性能指標(thread pool)進行採集監控。<br><span class='help_module_span'>注意⚠️:您需要集成使用DynamicTp<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/dynamic_tp'>點擊查看集成步驟</a>。
ja-JP: HertzBeat は DynamicTpスレッドプールの一般的なパフォーマンスのメトリクスを監視します。<br><span class='help_module_span'>注意⚠️DynamicTpの使用を統合する必要があり、<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/dynamic_tp'>クリックしてガイドを見ます</a>。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/dynamic_tp/
en-US: https://hertzbeat.apache.org/docs/help/dynamic_tp/
@@ -128,7 +128,7 @@ metrics:
i18n:
zh-CN: 公平
en-US: fair
ja-JP: 目標ホスト
ja-JP: 公平
type: 1
- field: reject_handler_name
type: 1
@@ -211,7 +211,7 @@ metrics:
i18n:
zh-CN: 队列剩余容量
en-US: queue remaining capacity
ja-JP: 使用可能キュー容量
ja-JP: 使用可能キュー容量
type: 0
unit: MB
- field: active_count
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 ElasticSearch 数据库监控通用指标进行测量监控。<br>您可以点击 “<i>新建 ElasticSearch</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring ElasticSearch through general performance metrics. You could click the "<i>New ElasticSearch</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 ElasticSearch 資料庫監控通用名額進行量測監控。<br>您可以點擊“<i>新建ElasticSearch</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: HertzBeat は ElasticSearch データベースの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 ElasticSearch</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: HertzBeat は ElasticSearch データベースの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 ElasticSearch</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/elasticsearch
en-US: https://hertzbeat.apache.org/docs/help/elasticsearch
@@ -27,7 +27,7 @@ help:
zh-CN: EMQX 是一款开源的大规模分布式 MQTT 消息服务器。Hertzbeat对EMQX MQTT消息服务器 5.0+ 版本的通用指标进行测量监控,<br>您可以点击 “<i>新建 EMQX 消息服务器</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: EMQX is an open source large-scale distributed MQTT message server. Hertzbeat measures and monitors common metrics of the EMQX message server 5.0+ version.<br>You can click "<i>New EMQX message server</i>" and configure it, or select "<i>More operations</i>", Import existing configuration.
zh-TW: EMQX 是一款開源的大規模分散式 MQTT 訊息伺服器。 Hertzbeat對EMQX MQTT訊息伺服器 5.0+ 版本的通用指標進行測量監控,<br>您可以點擊“<i>新建 EMQX 訊息伺服器</i>” 並進行配置,或者選擇“<i>更多操作</i>” ,導入已有配置。
ja-JP: EMQXは、オープンソースの大規模分散MQTTメッセージサーバーです。HertzbeatはEMQX MQTTメッセージサーバー(バージョン5.0+)の一般的なフォーマンスのメトリク監視します。<br>「<i>新規 EMQX</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: EMQXは、オープンソースの大規模分散MQTTメッセージサーバーです。HertzbeatはEMQX MQTTメッセージサーバー(バージョン5.0+)の一般的なフォーマンスのメトリクスを監視します。<br>「<i>新規 EMQX</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/emqx
en-US: https://hertzbeat.apache.org/docs/help/emqx
@@ -179,7 +179,7 @@ metrics:
i18n:
zh-CN: 指标
en-US: Metrics
ja-JP: メトリ
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: 1
@@ -203,31 +203,31 @@ metrics:
i18n:
zh-CN: 发送数据包
en-US: Packets Sent
ja-JP: 送信パケット
ja-JP: 転送されたパケット
- field: packets_received
type: 0
i18n:
zh-CN: 接收数据包
en-US: Packets Received
ja-JP: 受信パケット
ja-JP: 受信されたパケット
- field: bytes_sent
type: 0
i18n:
zh-CN: 发送字节
en-US: Bytes Sent
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
- field: bytes_received
type: 0
i18n:
zh-CN: 接收字节
en-US: Bytes Received
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: messages_sent
type: 0
i18n:
zh-CN: 发送消息
en-US: Messages Sent
ja-JP: 送信メッセージ
ja-JP: 転送されたメッセージ
- field: messages_acked
type: 0
i18n:
@@ -257,13 +257,13 @@ metrics:
i18n:
zh-CN: 会话创建
en-US: Session Created
ja-JP: 目標ホスト
ja-JP: 作成されたセッション
- field: session_discarded
type: 0
i18n:
zh-CN: 会话丢弃
en-US: Session Discarded
ja-JP: 目標ホスト
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:
- client.connected
@@ -324,7 +324,7 @@ metrics:
i18n:
zh-CN: 统计
en-US: Stats
ja-JP: スタッツ
ja-JP: 統計
priority: 2
fields:
# metrics content contains field-metric name, type-metric type:0-number,1-string, instance-if is metrics, unit-metric unit('%','ms','MB')
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 EulerOS 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 EulerOS</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 EulerOS 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 EulerOS</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> 對 EulerOS 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 EulerOS</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> EulerOS システムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 EulerOS</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> EulerOS システムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 EulerOS</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/euleros
en-US: https://hertzbeat.apache.org/docs/help/euleros
@@ -80,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -92,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -246,7 +246,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -415,7 +415,7 @@ metrics:
i18n:
zh-CN: 剩余可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -544,14 +544,14 @@ metrics:
i18n:
zh-CN: 入站数据流量
en-US: Receive Bytes
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: transmit_bytes
type: 0
unit: Mb
i18n:
zh-CN: 出站数据流量
en-US: Transmit Bytes
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
units:
- receive_bytes=B->MB
- transmit_bytes=B->MB
@@ -679,7 +679,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -738,7 +738,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 Flink流引擎的通用指标进行测量监控。<br>您可以点击 “<i>新建 Flink流引擎</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring Flink Stream through general performance metric. You could click the "<i>New Flink Stream</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 Flink流引擎的通用名額進行量測監控。<br>您可以點擊“<i>新建Flink流引擎</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: HertzBeat は Flinkの一般的なメトリク監視します。<br>「<i>新規 Flink</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: HertzBeat は Flinkの一般的なメトリクスを監視します。<br>「<i>新規 Flink</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/flink
en-US: https://hertzbeat.apache.org/docs/help/flink
@@ -158,7 +158,7 @@ metrics:
i18n:
zh-CN: 已用插槽数
en-US: Slots Used
ja-JP: 使用済みスロット数
ja-JP: 使用したスロット数
- field: task_total # task count
type: 0
i18n:
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 Flink 流引擎 Yarn 模式的通用指标进行测量监控。<br>您可以点击 “<i>新建 Flink On Yarn</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring Flink Stream through general performance metric. You could click the "<i>New Flink Stream</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 Flink 流引擎 Yarn 模式的通用指標進行測量監控。<br>您可以點擊 “<i>新建 Flink On Yarn</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: HertzBeat は Flink 「Yarn モード」の一般的なメトリク監視します。<br>「<i>新規 Flink</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: HertzBeat は Flink 「Yarn モード」の一般的なメトリクスを監視します。<br>「<i>新規 Flink</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/flink_on_yarn
en-US: https://hertzbeat.apache.org/docs/help/flink_on_yarn
@@ -120,7 +120,7 @@ metrics:
i18n:
zh-CN: JobManager Metrics
en-US: JobManager Metrics
ja-JP: JobManagerメトリ
ja-JP: JobManagerメトリク
priority: 0
fields:
- field: id
@@ -485,7 +485,7 @@ metrics:
i18n:
zh-CN: TaskManager Metrics
en-US: TaskManager Metrics
ja-JP: TaskManagerメトリ
ja-JP: TaskManagerメトリク
priority: 3
fields:
- field: container_id
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSH 协议</a> 对 FreeBSD 操作系统的通用性能指标 (系统信息、CPU、内存、磁盘、网卡、文件系统、TOP资源进程等) 进行采集监控。<br>您可以点击“<i>新建 FreeBSD</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 FreeBSD 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 FreeBSD</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> 對 FreeBSD 操作系统的通用性能指標 (系統信息、CPU、內存、磁盤、網卡、文件系統、TOP資源進程等) 進行採集監控。<br>您可以點擊“<i>新建 FreeBSD</i>”並配置HOST端口賬戶等相關參數進行添加,支持SSH賬戶密碼或密鑰認證。或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 FreeBSD</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'> SSHプロトコルを介して</a> Centosシステムの一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 FreeBSD</i>」をクリックしてホストなどのパラメタを設定した後、新規することができます。SSHまたはキー認証をサポートします。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn//docs/help/freebsd
en-US: https://hertzbeat.apache.org/docs/help/freebsd
@@ -80,7 +80,7 @@ params:
name:
zh-CN: 复用连接
en-US: Reuse Connection
ja-JP: コネクション再利用
ja-JP: 接続再利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -92,7 +92,7 @@ params:
name:
zh-CN: 使用代理
en-US: Use Proxy Connection
ja-JP: プロキシコネクション利用
ja-JP: プロキシ接続利用
# type-param field type(most mapping the html input type)
type: boolean
# required-true or false
@@ -246,7 +246,7 @@ metrics:
i18n:
zh-CN: 操作系统版本
en-US: System Version
ja-JP: システムバージョン
ja-JP: オーエスバージョン
- field: uptime
type: 1
i18n:
@@ -409,7 +409,7 @@ metrics:
i18n:
zh-CN: 可用内存
en-US: Available Memory
ja-JP: 使用可能メモリ
ja-JP: 使用可能メモリ
- field: usage
type: 0
unit: '%'
@@ -557,7 +557,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -616,7 +616,7 @@ metrics:
i18n:
zh-CN: 执行命令
en-US: Command
ja-JP: 指令
ja-JP: コマンド
protocol: ssh
ssh:
host: ^_^host^_^
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 FTP 服务器的通用指标进行测量监控。<br>您可以点击 “<i>新建 FTP服务器</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitoring FTP server through general performance metric. You could click the "<i>New FTP server</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat 對 FTP 伺服器的通用名額進行量測監控。<br>您可以點擊“<i>新建FTP伺服器</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は FTPサーバーの一般的なメトリク監視します。<br>「<i>新規 FTPサーバー</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は FTPサーバーの一般的なメトリクスを監視します。<br>「<i>新規 FTPサーバー</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/ftp
en-US: https://hertzbeat.apache.org/docs/help/ftp
@@ -26,8 +26,8 @@ name:
help:
zh-CN: HertzBeat 对网站全部页面的 URL 路径、HTTP 状态码、响应时间及请求反馈进行监测。由于一个网站可能有多个不同服务提供的页面,系统将采集网站暴露的<a class='help_module_content' href='https://en.wikipedia.org/wiki/Site_map'>网站地图(SiteMap)</a>来监控全站。<span class='help_module_span'><br>⚠️注意:此功能需要您的网站支持 XML 和 TXT 格式的 SiteMap。</span>
en-US: HertzBeat monitoring all pages of website by URL path, HTTP status code, response times and request feedback. Due to the possibility that a website may have multiple pages provided by different services, Hertzbeat will collect <a class='help_module_content' href='https://en.wikipedia.org/wiki/Site_map'>SiteMap</a> which exposed by the website to monitor the entire site. <span class='help_module_span'><br>⚠️Note:HertzBeat support SiteMap in XML or TXT format.</span>
zh-TW: HertzBeat對網站全部頁面的URL路徑、HTTP狀態碼、回應時間及請求迴響進行監測。 由於一個網站可能有多個不同服務提供的頁面,系統將採集網站暴露的<a class='help_ module_ content' href='https://en.wikipedia.org/wiki/Site_map'>網站地圖(SiteMap</a>來監控全站。<span class='help_ module_ span'> <br>⚠️注意:此功能需要您的網站支持XML和TXT格式的SiteMap。</span>
ja-JP: HertzBeat はウェブサイトの全てのURL、HTTPステータスコード、応答時間などのメトリク監視します。ウェブサイトには、異なるサービスによって提供される複数のページが存在する可能性があるため、システムはウェブサイトによって公開される<a class='help_ module_ content' href='https://en.wikipedia.org/wiki/Site_map'>SiteMap</a>を収集して監視します。<span class='help_ module_ span'> <br>⚠️注意:この機能を使用するには、ウェブサイトがXMLおよびTXT形式のSiteMapをサポートしている必要があります。</span>
zh-TW: HertzBeat對網站全部頁面的URL路徑、HTTP狀態碼、回應時間及請求迴響進行監測。 由於一個網站可能有多個不同服務提供的頁面,系統將採集網站暴露的<a class='help_module_content' href='https://en.wikipedia.org/wiki/Site_map'>網站地圖(SiteMap</a>來監控全站。<span class='help_module_span'> <br>⚠️注意:此功能需要您的網站支持XML和TXT格式的SiteMap。</span>
ja-JP: HertzBeat はウェブサイトの全てのURL、HTTPステータスコード、応答時間などのメトリクスを監視します。ウェブサイトには、異なるサービスによって提供される複数のページが存在する可能性があるため、システムはウェブサイトによって公開される<a class='help_module_content' href='https://en.wikipedia.org/wiki/Site_map'>SiteMap</a>を収集して監視します。<span class='help_module_span'> <br>⚠️注意:この機能を使用するには、ウェブサイトがXMLおよびTXT形式のSiteMapをサポートしている必要があります。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/guide/
en-US: https://hertzbeat.apache.org/docs/help/guide/
@@ -27,7 +27,7 @@ help:
zh-CN: HertzBeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBC 协议</a> 通过配置 SQL 对 GreenPlum 数据库的通用性能指标 (basic、state、activity etc) 进行采集监控,支持版本为 GreenPlum 6.23.0+。<br>您可以点击“<i>新建 GreenPlum 数据库</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 GreenPlum database (basic、state、activity etc). Supported version is GreenPlum 6.23.0+. <br>You can click "<i>New GreenPlum 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 對 GreenPlum 數據庫的通用性能指標 (basic、state、activity etc)進行采集監控,支持版本爲 GreenPlum 6.23.0+。<br>您可以點擊“<i>新建 GreenPlum 數據庫</i>”並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBCプロトコルを介して</a> GreenPlum データベース(6.23.0+)の一般的なパフォーマンスのメトリク監視します。<br>「<i>新規 GreenPlum データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'> JDBCプロトコルを介して</a> GreenPlum データベース(6.23.0+)の一般的なパフォーマンスのメトリクスを監視します。<br>「<i>新規 GreenPlum データベース</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/greenplum
en-US: https://hertzbeat.apache.org/docs/help/greenplum
@@ -145,7 +145,7 @@ metrics:
i18n:
zh-CN: 最大连接数
en-US: Max Connections
ja-JP: 最大コネクション
ja-JP: 最大接続
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: jdbc
# the config content when protocol is jdbc
@@ -221,7 +221,7 @@ metrics:
i18n:
zh-CN: 写入时间
en-US: Write Time
ja-JP: 書き込まれタイム
ja-JP: 書き込まれ時間
- field: stats_reset
type: 1
i18n:
@@ -300,7 +300,7 @@ metrics:
i18n:
zh-CN: 最大连接数
en-US: Max Connections
ja-JP: 最大コネクション
ja-JP: 最大接続
- field: effective_cache_size
type: 0
unit: MB
@@ -332,7 +332,7 @@ metrics:
i18n:
zh-CN: 连接信息
en-US: Connection Info
ja-JP: コネクション情報
ja-JP: 接続情報
priority: 4
fields:
- field: active
@@ -340,7 +340,7 @@ metrics:
i18n:
zh-CN: 活动连接
en-US: Active Connection
ja-JP: 活躍的なコネクション
ja-JP: 活躍的な接続
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -358,7 +358,7 @@ metrics:
i18n:
zh-CN: 连接状态
en-US: Connection State
ja-JP: コネクションステート
ja-JP: 接続状態
priority: 5
fields:
- field: state
@@ -391,7 +391,7 @@ metrics:
i18n:
zh-CN: 连接数据库
en-US: Connection Db
ja-JP: コネクションデータベース
ja-JP: 接続データベース
priority: 6
fields:
- field: db_name
@@ -406,7 +406,7 @@ metrics:
i18n:
zh-CN: 活动连接
en-US: Active Connection
ja-JP: 活躍的なコネクション
ja-JP: 活躍的な接続
protocol: jdbc
jdbc:
host: ^_^host^_^
@@ -555,7 +555,7 @@ metrics:
i18n:
zh-CN: 慢查询
en-US: Slow Sql
ja-JP: スロークエリ
ja-JP: スローSQL
priority: 10
fields:
- field: sql_text
@@ -564,7 +564,7 @@ metrics:
i18n:
zh-CN: SQL语句
en-US: SQL Text
ja-JP: SQL
ja-JP: SQL文のテキスト
- field: calls
type: 0
i18n:
@@ -23,7 +23,6 @@ name:
en-US: GreptimeDB
ja-JP: GreptimeDB
# The description and help of this monitoring type
# 监控类型的帮助描述信息
help:
zh-CN: HertzBeat 对 GreptimeDB 时序数据库进行监控。<br><span class='help_module_span'><a class='help_module_content' https://docs.greptime.com/user-guide/operations/monitoring'>点击查看开启步骤</a>。</span>
en-US: HertzBeat monitors the GreptimeDB time series database. <br><span class='help_module_span'><a class='help_module_content' https://docs.greptime.com/user-guide/operations/monitoring'>Click to view the activation steps</a>. </span>
@@ -161,7 +160,7 @@ metrics:
i18n:
zh-CN: 名称
en-US: name
ja-JP: キー
ja-JP: 名前
type: 1
label: true
- field: value
@@ -366,7 +365,7 @@ metrics:
i18n:
zh-CN: greptime 服务 MySQL 连接数
en-US: greptime_servers_mysql_connection_count
ja-JP: MySQLのコネクション
ja-JP: MySQLの接続
priority: 10
fields:
- field: value
@@ -389,7 +388,7 @@ metrics:
i18n:
zh-CN: greptime 服务 Postgres 连接数
en-US: greptime_servers_postgres_connection_count
ja-JP: Postgresのコネクション
ja-JP: Postgresの接続
priority: 11
fields:
- field: value
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 使用 <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP 协议</a> 对 华三交换机 的通用指标(可用性,系统信息,端口流量等)进行采集监控。<br>您可以点击 “<i>新建 华三通用交换机</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 H3C Switch general performance metrics. <br>You can click the "<i>New H3C Switch</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> 對 華三交換機 的通用指標(可用性,系統信息,端口流量等)進行采集監控。<br>您可以點擊 “<i>新建 華三通用交換機</i>” 並進行配置SNMP相關參數添加,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> H3Cスイッチングハブの一般的なメトリク監視します。<br>「<i>新規 H3Cスイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> H3Cスイッチングハブの一般的なメトリクスを監視します。<br>「<i>新規 H3Cスイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/h3c_switch
en-US: https://hertzbeat.apache.org/docs/help/h3c_switch
@@ -361,13 +361,13 @@ metrics:
i18n:
zh-CN: 入流量
en-US: In Octets
ja-JP: 受信バイト数
ja-JP: 受信されたバイト数
- field: in_discards
type: 0
i18n:
zh-CN: 入丢包数
en-US: In Discards
ja-JP: 受信パケットロス数
ja-JP: 受信されたパケットロス数
- field: in_errors
type: 0
i18n:
@@ -380,19 +380,19 @@ metrics:
i18n:
zh-CN: 出流量
en-US: Out Octets
ja-JP: 送信バイト数
ja-JP: 転送されたバイト数
- field: out_discards
type: 0
i18n:
zh-CN: 出丢包数
en-US: Out Discards
ja-JP: 送信パケットロス数
ja-JP: 転送されたパケットロス数
- field: out_errors
type: 0
i18n:
zh-CN: 出错包数
en-US: Out Errors
ja-JP: 異常パケット数
ja-JP: 送異常パケット数
- field: admin_status
type: 1
i18n:
@@ -404,7 +404,7 @@ metrics:
i18n:
zh-CN: 当前状态
en-US: Current Status
ja-JP: ステータス
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
@@ -26,8 +26,8 @@ name:
help:
zh-CN: HertzBeat 使用<a class='help_module_content' href='https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc'> JMX 协议</a>对 Hadoop 的 JVM 虚拟机的通用性能指标(memory pool,限JDK8及以下的code cache、class loading、thread)进行采集监控。<br><span class='help_module_span'>⚠️注意:您需要在 Hadoop 应用开启 JMX 服务, <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>点击查看开启步骤</a>。</span>
en-US: "HertzBeat monitors general performance metrics(memory pool, class loading, thread) of Hadoop VMware through <a class='help_module_content' href='https://zh.wikipedia.org/JMX'>JMX protocol</a>. <br><span class='help_module_span'>⚠️Note: You should enable the JMX service in Hadoop application, and the metric of code cache is only available to JDK8 and below.<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>Click here to view the specific steps.</a></span>"
zh-TW: HertzBeat使用<a class='help_ module_ content' href='https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc'> JMX協定</a>對Hadoop的JVM虛擬機器的通用性能指標(memory pool,限JDK8及以下的code cache、class loading、thread)進行採集監控。<br><span class='help_ module_ span'> ⚠️ ️注意:您需要在Hadoop應用開啟JMX服務,<a class='help_ module_ content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>點擊查看開啟步驟</a>。</span>
ja-JP: HertzBeatは <a class='help_module_content' href='https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc'> JMXプロトコルを介して</a> HadoopのJava仮想マシンの一般的なパフォーマンスのメトリクを監視します。<br><span class='help_module_span'> ⚠️注意:Hadoop で JMX サービスを有効にする必要があります。<a class='help_module_content' href=' https://hertzbeat.apache.org/zh-cn/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>クリックしてガイドを見ます</a>。</span>
zh-TW: HertzBeat使用<a class='help_module_content' href='https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc'> JMX協定</a>對Hadoop的JVM虛擬機器的通用性能指標(memory pool,限JDK8及以下的code cache、class loading、thread)進行採集監控。<br><span class='help_module_span'> ⚠️ ️注意:您需要在Hadoop應用開啟JMX服務,<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>點擊查看開啟步驟</a>。</span>
ja-JP: HertzBeatは <a class='help_module_content' href='https://baijiahao.baidu.com/s?id=1605937053950156833&wfr=spider&for=pc'> JMXプロトコルを介して</a> HadoopのJava仮想マシンの一般的なパフォーマンスのメトリクを監視します。<br><span class='help_module_span'> ⚠️注意:Hadoop で JMX サービスを有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hadoop#hadoop%E5%BA%94%E7%94%A8%E5%BC%80%E5%90%AFjmx%E5%8D%8F%E8%AE%AE%E6%AD%A5%E9%AA%A4'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hadoop/
en-US: https://hertzbeat.apache.org/docs/help/hadoop/
@@ -168,14 +168,14 @@ metrics:
i18n:
zh-CN: 指标名称
en-US: Name
ja-JP: 指標
ja-JP: メトリクス
- field: committed
type: 0
unit: MB
i18n:
zh-CN: 已分配内存
en-US: Committed
ja-JP: コミットメモリ
ja-JP: コミットされたメモリ
- field: init
type: 0
unit: MB
@@ -196,7 +196,7 @@ metrics:
i18n:
zh-CN: 已使用内存
en-US: Used
ja-JP: 使用済みメモリ
ja-JP: 使用したメモリ
units:
- committed=B->MB
- init=B->MB
@@ -240,7 +240,7 @@ metrics:
i18n:
zh-CN: 已分配内存
en-US: Committed
ja-JP: コミットメモリ
ja-JP: コミットされたメモリ
- field: init
type: 0
i18n:
@@ -258,7 +258,7 @@ metrics:
i18n:
zh-CN: 已使用内存
en-US: Used
ja-JP: 使用済みメモリ
ja-JP: 使用したメモリ
aliasFields:
- Usage->committed
- Usage->init
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 Hbase 数据库 Master 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache Hbase Master</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the Master node monitoring indicators of the Hbase database. <br>You can click "<i>New Apache Hbase Master</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 Hbase 數據庫 Master 节點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache Hbase Master</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は HbaseデータベースのMasterノードの一般的なメトリク監視します。<br>「<i>新規 Apache Hbase Master</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は HbaseデータベースのMasterノードの一般的なメトリクスを監視します。<br>「<i>新規 Apache Hbase Master</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hbase_master/
en-US: https://hertzbeat.apache.org/docs/help/hbase_master/
@@ -92,7 +92,7 @@ metrics:
i18n:
zh-CN: Master服务信息
en-US: Master Service Info
ja-JP: Masterサービス情報
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
@@ -224,7 +224,7 @@ metrics:
i18n:
zh-CN: Master节点
en-US: masterHostName
ja-JP: Masterホスト名
ja-JP: マスターホスト名
- field: BalancerCluster_num_ops
type: 0
i18n:
@@ -243,14 +243,14 @@ metrics:
i18n:
zh-CN: 集群接收数据量(MB)
en-US: receivedBytes
ja-JP: 受信バイト
ja-JP: 受信されたバイト
- field: sentBytes
type: 0
unit: 'MB'
i18n:
zh-CN: 集群发送数据量(MB)
en-US: sentBytes
ja-JP: 送信バイト
ja-JP: 転送されたバイト
- field: clusterRequests
type: 0
i18n:
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 Hbase 数据库 RegionServer 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache Hbase RegionServer</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the RegionServer node monitoring indicators of the Hbase database. <br>You can click "<i>New Apache Hbase RegionServer</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 Hbase 數據庫 RegionServer 节點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache Hbase RegionServer</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は HbaseデータベースのRegionServerノードの一般的なメトリク監視します。<br>「<i>新規 Apache Hbase RegionServer</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は HbaseデータベースのRegionServerノードの一般的なメトリクスを監視します。<br>「<i>新規 Apache Hbase RegionServer</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hbase_regionserver/
@@ -530,7 +530,7 @@ metrics:
i18n:
zh-CN: 进程使用的非堆内存大小
en-US: MemNonHeapUsedM
ja-JP: 使用済みのノンヒープメモリサイズ
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: MemNonHeapCommittedM
type: 0
@@ -538,7 +538,7 @@ metrics:
i18n:
zh-CN: 进程 commit 的非堆内存大小
en-US: MemNonHeapCommittedM
ja-JP: コミットノンヒープメモリサイズ
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
@@ -546,7 +546,7 @@ metrics:
i18n:
zh-CN: 进程使用的堆内存大小
en-US: MemHeapUsedM
ja-JP: 使用済みのヒープメモリサイズ
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
@@ -554,7 +554,7 @@ metrics:
i18n:
zh-CN: 进程 commit 的堆内存大小
en-US: MemHeapCommittedM
ja-JP: コミットヒープメモリサイズ
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
@@ -562,7 +562,7 @@ metrics:
i18n:
zh-CN: 进程最大的堆内存大小
en-US: MemHeapMaxM
ja-JP: 最大のヒープメモリサイズ
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: MemMaxM
type: 0
@@ -570,7 +570,7 @@ metrics:
i18n:
zh-CN: 进程最大内存大小
en-US: MemMaxM
ja-JP: 最大のメモリサイズ
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: GcCount
type: 0
@@ -27,7 +27,7 @@ help:
zh-CN: Hertzbeat 对 HDFS DataNode 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache HDFS DataNode</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the HDFS DataNode metrics. <br>You can click "<i>New Apache HDFS DataNode</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 HDFS DataNode 節點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache HDFS DataNode</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は HDFS DataNodeの一般的なメトリク監視します。<br>「<i>新規 Apache HDFS DataNode</i>」をクリックしてパラメタを設定した後、新規することができます。
ja-JP: Hertzbeat は HDFS DataNodeの一般的なメトリクスを監視します。<br>「<i>新規 Apache HDFS DataNode</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hdfs_datanode/
@@ -91,7 +91,7 @@ metrics:
i18n:
zh-CN: DataNode HDFS使用量
en-US: DfsUsed
ja-JP: 使用済みのHDFS容量
ja-JP: 使用したHDFS容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: Remaining
type: 0
@@ -142,70 +142,70 @@ metrics:
i18n:
zh-CN: JVM 当前已经使用的 NonHeapMemory 的大小
en-US: MemNonHeapUsedM
ja-JP: 使用済みのノンヒープメモリサイズ
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: MemNonHeapCommittedM
type: 0
i18n:
zh-CN: JVM 配置的 NonHeapCommittedM 的大小
en-US: MemNonHeapCommittedM
ja-JP: コミットノンヒープメモリサイズ
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
i18n:
zh-CN: JVM 当前已经使用的 HeapMemory 的大小
en-US: MemHeapUsedM
ja-JP: 使用済みのヒープメモリサイズ
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
i18n:
zh-CN: JVM HeapMemory 提交大小
en-US: MemHeapCommittedM
ja-JP: コミットヒープメモリサイズ
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
i18n:
zh-CN: JVM 配置的 HeapMemory 的大小
en-US: MemHeapMaxM
ja-JP: 配置のヒープメモリサイズ
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: MemMaxM
type: 0
i18n:
zh-CN: JVM 运行时可以使用的最大内存大小
en-US: MemMaxM
ja-JP: 最大のヒープメモリサイズ
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: ThreadsRunnable
type: 0
i18n:
zh-CN: 处于 RUNNABLE 状态的线程数量
en-US: ThreadsRunnable
ja-JP: RUNNABLE スレッド数
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: ThreadsBlocked
type: 0
i18n:
zh-CN: 处于 BLOCKED 状态的线程数量
en-US: ThreadsBlocked
ja-JP: BLOCKED スレッド数
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: ThreadsWaiting
type: 0
i18n:
zh-CN: 处于 WAITING 状态的线程数量
en-US: ThreadsWaiting
ja-JP: WAITING スレッド数
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: ThreadsTimedWaiting
type: 0
i18n:
zh-CN: 处于 TIMED WAITING 状态的线程数量
en-US: ThreadsTimedWaiting
ja-JP: TIMED WAITING スレッド数
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:
- $.MemNonHeapUsedM
@@ -21,11 +21,13 @@ app: hdfs_namenode
name:
zh-CN: Apache HDFS NameNode
en-US: Apache HDFS NameNode
ja-JP: Apache HDFS NameNode
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 对 HDFS NameNode 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache HDFS NameNode</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the HDFS NameNode metrics. <br>You can click "<i>New Apache HDFS NameNode</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 HDFS NameNode 節點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache HDFS NameNode</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は HDFS NameNodeの一般的なメトリクスを監視します。<br>「<i>新規 Apache HDFS NameNode</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hdfs_namenode/
@@ -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
@@ -85,6 +90,7 @@ metrics:
i18n:
zh-CN: 集群存储总容量
en-US: CapacityTotal
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: CapacityTotalGB
type: 0
@@ -92,12 +98,14 @@ metrics:
i18n:
zh-CN: 集群存储总容量
en-US: CapacityTotalGB
ja-JP: 容量合計(GB)
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: CapacityUsed
type: 0
i18n:
zh-CN: 集群存储已使用容量
en-US: CapacityUsed
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: CapacityUsedGB
type: 0
@@ -105,12 +113,14 @@ metrics:
zh-CN: 集群存储已使用容量
unit: 'GB'
en-US: CapacityUsedGB
ja-JP: 使用した容量(GB)
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: CapacityRemaining
type: 0
i18n:
zh-CN: 集群存储剩余容量
en-US: CapacityRemaining
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: CapacityRemainingGB
type: 0
@@ -118,120 +128,140 @@ metrics:
i18n:
zh-CN: 集群存储剩余容量
en-US: CapacityRemainingGB
ja-JP: 使用可能の容量(GB)
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: CapacityUsedNonDFS
type: 0
i18n:
zh-CN: 集群非 HDFS 使用容量
en-US: CapacityUsedNonDFS
ja-JP: 使用したノンHDFS容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: TotalLoad
type: 0
i18n:
zh-CN: 整个集群的客户端连接数
en-US: TotalLoad
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: FilesTotal
type: 0
i18n:
zh-CN: 集群文件总数量
en-US: FilesTotal
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: BlocksTotal
type: 0
i18n:
zh-CN: 总 BLOCK 数量
en-US: BlocksTotal
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: PendingReplicationBlocks
type: 0
i18n:
zh-CN: 等待被备份的块数量
en-US: PendingReplicationBlocks
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: UnderReplicatedBlocks
type: 0
i18n:
zh-CN: 副本数不够的块数量
en-US: UnderReplicatedBlocks
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: CorruptBlocks
type: 0
i18n:
zh-CN: 坏块数量
en-US: CorruptBlocks
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: ScheduledReplicationBlocks
type: 0
i18n:
zh-CN: 安排要备份的块数量
en-US: ScheduledReplicationBlocks
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: PendingDeletionBlocks
type: 0
i18n:
zh-CN: 等待被删除的块数量
en-US: PendingDeletionBlocks
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: ExcessBlocks
type: 0
i18n:
zh-CN: 多余的块数量
en-US: ExcessBlocks
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: PostponedMisreplicatedBlocks
type: 0
i18n:
zh-CN: 被推迟处理的异常块数量
en-US: PostponedMisreplicatedBlocks
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: NumLiveDataNodes
type: 0
i18n:
zh-CN: 活的数据节点数量
en-US: NumLiveDataNodes
ja-JP: ライブのDATANODE数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDeadDataNodes
type: 0
i18n:
zh-CN: 已经标记为 Dead 状态的数据节点数量
en-US: NumDeadDataNodes
ja-JP: デッドのDATANODE数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDecomLiveDataNodes
type: 0
i18n:
zh-CN: 下线且 Live 的节点数量
en-US: NumDecomLiveDataNodes
ja-JP: オフラインとライブのDATANODE数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDecomDeadDataNodes
type: 0
i18n:
zh-CN: 下线且 Dead 的节点数量
en-US: NumDecomDeadDataNodes
ja-JP: オフラインとデッドのDATANODE数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: NumDecommissioningDataNodes
type: 0
i18n:
zh-CN: 正在下线的节点数量
en-US: NumDecommissioningDataNodes
ja-JP: オフライン中のDATANODE数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: TransactionsSinceLastCheckpoint
type: 0
i18n:
zh-CN: 从上次Checkpoint之后的事务数量
en-US: TransactionsSinceLastCheckpoint
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: LastCheckpointTime
type: 0
i18n:
zh-CN: 上一次Checkpoint时间
en-US: LastCheckpointTime
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: PendingDataNodeMessageCount
type: 0
i18n:
zh-CN: DATANODE 的请求被 QUEUE 在 standby namenode 中的个数
en-US: PendingDataNodeMessageCount
ja-JP: DATANODEで保留中のメッセージ数
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.CapacityTotal
@@ -306,18 +336,21 @@ metrics:
i18n:
zh-CN: 接收数据速率
en-US: ReceivedBytes
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: SentBytes
type: 0
i18n:
zh-CN: 发送数据速率
en-US: SentBytes
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: RpcQueueTimeNumOps
type: 0
i18n:
zh-CN: RPC 调用速率
en-US: RpcQueueTimeNumOps
ja-JP: RPCスピード
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.ReceivedBytes
@@ -336,7 +369,6 @@ metrics:
ssl: ^_^ssl^_^
parseType: jsonPath
parseScript: '$.beans[?(@.name =~ /Hadoop:service=NameNode,name=RpcActivityForPort80\d+/)]'
# parseScript: '$.beans[?(@.name == "Hadoop:service=NameNode,name=RpcActivityForPort8020")]'
- name: runtime
# 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
@@ -349,6 +381,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:
- $.beans[?(@.name == "java.lang:type=Runtime")].StartTime
@@ -376,96 +409,112 @@ metrics:
i18n:
zh-CN: JVM 当前已经使用的 NonHeapMemory 的大小
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: MemNonHeapCommittedM
type: 0
i18n:
zh-CN: JVM 配置的 NonHeapCommittedM 的大小
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: MemHeapUsedM
type: 0
i18n:
zh-CN: JVM 当前已经使用的 HeapMemory 的大小
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: MemHeapCommittedM
type: 0
i18n:
zh-CN: JVM HeapMemory 提交大小
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
i18n:
zh-CN: JVM 配置的 HeapMemory 的大小
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: MemMaxM
type: 0
i18n:
zh-CN: JVM 运行时可以使用的最大内存大小
en-US: MemMaxM
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: GcCountParNew
type: 0
i18n:
zh-CN: 新生代GC次数
en-US: GcCountParNew
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: GcTimeMillisParNew
type: 0
i18n:
zh-CN: 新生代GC消耗时间
en-US: GcTimeMillisParNew
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: GcCountConcurrentMarkSweep
type: 0
i18n:
zh-CN: 老年代GC次数
en-US: GcCountConcurrentMarkSweep
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: GcTimeMillisConcurrentMarkSweep
type: 0
i18n:
zh-CN: 老年代GC消耗时间
en-US: GcTimeMillisConcurrentMarkSweep
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: GC次数
en-US: GcCount
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: GcTimeMillis
type: 0
i18n:
zh-CN: 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: ThreadsRunnable
type: 0
i18n:
zh-CN: 处于 BLOCKED 状态的线程数量
zh-CN: 处于 RUNNABLE 状态的线程数量
en-US: ThreadsRunnable
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: ThreadsBlocked
type: 0
i18n:
zh-CN: 处于 BLOCKED 状态的线程数量
en-US: ThreadsBlocked
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: ThreadsWaiting
type: 0
i18n:
zh-CN: 处于 WAITING 状态的线程数量
en-US: ThreadsWaiting
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: ThreadsTimedWaiting
type: 0
i18n:
zh-CN: 处于 TIMED WAITING 状态的线程数量
en-US: ThreadsTimedWaiting
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:
- $.MemNonHeapUsedM
@@ -20,11 +20,13 @@ app: hertzbeat
name:
zh-CN: HertzBeat
en-US: HertzBeat
ja-JP: HertzBeat
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 对 Hertzbeat 监控系统的通用指标进行测量监控。<br>您可以点击 “<i>新建 HertzBeat监控系统</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors HertzBeat Monitor through general performance metric. You could click the "<i>New HertzBeat Monitor</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat對Hertzbeat監控系統的通用名額進行量測監控。<br>您可以點擊“<i>新建HertzBeat監控系統</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
zh-TW: Hertzbeat對Hertzbeat監控系統的通用指標進行量測監控。<br>您可以點擊“<i>新建HertzBeat監控系統</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は Hertzbeatの一般的なメトリクスを監視します。<br>「<i>新規 Apache Hertzbeat</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hertzbeat
en-US: https://hertzbeat.apache.org/docs/help/hertzbeat
@@ -33,12 +35,14 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
type: host
required: true
- field: port
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
type: number
range: '[0,65535]'
required: true
@@ -47,12 +51,14 @@ params:
name:
zh-CN: 启用HTTPS
en-US: HTTPS
ja-JP: HTTPS
type: boolean
required: true
- field: timeout
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
type: number
required: false
hide: true
@@ -60,6 +66,7 @@ params:
name:
zh-CN: 认证方式
en-US: Auth Type
ja-JP: 認証方法
type: radio
required: false
hide: true
@@ -72,6 +79,7 @@ params:
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
type: text
limit: 50
required: false
@@ -80,6 +88,7 @@ params:
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
type: password
required: false
hide: true
@@ -90,6 +99,7 @@ metrics:
i18n:
zh-CN: 概要信息
en-US: Summary
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
@@ -102,26 +112,31 @@ metrics:
i18n:
zh-CN: 应用
en-US: App
ja-JP: 応用
- field: category
type: 1
i18n:
zh-CN: 类别
en-US: Category
ja-JP: カテゴリ
- field: status
type: 0
i18n:
zh-CN: 状态
en-US: Status
ja-JP: ステータス
- field: size
type: 0
i18n:
zh-CN: 数量
en-US: Size
ja-JP: サイズ
- field: availableSize
type: 0
i18n:
zh-CN: 可用数量
en-US: Available Size
ja-JP: 利用可能なサイズ
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk, we use HTTP protocol here
protocol: http
# the config content when protocol is http
@@ -153,6 +168,7 @@ metrics:
i18n:
zh-CN: 内部队列
en-US: Inner Queue
ja-JP: 内部キュー
priority: 1
fields:
- field: responseTime
@@ -161,26 +177,31 @@ metrics:
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
- field: alertDataQueue
type: 0
i18n:
zh-CN: 变更数据队列
en-US: Data Change Queue
ja-JP: データ変更キュー
- field: metricsDataToAlertQueue
type: 0
i18n:
zh-CN: 指标数据到变更队列
en-US: Metrics Data to Change Queue
ja-JP: データ変更キュー
- field: metricsDataToPersistentStorageQueue
type: 0
i18n:
zh-CN: 指标数据到持久化队列
en-US: Metrics Data to Persistent Queue
ja-JP: 永続キュー
- field: metricsDataToMemoryStorageQueue
type: 0
i18n:
zh-CN: 指标数据到内存存储队列
en-US: Metrics Data to Memory Storage Queue
ja-JP: メモリストレージキュー
protocol: http
http:
host: ^_^host^_^
@@ -202,6 +223,7 @@ metrics:
i18n:
zh-CN: 线程状态
en-US: Thread State
ja-JP: スレッド状態
visible: false
priority: 1
fields:
@@ -210,6 +232,7 @@ metrics:
i18n:
zh-CN: 状态
en-US: State
ja-JP: 状態
protocol: http
http:
host: ^_^host^_^
@@ -230,6 +253,7 @@ metrics:
i18n:
zh-CN: 线程
en-US: Threads
ja-JP: スレッド
priority: 3
fields:
- field: state
@@ -237,11 +261,13 @@ metrics:
i18n:
zh-CN: 状态
en-US: State
ja-JP: 状態
- field: number
type: 0
i18n:
zh-CN: 数量
en-US: Number
ja-JP: 総数
aliasFields:
- $.measurements[?(@.statistic == "VALUE")].value
calculates:
@@ -267,6 +293,7 @@ metrics:
i18n:
zh-CN: 空间名称
en-US: Space Name
ja-JP: スペース名
visible: false
priority: 4
fields:
@@ -275,6 +302,7 @@ metrics:
i18n:
zh-CN: ID
en-US: ID
ja-JP: ID
protocol: http
http:
host: ^_^host^_^
@@ -295,6 +323,7 @@ metrics:
i18n:
zh-CN: 内存使用
en-US: Memory Used
ja-JP: 使用したメモリ
priority: 5
fields:
- field: space
@@ -302,12 +331,14 @@ metrics:
i18n:
zh-CN: 空间
en-US: Space
ja-JP: スペース
- field: mem_used
type: 0
unit: MB
i18n:
zh-CN: 已使用内存
en-US: Used Memory
ja-JP: 使用したメモリ
aliasFields:
- $.measurements[?(@.statistic == "VALUE")].value
calculates:
@@ -22,11 +22,13 @@ app: hertzbeat_token
name:
zh-CN: HertzBeat(Token)
en-US: HertzBeat(Token)
ja-JP: HertzBeat(Token)
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 对 HertzBeat监控(Token)进行测量监控。<br>您可以点击 “<i>新建 HertzBeat监控(Token)</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors HertzBeat Monitor(Token). You could click the "<i>New HertzBeat Monitor(Token)</i>" button and proceed with the configuration or import an existing setup through the "<i>More Actions</i>" menu.
zh-TW: Hertzbeat對HertzBeat監控(Token)進行量測監控。<br>您可以點擊“<i>新建HertzBeat監控(Token</i>”並進行配寘,或者選擇“<i>更多操作</i>”,導入已有配寘。
ja-JP: Hertzbeat は Hertzbeat(Token)の一般的なメトリクスを監視します。<br>「<i>新規 Apache Hertzbeat(Token)</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hertzbeat_token
en-US: https://hertzbeat.apache.org/docs/help/hertzbeat_token
@@ -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
@@ -46,6 +49,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
@@ -57,6 +61,7 @@ params:
name:
zh-CN: 启动SSL
en-US: SSL
ja-JP: SSL利用
# type-param field type(boolean mapping the html switch tag)
type: boolean
required: false
@@ -64,6 +69,7 @@ params:
name:
zh-CN: Content-Type
en-US: Content-Type
ja-JP: コンテンツタイプ
type: text
placeholder: 'Request Body Type'
required: false
@@ -71,6 +77,7 @@ params:
name:
zh-CN: 请求BODY
en-US: BODY
ja-JP: ボディ
type: textarea
placeholder: 'Available When POST PUT'
required: false
@@ -81,6 +88,7 @@ metrics:
i18n:
zh-CN: 认证
en-US: Auth
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
@@ -92,11 +100,13 @@ metrics:
i18n:
zh-CN: 令牌
en-US: Token
ja-JP: トークン
- field: refreshToken
type: 1
i18n:
zh-CN: 刷新令牌
en-US: Refresh Token
ja-JP: リフレッシュトークン
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: http
# the config content when protocol is http
@@ -128,6 +138,7 @@ metrics:
i18n:
zh-CN: 概要信息
en-US: Summary
ja-JP: 概要
priority: 1
fields:
- field: app
@@ -136,26 +147,31 @@ metrics:
i18n:
zh-CN: 应用
en-US: App
ja-JP: 応用
- field: category
type: 1
i18n:
zh-CN: 类别
en-US: Category
ja-JP: カテゴリ
- field: status
type: 0
i18n:
zh-CN: 状态
en-US: Status
ja-JP: ステータス
- field: size
type: 0
i18n:
zh-CN: 数量
en-US: Size
ja-JP: サイズ
- field: availableSize
type: 0
i18n:
zh-CN: 可用数量
en-US: Available Size
ja-JP: 利用可能なサイズ
protocol: http
http:
host: ^_^host^_^
@@ -174,6 +190,7 @@ metrics:
i18n:
zh-CN: 内部队列
en-US: Inner Queue
ja-JP: 内部キュー
priority: 1
fields:
- field: responseTime
@@ -182,26 +199,31 @@ metrics:
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
- field: alertDataQueue
type: 0
i18n:
zh-CN: 变更数据队列
en-US: Alert Data Queue
ja-JP: アラートデータキュー
- field: metricsDataToAlertQueue
type: 0
i18n:
zh-CN: 指标数据到变更队列
en-US: Metrics Data to Alert Queue
ja-JP: アラートキュー
- field: metricsDataToPersistentStorageQueue
type: 0
i18n:
zh-CN: 指标数据到持久化队列
en-US: Metrics Data to Persistent Storage Queue
ja-JP: 永続ストレージキュー
- field: metricsDataToMemoryStorageQueue
type: 0
i18n:
zh-CN: 指标数据到内存存储队列
en-US: Metrics Data to Memory Storage Queue
ja-JP: メモリストレージキュー
protocol: http
http:
host: ^_^host^_^
@@ -221,6 +243,7 @@ metrics:
i18n:
zh-CN: 指标数据到内存存储队列
en-US: Metrics Data to Memory Storage Queue
ja-JP: メモリストレージキュー
visible: false
priority: 2
fields:
@@ -229,6 +252,7 @@ metrics:
i18n:
zh-CN: 状态
en-US: State
ja-JP: 状態
protocol: http
http:
host: ^_^host^_^
@@ -247,6 +271,7 @@ metrics:
i18n:
zh-CN: 线程
en-US: Threads
ja-JP: スレッド
priority: 3
fields:
- field: state
@@ -254,11 +279,13 @@ metrics:
i18n:
zh-CN: 状态
en-US: State
ja-JP: 状態
- field: number
type: 0
i18n:
zh-CN: 数量
en-US: Number
ja-JP: 総数
aliasFields:
- $.measurements[?(@.statistic == "VALUE")].value
calculates:
@@ -282,6 +309,7 @@ metrics:
i18n:
zh-CN: 空间名称
en-US: Space Name
ja-JP: スペース名
visible: false
priority: 4
fields:
@@ -290,6 +318,7 @@ metrics:
i18n:
zh-CN: ID
en-US: ID
ja-JP: ID
protocol: http
http:
host: ^_^host^_^
@@ -308,6 +337,7 @@ metrics:
i18n:
zh-CN: 内存使用
en-US: Memory Used
ja-JP: 使用したメモリ
priority: 5
fields:
- field: space
@@ -315,12 +345,14 @@ metrics:
i18n:
zh-CN: 空间
en-US: Space
ja-JP: スペース
- field: mem_used
type: 0
unit: MB
i18n:
zh-CN: 内存使用量
en-US: Memory Used
ja-JP: 使用したメモリ
aliasFields:
- $.measurements[?(@.statistic == "VALUE")].value
calculates:
@@ -21,10 +21,12 @@ app: hikvision_isapi
name:
zh-CN: 海康威视 ISAPI
en-US: Hikvision ISAPI
ja-JP: Hikvision ISAPI
# The description and help of this monitoring type
help:
zh-CN: 通过ISAPI接口监控海康威视设备状态,获取设备健康数据。
en-US: Monitor Hikvision devices through ISAPI interface to collect health data.
ja-JP: ISAPIを呼び出して健康データを収集し、Hikvisionデバイスを監視します。
# Input params define for monitoring(render web ui by the definition)
params:
@@ -32,12 +34,14 @@ params:
name:
zh-CN: 主机Host
en-US: Host
ja-JP: ホスト
type: host
required: true
- field: port
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
type: number
range: '[0,65535]'
required: true
@@ -46,6 +50,7 @@ params:
name:
zh-CN: 超时时间(ms)
en-US: Timeout(ms)
ja-JP: タイムアウト(ms)
type: number
range: '[1000,60000]'
required: true
@@ -54,18 +59,21 @@ params:
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
type: text
required: true
- field: password
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
type: password
required: true
- field: ssl
name:
zh-CN: 启用HTTPS
en-US: SSL
ja-JP: SSL利用
type: boolean
required: false
defaultValue: false
@@ -76,6 +84,7 @@ metrics:
i18n:
zh-CN: 系统信息
en-US: System Info
ja-JP: システム情報
priority: 0
protocol: http
http:
@@ -97,30 +106,36 @@ metrics:
i18n:
zh-CN: 设备名称
en-US: Device Name
ja-JP: デバイス名
- field: deviceID
type: 1
i18n:
zh-CN: 设备ID
en-US: Device ID
ja-JP: デバイスID
- field: firmwareVersion
type: 1
i18n:
zh-CN: 固件版本
en-US: Firmware Version
ja-JP: ファームウェアバージョン
- field: model
type: 1
i18n:
zh-CN: 设备型号
en-US: Device Model
ja-JP: デバイスモデル
- field: macAddress
type: 1
i18n:
zh-CN: mac地址
en-US: Mac Address
ja-JP: Macアドレス
- name: status
i18n:
zh-CN: 设备状态
en-US: Status
ja-JP: 状態
priority: 0
protocol: http
http:
@@ -141,91 +156,107 @@ metrics:
i18n:
zh-CN: CPU 利用率
en-US: CPU Utilization
ja-JP: CPU使用率
type: 0
unit: '%'
- field: memory_usage
i18n:
zh-CN: 内存使用量
en-US: Memory Usage
ja-JP: メモリ使用量
type: 0
unit: MB
- field: memory_available
i18n:
zh-CN: 可用内存
en-US: Memory Available
ja-JP: 使用可能のメモリ
type: 0
unit: MB
- field: cache_size
i18n:
zh-CN: 缓存大小
en-US: Cache Size
ja-JP: キャッシュサイズ
type: 0
unit: MB
- field: net_port_1_speed
i18n:
zh-CN: 网口1速度
en-US: Net Port 1 Speed
ja-JP: ネットポート1速度
type: 0
unit: Mbps
- field: net_port_2_speed
i18n:
zh-CN: 网口2速度
en-US: Net Port 2 Speed
ja-JP: ネットポート2速度
type: 0
unit: Mbps
- field: boot_time
i18n:
zh-CN: 启动时间
en-US: Boot Time
ja-JP: 起動時間
type: 1
- field: device_uptime
i18n:
zh-CN: 运行时长
en-US: Device Uptime
ja-JP: デバイスアップタイム
type: 1
- field: last_calibration_time
i18n:
zh-CN: 上次校时时间
en-US: Last Calibration Time
ja-JP: 最終校正時刻
type: 1
- field: last_calibration_time_diff
i18n:
zh-CN: 上次校时时间差
en-US: Last Calibration Time Diff
ja-JP: 最終校正時間差
type: 0
unit: s
- field: avg_upload_time
i18n:
zh-CN: 平均上传耗时
en-US: Avg Upload Time
ja-JP: 平均アップロード時間
type: 0
unit: ms
- field: max_upload_time
i18n:
zh-CN: 最大上传耗时
en-US: Max Upload Time
ja-JP: 最大アップロード時間
type: 0
unit: ms
- field: min_upload_time
i18n:
zh-CN: 最小上传耗时
en-US: Min Upload Time
ja-JP: 最小アップロード時間
type: 0
unit: ms
- field: last_calibration_mode
i18n:
zh-CN: 上次校时模式
en-US: Last Calibration Mode
ja-JP: 最終校正モード
type: 1
- field: last_calibration_address
i18n:
zh-CN: 上次校时地址
en-US: Last Calibration Address
ja-JP: 最終校正アドレス
type: 1
- field: response_time
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
type: 0
unit: ms
aliasFields:
@@ -21,11 +21,13 @@ app: hive
name:
zh-CN: Apache Hive
en-US: Apache Hive
ja-JP: Apache Hive
# The description and help of this monitoring type
help:
zh-CN: HertzBeat 对 <a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a> 暴露的通用性能指标(basic、environment、thread、code_cache)进行采集监控。<span class='help_module_span'>⚠️注意:如果要监控 Apache Hive 中的信息,需要您的 Apache Hive 应用集成并开启 Hive Server2, <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hive'>点击查看具体步骤</a>。</span>
en-US: HertzBeat collects and monitors Apache Hive through general performance metric(health, environment, threads, memory_used) that exposed by the Hive Server2. <br><span class='help_module_span'>⚠️Note:You should make sure that your Apache Hive application have already integrated and enabled the Hive Server2, <a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hive'>click here to see the specific steps.</a></span>
zh-TW: HertzBeat 對<a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a>暴露的通用性能指標(basic、environment、thread、code_cache)進行採集監控。< span class='help_module_span'> ⚠️ 注意:如果要監控Apache Hive中的指標,需要您的Apache Hive應用集成並開啟Hive Server2<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hive'>點擊查看具體步驟</a>。</span>
ja-JP: HertzBeat は <a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a> の一般的なパフォーマンスのメトリクスを監視します。<span class='help_module_span'>⚠️注意:Apache Hive で Hive Server2を有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hive'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hive
en-US: https://hertzbeat.apache.org/docs/help/hive
@@ -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: 启动SSL
en-US: SSL
ja-JP: SSL
# When the type is boolean, the frontend will display a switch for it.
type: boolean
# required-true or false
@@ -71,6 +76,7 @@ params:
name:
zh-CN: Base Path
en-US: Base Path
ja-JP: Base Path
# type-param field type(most mapping the html input type) The type "text" belongs to a text input field.
type: text
# default value
@@ -86,6 +92,7 @@ metrics:
i18n:
zh-CN: 可用性
en-US: Availability
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
@@ -96,6 +103,7 @@ metrics:
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
type: 0
unit: ms
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
@@ -119,27 +127,32 @@ metrics:
i18n:
zh-CN: 基本信息
en-US: Basic
ja-JP: 基礎情報
priority: 1
fields:
- field: vm_name
i18n:
zh-CN: 虚拟机名称
en-US: VM Name
ja-JP: 仮想マシン名
type: 1
- field: vm_vendor
i18n:
zh-CN: 虚拟机供应商
en-US: VM Vendor
ja-JP: 仮想マシンベンダー
type: 1
- field: vm_version
i18n:
zh-CN: 虚拟机版本
en-US: VM Version
ja-JP: 仮想マシンバージョン
type: 1
- field: up_time
i18n:
zh-CN: 运行时间
en-US: Uptime
ja-JP: アップタイム
type: 0
unit: ms
aliasFields:
@@ -167,6 +180,7 @@ metrics:
i18n:
zh-CN: 环境信息
en-US: Environment
ja-JP: 環境
priority: 2
# collect metrics content
fields:
@@ -175,31 +189,37 @@ metrics:
i18n:
zh-CN: https 代理端口
en-US: https Proxy Port
ja-JP: https プロキシポート
type: 0
- field: os_name
i18n:
zh-CN: os 名称
en-US: OS Name
ja-JP: OS名
type: 1
- field: os_version
i18n:
zh-CN: os 版本
en-US: OS Version
ja-JP: OSバージョン
type: 1
- field: os_arch
i18n:
zh-CN: os 架构
en-US: OS Arch
ja-JP: OSアーキテクチャ
type: 1
- field: java_runtime_name
i18n:
zh-CN: java 运行时名称
en-US: Java Runtime Name
ja-JP: Java ランタイム名
type: 1
- field: java_runtime_version
i18n:
zh-CN: java 运行时版本
en-US: Java Runtime Version
ja-JP: Java ランタイムバージョン
type: 1
# metric alias list, used to identify metrics in query results
aliasFields:
@@ -240,27 +260,32 @@ metrics:
i18n:
zh-CN: 线程
en-US: Thread
ja-JP: スレッド
priority: 3
fields:
- field: thread_count
i18n:
zh-CN: 线程数
en-US: Thread Count
ja-JP: スレッド総数
type: 0
- field: total_started_thread
i18n:
zh-CN: 启动线程数
en-US: Total Started Thread
ja-JP: スレッド開始数
type: 0
- field: peak_thread_count
i18n:
zh-CN: 峰值线程数
en-US: Peak Thread Count
ja-JP: ピークスレッド数
type: 0
- field: daemon_thread_count
i18n:
zh-CN: 守护线程数
en-US: Daemon Thread Count
ja-JP: デーモンスレッド数
type: 0
aliasFields:
- $.beans[?(@.name == 'java.lang:type=Threading')].ThreadCount
@@ -286,30 +311,35 @@ metrics:
i18n:
zh-CN: 代码缓存
en-US: Code Cache
ja-JP: コードキャッシュ
priority: 4
fields:
- field: committed
i18n:
zh-CN: 已提交
en-US: Committed
ja-JP: コミット
type: 1
unit: MB
- field: init
i18n:
zh-CN: 初始化
en-US: Init
ja-JP: イニシャル
type: 0
unit: MB
- field: max
i18n:
zh-CN: 最大
en-US: Max
ja-JP: 最大
type: 0
unit: MB
- field: used
i18n:
zh-CN: 已使用
en-US: Used
ja-JP: 使用済み
type: 0
unit: MB
aliasFields:
@@ -21,11 +21,13 @@ app: hpe_switch
name:
zh-CN: HPE通用交换机
en-US: HPE Switch
ja-JP: HPEスイッチングハブ
# 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> 对 HPE交换机 的通用指标(可用性,系统信息,端口流量等)进行采集监控。<br>您可以点击 “<i>新建 HPE通用交换机</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 HPE Switch general performance metrics. <br>You can click the "<i>New HPE Switch</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> 對 HPE交換機 的通用指標(可用性,系統信息,端口流量等)進行采集監控。<br>您可以點擊 “<i>新建 HPE通用交換機</i>” 並進行配置SNMP相關參數添加,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> HPEスイッチングハブの一般的なメトリクスを監視します。<br>「<i>新規 HPEスイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hpe_switch
en-US: https://hertzbeat.apache.org/docs/help/hpe_switch
@@ -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
@@ -79,6 +84,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
@@ -98,6 +104,7 @@ params:
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
@@ -116,6 +123,7 @@ params:
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
@@ -134,6 +142,7 @@ params:
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
@@ -152,6 +161,7 @@ params:
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
@@ -172,6 +182,7 @@ params:
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
@@ -190,6 +201,7 @@ params:
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
@@ -210,6 +222,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
@@ -227,6 +240,7 @@ metrics:
i18n:
zh-CN: 系统信息
en-US: System 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
@@ -238,32 +252,38 @@ metrics:
i18n:
zh-CN: 主机名称
en-US: Host 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: location
type: 1
i18n:
zh-CN: 位置
en-US: Location
ja-JP: 位置
- field: contact
type: 1
i18n:
zh-CN: 联系人
en-US: Contact
ja-JP: 連絡先
- field: responseTime
type: 0
unit: ms
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: snmp
# the config content when protocol is snmp
@@ -305,6 +325,7 @@ metrics:
i18n:
zh-CN: 接口详情
en-US: Interfaces Detail
ja-JP: ネットワークカード詳細
priority: 1
fields:
- field: index
@@ -312,68 +333,79 @@ 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: mtu
type: 0
unit: 'byte'
i18n:
zh-CN: MTU
en-US: MTU
ja-JP: MTU
- field: speed
type: 0
unit: 'MB/s'
i18n:
zh-CN: 接口速率
en-US: Interface Speed
ja-JP: ネットワークカード速度
- field: in_octets
type: 0
unit: 'MByte'
i18n:
zh-CN: 入流量
en-US: In Octets
ja-JP: 受信されたバイト数
- 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_octets
type: 0
unit: 'MByte'
i18n:
zh-CN: 出流量
en-US: Out Octets
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: 転送異常パケット数
- 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: 現在のステータス
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- ifIndex
- ifDescr
@@ -21,6 +21,7 @@ app: http_sd
name:
zh-CN: Http Service Discovery
en-US: Http Service Discovery
ja-JP: Httpサービスディスカバリー
# Input params define for app api(render web ui by the definition)
params:
# field-param field key
@@ -29,6 +30,7 @@ params:
name:
zh-CN: 服务发现地址
en-US: Service Discovery Url
ja-JP: サービスディスカバリー Url
# type-param field type(most mapping the html input type)
type: text
# required-true or false
@@ -39,6 +41,7 @@ params:
name:
zh-CN: 认证方式
en-US: Auth Type
ja-JP: 認証方法
# type-param field type(most mapping the html input type)
type: radio
# required-true or false
@@ -57,6 +60,7 @@ params:
name:
zh-CN: 认证Token
en-US: Access Token
ja-JP: アクセストークン
# type-param field type(most mapping the html input type)
type: text
# dependent parameter values list
@@ -73,6 +77,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
@@ -92,6 +97,7 @@ params:
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
# type-param field type(most mapping the html input type)
type: password
# dependent parameter values list
@@ -109,6 +115,7 @@ metrics:
i18n:
zh-CN: 监控目标
en-US: Monitor Target
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
@@ -120,11 +127,13 @@ metrics:
i18n:
zh-CN: Host
en-US: Host
ja-JP: ホスト
- field: port
type: 1
i18n:
zh-CN: Port
en-US: Port
ja-JP: ポート
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: http_sd
# the config content when protocol is http_sd
@@ -21,11 +21,13 @@ app: huawei_switch
name:
zh-CN: 华为通用交换机
en-US: Huawei Switch
ja-JP: Huaweiスイッチングハブ
# 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> 对 华为交换机 的通用指标(可用性,系统信息,端口流量等)进行采集监控。<br>您可以点击 “<i>新建 华为通用交换机</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 Huawei Switch general performance metrics. <br>You can click the "<i>New Huawei Switch</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> 對 华为交換機 的通用指標(可用性,系統信息,端口流量等)進行采集監控。<br>您可以點擊 “<i>新建 华为通用交換機</i>” 並進行配置SNMP相關參數添加,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は <a class='help_module_content' href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP プロトコルを介して</a> Huaweiスイッチングハブの一般的なメトリクスを監視します。<br>「<i>新規 Huaweiスイッチングハブ</i>」をクリックしてSNMPなどのパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/huawei_switch
en-US: https://hertzbeat.apache.org/docs/help/huawei_switch
@@ -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
@@ -79,6 +84,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
@@ -98,6 +104,7 @@ params:
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
@@ -116,6 +123,7 @@ params:
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
@@ -134,6 +142,7 @@ params:
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
@@ -152,6 +161,7 @@ params:
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
@@ -172,6 +182,7 @@ params:
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
@@ -190,6 +201,7 @@ params:
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
@@ -210,6 +222,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
@@ -227,6 +240,7 @@ metrics:
i18n:
zh-CN: 系统信息
en-US: System 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
@@ -238,32 +252,38 @@ metrics:
i18n:
zh-CN: 主机名称
en-US: Host 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: location
type: 1
i18n:
zh-CN: 位置
en-US: Location
ja-JP: 位置
- field: contact
type: 1
i18n:
zh-CN: 联系人
en-US: Contact
ja-JP: 連絡先
- field: responseTime
type: 0
unit: ms
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
protocol: snmp
# the config content when protocol is snmp
@@ -304,6 +324,7 @@ metrics:
i18n:
zh-CN: 接口详情
en-US: Interfaces Detail
ja-JP: ネットワークカード詳細
priority: 1
fields:
- field: index
@@ -311,66 +332,78 @@ 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: mtu
type: 0
unit: 'byte'
i18n:
zh-CN: MTU
en-US: MTU
ja-JP: MTU
- field: speed
type: 0
unit: 'MB/s'
i18n:
zh-CN: 接口速率
en-US: Interface Speed
ja-JP: ネットワークカード速度
- field: in_octets
type: 0
unit: 'MByte'
i18n:
zh-CN: 入流量
en-US: In Octets
ja-JP: 受信されたバイト数
- 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_octets
type: 0
unit: 'MByte'
i18n:
zh-CN: 出流量
en-US: Out Octets
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: 転送異常パケット数
- 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: 現在のステータス
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- ifIndex
@@ -21,11 +21,13 @@ app: hugegraph
name:
zh-CN: HugeGraph
en-US: HugeGraph
ja-JP: HugeGraph
# The description and help of this monitoring type
help:
zh-CN: Hertzbeat 对 HugeGraph 节点监控指标进行监控。<br>您可以点击 “<i>新建 Apache HugeGraph</i>” 并进行配置,或者选择“<i>更多操作</i>”,导入已有配置。
en-US: Hertzbeat monitors the HugeGraph metrics. <br>You can click "<i>New Apache HugeGraph</i>" to configure, or select "<i>More Actions</i>" to import an existing configuration.
zh-TW: Hertzbeat 對 HugeGraph 節點監控指標進行監控。<br>您可以點擊 “<i>新建 Apache HugeGraph</i>” 並進行配置,或者選擇“<i>更多操作</i>”,導入已有配置。
ja-JP: Hertzbeat は HugeGraphノードの一般的なメトリクスを監視します。<br>「<i>新規 Apache HugeGraph</i>」をクリックしてパラメタを設定した後、新規することができます。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/hugegraph
@@ -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: 启动SSL
en-US: SSL
ja-JP: SSL
# When the type is boolean, the frontend will display a switch for it.
type: boolean
# required-true or false
@@ -72,6 +77,7 @@ params:
name:
zh-CN: Base Path
en-US: Base Path
ja-JP: Base Path
# type-param field type(most mapping the html input type) The type "text" belongs to a text input field.
type: text
# default value
@@ -94,336 +100,392 @@ metrics:
i18n:
zh-CN: edge-hugegraph-capacity
en-US: edge-hugegraph-capacity
ja-JP: edge-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: edge-hugegraph-expire
type: 0
i18n:
zh-CN: edge-hugegraph-expire
en-US: edge-hugegraph-expire
ja-JP: edge-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: edge-hugegraph-hits
type: 0
i18n:
zh-CN: edge-hugegraph-hits
en-US: edge-hugegraph-hits
ja-JP: edge-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: edge-hugegraph-miss
type: 0
i18n:
zh-CN: edge-hugegraph-miss
en-US: edge-hugegraph-miss
ja-JP: edge-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: edge-hugegraph-size
type: 0
i18n:
zh-CN: edge-hugegraph-size
en-US: edge-hugegraph-size
ja-JP: edge-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: instances
type: 0
i18n:
zh-CN: instances
en-US: instances
ja-JP: instances
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-id-hugegraph-capacity
type: 0
i18n:
zh-CN: schema-id-hugegraph-capacity
en-US: schema-id-hugegraph-capacity
ja-JP: schema-id-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-id-hugegraph-expire
type: 0
i18n:
zh-CN: schema-id-hugegraph-expire
en-US: schema-id-hugegraph-expire
ja-JP: schema-id-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-id-hugegraph-hits
type: 0
i18n:
zh-CN: schema-id-hugegraph-hits
en-US: schema-id-hugegraph-hits
ja-JP: schema-id-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-id-hugegraph-miss
type: 0
i18n:
zh-CN: schema-id-hugegraph-miss
en-US: schema-id-hugegraph-miss
ja-JP: schema-id-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-id-hugegraph-size
type: 0
i18n:
zh-CN: schema-id-hugegraph-size
en-US: schema-id-hugegraph-size
ja-JP: schema-id-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-name-hugegraph-capacity
type: 0
i18n:
zh-CN: schema-name-hugegraph-capacity
en-US: schema-name-hugegraph-capacity
ja-JP: schema-name-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-name-hugegraph-expire
type: 0
i18n:
zh-CN: schema-name-hugegraph-expire
en-US: schema-name-hugegraph-expire
ja-JP: schema-name-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-name-hugegraph-hits
type: 0
i18n:
zh-CN: schema-name-hugegraph-hits
en-US: schema-name-hugegraph-hits
ja-JP: schema-name-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-name-hugegraph-miss
type: 0
i18n:
zh-CN: schema-name-hugegraph-miss
en-US: schema-name-hugegraph-miss
ja-JP: schema-name-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: schema-name-hugegraph-size
type: 0
i18n:
zh-CN: schema-name-hugegraph-size
en-US: schema-name-hugegraph-size
ja-JP: schema-name-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: token-hugegraph-capacity
type: 0
i18n:
zh-CN: token-hugegraph-capacity
en-US: token-hugegraph-capacity
ja-JP: token-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: token-hugegraph-expire
type: 0
i18n:
zh-CN: token-hugegraph-expire
en-US: token-hugegraph-expire
ja-JP: token-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: token-hugegraph-hits
type: 0
i18n:
zh-CN: token-hugegraph-hits
en-US: token-hugegraph-hits
ja-JP: token-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: token-hugegraph-miss
type: 0
i18n:
zh-CN: token-hugegraph-miss
en-US: token-hugegraph-miss
ja-JP: token-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: token-hugegraph-size
type: 0
i18n:
zh-CN: token-hugegraph-size
en-US: token-hugegraph-size
ja-JP: token-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users-hugegraph-capacity
type: 0
i18n:
zh-CN: users-hugegraph-capacity
en-US: users-hugegraph-capacity
ja-JP: users-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users-hugegraph-expire
type: 0
i18n:
zh-CN: users-hugegraph-expire
en-US: users-hugegraph-expire
ja-JP: users-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users-hugegraph-hits
type: 0
i18n:
zh-CN: users-hugegraph-hits
en-US: users-hugegraph-hits
ja-JP: users-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users-hugegraph-miss
type: 0
i18n:
zh-CN: users-hugegraph-miss
en-US: users-hugegraph-miss
ja-JP: users-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users-hugegraph-size
type: 0
i18n:
zh-CN: users-hugegraph-size
en-US: users-hugegraph-size
ja-JP: users-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users_pwd-hugegraph-capacity
type: 0
i18n:
zh-CN: users_pwd-hugegraph-capacity
en-US: users_pwd-hugegraph-capacity
ja-JP: users_pwd-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users_pwd-hugegraph-expire
type: 0
i18n:
zh-CN: users_pwd-hugegraph-expire
en-US: users_pwd-hugegraph-expire
ja-JP: users_pwd-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users_pwd-hugegraph-hits
type: 0
i18n:
zh-CN: users_pwd-hugegraph-hits
en-US: users_pwd-hugegraph-hits
ja-JP: users_pwd-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users_pwd-hugegraph-miss
type: 0
i18n:
zh-CN: users_pwd-hugegraph-miss
en-US: users_pwd-hugegraph-miss
ja-JP: users_pwd-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: users_pwd-hugegraph-size
type: 0
i18n:
zh-CN: users_pwd-hugegraph-size
en-US: users_pwd-hugegraph-size
ja-JP: users_pwd-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: vertex-hugegraph-capacity
type: 0
i18n:
zh-CN: vertex-hugegraph-capacity
en-US: vertex-hugegraph-capacity
ja-JP: vertex-hugegraph容量
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: vertex-hugegraph-expire
type: 0
i18n:
zh-CN: vertex-hugegraph-expire
en-US: vertex-hugegraph-expire
ja-JP: vertex-hugegraph期限切れ数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: vertex-hugegraph-hits
type: 0
i18n:
zh-CN: vertex-hugegraph-hits
en-US: vertex-hugegraph-hits
ja-JP: vertex-hugegraphヒット数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: vertex-hugegraph-miss
type: 0
i18n:
zh-CN: vertex-hugegraph-miss
en-US: vertex-hugegraph-miss
ja-JP: vertex-hugegraphミス数
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: vertex-hugegraph-size
type: 0
i18n:
zh-CN: vertex-hugegraph-size
en-US: vertex-hugegraph-size
ja-JP: vertex-hugegraphサイズ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: batch-write-threads
type: 0
i18n:
zh-CN: batch-write-threads
en-US: batch-write-threads
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: max-write-threads
type: 0
i18n:
zh-CN: max-write-threads
en-US: max-write-threads
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: pending-tasks
type: 0
i18n:
zh-CN: pending-tasks
en-US: pending-tasks
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: workers
type: 0
i18n:
zh-CN: workers
en-US: workers
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: average-load-penalty
type: 0
i18n:
zh-CN: average-load-penalty
en-US: average-load-penalty
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: estimated-size
type: 0
i18n:
zh-CN: estimated-size
en-US: estimated-size
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: eviction-count
type: 0
i18n:
zh-CN: eviction-count
en-US: eviction-count
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: eviction-weight
type: 0
i18n:
zh-CN: eviction-weight
en-US: eviction-weight
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: hit-count
type: 0
i18n:
zh-CN: hit-count
en-US: hit-count
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: hit-rate
type: 0
i18n:
zh-CN: hit-rate
en-US: hit-rate
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: load-count
type: 0
i18n:
zh-CN: load-count
en-US: load-count
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: load-failure-count
type: 0
i18n:
zh-CN: load-failure-count
en-US: load-failure-count
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: load-failure-rate
type: 0
i18n:
zh-CN: load-failure-rate
en-US: load-failure-rate
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: load-success-count
type: 0
i18n:
zh-CN: load-success-count
en-US: load-success-count
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: long-run-compilation-count
type: 0
i18n:
zh-CN: long-run-compilation-count
en-US: long-run-compilation-count
ja-JP: long-run-compilation-count
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: miss-count
type: 0
i18n:
zh-CN: miss-count
en-US: miss-count
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: miss-rate
type: 0
i18n:
zh-CN: miss-rate
en-US: miss-rate
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: request-count
type: 0
i18n:
zh-CN: request-count
en-US: request-count
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: total-load-time
type: 0
i18n:
zh-CN: total-load-time
en-US: total-load-time
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: sessions
type: 0
i18n:
zh-CN: sessions
en-US: sessions
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:
- $.['org.apache.hugegraph.backend.cache.Cache.edge-hugegraph.capacity'].['value']
@@ -568,90 +630,105 @@ metrics:
i18n:
zh-CN: GET-SUCCESS_COUNTER
en-US: GET-SUCCESS_COUNTER
ja-JP: GET成功カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: GET-TOTAL_COUNTER
en-US: GET-TOTAL_COUNTER
ja-JP: GETカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: favicon-ico-GET-FAILED_COUNTER
type: 0
i18n:
zh-CN: favicon-ico-GET-FAILED_COUNTER
en-US: favicon-ico-GET-FAILED_COUNTER
ja-JP: favicon-ico-GET失敗カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: favicon-ico-GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: favicon-ico-GET-TOTAL_COUNTER
en-US: favicon-ico-GET-TOTAL_COUNTER
ja-JP: favicon-ico-GETカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: graphs-HEAD-FAILED_COUNTER
type: 0
i18n:
zh-CN: graphs-HEAD-FAILED_COUNTER
en-US: graphs-HEAD-FAILED_COUNTER
ja-JP: graphs-HEAD失敗カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: graphs-HEAD-SUCCESS_COUNTER
type: 0
i18n:
zh-CN: graphs-HEAD-SUCCESS_COUNTER
en-US: graphs-HEAD-SUCCESS_COUNTER
ja-JP: graphs-HEAD成功カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: graphs-HEAD-TOTAL_COUNTER
type: 0
i18n:
zh-CN: graphs-HEAD-TOTAL_COUNTER
en-US: graphs-HEAD-TOTAL_COUNTER
ja-JP: graphs-HEADカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: graphs-hugegraph-graph-vertices-GET-SUCCESS_COUNTER
type: 0
i18n:
zh-CN: graphs-hugegraph-graph-vertices-GET-SUCCESS_COUNTER
en-US: graphs-hugegraph-graph-vertices-GET-SUCCESS_COUNTER
ja-JP: graphs-hugegraph-graph-vertices-GET成功カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: graphs-hugegraph-graph-vertices-GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: graphs-hugegraph-graph-vertices-GET-TOTAL_COUNTER
en-US: graphs-hugegraph-graph-vertices-GET-TOTAL_COUNTER
ja-JP: graphs-hugegraph-graph-vertices-GETカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metircs-GET-FAILED_COUNTER
type: 0
i18n:
zh-CN: metircs-GET-FAILED_COUNTER
en-US: metircs-GET-FAILED_COUNTER
ja-JP: metircs-GET失敗カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metircs-GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: metircs-GET-TOTAL_COUNTER
en-US: metircs-GET-TOTAL_COUNTER
ja-JP: metircs-GETカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metrics-GET-SUCCESS_COUNTER
type: 0
i18n:
zh-CN: metrics-GET-SUCCESS_COUNTER
en-US: metrics-GET-SUCCESS_COUNTER
ja-JP: metircs-GET成功カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metrics-GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: metrics-GET-TOTAL_COUNTER
en-US: metrics-GET-TOTAL_COUNTER
ja-JP: metircs-GETカウンタ合計
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metrics-gauges-GET-SUCCESS_COUNTER
type: 0
i18n:
zh-CN: metrics-gauges-GET-SUCCESS_COUNTER
en-US: metrics-gauges-GET-SUCCESS_COUNTER
ja-JP: metrics-gauges-GET成功カウンタ
# field-metric name, type-metric type(0-number,1-string), unit-metric unit('%','ms','MB'), label-whether it is a metrics label field
- field: metrics-gauges-GET-TOTAL_COUNTER
type: 0
i18n:
zh-CN: metrics-gauges-GET-TOTAL_COUNTER
en-US: metrics-gauges-GET-TOTAL_COUNTER
ja-JP: metrics-gauges-GETカウンタ合計
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.['//GET/SUCCESS_COUNTER'].['count']
@@ -705,126 +782,151 @@ metrics:
i18n:
zh-CN: mem
en-US: mem
ja-JP: メモリ
- field: mem_total
type: 0
i18n:
zh-CN: mem_total
en-US: mem_total
ja-JP: メモリ容量
- field: mem_used
type: 0
i18n:
zh-CN: mem_used
en-US: mem_used
ja-JP: 使用したメモリ
- field: mem_free
type: 0
i18n:
zh-CN: mem_free
en-US: mem_free
ja-JP: 利用可能なメモリ
- field: mem_unit
type: 1
i18n:
zh-CN: mem_unit
en-US: mem_unit
ja-JP: メモリ単位
- field: processors
type: 0
i18n:
zh-CN: processors
zh-CN: 处理器数
en-US: processors
ja-JP: プロセッサ数
- field: uptime
type: 0
i18n:
zh-CN: uptime
en-US: uptime
ja-JP: アップタイム
- field: systemload_average
type: 0
i18n:
zh-CN: systemload_average
en-US: systemload_average
ja-JP: システムロードアベレージ
- field: heap_committed
type: 0
i18n:
zh-CN: heap_committed
en-US: heap_committed
ja-JP: ヒープのコミットされたメモリ
- field: heap_init
type: 0
i18n:
zh-CN: heap_init
en-US: heap_init
ja-JP: ヒープのイニシャルメモリ
- field: heap_used
type: 0
i18n:
zh-CN: heap_used
en-US: heap_used
ja-JP: ヒープの使用したメモリ
- field: heap_max
type: 0
i18n:
zh-CN: heap_max
en-US: heap_max
ja-JP: ヒープの最大メモリ
- field: nonheap_committed
type: 0
i18n:
zh-CN: nonheap_committed
en-US: nonheap_committed
ja-JP: ノンヒープのコミットされたメモリ
- field: nonheap_init
type: 0
i18n:
zh-CN: nonheap_init
en-US: nonheap_init
ja-JP: ノンヒープのイニシャルメモリ
- field: nonheap_used
type: 0
i18n:
zh-CN: nonheap_used
en-US: nonheap_used
ja-JP: ノンヒープの使用したメモリ
- field: nonheap_max
type: 0
i18n:
zh-CN: nonheap_max
en-US: nonheap_max
ja-JP: ノンヒープの最大メモリ
- field: thread_peak
type: 0
i18n:
zh-CN: thread_peak
en-US: thread_peak
ja-JP: ピークスレッド数
- field: thread_daemon
type: 0
i18n:
zh-CN: thread_daemon
en-US: thread_daemon
ja-JP: デーモンスレッド数
- field: thread_total_started
type: 0
i18n:
zh-CN: thread_total_started
en-US: thread_total_started
ja-JP: スレッド開始数
- field: thread_count
type: 0
i18n:
zh-CN: thread_count
en-US: thread_count
ja-JP: スレッド総数
- field: garbage_collector_g1_young_generation_count
type: 0
i18n:
zh-CN: garbage_collector_g1_young_generation_count
en-US: garbage_collector_g1_young_generation_count
ja-JP: garbage_collector_g1若い領域GC回数
- field: garbage_collector_g1_young_generation_time
type: 0
i18n:
zh-CN: garbage_collector_g1_young_generation_time
en-US: garbage_collector_g1_young_generation_time
ja-JP: garbage_collector_g1若い領域GC時間
- field: garbage_collector_g1_old_generation_count
type: 0
i18n:
zh-CN: garbage_collector_g1_old_generation_count
en-US: garbage_collector_g1_old_generation_count
ja-JP: garbage_collector_g1古い領域GC回数
- field: garbage_collector_g1_old_generation_time
type: 0
i18n:
zh-CN: garbage_collector_g1_old_generation_time
en-US: garbage_collector_g1_old_generation_time
ja-JP: garbage_collector_g1古い領域GC時間
- field: garbage_collector_time_unit
type: 1
i18n:
zh-CN: garbage_collector_time_unit
en-US: garbage_collector_time_unit
ja-JP: garbage_collector時間単位
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
aliasFields:
- $.basic.mem
@@ -21,11 +21,13 @@ app: iceberg
name:
zh-CN: Apache Iceberg
en-US: Apache Iceberg
ja-JP: Apache Iceberg
# The description and help of this monitoring type
help:
zh-CN: HertzBeat 对 <a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a> 暴露的通用性能指标(basic、environment、thread、code_cache)进行采集监控。<span class='help_module_span'>⚠️注意:如果要监控 Apache Iceberg 中的信息,需要您的 Apache Iceberg 应用集成并开启 Hive Server2, <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hive'>点击查看具体步骤</a>。</span>
en-US: HertzBeat collects and monitors Apache Iceberg through general performance metric(health, environment, threads, memory_used) that exposed by the Hive Server2. <br><span class='help_module_span'>⚠️Note:You should make sure that your Apache Iceberg application have already integrated and enabled the Hive Server2, <a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hive'>click here to see the specific steps.</a></span>
zh-TW: HertzBeat 對<a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a>暴露的通用性能指標(basic、environment、thread、code_cache)進行採集監控。< span class='help_module_span'> ⚠️ 注意:如果要監控Apache Iceberg 中的指標,需要您的Apache Iceberg 應用集成並開啟 Hive Server2<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/help/hive'>點擊查看具體步驟</a>。</span>
ja-JP: HertzBeat は <a class='help_module_content' href='https://cwiki.apache.org/confluence/display/Hive/Hive+Metrics'> HServer2 </a> の一般的なパフォーマンスのメトリクスを監視します。<span class='help_module_span'>⚠️注意:Apache Iceberg で Hive Server2を有効にする必要があります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/help/hive'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/iceberg
en-US: https://hertzbeat.apache.org/docs/help/iceberg
@@ -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: 启动SSL
en-US: SSL
ja-JP: SSL
# When the type is boolean, the frontend will display a switch for it.
type: boolean
# required-true or false
@@ -71,6 +76,7 @@ params:
name:
zh-CN: Base Path
en-US: Base Path
ja-JP: Base Path
# type-param field type(most mapping the html input type) The type "text" belongs to a text input field.
type: text
# default value
@@ -83,6 +89,10 @@ params:
metrics:
# metrics - available
- name: available
i18n:
zh-CN: 可用性
en-US: Availability
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
@@ -93,6 +103,7 @@ metrics:
i18n:
zh-CN: 响应时间
en-US: Response Time
ja-JP: 応答時間
type: 0
unit: ms
# the protocol used for monitoring, eg: sql, ssh, http, telnet, wmi, snmp, sdk
@@ -116,27 +127,32 @@ metrics:
i18n:
zh-CN: 基本信息
en-US: Basic
ja-JP: 基礎情報
priority: 1
fields:
- field: vm_name
i18n:
zh-CN: 虚拟机名称
en-US: VM Name
ja-JP: 仮想マシン名
type: 1
- field: vm_vendor
i18n:
zh-CN: 虚拟机供应商
en-US: VM Vendor
ja-JP: 仮想マシンベンダー
type: 1
- field: vm_version
i18n:
zh-CN: 虚拟机版本
en-US: VM Version
ja-JP: 仮想マシンバージョン
type: 1
- field: up_time
i18n:
zh-CN: 运行时间
en-US: Uptime
ja-JP: アップタイム
type: 0
unit: ms
aliasFields:
@@ -164,6 +180,7 @@ metrics:
i18n:
zh-CN: 环境信息
en-US: Environment
ja-JP: 環境
priority: 2
# collect metrics content
fields:
@@ -172,31 +189,37 @@ metrics:
i18n:
zh-CN: https 代理端口
en-US: https Proxy Port
ja-JP: https プロキシポート
type: 0
- field: os_name
i18n:
zh-CN: os 名称
en-US: OS Name
ja-JP: OS名
type: 1
- field: os_version
i18n:
zh-CN: os 版本
en-US: OS Version
ja-JP: OSバージョン
type: 1
- field: os_arch
i18n:
zh-CN: os 架构
en-US: OS Arch
ja-JP: OSアーキテクチャ
type: 1
- field: java_runtime_name
i18n:
zh-CN: java 运行时名称
en-US: Java Runtime Name
ja-JP: Java ランタイム名
type: 1
- field: java_runtime_version
i18n:
zh-CN: java 运行时版本
en-US: Java Runtime Version
ja-JP: Java ランタイムバージョン
type: 1
# metric alias list, used to identify metrics in query results
aliasFields:
@@ -237,27 +260,32 @@ metrics:
i18n:
zh-CN: 线程
en-US: Thread
ja-JP: スレッド
priority: 3
fields:
- field: thread_count
i18n:
zh-CN: 线程数
en-US: Thread Count
ja-JP: スレッド総数
type: 0
- field: total_started_thread
i18n:
zh-CN: 启动线程数
en-US: Total Started Thread
ja-JP: スレッド開始数
type: 0
- field: peak_thread_count
i18n:
zh-CN: 峰值线程数
en-US: Peak Thread Count
ja-JP: ピークスレッド数
type: 0
- field: daemon_thread_count
i18n:
zh-CN: 守护线程数
en-US: Daemon Thread Count
ja-JP: デーモンスレッド数
type: 0
aliasFields:
- $.beans[?(@.name == 'java.lang:type=Threading')].ThreadCount
@@ -283,30 +311,35 @@ metrics:
i18n:
zh-CN: 代码缓存
en-US: Code Cache
ja-JP: コードキャッシュ
priority: 4
fields:
- field: committed
i18n:
zh-CN: 已提交
en-US: Committed
ja-JP: コミット
type: 1
unit: MB
- field: init
i18n:
zh-CN: 初始化
en-US: Init
ja-JP: イニシャル
type: 0
unit: MB
- field: max
i18n:
zh-CN: 最大
en-US: Max
ja-JP: 最大
type: 0
unit: MB
- field: used
i18n:
zh-CN: 已使用
en-US: Used
ja-JP: 使用済み
type: 0
unit: MB
aliasFields:
@@ -14,51 +14,44 @@
# limitations under the License.
# The monitoring type categoryservice-application service monitoring db-database monitoring custom-custom monitoring os-operating system monitoring
# 监控类型所属类别:service-应用服务 program-应用程序 db-数据库 custom-自定义 os-操作系统 bigdata-大数据 mid-中间件 webserver-web服务器 cache-缓存 cn-云原生 network-网络监控等等
category: bigdata
# The monitoring type eg: linux windows tomcat mysql aws...
# 监控类型 eg: linux windows tomcat mysql aws...
app: influxdb
# The monitoring i18n name
# 监控类型国际化名称
name:
zh-CN: InfluxDB
en-US: InfluxDB
ja-JP: InfluxDB
# The description and help of this monitoring type
# 监控类型的帮助描述信息
help:
zh-CN: HertzBeat 对 InfluxDB 时序数据库进行监控。<br><span class='help_module_span'><a class='help_module_content' href='https://docs.influxdata.com/platform/monitoring/influxdata-platform/tools/measurements-internal'>点击查看开启步骤</a>。</span>
en-US: HertzBeat monitors the InfluxDB time series database. <br><span class='help_module_span'><a class='help_module_content' href='https://docs.influxdata.com/platform/monitoring/influxdata-platform/tools/measurements-internal '>Click to view the activation steps</a>. </span>
zh-TW: HertzBeat 對 InfluxDB 時序資料庫進行監控。<br><span class='help_module_span'><a class='help_module_content' href='https://docs.influxdata.com/platform/monitoring/influxdata-platform/tools/measurements-internal'>點擊查看開啓步驟</a>。</span>
ja-JP: HertzBeat は InfluxDB 時系列データベースを監視します。<br><span class='help_module_span'><a class='help_module_content' href='https://docs.influxdata.com/platform/monitoring/influxdata-platform/tools/measurements-internal'>クリックしてガイドを見ます</a>。</span>
helpLink:
zh-CN: https://hertzbeat.com/zh-cn/docs/help/influxdb/
en-US: https://hertzbeat.com/docs/help/influxdb/
# 监控所需输入参数定义(根据定义渲染页面UI)
# Input params define for monitoring(render web ui by the definition)
params:
# field-param field key
# field-变量字段标识符
- field: host
# name-param field display i18n name
# name-参数字段显示名称
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
# type-param field type(most mapping the html input type)
# type-字段类型,样式(大部分映射input标签type属性)
type: host
# required-true or false
# required-是否是必输项 true-必填 false-可选
required: true
- field: port
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
# type-param field type(most mapping the html input type)
# type-字段类型,样式(大部分映射input标签type属性)
type: number
# when type is number, range is required
# 当type为number时,用range表示范围
range: '[0,65535]'
# default value
defaultValue: 8086
@@ -67,45 +60,48 @@ params:
name:
zh-CN: 查询超时时间
en-US: Query Timeout
ja-JP: クエリタイムアウト
type: number
required: false
# hide param-true or false
# 是否隐藏字段 true or false
hide: true
defaultValue: 6000
# collect metrics config list
# 采集指标配置列表
metrics:
# metrics - cluster_node_status
# 监控指标 - cluster_node_status
- name: influxdb_info
i18n:
zh-CN: influxdb 基本信息
en-US: influxdb_info
ja-JP: influxdb基礎情報
priority: 0
fields:
- field: build_date
i18n:
zh-CN: 创建日期
en-US: build_date
ja-JP: 作成日
type: 1
label: true
- field: os
i18n:
zh-CN: 操作系统
en-US: os
ja-JP: オーエス
type: 1
- field: cpus
i18n:
zh-CN: cpus
en-US: cpus
ja-JP: 使用可能のCPUコア数
type: 1
- field: version
i18n:
zh-CN: 版本
en-US: version
ja-JP: バージョン
type: 1
aliasFields:
- build_date
@@ -130,48 +126,50 @@ metrics:
i18n:
zh-CN: http 响应时间
en-US: http_api_request_duration_seconds
ja-JP: http 応答時間
# 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
# 指标采集调度优先级(0->127)->(优先级高->低) 优先级低的指标会等优先级高的指标采集完成后才会被调度, 相同优先级的指标会并行调度采集
# 优先级为0的指标为可用性指标,即它会被首先调度,采集成功才会继续调度其它指标,采集失败则中断调度
priority: 1
# 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-指标名称, type-指标类型(0-number数字,1-string字符串), unit-指标单位('%','ms','MB'), label-是否是指标标签字段
- field: handler
i18n:
zh-CN: handler
en-US: handler
ja-JP: ハンドラ
type: 1
- field: path
i18n:
zh-CN: 路径
en-US: path
ja-JP: パス
type: 1
- field: response_code
i18n:
zh-CN: 返回 code
en-US: response_code
ja-JP: 応答コード
type: 1
- field: method
i18n:
zh-CN: 方法
en-US: method
ja-JP: リクエストメソッド
type: 1
- field: user_agent
i18n:
zh-CN: 用户代理
en-US: user_agent
ja-JP: ユーザーエージェント
type: 1
- field: status
i18n:
zh-CN: 状态
en-US: status
ja-JP: ステータス
type: 1
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- handler
- path
@@ -180,7 +178,6 @@ metrics:
- user_agent
- status
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- handler=handler
@@ -203,50 +200,50 @@ metrics:
# http method: GET POST PUT DELETE PATCH
method: GET
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus exporter rule
# http 响应数据解析方式: default-系统规则, jsonPath-jsonPath脚本, website-网站可用性指标监控, prometheus-Prometheus数据规则
parseType: prometheus
- name: storage_compactions_queued
i18n:
zh-CN: 正在排队的 TSM 数
en-US: storage_compactions_queued
ja-JP: storage_compactions_queued
# 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
# 指标采集调度优先级(0->127)->(优先级高->低) 优先级低的指标会等优先级高的指标采集完成后才会被调度, 相同优先级的指标会并行调度采集
# 优先级为0的指标为可用性指标,即它会被首先调度,采集成功才会继续调度其它指标,采集失败则中断调度
priority: 2
# 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-指标名称, type-指标类型(0-number数字,1-string字符串), unit-指标单位('%','ms','MB'), label-是否是指标标签字段
- field: bucket
i18n:
zh-CN: 存储桶
en-US: bucket
ja-JP: バケット
type: 1
- field: engine
i18n:
zh-CN: 引擎类型
en-US: engine
ja-JP: エンジン
type: 1
- field: id
i18n:
zh-CN: 标识符
en-US: id
ja-JP: id
type: 1
- field: level
i18n:
zh-CN: 级别
en-US: level
ja-JP: レベル
type: 1
- field: path
i18n:
zh-CN: 数据文件路径
en-US: path
ja-JP: パス
type: 1
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- bucket
- engine
@@ -254,7 +251,6 @@ metrics:
- level
- path
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- bucket=bucket
@@ -276,46 +272,43 @@ metrics:
# http method: GET POST PUT DELETE PATCH
method: GET
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus exporter rule
# http 响应数据解析方式: default-系统规则, jsonPath-jsonPath脚本, website-网站可用性指标监控, prometheus-Prometheus数据规则
parseType: prometheus
- name: http_write_request_bytes
i18n:
zh-CN: HTTP写入请求的字节数量
en-US: http_write_request_bytes
ja-JP: http書き込みリクエストのバイト
# 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
# 指标采集调度优先级(0->127)->(优先级高->低) 优先级低的指标会等优先级高的指标采集完成后才会被调度, 相同优先级的指标会并行调度采集
# 优先级为0的指标为可用性指标,即它会被首先调度,采集成功才会继续调度其它指标,采集失败则中断调度
priority: 3
# 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-指标名称, type-指标类型(0-number数字,1-string字符串), unit-指标单位('%','ms','MB'), label-是否是指标标签字段
- field: endpoint
i18n:
zh-CN: 终点
en-US: endpoint
ja-JP: エンドポイント
type: 1
- field: org_id
i18n:
zh-CN: 组织标识符
en-US: org_id
ja-JP: org_id
type: 1
- field: status
i18n:
zh-CN: 状态
en-US: status
ja-JP: ステータス
type: 1
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- endpoint
- org_id
- status
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- endpoint=endpoint
@@ -335,40 +328,36 @@ metrics:
# http method: GET POST PUT DELETE PATCH
method: GET
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus exporter rule
# http 响应数据解析方式: default-系统规则, jsonPath-jsonPath脚本, website-网站可用性指标监控, prometheus-Prometheus数据规则
parseType: prometheus
- name: qc_requests_total
i18n:
zh-CN: 质量控制请求总数
en-US: qc_requests_total
ja-JP: qcリクエスト
# 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
# 指标采集调度优先级(0->127)->(优先级高->低) 优先级低的指标会等优先级高的指标采集完成后才会被调度, 相同优先级的指标会并行调度采集
# 优先级为0的指标为可用性指标,即它会被首先调度,采集成功才会继续调度其它指标,采集失败则中断调度
priority: 3
# 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-指标名称, type-指标类型(0-number数字,1-string字符串), unit-指标单位('%','ms','MB'), label-是否是指标标签字段
- field: result
i18n:
zh-CN: 结果
en-US: result
ja-JP: 結果
type: 1
- field: org
i18n:
zh-CN: 组织标识符
en-US: org
ja-JP: org
type: 1
# (optional)metrics field alias name, it is used as an alias field to map and convert the collected data and metrics field
# (可选)监控指标别名, 做为中间字段与采集数据字段和指标字段映射转换
aliasFields:
- result
- org
# mapping and conversion expressions, use these and aliasField above to calculate metrics value
# (可选)指标映射转换计算表达式,与上面的别名一起作用,计算出最终需要的指标值
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
calculates:
- result=result
@@ -387,7 +376,6 @@ metrics:
# http method: GET POST PUT DELETE PATCH
method: GET
# http response data parse type: default-hertzbeat rule, jsonpath-jsonpath script, website-for website monitoring, prometheus-prometheus exporter rule
# http 响应数据解析方式: default-系统规则, jsonPath-jsonPath脚本, website-网站可用性指标监控, prometheus-Prometheus数据规则
parseType: prometheus
@@ -20,11 +20,13 @@ app: influxdb_promql
name:
zh-CN: InfluxDB-PromQL
en-US: InfluxDB-PromQL
ja-JP: InfluxDB-PromQL
# The description and help of this monitoring type
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>」をクリックして設定しましょう。
helpLink:
zh-CN: https://hertzbeat.apache.org/zh-cn/docs/help/influxdb_promql
en-US: https://hertzbeat.apache.org/docs/help/influxdb_promql
@@ -33,12 +35,14 @@ params:
name:
zh-CN: 目标Host
en-US: Target Host
ja-JP: 目標ホスト
type: host
required: true
- field: port
name:
zh-CN: 端口
en-US: Port
ja-JP: ポート
type: number
range: '[0,65535]'
required: true
@@ -47,6 +51,7 @@ params:
name:
zh-CN: 请求方式
en-US: Method
ja-JP: リクエストメソッド
type: radio
required: true
options:
@@ -63,6 +68,7 @@ params:
name:
zh-CN: 相对路径
en-US: URI
ja-JP: URI
type: text
limit: 200
required: true
@@ -72,12 +78,14 @@ params:
name:
zh-CN: 启动SSL
en-US: SSL
ja-JP: SSL
type: boolean
required: false
- field: headers
name:
zh-CN: 请求Headers
en-US: Headers
ja-JP: ヘッダ
type: key-value
required: false
keyAlias: Header Name
@@ -86,6 +94,7 @@ params:
name:
zh-CN: 查询Params
en-US: Params
ja-JP: パラメータ
type: key-value
required: false
keyAlias: Param Key
@@ -94,6 +103,7 @@ params:
name:
zh-CN: Content-Type
en-US: Content-Type
ja-JP: コンテンツタイプ
type: text
placeholder: '请求BODY资源类型'
required: false
@@ -102,6 +112,7 @@ params:
name:
zh-CN: 请求BODY
en-US: BODY
ja-JP: ボディ
type: textarea
placeholder: 'POST PUT请求时有效'
required: false
@@ -110,6 +121,7 @@ params:
name:
zh-CN: 认证方式
en-US: Auth Type
ja-JP: 認証方法
type: radio
required: false
hide: true
@@ -122,6 +134,7 @@ params:
name:
zh-CN: 用户名
en-US: Username
ja-JP: ユーザー名
type: text
limit: 50
required: false
@@ -130,6 +143,7 @@ params:
name:
zh-CN: 密码
en-US: Password
ja-JP: パスワード
type: password
required: false
hide: true
@@ -141,6 +155,7 @@ metrics:
i18n:
zh-CN: InfluxDB内存分配
en-US: InfluxDB Memory Allocation
ja-JP: InfluxDBメモリの割り当て
# metrics scheduling priority(0->127), 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
@@ -152,16 +167,19 @@ metrics:
i18n:
zh-CN: 实例
en-US: Instance
ja-JP: インスタンス
- field: timestamp
type: 1
i18n:
zh-CN: 时间戳
en-US: Timestamp
ja-JP: タイムスタンプ
- field: value
type: 1
i18n:
zh-CN:
en-US: Value
ja-JP:
# Monitoring protocol used for data collection, e.g. sql, ssh, http, telnet, wmi, snmp, sdk.
protocol: http
# When the protocol is HTTP, the specific collection configuration is as follows
@@ -200,6 +218,7 @@ metrics:
i18n:
zh-CN: InfluxDB数据库测量值
en-US: InfluxDB Database Measurements
ja-JP: InfluxDBデータベース測定
# 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
@@ -211,26 +230,31 @@ metrics:
i18n:
zh-CN: 任务
en-US: Job
ja-JP: タスク
- field: instance
type: 1
i18n:
zh-CN: 实例
en-US: Instance
ja-JP: インスタンス
- field: database
type: 1
i18n:
zh-CN: 数据库
en-US: Database
ja-JP: データベース
- field: timestamp
type: 1
i18n:
zh-CN: 时间戳
en-US: Timestamp
ja-JP: タイムスタンプ
- field: value
type: 1
i18n:
zh-CN:
en-US: Value
ja-JP:
# Monitoring protocol used for data collection, e.g. sql, ssh, http, telnet, wmi, snmp, sdk.
protocol: http
# When the protocol is HTTP, the specific collection configuration is as follows
@@ -269,6 +293,7 @@ metrics:
i18n:
zh-CN: 每秒查询速率
en-US: Query Rate Per Second
ja-JP: QPS
# metrics scheduling priority(0->127), 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
@@ -280,16 +305,19 @@ metrics:
i18n:
zh-CN: 实例
en-US: Instance
ja-JP: インスタンス
- field: timestamp
type: 1
i18n:
zh-CN: 时间戳
en-US: Timestamp
ja-JP: タイムスタンプ
- field: value
type: 1
i18n:
zh-CN:
en-US: Value
ja-JP:
# Monitoring protocol used for data collection, e.g. sql, ssh, http, telnet, wmi, snmp, sdk.
protocol: http
# When the protocol is HTTP, the specific collection configuration is as follows
@@ -329,6 +357,7 @@ metrics:
i18n:
zh-CN: 查询执行器每10秒查询完成数
en-US: Query Executor Queries Finished Every 10 Seconds
ja-JP: クエリ実行10秒あたりのクエリ完了数
# metrics scheduling priority(0->127), 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
@@ -340,16 +369,19 @@ metrics:
i18n:
zh-CN: 实例
en-US: Instance
ja-JP: インスタンス
- field: timestamp
type: 1
i18n:
zh-CN: 时间戳
en-US: Timestamp
ja-JP: タイムスタンプ
- field: value
type: 1
i18n:
zh-CN:
en-US: Value
ja-JP:
# Monitoring protocol used for data collection, e.g. sql, ssh, http, telnet, wmi, snmp, sdk.
protocol: http
# When the protocol is HTTP, the specific collection configuration is as follows
-8
View File
@@ -83,14 +83,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -98,7 +98,7 @@ public abstract class PromqlQueryExecutor implements QueryExecutor {
}
HttpEntity<Void> httpEntity = new HttpEntity<>(headers);
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(httpPromqlProperties.url + QUERY_PATH);
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(httpPromqlProperties.url + QUERY_PATH);
uriComponentsBuilder.queryParam(HTTP_QUERY_PARAM, queryString);
URI uri = uriComponentsBuilder.build().toUri();
ResponseEntity<PromQlQueryContent> responseEntity = restTemplate.exchange(uri,
@@ -150,18 +150,18 @@ public abstract class PromqlQueryExecutor implements QueryExecutor {
HttpEntity<Void> httpEntity = new HttpEntity<>(headers);
URI uri;
if (datasourceQuery.getTimeType().equals(RANGE)) {
uri = UriComponentsBuilder.fromHttpUrl(httpPromqlProperties.url() + QUERY_RANGE_PATH)
uri = UriComponentsBuilder.fromUriString(httpPromqlProperties.url() + QUERY_RANGE_PATH)
.queryParam(HTTP_QUERY_PARAM, datasourceQuery.getExpr())
.queryParam(HTTP_START_PARAM, datasourceQuery.getStart())
.queryParam(HTTP_END_PARAM, datasourceQuery.getEnd())
.queryParam(HTTP_STEP_PARAM, datasourceQuery.getStep())
.build().toUri();
} else if (datasourceQuery.getTimeType().equals(INSTANT)) {
uri = UriComponentsBuilder.fromHttpUrl(httpPromqlProperties.url() + QUERY_PATH)
uri = UriComponentsBuilder.fromUriString(httpPromqlProperties.url() + QUERY_PATH)
.queryParam(HTTP_QUERY_PARAM, datasourceQuery.getExpr())
.build().toUri();
} else {
throw new IllegalArgumentException(String.format("no such time type for query id {}.", datasourceQuery.getRefId()));
throw new IllegalArgumentException(String.format("no such time type for query id %s.", datasourceQuery.getRefId()));
}
ResponseEntity<PromQlQueryContent> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, httpEntity,
PromQlQueryContent.class);
@@ -306,7 +306,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag
Duration duration = Duration.ofHours(Long.parseLong(history.replace("h", "")));
Instant start = end.minus(duration);
String exportUrl = vmClusterProps.select().url() + VM_SELECT_BASE_PATH.formatted(vmClusterProps.accountID(), EXPORT_PATH);
URI uri = UriComponentsBuilder.fromHttpUrl(exportUrl)
URI uri = UriComponentsBuilder.fromUriString(exportUrl)
.queryParam("match", URLEncoder.encode("{" + timeSeriesSelector + "}", StandardCharsets.UTF_8))
.queryParam("start", String.valueOf(start.getEpochSecond()))
.queryParam("end", String.valueOf(end.getEpochSecond()))
@@ -404,7 +404,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag
}
HttpEntity<Void> httpEntity = new HttpEntity<>(headers);
String rangeUrl = VM_SELECT_BASE_PATH.formatted(vmClusterProps.accountID(), QUERY_RANGE_PATH);
URI uri = UriComponentsBuilder.fromHttpUrl(rangeUrl)
URI uri = UriComponentsBuilder.fromUriString(rangeUrl)
.queryParam("query", URLEncoder.encode("{" + timeSeriesSelector + "}", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -444,7 +444,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag
log.error("query metrics data from victoria-metrics failed. {}", responseEntity);
}
// max
uri = UriComponentsBuilder.fromHttpUrl(rangeUrl)
uri = UriComponentsBuilder.fromUriString(rangeUrl)
.queryParam("query", URLEncoder.encode("max_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -482,7 +482,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag
}
}
// min
uri = UriComponentsBuilder.fromHttpUrl(rangeUrl)
uri = UriComponentsBuilder.fromUriString(rangeUrl)
.queryParam("query", URLEncoder.encode("min_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -520,7 +520,7 @@ public class VictoriaMetricsClusterDataStorage extends AbstractHistoryDataStorag
}
}
// avg
uri = UriComponentsBuilder.fromHttpUrl(rangeUrl)
uri = UriComponentsBuilder.fromUriString(rangeUrl)
.queryParam("query", URLEncoder.encode("avg_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -279,7 +279,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage {
headers.add(HttpHeaders.AUTHORIZATION, NetworkConstants.BASIC + SignConstants.BLANK + encodedAuth);
}
HttpEntity<Void> httpEntity = new HttpEntity<>(headers);
URI uri = UriComponentsBuilder.fromHttpUrl(victoriaMetricsProp.url() + EXPORT_PATH)
URI uri = UriComponentsBuilder.fromUriString(victoriaMetricsProp.url() + EXPORT_PATH)
.queryParam(URLEncoder.encode("match[]", StandardCharsets.UTF_8), URLEncoder.encode("{" + timeSeriesSelector + "}", StandardCharsets.UTF_8))
.queryParam("start", URLEncoder.encode("now-" + history, StandardCharsets.UTF_8))
.queryParam("end", "now")
@@ -374,7 +374,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage {
+ SignConstants.BLANK + encodedAuth);
}
HttpEntity<Void> httpEntity = new HttpEntity<>(headers);
URI uri = UriComponentsBuilder.fromHttpUrl(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
URI uri = UriComponentsBuilder.fromUriString(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
.queryParam(URLEncoder.encode("query", StandardCharsets.UTF_8), URLEncoder.encode("{" + timeSeriesSelector + "}", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -410,7 +410,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage {
log.error("query metrics data from victoria-metrics failed. {}", responseEntity);
}
// max
uri = UriComponentsBuilder.fromHttpUrl(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
uri = UriComponentsBuilder.fromUriString(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
.queryParam(URLEncoder.encode("query", StandardCharsets.UTF_8), URLEncoder.encode("max_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -445,7 +445,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage {
}
}
// min
uri = UriComponentsBuilder.fromHttpUrl(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
uri = UriComponentsBuilder.fromUriString(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
.queryParam(URLEncoder.encode("query", StandardCharsets.UTF_8), URLEncoder.encode("min_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
@@ -480,7 +480,7 @@ public class VictoriaMetricsDataStorage extends AbstractHistoryDataStorage {
}
}
// avg
uri = UriComponentsBuilder.fromHttpUrl(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
uri = UriComponentsBuilder.fromUriString(victoriaMetricsProp.url() + QUERY_RANGE_PATH)
.queryParam(URLEncoder.encode("query", StandardCharsets.UTF_8), URLEncoder.encode("avg_over_time({" + timeSeriesSelector + "})", StandardCharsets.UTF_8))
.queryParam("step", "4h")
.queryParam("start", startTime)
+42
View File
@@ -0,0 +1,42 @@
---
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:
[
open source monitoring system,
alerting system,
Apache,
Apache Committer,
HertzBeat,
]
---
> Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.
## Self-Introduction
I've been working in development since 2019, engaging in various fields such as blockchain, cybersecurity, big data, new energy, and video technology. I'm a jack-of-all-trades engineer who dabbles in a bit of everything.
## My Journey with HertzBeat
Initially, while setting up several services for myself, I needed a way to visualize metrics but didn't want to introduce overly complex monitoring systems. I hoped to find an out-of-the-box monitoring tool that was comprehensive and easy to extend thats when I discovered HertzBeat.
As I used it more deeply, I began exploring its source code and developed a desire to contribute to the community. I still vividly remember the anticipation during my first pull request (PR), going through multiple rounds of debugging and verification, eagerly hoping it would be accepted into the main branch. With increased involvement, tracking community updates has gradually become a daily habit.
## Welcoming Community Atmosphere
The community thrives with activity, as code submissions and reviews pour in even during late-night hours. It embraces newcomers with open arms, ensuring that whether you're filing an ISSUE to report a bug or submitting a PR to contribute code, your efforts will spark thoughtful discussions and elicit detailed, actionable feedback.
Currently, HertzBeat is in a phase of rapid development, with capabilities such as metrics, logs, and tracing requiring continuous enhancement and refinement. If you're interested in contributing to open-source, this is an excellent opportunity to get involved.
## About Open Source
For me, open source is a vessel for technical passion; growing alongside the community makes for a profoundly meaningful journey.
## 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!
+4 -1
View File
@@ -65,7 +65,10 @@ keywords: [open source monitoring tool, open source os monitoring tool, monitori
#### Metric Set: Disk Information - to be finished
- Disk information collection is not yet implemented, but will be added in future versions.
| Metric Name | Metric Unit | Metric Help Description |
|---------------|-------------|----------------------------------------|
| disk_num | None | Total number of disks |
| partition_num | None | Total number of partitions |
#### Metric Set: Network Card Information
+1 -1
View File
@@ -5,7 +5,7 @@ sidebar_label: Apache ShenYu
keywords: [open source monitoring tool, open source apache shenyu monitoring tool, monitoring apache shenyu metrics]
---
> monitor ShenYu running status(JVM-related), include request response and other related metrics.
> monitor ShenYu running status (JVM-related), include request response and other related metrics.
## Pre-monitoring operations
@@ -0,0 +1,42 @@
---
title: 热烈欢迎 HertzBeat 小伙伴新晋社区 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:
[
open source monitoring system,
alerting system,
Apache,
Apache Committer,
HertzBeat,
]
---
> 大家好,非常荣幸收到社区邀请,成为 Apache HertzBeat Committer。
## 自我介绍
自19年工作至今,从事过多个业务开发(区块链、网络安全、大数据、新能源、视频技术等),是一个啥都会一点的打杂工程师。
## 结缘 HertzBeat
起初因为自己搭建了几个服务,希望对指标进行可视化监控,但又不想引入过于复杂的监控体系,希望能找到一款开箱即用,功能全面且易于扩展的监控工具,于是发现了 HertzBeat。
随着深入使用,我开始研究其源码,并萌生了参与社区贡献的想法,至今仍清晰记得第一次提交 PR 时,反复调试验证,期待被接受合入主分支;随着参与的加深,现在关注社区动态逐渐成了我的日常习惯。
## 良好的社区氛围
社区非常活跃,即使深夜也经常能收到代码提交和评审。对于新人非常友好,无论是提交 ISSUE 反馈问题,还是发起 PR 参与协作,都会收获细致深入的讨论与建议。
目前 HertzBeat 正处于快速发展阶段,指标,日志,链路等能力还需要我们不断的补充和完善,如果你想参与开源,这里是个不错的选择。
## 关于开源
对我而言,开源是技术热情的载体;与社区共同成长更是一段非常有意义的旅程。
## 结语
非常感谢 [@tomsun28](https://github.com/tomsun28) 提名和指导,希望这份鼓励能驱使我为社区做出更有价值的贡献,最后祝 Apache HertzBeat 能早日从孵化器顺利毕业,社区越来越好!
@@ -65,7 +65,12 @@ keywords: [开源监控系统, 开源操作系统监控, darwin操作系统监
#### 指标集合:磁盘信息 - 待完善
- darwin操作系统的磁盘信息采集待完善,当前版本不支持。
| 指标名称 | 指标单位 | 指标帮助描述 |
|---------------|------|-----------|
| disk_num | 无 | 磁盘总数 |
| partition_num | 无 | 分区总数 |
- darwin操作系统磁盘的其他指标采集待完善,当前版本不支持。
- 可以使用其他工具或脚本来获取磁盘信息。
- 未来版本将支持磁盘信息采集。
+1 -1
View File
@@ -95,7 +95,7 @@
</modules>
<properties>
<hzb.version>1.7.1</hzb.version>
<hzb.version>1.7.2</hzb.version>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
+16 -1
View File
@@ -16,7 +16,7 @@
# under the License.
name: setup-deps
description: Install host system dependencies
description: Install host system dependencies (with mvnd)
runs:
using: composite
@@ -26,3 +26,18 @@ runs:
with:
distribution: "zulu"
java-version: 17
- name: Install mvnd
shell: bash
run: |
MVND_VERSION=2.0.0-rc-3
curl -sL https://dlcdn.apache.org/maven/mvnd/${MVND_VERSION}/maven-mvnd-${MVND_VERSION}-linux-amd64.zip -o mvnd.zip
unzip -q mvnd.zip
mkdir -p $HOME/.local
mv maven-mvnd-${MVND_VERSION}-linux-amd64 $HOME/.local/mvnd
echo "$HOME/.local/mvnd/bin" >> $GITHUB_PATH
echo "MVND_HOME=$HOME/.local/mvnd" >> $GITHUB_ENV
- name: Verify mvnd installation
shell: bash
run: mvnd --version
@@ -63,7 +63,7 @@ services:
- hertzbeat
hertzbeat:
image: apache/hertzbeat:1.7.1
image: apache/hertzbeat:1.7.2
container_name: compose-hertzbeat
hostname: hertzbeat
restart: always
@@ -62,7 +62,7 @@ services:
- hertzbeat
hertzbeat:
image: apache/hertzbeat:1.7.1
image: apache/hertzbeat:1.7.2
container_name: compose-hertzbeat
hostname: hertzbeat
restart: always
@@ -62,7 +62,7 @@ services:
- hertzbeat
hertzbeat:
image: apache/hertzbeat:1.7.1
image: apache/hertzbeat:1.7.2
container_name: compose-hertzbeat
hostname: hertzbeat
restart: always
@@ -65,7 +65,7 @@ services:
- hertzbeat
hertzbeat:
image: apache/hertzbeat:1.7.1
image: apache/hertzbeat:1.7.2
container_name: compose-hertzbeat
hostname: hertzbeat
restart: always
+1 -1
View File
@@ -17,7 +17,7 @@ $gpgKeyId = "********"
# ********************************************************
# Set version and release candidate number
$version = "1.7.1"
$version = "1.7.2"
$rcNumber = "rc1"
# ********************************************************
@@ -448,6 +448,35 @@
>
</textarea>
</nz-textarea-count>
<button nz-button nzType="primary" style="width: 100%; margin-bottom: 10px" (click)="onPreviewExpr()">
<i nz-icon nzType="eye" nzTheme="outline"></i>
{{ 'common.preview.button' | i18n }}
</button>
<div *ngIf="previewData && previewColumns.length > 0" class="preview-table-container">
<nz-table
#previewTable
[nzData]="previewData"
[nzSize]="'small'"
[nzLoading]="previewTableLoading"
[nzScroll]="previewData.length > 3 ? { x: '1240px', y: '180px' } : { x: '1240px' }"
[nzShowPagination]="false"
>
<thead>
<tr>
<th *ngFor="let column of previewColumns" [nzWidth]="column.width || 'auto'">
{{ column.title }}
</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of previewTable.data">
<td *ngFor="let column of previewColumns">
{{ data[column.key] }}
</td>
</tr>
</tbody>
</nz-table>
</div>
</nz-form-control>
</nz-form-item>
<nz-form-item *ngIf="define.type === 'periodic'">
@@ -23,6 +23,7 @@ import { I18NService } from '@core';
import { ALAIN_I18N_TOKEN } from '@delon/theme';
import { Rule, RuleSet, QueryBuilderConfig, QueryBuilderClassNames } from '@kerwin612/ngx-query-builder';
import { NzCascaderFilter } from 'ng-zorro-antd/cascader';
import { NzMessageService } from 'ng-zorro-antd/message';
import { ModalButtonOptions, NzModalService } from 'ng-zorro-antd/modal';
import { NzNotificationService } from 'ng-zorro-antd/notification';
import { NzTableQueryParams } from 'ng-zorro-antd/table';
@@ -52,7 +53,8 @@ export class AlertSettingComponent implements OnInit {
private monitorSvc: MonitorService,
private alertDefineSvc: AlertDefineService,
@Inject(ALAIN_I18N_TOKEN) private i18nSvc: I18NService,
private formBuilder: FormBuilder
private formBuilder: FormBuilder,
private message: NzMessageService
) {
this.qbFormCtrl = this.formBuilder.control(this.qbData, this.qbValidator);
this.qbFormCtrl.valueChanges.subscribe(() => {
@@ -125,6 +127,10 @@ export class AlertSettingComponent implements OnInit {
isSelectTypeModalVisible = false;
previewData: any[] = [];
previewColumns: Array<{ title: string; key: string; width?: string }> = [];
previewTableLoading = false;
ngOnInit(): void {
this.loadAlertDefineTable();
// query monitoring hierarchy
@@ -477,6 +483,7 @@ export class AlertSettingComponent implements OnInit {
getDefine$.unsubscribe();
this.isLoadingEdit = -1;
this.isManageModalVisible = true;
this.clearPreview();
})
)
.subscribe(
@@ -959,7 +966,6 @@ export class AlertSettingComponent implements OnInit {
selectedLabels: Set<string> = new Set(); // Selected labels
inputLabelValue = '';
labelInputElement!: ElementRef<HTMLInputElement>;
monitorDataByLabel: any[] = [];
$asTransferItems = (data: unknown): TransferItem[] => data as TransferItem[];
onConnectModalCancel() {
@@ -1000,7 +1006,6 @@ export class AlertSettingComponent implements OnInit {
handleDeleteLabel(removedLabel: string): void {
this.selectedLabels.delete(removedLabel);
this.showMonitorByLabel();
}
showLabelInput(): void {
@@ -1014,23 +1019,10 @@ export class AlertSettingComponent implements OnInit {
if (this.inputLabelValue && !this.selectedLabels.has(this.inputLabelValue)) {
this.selectedLabels.add(this.inputLabelValue);
}
this.showMonitorByLabel();
this.inputLabelValue = '';
this.labelInputVisible = false;
}
showMonitorByLabel(): void {
const monitorsByLabel = this.transferData.filter(item => item.labels.some((label: string) => this.selectedLabels.has(label)));
this.monitorDataByLabel = monitorsByLabel.map(item => {
return {
key: item.key,
title: item.title,
description: item.description,
labels: item.labels
};
});
}
onFilterLabelsChange(newLabels: string[], direction: string): void {
if (direction == 'left') {
this.leftFilterLabels = newLabels;
@@ -1188,8 +1180,8 @@ export class AlertSettingComponent implements OnInit {
.replace(/^\s*&&\s*/, '')
.replace(/\s*&&\s*$/, '')
// Remove monitor label binding expressions
.replace(/&&\s*\(?(equals\(__labels__,\s*"[^"]+"\)(\s*or\s*equals\(__labels__,\s*"[^"]+"\))*)\)?/, '')
.replace(/\(?(equals\(__labels__,\s*"[^"]+"\)(\s*or\s*equals\(__labels__,\s*"[^"]+"\))*)\)?\s*&&\s*/, '')
.replace(/&&\s*\(?(contains\(__labels__,\s*"[^"]+"\)(\s*or\s*contains\(__labels__,\s*"[^"]+"\))*)\)?/, '')
.replace(/\(?(contains\(__labels__,\s*"[^"]+"\)(\s*or\s*contains\(__labels__,\s*"[^"]+"\))*)\)?\s*&&\s*/, '')
);
}
@@ -1301,7 +1293,7 @@ export class AlertSettingComponent implements OnInit {
// Parse label from expression
private parseLabelFromExpr(expr: string) {
const labelPattern = /equals\(__labels__,\s*"([^"]+)"\)/g;
const labelPattern = /contains\(__labels__,\s*"([^"]+)"\)/g;
let match;
this.selectedLabels.clear();
while ((match = labelPattern.exec(expr)) !== null) {
@@ -1424,4 +1416,90 @@ export class AlertSettingComponent implements OnInit {
onTextareaDragLeave(event: DragEvent): void {
(event.target as HTMLElement).classList.remove('drag-over');
}
get monitorDataByLabel(): any[] {
return this.transferData
.filter(item => item.labels.some((label: string) => this.selectedLabels.has(label)))
.map(item => ({
key: item.key,
title: item.title,
description: item.description,
labels: item.labels
}));
}
onPreviewExpr(): void {
if (!this.define.expr) {
this.clearPreview();
this.previewTableLoading = false;
return;
}
this.previewTableLoading = true;
const COLUMNS = [{ title: 'metric', key: 'metric_data' } as any, { title: 'value', key: '__value__', width: '120px' } as any];
this.alertDefineSvc.getMonitorsDefinePreview(this.define.datasource, this.define.type, this.define.expr).subscribe({
next: res => {
if (res.code === 15 || res.code === 1 || res.code === 4) {
this.message.error(res.msg || 'Expression parsing exception');
this.clearPreview();
this.previewTableLoading = false;
return;
}
if (res.code === 0 && Array.isArray(res.data)) {
this.previewColumns = COLUMNS;
this.previewData = res.data.reduce((acc, item) => {
const processedItem = this.filterEmptyFields(item);
if (processedItem.__value__ == null) return acc;
const labels: string[] = [];
let metricName = '';
for (const [key, value] of Object.entries(processedItem)) {
if (key === '__value__') continue;
if (key === '__name__') {
metricName = String(value);
} else {
labels.push(`${key}="${value}"`);
}
}
const metric = metricName ? (labels.length > 0 ? `${metricName}{${labels.join(', ')}}` : metricName) : `{${labels.join(', ')}}`;
acc.push({
metric_data: metric,
__value__: processedItem.__value__
});
return acc;
}, [] as any[]);
if (this.previewData.length === 0) {
this.previewData = [];
}
} else {
this.clearPreview();
}
this.previewTableLoading = false;
},
error: err => {
this.clearPreview();
this.previewTableLoading = false;
this.message.error('Failed to get preview data.');
}
});
}
private filterEmptyFields(mapData: Record<string, any>): Record<string, any> {
return Object.entries(mapData).reduce<Record<string, any>>((acc, [key, value]) => {
if (value == null) return acc;
if (typeof value === 'string' && value.trim() === '') return acc;
acc[key] = value;
return acc;
}, {});
}
private clearPreview(): void {
this.previewData = [];
this.previewColumns = [];
}
}
@@ -67,6 +67,13 @@ export class AlertDefineService {
return this.http.delete<Message<any>>(alert_defines_uri, options);
}
public getMonitorsDefinePreview(datasource: string, type: string, expr: string): Observable<Message<any>> {
let httpParams = new HttpParams();
if (type != null) httpParams = httpParams.set('type', type);
if (expr != null) httpParams = httpParams.set('expr', expr);
return this.http.get<Message<any>>(`${alert_define_uri}/preview/${datasource}`, { params: httpParams });
}
public getAlertDefines(search: string[] | undefined, pageIndex: number, pageSize: number): Observable<Message<Page<AlertDefine>>> {
pageIndex = pageIndex ? pageIndex : 0;
pageSize = pageSize ? pageSize : 8;
+1 -1
View File
@@ -18,5 +18,5 @@
*/
export const CONSTANTS = {
VERSION: 'v1.7.1'
VERSION: 'v1.7.2'
};
+2 -1
View File
@@ -469,6 +469,7 @@
"common.name": "Metric Name",
"common.new-time": "Create Time",
"common.no": "No",
"common.preview.button": "Preview",
"common.notice": "Notice",
"common.notify.apply-fail": "Apply Failed!",
"common.notify.apply-success": "Apply Success!",
@@ -535,7 +536,7 @@
"define.delete.confirm": "Please confirm whether to delete {{app}} monitoring type? This type of monitoring cannot be added after deletion.",
"define.disable": "Disable {{app}}",
"define.enable": "Enable {{app}}",
"define.help": "The monitor templates define each monitoring type, parameter variable, metrics info, collection protocol, etc. You can select an existing monitoring template from the drop-down menu then make modifications according to your own needs. The bottom-left area is the compare area and the bottom-right area is the editing place. <br> You can also click \"New Monitor Type\" to custom define an new type. Currently supported protocols include<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/template'>Monitor Templates</a>.",
"define.help": "The monitor templates define each monitoring type, parameter variable, metrics info, collection protocol, etc. You can select an existing monitoring template from the drop-down menu then make modifications according to your own needs. The bottom-left area is the compare area and the bottom-right area is the editing place. <br> You can also click \"New Monitor Type\" to custom define an new type. Currently supported protocols include<a href='https://hertzbeat.apache.org/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/docs/template'>Monitor Templates</a>.",
"define.help.link": "https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-point/",
"define.hide-false.confirm": "Confirm whether to hide this menu?",
"define.hide-false.tip": "Already displayed in main menu, whether to hide it",
+24 -23
View File
@@ -8,7 +8,7 @@
"about.not-show-next-login": "次回ログイン時にこのポップアップを表示しない",
"about.point.1": "モニター・アラーム・通知を一体化し、Web、データベース、OS、ミドルウェア、ネットワークなどをサポート。",
"about.point.2": "使いやすさを重視し、マウスのクリックだけで完全なWebベースの操作が可能。",
"about.point.3": "強力な監視テンプレート機能で、任意のメトリクをカスタム監視。",
"about.point.3": "強力な監視テンプレート機能で、任意のメトリクをカスタム監視。",
"about.point.4": "高性能で、コレクタークラスタ、マルチアイソレートネットワーク、クラウドエッジをサポート。",
"about.point.5": "柔軟なアラーム閾値ルールで、discord、slack、telegramなどを通じてタイムリーに通知。",
"about.point.6": "強力なステータスページを簡単に構築し、リアルタイムのステータスをユーザーと共有。",
@@ -39,7 +39,7 @@
"alert.center.priority": "優先度",
"alert.center.search": "アラート検索",
"alert.center.status": "ステータス",
"alert.center.target": "メトリクターゲット",
"alert.center.target": "メトリクターゲット",
"alert.center.time": "アラート時間",
"alert.center.time.tip": "このアラート期間中に{{times}}回アラートが発生しました",
"alert.export.switch-type": "エクスポートファイル形式を選択してください!",
@@ -72,7 +72,7 @@
"alert.help.integration.link": "https://hertzbeat.apache.org",
"alert.help.notice": "通知は、アラームメッセージの受信者および受信方法を設定するために使用されます。アラームメッセージは、指定された方法(メール、discord、webhookなど)で受信者に送信されます。<a href='https://hertzbeat.apache.org/zh-cn/docs/help/alert_webhook'>設定手順を見るにはここをクリック。</a>。<br>“<i>通知テンプレート</i>”は、メッセージ内容の構造テンプレートです。デフォルトで組み込みテンプレートが使用されますが、テンプレートをカスタマイズしてメッセージ通知の構造をカスタマイズすることもできます。<br><span class='help_module_span'>注意⚠️: “<i>受信者</i>”を設定した後、どのメッセージをどの受信者に送信するかを指定する“<i>通知ポリシー</i>”も設定する必要があります。</span><a href='https://hertzbeat.apache.org/docs/help/alert_email'>潜在的な問題を見るにはここをクリック</a>。",
"alert.help.notice.link": "https://hertzbeat.apache.org/docs/help/alert_email",
"alert.help.setting": "閾値ルールは、メトリクアラーム閾値ルールの管理に使用されます。\"<i>新規閾値</i>\"をクリックして監視メトリクのアラーム閾値を設定します。HertzBeatは、閾値とメトリクデータに基づいてアラームをトリガーします。<br>注意⚠️: トリガーされたアラームメッセージは[アラームセンター]で確認でき、[通知]で通知方法および担当者を設定することもできます。",
"alert.help.setting": "閾値ルールは、メトリクアラーム閾値ルールの管理に使用されます。\"<i>新規閾値</i>\"をクリックして監視メトリクのアラーム閾値を設定します。HertzBeatは、閾値とメトリクデータに基づいてアラームをトリガーします。<br>注意⚠️: トリガーされたアラームメッセージは[アラームセンター]で確認でき、[通知]で通知方法および担当者を設定することもできます。",
"alert.help.setting.link": "https://hertzbeat.apache.org/docs/help/alert_threshold",
"alert.help.silence": "システムメンテナンス中や夜間・週末に邪魔されたくない場合に使用するアラームサイレンス管理。<br>\"<i>新規サイレンス戦略</i>\"をクリックしてメッセージをブロックする時間期間を設定したら、その間アラートは作動しません。",
"alert.help.silence.link": "https://hertzbeat.apache.org/docs",
@@ -231,7 +231,7 @@
"alert.setting.bind.manage": "関連付けを管理",
"alert.setting.bind.monitors": "関連付けられたモニター",
"alert.setting.bind.monitors.tip": "この閾値ルールを特定の監視タスクに適用するように設定します。デフォルトではすべてに関連付けられていません",
"alert.setting.bind.need-save": "モニターを関連付ける前にメトリクタイプを選択してください",
"alert.setting.bind.need-save": "モニターを関連付ける前にメトリクタイプを選択してください",
"alert.setting.bind.selected": "選択されたモニター",
"alert.setting.connect": "アラート閾値をモニターに関連付ける",
"alert.setting.connect.left": "関連付けなし",
@@ -282,7 +282,7 @@
"alert.setting.recover-notice.tip": "この閾値ルールに基づいてアラームが解決されたときに対応するリカバリ通知を送信するかどうか",
"alert.setting.rule": "閾値ルール",
"alert.setting.rule.label": "グラフィカルにアラーム閾値ルールを設定。複数のルール && をサポート",
"alert.setting.rule.metric.place-holder": "メトリクを選択してください",
"alert.setting.rule.metric.place-holder": "メトリクを選択してください",
"alert.setting.rule.numeric-value.place-holder": "数値を入力してください",
"alert.setting.rule.operator": "演算子",
"alert.setting.rule.operator.exists": "値が存在する",
@@ -298,29 +298,29 @@
"alert.setting.rule.switch-expr.1": "コーディング閾値",
"alert.setting.search": "閾値を検索",
"alert.setting.string": "文字列",
"alert.setting.target": "メトリクタイプ",
"alert.setting.target.other": "行の他のメトリクオブジェクト",
"alert.setting.target.place-holder": "メトリクターゲットを検索または選択してください",
"alert.setting.target": "メトリクタイプ",
"alert.setting.target.other": "行の他のメトリクオブジェクト",
"alert.setting.target.place-holder": "メトリクターゲットを検索または選択してください",
"alert.setting.target.system_value_row_count": "値の行数",
"alert.setting.target.tip": "選択されたメトリクオブジェクト",
"alert.setting.target.tip": "選択されたメトリクオブジェクト",
"alert.setting.template": "アラーム内容",
"alert.setting.template.example": "通知テンプレートを入力してください。例:${app}.${metrics}.${metric}の値が高すぎます",
"alert.setting.template.label": "アラームがトリガーされた後に送信される通知情報のテンプレート。上記のテンプレート環境変数を参照してください。",
"alert.setting.template.metric-name": "メトリク名",
"alert.setting.template.metric-value": "メトリク値",
"alert.setting.template.metrics-name": "メトリク名",
"alert.setting.template.metric-name": "メトリク名",
"alert.setting.template.metric-value": "メトリク値",
"alert.setting.template.metrics-name": "メトリク名",
"alert.setting.template.monitor-type": "モニタータイプ名",
"alert.setting.template.other-value": "他のメトリク値",
"alert.setting.template.other-value": "他のメトリク値",
"alert.setting.template.tip": "サポートされている通知テンプレート環境変数",
"alert.setting.template.vars.app": "アプリケーションタイプ",
"alert.setting.template.vars.instance": "インスタンスID",
"alert.setting.template.vars.instance-name": "インスタンス名",
"alert.setting.template.vars.instance-host": "インスタンスホスト",
"alert.setting.template.vars.labels": "タグ",
"alert.setting.template.vars.metrics": "メトリク名",
"alert.setting.template.vars.metrics": "メトリク名",
"alert.setting.template.vars.threshold": "閾値式",
"alert.setting.template.vars.time": "トリガー時間",
"alert.setting.template.vars.tip": "メトリクや演算子を挿入",
"alert.setting.template.vars.tip": "メトリクや演算子を挿入",
"alert.setting.template.vars.value": "トリガー値",
"alert.setting.time": "時間",
"alert.setting.times": "トリガー回数",
@@ -330,7 +330,7 @@
"alert.setting.type.periodic": "周期的",
"alert.setting.type.periodic.desc": "PromQLクエリを定期的に実行して閾値アラートをトリガーします。",
"alert.setting.type.realtime": "リアルタイム",
"alert.setting.type.realtime.desc": "リアルタイムメトリク計算と閾値超過時の即時アラート。",
"alert.setting.type.realtime.desc": "リアルタイムメトリク計算と閾値超過時の即時アラート。",
"alert.severity": "アラームの重大度",
"alert.severity.0": "緊急",
"alert.severity.1": "クリティカル",
@@ -377,9 +377,9 @@
"bulletin.batch.delete": "速報を一括削除",
"bulletin.delete": "速報を削除",
"bulletin.edit": "速報を編集",
"bulletin.help.content": "カスタム監視速報(ベータ)、特定のモニターの選択されたメトリクをテーブル形式で表示",
"bulletin.help.content": "カスタム監視速報(ベータ)、特定のモニターの選択されたメトリクをテーブル形式で表示",
"bulletin.help.link": "https://hertzbeat.apache.org/docs/help/bulletin",
"bulletin.monitor.metrics": "モニターメトリク",
"bulletin.monitor.metrics": "モニターメトリク",
"bulletin.monitor.name": "モニタータスク名",
"bulletin.monitor.type": "モニタータイプ",
"bulletin.name": "速報名",
@@ -466,9 +466,10 @@
"common.ignore": "無視",
"common.mute": "ミュート",
"common.unmute": "ミュート解除",
"common.name": "メトリク名",
"common.name": "メトリク名",
"common.new-time": "作成時間",
"common.no": "いいえ",
"common.preview.button": "プレビュー",
"common.notice": "通知",
"common.notify.apply-fail": "適用に失敗しました!",
"common.notify.apply-success": "適用に成功しました!",
@@ -509,7 +510,7 @@
"common.search": "検索",
"common.time.unit.second": "秒",
"common.total": "合計",
"common.value": "メトリク値",
"common.value": "メトリク値",
"common.week.1": "月曜日",
"common.week.2": "火曜日",
"common.week.3": "水曜日",
@@ -535,7 +536,7 @@
"define.delete.confirm": "{{app}}監視タイプを削除してもよろしいですか?削除後、このタイプの監視を追加できなくなります。",
"define.disable": "{{app}}を無効化",
"define.enable": "{{app}}を有効化",
"define.help": "モニターテンプレートは、各監視タイプ、パラメータ変数、メトリク情報、収集プロトコルなどを定義します。ドロップダウンメニューから既存の監視テンプレートを選択し、必要に応じて変更できます。左下エリアは比較エリア、右下エリアは編集エリアです。<br>\"新規モニタータイプ\"をクリックして新しいタイプをカスタム定義することもできます。現在サポートされているプロトコルには、<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http'>HTTP</a>、<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jdbc'>JDBC</a>、<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-ssh'>SSH</a>、<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jmx'>JMX</a>、<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-snmp'>SNMP</a>などがあります。<a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/template'>モニターテンプレート</a>。",
"define.help": "モニターテンプレートは、各監視タイプ、パラメータ変数、メトリク情報、収集プロトコルなどを定義します。ドロップダウンメニューから既存の監視テンプレートを選択し、必要に応じて変更できます。左下エリアは比較エリア、右下エリアは編集エリアです。<br>\"新規モニタータイプ\"をクリックして新しいタイプをカスタム定義することもできます。現在サポートされているプロトコルには、<a href='https://hertzbeat.apache.org/docs/advanced/extend-http'>HTTP</a>、<a href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'>JDBC</a>、<a href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'>SSH</a>、<a href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'>JMX</a>、<a href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'>SNMP</a>などがあります。<a class='help_module_content' href='https://hertzbeat.apache.org/docs/template'>モニターテンプレート</a>。",
"define.help.link": "https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-point/",
"define.hide-false.confirm": "このメニューを非表示にしてもよろしいですか?",
"define.hide-false.tip": "メインメニューに既に表示されています。非表示にしますか",
@@ -672,7 +673,7 @@
"monitor.detail.auto-refresh": "{{time}}秒後に自動更新",
"monitor.detail.basic": "監視基本情報",
"monitor.detail.chart.back": "ズームを元に戻す",
"monitor.detail.chart.no-data": "メトリクデータがありません",
"monitor.detail.chart.no-data": "メトリクデータがありません",
"monitor.detail.chart.query-1d": "1日分をクエリ",
"monitor.detail.chart.query-1h": "1時間分をクエリ",
"monitor.detail.chart.query-1m": "1ヶ月分をクエリ",
@@ -904,7 +905,7 @@
"validation.phone-number.wrong-format": "電話番号の形式が不正です!",
"validation.phone.invalid": "無効な電話番号!",
"validation.required": "必須項目を入力してください!",
"validation.standard.required": "メトリクを入力してください",
"validation.standard.required": "メトリクを入力してください",
"validation.title.required": "タイトルを入力してください",
"validation.verification-code.invalid": "無効な認証コード。6桁である必要があります!",
"validation.verification-code.required": "認証コードを入力してください!",
+3 -2
View File
@@ -141,7 +141,7 @@
"plugin.search": "Pesquisar plugins",
"plugin.edit": "Editar plugin",
"plugin.param.edit": "Editar Parâmetros",
"define.help": "Os modelos de monitoramento definem cada tipo de monitoramento, variável de parâmetro, informações de métricas, protocolo de coleta, etc. Você pode selecionar um modelo de monitoramento existente no menu suspenso e fazer modificações de acordo com suas próprias necessidades. A área inferior esquerda é a área de comparação e a área inferior direita é o local de edição. <br> Você também pode clicar em \"Novo Tipo de Monitor\" para definir um novo tipo personalizado. Atualmente, os protocolos suportados incluem<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/template'>Modelos de Monitoramento</a>.",
"define.help": "Os modelos de monitoramento definem cada tipo de monitoramento, variável de parâmetro, informações de métricas, protocolo de coleta, etc. Você pode selecionar um modelo de monitoramento existente no menu suspenso e fazer modificações de acordo com suas próprias necessidades. A área inferior esquerda é a área de comparação e a área inferior direita é o local de edição. <br> Você também pode clicar em \"Novo Tipo de Monitor\" para definir um novo tipo personalizado. Atualmente, os protocolos suportados incluem<a href='https://hertzbeat.apache.org/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/docs/template'>Modelos de Monitoramento</a>.",
"define.help.link": "https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-point/",
"define.save-apply": "Salvar e Aplicar",
"define.delete": "Excluir {{app}}",
@@ -864,6 +864,7 @@
"common.total": "Total",
"common.yes": "Sim",
"common.no": "Não",
"common.preview.button": "Visualização",
"common.enable": "Habilitar",
"common.disable": "Desabilitar",
"common.copy": "Copiar para a Área de Transferência",
@@ -988,7 +989,7 @@
"plugin.search": "Pesquisar plugins",
"plugin.edit": "Editar plugin",
"plugin.param.edit": "Editar Parâmetros",
"define.help": "Os modelos de monitoramento definem cada tipo de monitoramento, variável de parâmetro, informações de métricas, protocolo de coleta, etc. Você pode selecionar um modelo de monitoramento existente no menu suspenso e fazer modificações de acordo com suas próprias necessidades. A área inferior esquerda é a área de comparação e a área inferior direita é o local de edição. <br> Você também pode clicar em \"Novo Tipo de Monitor\" para definir um novo tipo personalizado. Atualmente, os protocolos suportados incluem<a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/zh-cn/docs/template'>Modelos de Monitoramento</a>.",
"define.help": "Os modelos de monitoramento definem cada tipo de monitoramento, variável de parâmetro, informações de métricas, protocolo de coleta, etc. Você pode selecionar um modelo de monitoramento existente no menu suspenso e fazer modificações de acordo com suas próprias necessidades. A área inferior esquerda é a área de comparação e a área inferior direita é o local de edição. <br> Você também pode clicar em \"Novo Tipo de Monitor\" para definir um novo tipo personalizado. Atualmente, os protocolos suportados incluem<a href='https://hertzbeat.apache.org/docs/advanced/extend-http'> HTTP</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jdbc'>JDBC</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-ssh'>SSH</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-jmx'>JMX</a>, <a href='https://hertzbeat.apache.org/docs/advanced/extend-snmp'> SNMP</a>. <a class='help_module_content' href='https://hertzbeat.apache.org/docs/template'>Modelos de Monitoramento</a>.",
"define.help.link": "https://hertzbeat.apache.org/zh-cn/docs/advanced/extend-point/",
"define.save-apply": "Salvar e Aplicar",
"define.delete": "Excluir {{app}}",
+1
View File
@@ -469,6 +469,7 @@
"common.name": "指标名",
"common.new-time": "创建时间",
"common.no": "否",
"common.preview.button": "预览",
"common.notice": "提醒",
"common.notify.apply-fail": "应用失败!",
"common.notify.apply-success": "应用成功!",
+1
View File
@@ -468,6 +468,7 @@
"common.name": "指標名",
"common.new-time": "創建時間",
"common.no": "否",
"common.preview.button": "預覽",
"common.notice": "提醒",
"common.notify.apply-fail": "應用失敗!",
"common.notify.apply-success": "應用成功!",