diff --git a/.github/workflows/maven-ci.yml b/.github/workflows/maven-ci.yml index 7a1b1e32e7..8daa11e537 100644 --- a/.github/workflows/maven-ci.yml +++ b/.github/workflows/maven-ci.yml @@ -55,4 +55,4 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} DOCKER_IMAGE: shiyindaxiaojie/cat-home - DOCKER_VERSION: v3.4.0 + DOCKER_VERSION: v3.4.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 19605f3d45..352d7d9784 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 3.4.1 (2024-08-27) + +### FEATURES + +- 新增 JVM 内置参数,支持 G1、CMS、ZGC 垃圾回收器 + +### BUGFIX + +- 修复 `HeartBeat` 监控告警交互问题 +- 修复 Jira Software 兼容性问题 + ## 3.4.0 (2024-05-01) ### FEATURES diff --git a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/AlertType.java b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/AlertType.java index 4119432386..1badd5a3d7 100644 --- a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/AlertType.java +++ b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/AlertType.java @@ -32,11 +32,11 @@ public enum AlertType { Exception("Exception", "异常告警", "http://{0}:{1}/cat/r/p?domain={2}&date={3}&ip=All&type=RuntimeException,Exception&metric={4}", - "http://{0}:{1}/cat/s/config?op=exceptionThresholdUpdate&domain={2}&exception={3}"), // exception=type + "http://{0}:{1}/cat/s/config?op=exceptionThresholdUpdate&domain={2}&exception={3}"), HeartBeat("Heartbeat", "心跳告警", - "http://{0}:{1}/cat/r/p?domain={2}&date={3}&ip={4}&type=Heartbeat", - "http://{0}:{1}/cat/s/config?op=heartbeatRuleUpdate&key={2};{3}"), // key=ruleId + "http://{0}:{1}/cat/r/h?domain={2}&date={3}&ip=All&reportType=day&op=view", + "http://{0}:{1}/cat/s/config?op=heartbeatRuleConfigList"), ThirdParty("ThirdParty", "第三方告警", "", ""), diff --git a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/AbstractSender.java b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/AbstractSender.java index 5ad98bcd6b..6392fcc61c 100644 --- a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/AbstractSender.java +++ b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/AbstractSender.java @@ -170,13 +170,9 @@ protected static Map parseUrls(String query) { for (String keyValue : keyValues) { String[] pair = keyValue.split("="); if (pair.length == 2) { - try { - String key = URLDecoder.decode(pair[0], "UTF-8"); - String value = URLDecoder.decode(pair[1], "UTF-8"); - params.put(key, value); - } catch (UnsupportedEncodingException e) { - // do nothing - } + String key = pair[0]; + String value = pair[1]; + params.put(key, value); } } return params; diff --git a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/JiraSender.java b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/JiraSender.java index 8d6860e768..68f574c8f5 100644 --- a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/JiraSender.java +++ b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/JiraSender.java @@ -92,7 +92,7 @@ public boolean send(SendMessageEntity message) { issue.setComponents(components); } - String parsedFixVersionNames = this.getParameterValue(receiver,"fixVersionNames"); + String parsedFixVersionNames = this.getParameterValue(receiver,"fixVersionNames"); if (StringUtils.isNotEmpty(parsedFixVersionNames)) { List fixVersionNames = Lists.newArrayList(); Collections.addAll(fixVersionNames, parsedFixVersionNames.split(",")); diff --git a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/util/JiraHelper.java b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/util/JiraHelper.java index b418394071..74cf8ef37d 100644 --- a/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/util/JiraHelper.java +++ b/cat-alarm/src/main/java/com/dianping/cat/alarm/spi/sender/util/JiraHelper.java @@ -4,6 +4,7 @@ import com.atlassian.jira.rest.client.api.AuthenticationHandler; import com.atlassian.jira.rest.client.api.JiraRestClient; import com.atlassian.jira.rest.client.api.JiraRestClientFactory; +import com.atlassian.jira.rest.client.api.OptionalIterable; import com.atlassian.jira.rest.client.api.domain.BasicComponent; import com.atlassian.jira.rest.client.api.domain.BasicIssue; import com.atlassian.jira.rest.client.api.domain.IssueType; @@ -13,7 +14,6 @@ import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder; import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory; import com.google.common.collect.Lists; -import com.sun.jndi.toolkit.url.Uri; import java.io.IOException; import java.net.URI; @@ -88,6 +88,12 @@ public BasicIssue createIssue(JiraIssue issue) throws ExecutionException, Interr } } + public Project getProject(String projectKey) throws IOException { + try (JiraRestClient restClient = auth()) { + return restClient.getProjectClient().getProject(projectKey).claim(); + } + } + private JiraRestClient auth() { URI uri = URI.create(address); JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); @@ -109,17 +115,27 @@ private Project getProject(JiraRestClient restClient, String projectKey) { } private IssueType getIssueType(JiraRestClient restClient, String projectKey, String issueTypeName) { - for (IssueType issueType : getProject(restClient, projectKey).getIssueTypes()) { - if (issueType.getName().equals(issueTypeName)) { - return issueType; + if (issueTypeName == null || issueTypeName.isEmpty()) { + throw new RuntimeException("Issue type is required."); + } + OptionalIterable issueTypes = getProject(restClient, projectKey).getIssueTypes(); + for (String name : issueTypeName.split(",")) { + for (IssueType issueType : issueTypes) { + if (issueType.getName().equals(name)) { + return issueType; + } } } throw new RuntimeException("Issue type '" + issueTypeName + "' is not found."); } private List getComponent(JiraRestClient restClient, String projectKey, List componentNames) { + if (componentNames == null || componentNames.isEmpty()) { + throw new RuntimeException("Component name is required."); + } List components = new ArrayList<>(); - for (BasicComponent component : getProject(restClient, projectKey).getComponents()) { + Iterable basicComponents = getProject(restClient, projectKey).getComponents(); + for (BasicComponent component : basicComponents) { for (String componentName : componentNames) { if (component.getName().equals(componentName)) { components.add(component); diff --git a/cat-alarm/src/main/resources/META-INF/plexus/components.xml b/cat-alarm/src/main/resources/META-INF/plexus/components.xml index 3bdc2dae28..7aad75b218 100644 --- a/cat-alarm/src/main/resources/META-INF/plexus/components.xml +++ b/cat-alarm/src/main/resources/META-INF/plexus/components.xml @@ -282,7 +282,7 @@ com.dianping.cat.alarm.spi.spliter.Spliter - feishu + dingtalk com.dianping.cat.alarm.spi.spliter.FeishuSpliter diff --git a/cat-alarm/src/test/java/com/dianping/cat/JiraClientIntTest.java b/cat-alarm/src/test/java/com/dianping/cat/JiraClientIntTest.java index f8ce26bba8..fd290f41c2 100644 --- a/cat-alarm/src/test/java/com/dianping/cat/JiraClientIntTest.java +++ b/cat-alarm/src/test/java/com/dianping/cat/JiraClientIntTest.java @@ -23,14 +23,12 @@ public static void main(String[] args) { List components = Lists.newArrayList("架构"); List fixVersionNames = Lists.newArrayList("待定"); String assigneeName = "guoyuanlu"; - String reporterName = "monitor"; JiraIssue issue = new JiraIssue(projectKey, summary, description); issue.setIssueType(issueType); issue.setComponents(components); issue.setFixVersionNames(fixVersionNames); issue.setAssigneeName(assigneeName); - issue.setReporterName(reporterName); issue.addCustomFields("customfield_11201", "ROI"); JiraHelper jiraHelper = new JiraHelper("", ""); try { diff --git a/cat-client/src/main/java/com/dianping/cat/Test.java b/cat-client/src/main/java/com/dianping/cat/Test.java new file mode 100644 index 0000000000..426efd4936 --- /dev/null +++ b/cat-client/src/main/java/com/dianping/cat/Test.java @@ -0,0 +1,40 @@ +package com.dianping.cat; + +import com.dianping.cat.status.model.entity.Extension; +import com.dianping.cat.status.model.entity.GcInfo; + +import java.lang.management.GarbageCollectorMXBean; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryPoolMXBean; +import java.util.List; + +/** + * TODO + * + * @author gyl + * @since 2.4.13 + */ +public class Test { + + public static void main(String[] args) { + List beans = ManagementFactory.getGarbageCollectorMXBeans(); + + for (GarbageCollectorMXBean mxbean : beans) { + if (mxbean.isValid()) { + String name = mxbean.getName(); + long collectionCount = mxbean.getCollectionCount(); + long collectionTime = mxbean.getCollectionTime(); + System.out.println("Garbage Collector: " + name); + System.out.println(" Collection Count: " + collectionCount); + System.out.println(" Collection Time: " + collectionTime + " ms"); + } + } + + for (MemoryPoolMXBean mpBean : ManagementFactory.getMemoryPoolMXBeans()) { + long count = mpBean.getUsage().getUsed(); + String name = mpBean.getName(); + + System.out.println(name + ":" + count); + } + } +} diff --git a/cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java b/cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java index 9e298cf419..f25589bb30 100644 --- a/cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java +++ b/cat-client/src/main/java/com/dianping/cat/message/io/TcpSocketSender.java @@ -123,7 +123,7 @@ public Map getProperties() { Map map = new HashMap(); map.put("msg-queue", String.valueOf(m_queue.size())); - map.put("atomic-queue", String.valueOf(m_queue.size())); +// map.put("atomic-queue", String.valueOf(m_queue.size())); return map; } }); diff --git a/cat-client/src/main/java/com/dianping/cat/status/StatusInfoCollector.java b/cat-client/src/main/java/com/dianping/cat/status/StatusInfoCollector.java index 399c62980d..3964d15f5d 100644 --- a/cat-client/src/main/java/com/dianping/cat/status/StatusInfoCollector.java +++ b/cat-client/src/main/java/com/dianping/cat/status/StatusInfoCollector.java @@ -158,11 +158,11 @@ public void visitDiskVolume(DiskVolumeInfo diskVolume) { Extension diskExtension = m_statusInfo.findOrCreateExtension("Disk"); File volume = new File(diskVolume.getId()); - diskVolume.setTotal(volume.getTotalSpace()); - diskVolume.setFree(volume.getFreeSpace()); - diskVolume.setUsable(volume.getUsableSpace()); + diskVolume.setTotal(volume.getTotalSpace() / (1024 * 1024 * 1024)); + diskVolume.setFree(volume.getFreeSpace() / (1024 * 1024 * 1024)); + diskVolume.setUsable(volume.getUsableSpace() / (1024 * 1024 * 1024)); - diskExtension.findOrCreateExtensionDetail(diskVolume.getId() + " Free").setValue(volume.getFreeSpace()); + diskExtension.findOrCreateExtensionDetail(diskVolume.getId() + " Free").setValue(diskVolume.getFree()); } @Override @@ -308,4 +308,4 @@ public void visitThread(ThreadsInfo thread) { m_statusInfo.addExtension(frameworkThread); } -} \ No newline at end of file +} diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatAnalyzer.java index d161e45848..49f30e4c0f 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatAnalyzer.java @@ -162,7 +162,7 @@ private void translateHeartbeat(StatusInfo info) { MessageInfo message = info.getMessage(); if (message.getProduced() > 0 || message.getBytes() > 0) { - Extension catExtension = info.findOrCreateExtension("CatUsage"); + Extension catExtension = info.findOrCreateExtension("Cat"); catExtension.findOrCreateExtensionDetail("Produced").setValue(message.getProduced()); catExtension.findOrCreateExtensionDetail("Overflowed").setValue(message.getOverflowed()); @@ -188,7 +188,7 @@ private void translateHeartbeat(StatusInfo info) { gc.findOrCreateExtensionDetail("ConcurrentMarkSweepTime").setValue(oldGc.getTime()); } - Extension thread = info.findOrCreateExtension("FrameworkThread"); + Extension thread = info.findOrCreateExtension("Thread"); ThreadsInfo threadInfo = info.getThread(); thread.findOrCreateExtensionDetail("HttpThread").setValue(threadInfo.getHttpThreadCount()); diff --git a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer.xml b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer.xml index 0b59ba004b..3025999a39 100644 --- a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer.xml +++ b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer.xml @@ -19,21 +19,21 @@ - + - + - + @@ -55,21 +55,21 @@ - + - + - + @@ -91,21 +91,21 @@ - + - + - + @@ -127,21 +127,21 @@ - + - + - + @@ -163,21 +163,21 @@ - + - + - + @@ -199,21 +199,21 @@ - + - + - + @@ -235,21 +235,21 @@ - + - + - + @@ -271,21 +271,21 @@ - + - + - + @@ -307,21 +307,21 @@ - + - + - + @@ -343,21 +343,21 @@ - + - + - + diff --git a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_merge.xml b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_merge.xml index 6e7d1cc058..858a96c0fc 100644 --- a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_merge.xml +++ b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_merge.xml @@ -19,21 +19,21 @@ - + - + - + @@ -57,21 +57,21 @@ - + - + - + @@ -95,21 +95,21 @@ - + - + - + @@ -133,21 +133,21 @@ - + - + - + @@ -171,21 +171,21 @@ - + - + - + @@ -209,21 +209,21 @@ - + - + - + @@ -247,21 +247,21 @@ - + - + - + @@ -285,21 +285,21 @@ - + - + - + @@ -323,21 +323,21 @@ - + - + - + @@ -361,21 +361,21 @@ - + - + - + diff --git a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_old.xml b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_old.xml index 6e7d1cc058..858a96c0fc 100644 --- a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_old.xml +++ b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/heartbeat_analyzer_old.xml @@ -19,21 +19,21 @@ - + - + - + @@ -57,21 +57,21 @@ - + - + - + @@ -95,21 +95,21 @@ - + - + - + @@ -133,21 +133,21 @@ - + - + - + @@ -171,21 +171,21 @@ - + - + - + @@ -209,21 +209,21 @@ - + - + - + @@ -247,21 +247,21 @@ - + - + - + @@ -285,21 +285,21 @@ - + - + - + @@ -323,21 +323,21 @@ - + - + - + @@ -361,21 +361,21 @@ - + - + - + diff --git a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/status_info.xml b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/status_info.xml index 2dda9772d1..7e13c311b8 100644 --- a/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/status_info.xml +++ b/cat-consumer/src/test/resources/com/dianping/cat/consumer/heartbeat/status_info.xml @@ -42,23 +42,23 @@ - + - + - + - \ No newline at end of file + diff --git a/cat-home/src/main/java/com/dianping/cat/report/alert/exception/ExceptionAlert.java b/cat-home/src/main/java/com/dianping/cat/report/alert/exception/ExceptionAlert.java index d4c4cf17e2..ff958688c3 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/alert/exception/ExceptionAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/alert/exception/ExceptionAlert.java @@ -81,6 +81,8 @@ private void handleExceptions(List itemList) { return; } + StringBuilder alertContent = new StringBuilder(); + StringBuilder specContent = new StringBuilder(); for (Entry entry : alertExceptions.entrySet()) { try { String domain = entry.getKey(); @@ -93,30 +95,30 @@ private void handleExceptions(List itemList) { entity.setType(getName()); entity.setMetric(topException.getName()); entity.setLevel(topException.getType()); - StringBuilder exceptionStr = new StringBuilder(); - exceptionStr.append("当前值=").append(topException.showCount()).append(",阈值="); + alertContent.append("当前值=").append(topException.showCount()).append(",阈值="); switch (topException.getType()) { case WARNING: - exceptionStr.append(exceptions.showTotalWarnLimit()); + alertContent.append(exceptions.showTotalWarnLimit()); break; case ERROR: - exceptionStr.append(exceptions.showTotalErrorLimit()); + alertContent.append(exceptions.showTotalErrorLimit()); break; } - exceptionStr.append("
错误分布:"); + alertContent.append("
错误分布:"); for (AlertMachine machine : exceptions.getTotalMachines()) { - exceptionStr.append("
").append(machine.toString()); + alertContent.append("
").append(machine.toString()); } - exceptionStr.append("
错误信息:"); + alertContent.append("
错误信息:"); int i = 0; for (AlertException exception : exceptions.getTotalExceptions()) { if (i > 0) { - exceptionStr.append("
").append(exception.toString()); + alertContent.append("
").append(exception.toString()); } i++; } - entity.setContent(exceptionStr.toString()); + entity.setContent(alertContent.toString()); + alertContent.setLength(0); m_sendManager.addAlert(entity); } @@ -129,21 +131,22 @@ private void handleExceptions(List itemList) { entity.setMetric(exception.getName()); entity.setLevel(exception.getType()); - StringBuilder exceptionStr = new StringBuilder(exception.toString()); - exceptionStr.append("当前值=").append(exception.showCount()).append(",阈值="); + specContent.append(exception.toString()) + .append("当前值=").append(exception.showCount()).append(",阈值="); switch (exception.getType()) { case WARNING: - exceptionStr.append(exceptions.showSpecWarnLimit()); + specContent.append(exceptions.showSpecWarnLimit()); break; case ERROR: - exceptionStr.append(exceptions.showSpecErrorLimit()); + specContent.append(exceptions.showSpecErrorLimit()); break; } - exceptionStr.append("
错误分布:"); + specContent.append("
错误分布:"); for (AlertMachine machine : exceptions.getSpecMachines()) { - exceptionStr.append("
").append(machine.toString()); + specContent.append("
").append(machine.toString()); } - entity.setContent(exceptionStr.toString()); + entity.setContent(specContent.toString()); + specContent.setLength(0); m_sendManager.addAlert(entity); } } diff --git a/cat-home/src/main/java/com/dianping/cat/report/alert/heartbeat/HeartbeatAlert.java b/cat-home/src/main/java/com/dianping/cat/report/alert/heartbeat/HeartbeatAlert.java index 460377a7ff..675a283893 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/alert/heartbeat/HeartbeatAlert.java +++ b/cat-home/src/main/java/com/dianping/cat/report/alert/heartbeat/HeartbeatAlert.java @@ -32,6 +32,7 @@ import com.dianping.cat.consumer.heartbeat.model.entity.*; import com.dianping.cat.helper.TimeHelper; import com.dianping.cat.message.Transaction; +import com.dianping.cat.report.alert.exception.AlertMachine; import com.dianping.cat.report.alert.spi.config.BaseRuleConfigManager; import com.dianping.cat.report.page.heartbeat.config.HeartbeatDisplayPolicyManager; import com.dianping.cat.report.service.ModelRequest; @@ -335,6 +336,7 @@ private void processDomain(String domain) { private void processMeitrc(String domain, String ip, String metric, List conditions, int maxMinute, double[] values) { + StringBuilder alertContent = new StringBuilder(); try { if (values != null) { double[] baseline = new double[maxMinute]; @@ -343,14 +345,18 @@ private void processMeitrc(String domain, String ip, String metric, List错误分布:").append(ip); + entity.setDate(alertResult.getAlertTime()) - .setContent(alertResult.getContent()) + .setContent(alertContent.toString()) .setLevel(alertResult.getAlertLevel()) .setMetric(metric) .setType(getName()) .setGroup(domain) .getParas().put("ip", ip); m_sendManager.addAlert(entity); + alertContent.setLength(0); } } } catch (Exception e) { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/service/HeartbeatReportService.java b/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/service/HeartbeatReportService.java index 897838164c..46b415bc11 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/service/HeartbeatReportService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/service/HeartbeatReportService.java @@ -158,23 +158,20 @@ public static class HeartbeatConvertor extends BaseVisitor { @Override public void visitPeriod(Period period) { - Extension catExtension = period.findOrCreateExtension("CatUsage"); - if (period.getCatMessageProduced() > 0 || period.getCatMessageSize() > 0) { + Extension catExtension = period.findOrCreateExtension("Cat"); catExtension.findOrCreateDetail("Produced").setValue(period.getCatMessageProduced()); catExtension.findOrCreateDetail("Overflowed").setValue(period.getCatMessageOverflow()); catExtension.findOrCreateDetail("Bytes").setValue(period.getCatMessageSize()); Extension system = period.findOrCreateExtension("System"); - system.findOrCreateDetail("LoadAverage").setValue(period.getSystemLoadAverage()); Extension gc = period.findOrCreateExtension("GC"); gc.findOrCreateDetail("ParNewCount").setValue(period.getNewGcCount()); gc.findOrCreateDetail("ConcurrentMarkSweepCount").setValue(period.getOldGcCount()); - Extension thread = period.findOrCreateExtension("FrameworkThread"); - + Extension thread = period.findOrCreateExtension("Thread"); thread.findOrCreateDetail("HttpThread").setValue(period.getHttpThreadCount()); thread.findOrCreateDetail("CatThread").setValue(period.getCatThreadCount()); thread.findOrCreateDetail("PigeonThread").setValue(period.getPigeonThreadCount()); @@ -183,7 +180,6 @@ public void visitPeriod(Period period) { Extension disk = period.findOrCreateExtension("Disk"); List disks = period.getDisks(); - for (Disk vinfo : disks) { disk.findOrCreateDetail(vinfo.getPath() + " Free").setValue(vinfo.getFree()); } diff --git a/cat-home/src/main/resources/config/heartbeat-display-policy.xml b/cat-home/src/main/resources/config/heartbeat-display-policy.xml index 3a3efdf8b3..772ed1daf2 100644 --- a/cat-home/src/main/resources/config/heartbeat-display-policy.xml +++ b/cat-home/src/main/resources/config/heartbeat-display-policy.xml @@ -1,86 +1,96 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cat-home/src/main/resources/config/heartbeatRuleConfig.xml b/cat-home/src/main/resources/config/heartbeatRuleConfig.xml index 100d366f81..fb9e2ab043 100644 --- a/cat-home/src/main/resources/config/heartbeatRuleConfig.xml +++ b/cat-home/src/main/resources/config/heartbeatRuleConfig.xml @@ -1,7 +1,7 @@ - + diff --git a/cat-home/src/main/resources/freemaker/heartAlert.ftl b/cat-home/src/main/resources/freemaker/heartAlert.ftl index df0b4919a1..f1c8abd50a 100644 --- a/cat-home/src/main/resources/freemaker/heartAlert.ftl +++ b/cat-home/src/main/resources/freemaker/heartAlert.ftl @@ -1,5 +1,4 @@ +告警时间:${date}
告警类型:Heart
告警指标:${metric}
-告警时间:${date}
-告警内容:${content}>
-告警对象:${target} +告警内容:${content} diff --git a/cat-home/src/main/webapp/WEB-INF/tags/base.tag b/cat-home/src/main/webapp/WEB-INF/tags/base.tag index 80a2c1d5ee..1c0522e34c 100755 --- a/cat-home/src/main/webapp/WEB-INF/tags/base.tag +++ b/cat-home/src/main/webapp/WEB-INF/tags/base.tag @@ -83,7 +83,7 @@ <%-- CAT--%> - v3.4.0 + v3.4.1    <%--