This is an automated email from the ASF dual-hosted git repository. zhaoqingran pushed a commit to branch script in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit 7a3c9f3ef44b559cdda3883e1b72f38cbe52f38d Merge: 54ff52752 d32ec249b Author: Logic <[email protected]> AuthorDate: Mon Nov 4 10:30:56 2024 +0800 Merge branch 'master' of github.com:apache/hertzbeat into script # Conflicts: # collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/processor/ScriptRequestProcessor.java # collector/pom.xml # common/pom.xml # plugin/src/main/resources/define/define.yml # pom.xml .all-contributorsrc | 45 + .devcontainer/devcontainer.json | 76 +- .github/workflows/backend-build-test-reuse.yml | 71 + .github/workflows/backend-build-test.yml | 42 +- .gitpod.yml | 106 +- README.md | 28 +- README_CN.md | 28 +- alerter/pom.xml | 15 - .../impl/AlertDefineExcelImExportServiceImpl.java | 27 +- .../alert/service/impl/AlertDefineServiceImpl.java | 79 +- .../impl/AlertDefineYamlImExportServiceImpl.java | 13 +- .../AlertDefineExcelImExportServiceTest.java | 10 +- collector/collector-basic/pom.xml | 147 + .../collect/database/JdbcCommonCollect.java | 0 .../collector/collect/database/JdbcSpiLoader.java | 0 .../collector/collect/dns/DnsCollectImpl.java | 0 .../collector/collect/ftp/FtpCollectImpl.java | 0 .../collector/collect/http/HttpCollectImpl.java | 604 + .../collect/http/SslCertificateCollectImpl.java | 0 .../http/promethus/AbstractPrometheusParse.java | 0 .../collect/http/promethus/ParseException.java | 0 .../http/promethus/PrometheusLastParser.java | 0 .../http/promethus/PrometheusMatrixParser.java | 0 .../http/promethus/PrometheusParseCreator.java | 0 .../http/promethus/PrometheusVectorParser.java | 0 .../http/promethus/exporter/ExporterParser.java | 433 + .../http/promethus/exporter/MetricFamily.java | 0 .../http/promethus/exporter/MetricType.java | 0 .../collector/collect/httpsd/HttpsdImpl.java | 0 .../constant/DiscoveryClientHealthStatus.java | 0 .../httpsd/constant/DiscoveryClientInstance.java | 0 .../collect/httpsd/discovery/DiscoveryClient.java | 0 .../discovery/DiscoveryClientManagement.java | 0 .../httpsd/discovery/entity/ConnectConfig.java | 0 .../httpsd/discovery/entity/ServerInfo.java | 0 .../httpsd/discovery/entity/ServiceInstance.java | 0 .../discovery/impl/ConsulDiscoveryClient.java | 0 .../discovery/impl/NacosDiscoveryClient.java | 0 .../collector/collect/icmp/IcmpCollectImpl.java | 0 .../collector/collect/imap/ImapCollectImpl.java | 0 .../collector/collect/ipmi2/IpmiCollectImpl.java | 114 + .../collector/collect/ipmi2/cache/IpmiConnect.java | 47 + .../collector/collect/ipmi2/client/IpmiClient.java | 84 + .../collect/ipmi2/client/IpmiConnection.java | 65 + .../collect/ipmi2/client/IpmiEncoderDecoder.java | 41 + .../collect/ipmi2/client/IpmiHandlerManager.java | 50 + .../collect/ipmi2/client/IpmiPacketContext.java | 25 + .../collect/ipmi2/client/IpmiSession.java | 133 + .../collect/ipmi2/client/UdpConnection.java | 81 + .../ipmi2/client/handler/ChassisHandler.java | 66 + .../collect/ipmi2/client/handler/IpmiHandler.java | 32 + .../ipmi2/client/handler/SensorHandler.java | 136 + .../ipmi2/protocol/common/AbstractWireable.java | 59 + .../collect/ipmi2/protocol/common/IpmiCode.java | 59 + .../ipmi2/protocol/common/IpmiEncapsulation.java | 40 + .../collect/ipmi2/protocol/common/Wireable.java | 36 + .../protocol/ipmi/AbstractIpmiSessionWrapper.java | 111 + .../protocol/ipmi/Ipmi20Ipv4SessionWrapper.java | 219 + .../ipmi2/protocol/ipmi/IpmiChannelMediumCode.java | 52 + .../ipmi2/protocol/ipmi/IpmiChannelNumberCode.java | 55 + .../protocol/ipmi/IpmiChannelPrivilegeLevel.java | 46 + .../protocol/ipmi/IpmiChannelProtocolCode.java | 53 + .../ipmi2/protocol/ipmi/IpmiCommandName.java | 118 + .../ipmi2/protocol/ipmi/IpmiCompletionCode.java | 75 + .../collect/ipmi2/protocol/ipmi/IpmiLun.java | 44 + .../protocol/ipmi/IpmiNetworkFunctionCode.java | 59 + .../ipmi/IpmiSessionAuthenticationType.java | 43 + .../ipmi2/protocol/ipmi/IpmiSessionWrapper.java | 41 + .../protocol/ipmi/command/AbstractIpmiCommand.java | 126 + .../protocol/ipmi/command/AbstractIpmiRequest.java | 31 + .../ipmi/command/AbstractIpmiResponse.java | 50 + .../ipmi2/protocol/ipmi/command/IpmiCommand.java | 45 + .../ipmi2/protocol/ipmi/command/IpmiRequest.java | 24 + .../ipmi2/protocol/ipmi/command/IpmiResponse.java | 24 + .../command/chassis/GetChassisStatusRequest.java | 49 + .../command/chassis/GetChassisStatusResponse.java | 116 + .../command/messaging/CloseSessionRequest.java | 55 + .../command/messaging/CloseSessionResponse.java | 53 + ...etChannelAuthenticationCapabilitiesRequest.java | 54 + ...tChannelAuthenticationCapabilitiesResponse.java | 56 + .../protocol/ipmi/command/sdr/GetSdrRequest.java | 72 + .../protocol/ipmi/command/sdr/GetSdrResponse.java | 131 + .../ipmi/command/sdr/GetSensorReadingRequest.java | 50 + .../ipmi/command/sdr/GetSensorReadingResponse.java | 42 + .../command/sdr/ReserveSdrRepositoryRequest.java | 44 + .../command/sdr/ReserveSdrRepositoryResponse.java | 44 + .../ipmi/command/sdr/code/IpmiEntityIdCode.java | 106 + .../ipmi/command/sdr/code/IpmiReadingTypeCode.java | 52 + .../ipmi/command/sdr/code/IpmiSensorTypeCode.java | 93 + .../command/sdr/code/IpmiSensorUnitTypeCode.java | 139 + .../protocol/ipmi/payload/AbstractIpmiPayload.java | 26 + .../ipmi/payload/AbstractSessionIpmiPayload.java | 63 + .../ipmi2/protocol/ipmi/payload/IpmiPayload.java | 27 + .../protocol/ipmi/payload/IpmiPayloadType.java | 61 + .../protocol/ipmi/payload/MessageStatusCode.java | 65 + .../ipmi2/protocol/ipmi/payload/RakpMessage1.java | 76 + .../ipmi2/protocol/ipmi/payload/RakpMessage2.java | 107 + .../ipmi2/protocol/ipmi/payload/RakpMessage3.java | 100 + .../ipmi2/protocol/ipmi/payload/RakpMessage4.java | 89 + .../ipmi/payload/RmcpPlusOpenSessionRequest.java | 79 + .../ipmi/payload/RmcpPlusOpenSessionResponse.java | 79 + .../security/AbstractIpmiAlgorithmWrapper.java | 47 + .../protocol/ipmi/security/IpmiAlgorithm.java | 28 + .../ipmi/security/IpmiAuthenticationCode.java | 62 + .../ipmi/security/IpmiConfidentialityCode.java | 61 + .../protocol/ipmi/security/IpmiIntegrityCode.java | 63 + .../authentication/AbstractIpmiAuthentication.java | 59 + .../authentication/IpmiAuthentication.java | 33 + .../IpmiAuthenticationAlgorithmWrapper.java | 47 + .../ipmi/security/authentication/None.java | 45 + .../ipmi/security/authentication/RakpHmacMd5.java | 34 + .../ipmi/security/authentication/RakpHmacSha1.java | 35 + .../security/authentication/RakpHmacSha256.java | 35 + .../AbstractIpmiConfidentiality.java | 53 + .../ipmi/security/confidentiality/AesCbc128.java | 102 + .../confidentiality/IpmiConfidentiality.java | 41 + .../IpmiConfidentialityAlgorithmWrapper.java | 56 + .../ipmi/security/confidentiality/None.java | 58 + .../ipmi/security/confidentiality/Xrc4128.java | 59 + .../ipmi/security/confidentiality/Xrc440.java | 59 + .../security/integrity/AbstractIpmiIntegrity.java | 59 + .../ipmi/security/integrity/HmacMd5128.java | 34 + .../ipmi/security/integrity/HmacSha196.java | 34 + .../ipmi/security/integrity/HmacSha256128.java | 35 + .../ipmi/security/integrity/IntegrityUtils.java | 42 + .../ipmi/security/integrity/IpmiIntegrity.java | 35 + .../integrity/IpmiIntegrityAlgorithmWrapper.java | 50 + .../protocol/ipmi/security/integrity/Md5128.java | 61 + .../protocol/ipmi/security/integrity/None.java | 44 + .../collect/ipmi2/protocol/rmcp/Packet.java | 34 + .../collect/ipmi2/protocol/rmcp/RmcpData.java | 28 + .../ipmi2/protocol/rmcp/RmcpMessageClass.java | 42 + .../ipmi2/protocol/rmcp/RmcpMessageStatus.java | 39 + .../collect/ipmi2/protocol/rmcp/RmcpPacket.java | 125 + .../collect/ipmi2/protocol/rmcp/RmcpVersion.java | 45 + .../collect/ipmi2/utils/ByteCheckUtils.java | 41 + .../collect/ipmi2/utils/ByteConvertUtils.java | 59 + .../collect/ipmi2/utils/ByteOrderUtils.java | 78 + .../collector/collect/jmx/JmxClassLoader.java | 0 .../collector/collect/jmx/JmxCollectImpl.java | 0 .../collect/memcached/MemcachedCollectImpl.java | 0 .../collector/collect/mqtt/MqttCollectImpl.java | 0 .../collector/collect/nginx/NginxCollectImpl.java | 0 .../collector/collect/ntp/NtpCollectImpl.java | 0 .../collector/collect/pop3/Pop3CollectImpl.java | 0 .../prometheus/PrometheusAutoCollectImpl.java | 0 .../collect/prometheus/parser/MetricFamily.java | 0 .../collect/prometheus/parser/TextParser.java | 305 + .../collector/collect/push/PushCollectImpl.java | 0 .../collector/collect/redfish/ConnectSession.java | 0 .../collector/collect/redfish/RedfishClient.java | 0 .../collect/redfish/RedfishCollectImpl.java | 192 + .../collect/redfish/RedfishCollectionSchema.java | 0 .../collect/redfish/RedfishConnectSession.java | 0 .../collector/collect/redfish/Session.java | 0 .../collect/redfish/cache/RedfishConnect.java | 46 + .../collect/redis/RedisCommonCollectImpl.java | 0 .../collect/script/ScriptCollectImpl.java | 0 .../collector/collect/smtp/SmtpCollectImpl.java | 0 .../collector/collect/snmp/SnmpCollectImpl.java | 341 + .../collector/collect/ssh/SshCollectImpl.java | 0 .../collect/telnet/TelnetCollectImpl.java | 0 .../collector/collect/udp/UdpCollectImpl.java | 0 .../collect/websocket/WebsocketCollectImpl.java | 0 .../collect/common/cache/CommonCacheTest.java | 113 + .../collect/common/http/CommonHttpClientTest.java | 0 .../collect/common/ssh/CommonSshClientTest.java | 0 .../collect/database/JdbcCommonCollectTest.java | 0 .../collect/database/JdbcSpiLoaderTest.java | 0 .../collector/collect/dns/DnsCollectImplTest.java | 0 .../collector/collect/ftp/FtpCollectImplTest.java | 0 .../collect/http/HttpCollectImplTest.java | 0 .../http/SslCertificateCollectImplTest.java | 0 .../promethus/exporter/ExporterParserTest.java | 0 .../collector/collect/httpsd/HttpsdImplTest.java | 0 .../collect/icmp/IcmpCollectImplTest.java | 0 .../collect/imap/ImapCollectImplTest.java | 0 .../collect/ipmi/IpmiSessionWrapperTest.java | 233 + .../collect/ipmi/common/AbstractWireableTest.java | 47 + .../ipmi/security/IpmiConfidentialityTest.java | 65 + .../collector/collect/jmx/JmxCollectImplTest.java | 0 .../memcached/MemcachedCollectImplTest.java | 0 .../collector/collect/mqtt/MqttCollectTest.java | 124 + .../collect/nginx/NginxCollectImplTest.java | 0 .../collector/collect/ntp/NtpCollectImplTest.java | 0 .../collect/pop3/Pop3CollectImplTest.java | 0 .../collect/push/PushCollectImplTest.java | 0 .../collect/redfish/RedfishCollectImplTest.java | 0 .../collect/redis/RedisClusterCollectImplTest.java | 0 .../collect/redis/RedisSingleCollectImplTest.java | 0 .../collect/script/ScriptCollectImplTest.java | 0 .../collect/smtp/SmtpCollectImplTest.java | 0 .../collect/snmp/SnmpCollectImplTest.java | 0 .../collector/collect/ssh/SshCollectImplTest.java | 0 .../collect/telnet/TelnetCollectImplTest.java | 0 .../collector/collect/udp/UdpCollectImplTest.java | 0 .../websocket/WebsocketCollectImplTest.java | 0 .../collector/dispatch/CommonDispatcherTest.java | 147 + .../dispatch/MetricsCollectorQueueTest.java | 68 + .../collector/dispatch/WorkerPoolTest.java | 0 .../dispatch/entrance/CollectServerTest.java | 0 .../entrance/internal/CollectJobServiceTest.java | 0 .../dispatch/export/NettyDataQueueTest.java | 0 .../dispatch/unit/DataSizeConvertTest.java | 0 .../dispatch/unit/TimeLengthConvertTest.java | 0 .../hertzbeat/collector/util/CollectUtilTest.java | 0 .../collector/util/JsonPathParserTest.java | 0 .../collector/util/PrivateKeyUtilsTest.java | 0 .../collector/util/TimeExpressionUtilTest.java | 0 collector/collector-common/pom.xml | 88 + .../collector/collect/AbstractCollect.java | 0 .../collect/common/cache/AbstractConnection.java | 0 .../collect/common/cache/CacheIdentifier.java | 0 .../common/cache/ConnectionCommonCache.java | 186 + .../collect/common/cache/JdbcConnect.java | 0 .../collector/collect/common/cache/JmxConnect.java | 0 .../collect/common/cache/RedisConnect.java | 0 .../collector/collect/common/cache/SshConnect.java | 45 + .../collect/common/http/CommonHttpClient.java | 0 .../collect/common/ssh/CommonSshBlacklist.java | 0 .../collect/common/ssh/CommonSshClient.java | 0 .../config/CollectorAutoConfiguration.java | 0 .../collector/constants/CollectorConstants.java | 0 .../collector/dispatch/CollectDataDispatch.java | 48 + .../dispatch/CollectorInfoProperties.java | 0 .../collector/dispatch/DispatchConstants.java | 212 + .../collector/dispatch/DispatchProperties.java | 0 .../collector/dispatch/MetricsTaskDispatch.java | 0 .../hertzbeat/collector/dispatch/WorkerPool.java | 81 + .../collector/dispatch/entrance/CollectServer.java | 195 + .../entrance/internal/CollectJobService.java | 184 + .../internal/CollectResponseEventListener.java | 35 + .../processor/CollectCyclicDataProcessor.java | 0 .../processor/CollectOneTimeDataProcessor.java | 0 .../processor/DeleteCyclicTaskProcessor.java | 54 + .../entrance/processor/GoCloseProcessor.java | 0 .../entrance/processor/GoOfflineProcessor.java | 0 .../entrance/processor/GoOnlineProcessor.java | 0 .../entrance/processor/HeartbeatProcessor.java | 0 .../entrance/processor/ScriptRequestProcessor.java | 0 .../collector/dispatch/export/NettyDataQueue.java | 0 .../collector/dispatch/timer/HashedWheelTimer.java | 805 + .../collector/dispatch/timer/Timeout.java | 0 .../hertzbeat/collector/dispatch/timer/Timer.java | 0 .../collector/dispatch/timer/TimerDispatch.java | 71 + .../collector/dispatch/timer/TimerDispatcher.java | 153 + .../collector/dispatch/timer/TimerTask.java | 0 .../collector/dispatch/timer/WheelTimerTask.java | 99 + .../collector/dispatch/unit/DataUnit.java | 0 .../collector/dispatch/unit/TimeLengthUnit.java | 0 .../collector/dispatch/unit/UnitConvert.java | 0 .../dispatch/unit/impl/AbstractUnitConvert.java | 75 + .../dispatch/unit/impl/DataSizeConvert.java | 43 + .../dispatch/unit/impl/TimeLengthConvert.java | 43 + .../hertzbeat/collector/util/CollectUtil.java | 481 + .../hertzbeat/collector/util/JsonPathParser.java | 76 + .../hertzbeat/collector/util/PrivateKeyUtils.java | 62 + .../collector/util/TimeExpressionUtil.java | 129 + collector/collector-kafka/pom.xml | 50 + .../collector/collect/kafka/KafkaCollectImpl.java | 210 + .../collector/collect/kafka/KafkaConnect.java | 64 + .../collector/collect/kafka/SupportedCommand.java | 63 + .../collector/collect/kafka/KafkaCollectTest.java | 93 + collector/collector-mongodb/pom.xml | 49 + .../collector/collect/mongodb/MongodbConnect.java | 46 + .../collect/mongodb/MongodbSingleCollectImpl.java | 232 + .../collect/mongodb/MongoCollectImplTest.java | 108 + collector/collector-nebulagraph/pom.xml | 60 + .../nebulagraph/NebulaGraphCollectImpl.java | 0 .../collect/nebulagraph/NebulaTemplate.java | 0 .../collect/nebulagraph/NgqlCollectImpl.java | 0 .../nebulagraph/NebulaGraphCollectImplTest.java | 104 + .../collect/nebulagraph/NgqlCollectImplTest.java | 208 + collector/collector-rocketmq/pom.xml | 50 + .../collect/rocketmq/RocketmqCollectData.java | 166 + .../rocketmq/RocketmqSingleCollectImpl.java | 372 + .../rocketmq/RocketmqSingleCollectTest.java | 100 + collector/collector/pom.xml | 343 + .../org/apache/hertzbeat/collector/Collector.java | 0 .../collect/strategy/CollectStrategyFactory.java | 58 + .../config/CollectorAutoConfiguration.java | 0 .../collector/dispatch/CommonDispatcher.java | 383 + .../collector/dispatch/MetricsCollect.java | 432 + .../collector/dispatch/MetricsCollectorQueue.java | 46 + ...che.hertzbeat.collector.collect.AbstractCollect | 30 + ...rk.boot.autoconfigure.AutoConfiguration.imports | 0 .../collector/src/main/resources/application.yml | 61 + .../{ => collector}/src/main/resources/banner.txt | 0 .../src/main/resources/logback-spring.xml | 0 collector/pom.xml | 428 +- .../common/cache/ConnectionCommonCache.java | 187 - .../collect/common/cache/MongodbConnect.java | 45 - .../collect/common/cache/RedfishConnect.java | 45 - .../collector/collect/common/cache/SshConnect.java | 44 - .../collector/collect/http/HttpCollectImpl.java | 604 - .../http/promethus/exporter/ExporterParser.java | 429 - .../collect/mongodb/MongodbSingleCollectImpl.java | 222 - .../collector/collect/mq/RocketmqCollectData.java | 166 - .../collect/mq/RocketmqSingleCollectImpl.java | 372 - .../collect/prometheus/parser/TextParser.java | 291 - .../collect/redfish/RedfishCollectImpl.java | 192 - .../collector/collect/snmp/SnmpCollectImpl.java | 334 - .../collect/strategy/CollectStrategyFactory.java | 57 - .../collector/dispatch/CollectDataDispatch.java | 47 - .../collector/dispatch/CommonDispatcher.java | 382 - .../collector/dispatch/DispatchConstants.java | 202 - .../collector/dispatch/MetricsCollect.java | 431 - .../collector/dispatch/MetricsCollectorQueue.java | 45 - .../hertzbeat/collector/dispatch/WorkerPool.java | 80 - .../collector/dispatch/entrance/CollectServer.java | 194 - .../entrance/internal/CollectJobService.java | 183 - .../internal/CollectResponseEventListener.java | 34 - .../processor/DeleteCyclicTaskProcessor.java | 53 - .../collector/dispatch/timer/HashedWheelTimer.java | 804 - .../collector/dispatch/timer/TimerDispatch.java | 70 - .../collector/dispatch/timer/TimerDispatcher.java | 152 - .../collector/dispatch/timer/WheelTimerTask.java | 98 - .../dispatch/unit/impl/AbstractUnitConvert.java | 74 - .../dispatch/unit/impl/DataSizeConvert.java | 42 - .../dispatch/unit/impl/TimeLengthConvert.java | 42 - .../hertzbeat/collector/util/CollectUtil.java | 480 - .../hertzbeat/collector/util/JsonPathParser.java | 75 - .../hertzbeat/collector/util/PrivateKeyUtils.java | 61 - .../collector/util/TimeExpressionUtil.java | 128 - ...che.hertzbeat.collector.collect.AbstractCollect | 28 - collector/src/main/resources/application.yml | 61 - .../collect/common/cache/CommonCacheTest.java | 112 - .../collect/mongodb/MongoCollectImplTest.java | 108 - .../collect/mq/RocketmqSingleCollectTest.java | 100 - .../collector/collect/mqtt/MqttCollectTest.java | 126 - .../nebulagraph/NebulaGraphCollectImplTest.java | 103 - .../collect/nebulagraph/NgqlCollectImplTest.java | 207 - .../collector/dispatch/CommonDispatcherTest.java | 147 - .../dispatch/MetricsCollectorQueueTest.java | 68 - common/pom.xml | 14 + .../common/constants/ConfigConstants.java | 9 + .../common/constants/NetworkConstants.java | 4 + .../common/entity/grafana/GrafanaDashboard.java | 18 +- .../common/entity/grafana/ServiceAccount.java | 61 - .../common/entity/grafana/ServiceToken.java | 50 - .../hertzbeat/common/entity/job/Metrics.java | 11 + .../common/entity/job/protocol/IpmiProtocol.java | 72 + .../common/entity/job/protocol/KafkaProtocol.java | 53 + .../hertzbeat/common/entity/manager/Bulletin.java | 98 + .../manager/JsonMapListAttributeConverter.java | 45 + .../hertzbeat/common/entity/manager/Monitor.java | 9 - .../common/entity/manager/bulletin/Bulletin.java | 97 - .../entity/manager/bulletin/BulletinDto.java | 52 - .../manager/bulletin/BulletinMetricsData.java | 135 - .../common/entity/manager/bulletin/BulletinVo.java | 65 - .../common/queue/impl/RedisCommonDataQueue.java | 1 + .../apache/hertzbeat/common/util/CommonUtil.java | 37 + .../apache/hertzbeat/common/util/ResponseUtil.java | 79 + .../common/util/export/ExcelExportUtils.java | 85 + .../common/util/export/YamlExportUtils.java | 44 + .../hertzbeat/common/cache/CacheFactoryTest.java | 34 + .../hertzbeat/common/cache/CaffeineCacheTest.java | 7 + .../common/util/JexlExpressionRunnerTest.java | 69 + .../apache/hertzbeat/common/util/JsonUtilTest.java | 17 + .../hertzbeat/common/util/NetworkUtilTest.java | 32 + .../org/apache/hertzbeat/common/util/PairTest.java | 37 + .../hertzbeat/common/util/ResponseUtilTest.java | 86 + e2e/docker-compose.yml | 24 +- .../hertzbeat/grafana/common/CommonConstants.java | 77 - .../hertzbeat/grafana/common/GrafanaConstants.java | 62 + .../grafana/config/GrafanaAutoConfiguration.java | 7 +- .../hertzbeat/grafana/config/GrafanaInit.java | 23 +- .../grafana/config/GrafanaProperties.java | 29 +- .../grafana/controller/DashboardController.java | 10 +- .../controller/ServiceAccountController.java | 119 - .../hertzbeat/grafana/dao/GrafanaConfigDao.java | 36 + .../hertzbeat/grafana/dao/ServiceAccountDao.java | 38 - .../hertzbeat/grafana/dao/ServiceTokenDao.java | 37 - .../hertzbeat/grafana/dto/GrafanaConfig.java | 38 + .../grafana/service/DashboardService.java | 36 +- .../grafana/service/DatasourceService.java | 105 +- .../grafana/service/ServiceAccountService.java | 236 +- home/blog/2024-01-11-new-committer.md | 8 +- home/blog/2024-08-31-new-committer.md | 39 + home/blog/2024-09-10-new-committer.md | 48 + home/docs/download.md | 6 +- home/docs/help/alert_feishu.md | 6 +- home/docs/help/alert_threshold_expr.md | 4 +- home/docs/help/hadoop.md | 2 +- home/docs/help/ipmi.md | 53 + home/docs/help/kafka_client.md | 47 + home/docs/help/seatunnel.md | 99 + home/docs/help/spark.md | 2 +- .../help/template-marketplace-img/asset-detail.png | Bin 0 -> 71288 bytes .../template-marketplace-img/asset-upgrade.png | Bin 0 -> 74938 bytes .../help/template-marketplace-img/detail-faq.png | Bin 0 -> 56070 bytes .../help/template-marketplace-img/detail-info.png | Bin 0 -> 47310 bytes .../template-marketplace-img/detail-version.png | Bin 0 -> 77009 bytes .../help/template-marketplace-img/download.png | Bin 0 -> 74619 bytes .../help/template-marketplace-img/email-login.png | Bin 0 -> 64255 bytes .../hover-window-guest.png | Bin 0 -> 8228 bytes .../template-marketplace-img/hover-window-user.png | Bin 0 -> 9233 bytes .../template-marketplace-img/search-category.png | Bin 0 -> 104852 bytes .../help/template-marketplace-img/search-name.png | Bin 0 -> 74388 bytes home/docs/help/template-marketplace-img/search.png | Bin 0 -> 96501 bytes home/docs/help/template-marketplace-img/share.png | Bin 0 -> 63412 bytes .../docs/help/template-marketplace-img/sign-up.png | Bin 0 -> 56882 bytes .../template-marketplace-img/user-center-asset.png | Bin 0 -> 88469 bytes .../user-center-star-detail.png | Bin 0 -> 51963 bytes .../template-marketplace-img/user-center-star.png | Bin 0 -> 107015 bytes .../user-center-upload.png | Bin 0 -> 182357 bytes home/docs/help/template_marketplace.md | 152 + home/docs/introduce.md | 4 +- home/docs/start/baota-deploy.md | 43 + home/docs/start/docker-compose-deploy.md | 2 +- home/docs/start/package-deploy.md | 4 +- home/docs/start/postgresql-change.md | 2 +- .../en/docusaurus-plugin-content-docs/current.json | 8 + .../2024-01-11-new-committer.md | 8 +- .../2024-08-31-new-committer.md | 46 + .../2024-09-10-new-committer.md | 48 + .../docusaurus-plugin-content-docs/current.json | 10 +- .../current/download.md | 4 +- .../current/help/alert_feishu.md | 10 +- .../current/help/alert_threshold_expr.md | 4 +- .../current/help/almalinux.md | 2 +- .../current/help/centos.md | 2 +- .../current/help/debian.md | 2 +- .../current/help/euleros.md | 2 +- .../current/help/flink.md | 2 +- .../current/help/flink_on_yarn.md | 2 +- .../current/help/freebsd.md | 2 +- .../current/help/hadoop.md | 2 +- .../current/help/ipmi.md | 53 + .../current/help/kafka.md | 2 +- .../current/help/kafka_client.md | 47 + .../current/help/linux.md | 2 +- .../current/help/opensuse.md | 2 +- .../current/help/redhat.md | 2 +- .../current/help/redis.md | 2 +- .../current/help/rockylinux.md | 2 +- .../current/help/seatunnel.md | 99 + .../current/help/ubuntu.md | 2 +- .../current/help/windows.md | 2 +- .../current/help/zookeeper.md | 2 +- .../current/introduce.md | 4 +- .../current/start/baota-deploy.md | 44 + .../current/start/docker-compose-deploy.md | 2 +- .../current/start/package-deploy.md | 6 +- .../current/start/postgresql-change.md | 2 +- .../current/start/rainbond-deploy.md | 2 +- .../version-v1.5.x/help/alert_threshold_expr.md | 4 +- .../version-v1.5.x/introduce.md | 4 +- .../version-v1.5.x/start/package-deploy.md | 2 +- .../version-v1.5.x/start/postgresql-change.md | 4 +- home/sidebars.json | 59 +- home/src/pages/team/index.jsx | 21 + home/src/pages/team/member.json | 18 +- .../static/img/docs/start/install-to-aapanel-1.png | Bin 0 -> 85377 bytes .../static/img/docs/start/install-to-aapanel-2.png | Bin 0 -> 72798 bytes .../static/img/docs/start/install-to-aapanel-3.png | Bin 0 -> 24363 bytes home/static/img/docs/start/install-to-baota-1.png | Bin 0 -> 337227 bytes home/static/img/docs/start/install-to-baota-2.png | Bin 0 -> 546214 bytes home/static/img/docs/start/install-to-baota-3.png | Bin 0 -> 436091 bytes home/static/img/home/1.png | Bin 1415895 -> 1421873 bytes home/static/img/home/2.png | Bin 1278829 -> 1261602 bytes .../version-v1.5.x/help/alert_threshold_expr.md | 4 +- home/versioned_docs/version-v1.5.x/introduce.md | 4 +- .../version-v1.5.x/start/package-deploy.md | 2 +- .../version-v1.5.x/start/postgresql-change.md | 4 +- manager/pom.xml | 2 +- .../impl/AbstractAlertNotifyHandlerImpl.java | 6 +- .../impl/DingTalkRobotAlertNotifyHandlerImpl.java | 2 +- .../alerter/impl/EmailAlertNotifyHandlerImpl.java | 9 +- .../impl/FlyBookAlertNotifyHandlerImpl.java | 254 +- .../impl/WeComRobotAlertNotifyHandlerImpl.java | 2 +- .../manager/config/CommonCommandLineRunner.java | 129 - .../manager/config/ConfigInitializer.java | 153 + .../manager/controller/AccountController.java | 20 +- .../hertzbeat/manager/controller/AiController.java | 14 +- .../manager/controller/AppController.java | 57 +- .../manager/controller/BulletinController.java | 87 +- .../manager/controller/CollectorController.java | 6 +- .../controller/GeneralConfigController.java | 6 +- .../manager/controller/MonitorController.java | 4 +- .../apache/hertzbeat/manager/dao/BulletinDao.java | 2 +- .../manager/pojo/dto/AiControllerRequestParam.java | 32 + .../manager/pojo/dto/BulletinMetricsData.java | 135 + .../hertzbeat/manager/pojo/dto/MonitorDto.java | 7 +- .../hertzbeat/manager/pojo/dto/TokenDto.java | 41 + .../hertzbeat/manager/service/AccountService.java | 4 +- .../hertzbeat/manager/service/BulletinService.java | 54 +- .../hertzbeat/manager/service/MailService.java | 40 - .../hertzbeat/manager/service/MonitorService.java | 21 +- .../service/impl/AbstractImExportServiceImpl.java | 2 +- .../manager/service/impl/AccountServiceImpl.java | 2 +- .../manager/service/impl/BulletinServiceImpl.java | 150 +- .../service/impl/ExcelImExportServiceImpl.java | 26 +- .../manager/service/impl/MailServiceImpl.java | 113 - .../manager/service/impl/MonitorServiceImpl.java | 27 +- .../manager/service/impl/PluginServiceImpl.java | 18 +- .../manager/service/impl/TagServiceImpl.java | 9 + .../service/impl/YamlImExportServiceImpl.java | 13 +- .../src/main/resources/define/app-cisco_switch.yml | 10 +- .../src/main/resources/define/app-h3c_switch.yml | 10 +- .../src/main/resources/define/app-hpe_switch.yml | 10 +- .../main/resources/define/app-huawei_switch.yml | 10 +- .../define/{hugegraph.yml => app-hugegraph.yml} | 0 manager/src/main/resources/define/app-ipmi.yml | 232 + .../src/main/resources/define/app-kafka_client.yml | 168 + .../src/main/resources/define/app-seatunnel.yml | 487 + manager/src/main/resources/define/app-tidb.yml | 640 +- .../main/resources/define/app-tplink_switch.yml | 10 +- manager/src/main/resources/logback-spring.xml | 2 +- .../main/resources/templates/1-EmailTemplate.html | 22 +- .../impl/EmailAlertNotifyHandlerImplTest.java | 51 +- .../manager/controller/AccountControllerTest.java | 6 +- .../manager/controller/AiControllerTest.java | 11 +- .../manager/controller/BulletinControllerTest.java | 71 +- .../manager/service/AccountServiceTest.java | 2 +- .../manager/service/BulletinServiceTest.java | 70 +- .../hertzbeat/manager/service/MailServiceTest.java | 71 - .../manager/service/MonitorServiceTest.java | 10 +- .../hertzbeat/manager/service/TagServiceTest.java | 34 +- material/licenses/LICENSE | 60 +- material/licenses/backend/LICENSE | 11 +- material/licenses/frontend/LICENSE | 49 +- .../frontend/LICENSE-ngx-query-builder.txt | 21 + pom.xml | 20 +- script/assembly/collector/assembly.xml | 10 +- script/assembly/server/assembly-docker-compose.xml | 2 +- script/ci/exclude_files.txt | 25 - script/docker-compose/LICENSE | 201 + .../hertzbeat-mysql-iotdb/conf/application.yml | 30 +- .../hertzbeat-mysql-iotdb/conf/sureness.yml | 8 + .../hertzbeat-mysql-tdengine/conf/application.yml | 29 +- .../hertzbeat-mysql-tdengine/conf/sureness.yml | 8 + .../conf/application.yml | 22 +- .../conf/sureness.yml | 8 + .../conf/application.yml | 22 +- .../conf/sureness.yml | 8 + script/docker/collector/Dockerfile | 4 +- script/docker/collector/build.sh | 8 +- script/release/release-win.ps1 | 90 + .../hertzbeat-template-hub-web-app/.editorconfig | 16 + .../hertzbeat-template-hub-web-app/.gitignore | 42 + .../hertzbeat-template-hub-web-app/.prettierrc.js | 31 + .../hertzbeat-template-hub-web-app/README.md | 27 + .../hertzbeat-template-hub-web-app/angular.json | 186 + .../hertzbeat-template-hub-web-app/ng-alain.json | 13 + .../hertzbeat-template-hub-web-app/package.json | 66 + .../hertzbeat-template-hub-web-app/proxy.conf.json | 8 + .../public/favicon.ico | Bin 0 -> 2540 bytes .../src/app/app.component.html | 20 + .../src/app/app.component.ts | 40 + .../src/app/app.config.ts | 46 + .../src/app/app.module.ts | 55 + .../src/app/core/core.module.ts | 31 + .../src/app/core/guard/detect-auth-guard.ts | 50 + .../src/app/core/index.ts | 21 + .../app/core/interceptor/default.interceptor.ts | 223 + .../src/app/core/module-import-guard.ts | 24 + .../src/app/global-config.module.ts | 49 + .../src/app/layout/blank/blank.component.ts | 29 + .../src/app/layout/layout.module.ts | 80 + .../src/app/layout/market/market.component.html | 227 + .../src/app/layout/market/market.component.ts | 76 + .../src/app/pojo/Message.ts | 24 + .../app/routes/home-page/home-page.component.html | 125 + .../app/routes/home-page/home-page.component.less | 40 + .../app/routes/home-page/home-page.component.ts | 64 + .../src/app/routes/login/login.component.html | 66 + .../src/app/routes/login/login.component.less | 18 + .../src/app/routes/login/login.component.ts | 80 + .../src/app/routes/market/market-routing.module.ts | 37 + .../src/app/routes/market/market.module.ts | 74 + .../template-detail/template-detail.component.html | 277 + .../template-detail/template-detail.component.less | 18 + .../template-detail/template-detail.component.ts | 210 + .../template-list/template-list.component.html | 229 + .../template-list/template-list.component.less | 60 + .../template-list/template-list.component.ts | 270 + .../src/app/routes/routes-routing.module.ts | 40 + .../src/app/routes/routes.module.ts | 58 + .../src/app/routes/sign-up/sign-up.component.html | 75 + .../src/app/routes/sign-up/sign-up.component.less | 18 + .../src/app/routes/sign-up/sign-up.component.ts | 79 + .../assets-detail/assets-detail.component.html | 349 + .../assets-detail/assets-detail.component.less | 18 + .../assets-detail/assets-detail.component.ts | 302 + .../user-assets/user-assets.component.html | 192 + .../user-assets/user-assets.component.less | 18 + .../user-assets/user-assets.component.ts | 231 + .../user-center/user-center-routing.module.ts | 41 + .../app/routes/user-center/user-center.module.ts | 82 + .../user-center/user-star/user-star.component.html | 208 + .../user-center/user-star/user-star.component.less | 18 + .../user-center/user-star/user-star.component.ts | 226 + .../user-upload/user-upload.component.html | 169 + .../user-upload/user-upload.component.less | 18 + .../user-upload/user-upload.component.ts | 211 + .../src/app/service/auth.service.ts | 60 + .../src/app/service/category.service.ts | 57 + .../src/app/service/data.service.ts | 35 + .../src/app/service/local-storage.service.ts | 63 + .../src/app/service/star.service.ts | 58 + .../src/app/service/template.service.ts | 166 + .../src/app/service/version.service.ts | 55 + .../src/app/shared/constants.ts | 0 .../src/assets/css/style.css | 2324 ++ .../src/assets/svg/1-img.svg | 1 + .../src/assets/svg/2-img.svg | 1 + .../src/assets/svg/3-img.svg | 1 + .../src/assets/svg/4-img.svg | 1 + .../src/assets/svg/5-img.svg | 1 + .../src/assets/svg/6-img.svg | 1 + .../src/assets/svg/brand.svg | 24 + .../src/assets/svg/brand_white.svg | 24 + .../src/assets/svg/breadcrumb.svg | 226 + .../src/assets/svg/cancel-star.svg | 24 + .../src/assets/svg/circle.svg | 1463 ++ .../src/assets/svg/detail.svg | 36 + .../src/assets/svg/download.svg | 40 + .../src/assets/svg/email.svg | 34 + .../src/assets/svg/github.svg | 34 + .../src/assets/svg/hand.svg | 68 + .../src/assets/svg/home-1.svg | 83 + .../src/assets/svg/home-2.svg | 102 + .../src/assets/svg/home-3.svg | 72 + .../src/assets/svg/home-page-bg.svg | 1657 ++ .../src/assets/svg/i18n.svg | 51 + .../src/assets/svg/logo.svg | 22 + .../src/assets/svg/logo_white.svg | 22 + .../src/assets/svg/mysql-img.svg | 68 + .../src/assets/svg/star.svg | 24 + .../src/assets/svg/title-line.svg | 38 + .../src/assets/svg/upload-bg.svg | 1598 ++ .../src/assets/svg/user-center.svg | 40 + .../src/environments/environment.prod.ts | 29 + .../src/environments/environment.ts | 42 + .../hertzbeat-template-hub-web-app/src/favicon.ico | Bin 0 -> 2540 bytes .../hertzbeat-template-hub-web-app/src/index.html | 42 + .../hertzbeat-template-hub-web-app/src/main.ts | 59 + .../hertzbeat-template-hub-web-app/src/styles.css | 21 + .../tsconfig.app.json | 13 + .../hertzbeat-template-hub-web-app/tsconfig.json | 43 + .../tsconfig.spec.json | 13 + .../hertzbeat-template-hub/.gitignore | 33 + .../hertzbeat-template-hub/README.md | 2 + .../hertzbeat-template-hub/apiTest/category.http | 38 + .../hertzbeat-template-hub/apiTest/share.http | 22 + .../hertzbeat-template-hub/apiTest/star.http | 39 + .../hertzbeat-template-hub/apiTest/template.http | 56 + .../hertzbeat-template-hub/apiTest/user.http | 44 + .../hertzbeat-template-hub/apiTest/version.http | 25 + .../hertzbeat-template-hub/pom.xml | 187 + .../hertzbeat-template-hub/sql/auth_resource.sql | 43 + .../hertzbeat-template-hub/sql/auth_role.sql | 34 + .../sql/auth_role_resource_bind.sql | 31 + .../hertzbeat-template-hub/sql/auth_user.sql | 43 + .../sql/auth_user_role_bind.sql | 37 + .../hertzbeat-template-hub/sql/category.sql | 36 + .../hertzbeat-template-hub/sql/star.sql | 28 + .../hertzbeat-template-hub/sql/tag.sql | 29 + .../hertzbeat-template-hub/sql/template.sql | 46 + .../hertzbeat-template-hub/sql/template_tag.sql | 27 + .../hertzbeat-template-hub/sql/version.sql | 40 + .../HertzbeatTemplateHubApplication.java | 32 + .../templatehub/config/FileStorageConfig.java | 56 + .../templatehub/constants/CommonConstants.java | 375 + .../templatehub/controller/AccountController.java | 134 + .../templatehub/controller/CategoryController.java | 119 + .../templatehub/controller/ResourceController.java | 109 + .../templatehub/controller/RoleController.java | 154 + .../templatehub/controller/ShareController.java | 89 + .../templatehub/controller/StarController.java | 113 + .../templatehub/controller/TagController.java | 35 + .../templatehub/controller/TemplateController.java | 409 + .../controller/TemplateTagController.java | 35 + .../templatehub/controller/TokenStorage.java | 78 + .../templatehub/controller/UserController.java | 93 + .../templatehub/controller/VersionController.java | 113 + .../templatehub/exception/CommonError.java | 35 + .../exception/GlobalExceptionHandler.java | 57 + .../exception/HertzbeatTemplateHubException.java | 31 + .../templatehub/exception/RestErrorResponse.java | 32 + .../templatehub/model/DO/AuthResourceDO.java | 71 + .../hertzbeat/templatehub/model/DO/AuthRoleDO.java | 64 + .../model/DO/AuthRoleResourceBindDO.java | 55 + .../hertzbeat/templatehub/model/DO/AuthUserDO.java | 73 + .../templatehub/model/DO/AuthUserRoleBindDO.java | 55 + .../hertzbeat/templatehub/model/DO/CategoryDO.java | 57 + .../hertzbeat/templatehub/model/DO/StarDO.java | 53 + .../hertzbeat/templatehub/model/DO/TagDO.java | 56 + .../hertzbeat/templatehub/model/DO/TemplateDO.java | 84 + .../templatehub/model/DO/TemplateTagDO.java | 50 + .../hertzbeat/templatehub/model/DO/VersionDO.java | 70 + .../hertzbeat/templatehub/model/VO/TemplateVO.java | 63 + .../templatehub/model/dao/AuthResourceDao.java | 81 + .../templatehub/model/dao/AuthRoleDao.java | 44 + .../model/dao/AuthRoleResourceBindDao.java | 53 + .../templatehub/model/dao/AuthUserDao.java | 50 + .../templatehub/model/dao/AuthUserRoleBindDao.java | 51 + .../templatehub/model/dao/CategoryDao.java | 41 + .../hertzbeat/templatehub/model/dao/StarDao.java | 42 + .../templatehub/model/dao/TemplateDao.java | 146 + .../templatehub/model/dao/VersionDao.java | 73 + .../hertzbeat/templatehub/model/dto/LoginDto.java | 64 + .../hertzbeat/templatehub/model/dto/Message.java | 97 + .../model/dto/RefreshTokenResponse.java | 40 + .../hertzbeat/templatehub/model/dto/SignUpDto.java | 55 + .../templatehub/model/dto/TemplateDto.java | 48 + .../hertzbeat/templatehub/model/dto/TokenDto.java | 41 + .../templatehub/model/entity/Category.java | 57 + .../hertzbeat/templatehub/model/entity/Star.java | 56 + .../hertzbeat/templatehub/model/entity/Tag.java | 56 + .../templatehub/model/entity/Template.java | 84 + .../templatehub/model/entity/TemplateTag.java | 50 + .../hertzbeat/templatehub/model/entity/User.java | 57 + .../templatehub/model/entity/Version.java | 69 + .../templatehub/service/AccountService.java | 99 + .../templatehub/service/CategoryService.java | 36 + .../templatehub/service/FileStorageService.java | 30 + .../templatehub/service/ResourceService.java | 86 + .../hertzbeat/templatehub/service/RoleService.java | 105 + .../hertzbeat/templatehub/service/StarService.java | 35 + .../hertzbeat/templatehub/service/TagService.java | 22 + .../templatehub/service/TemplateService.java | 106 + .../templatehub/service/TemplateTagService.java | 22 + .../hertzbeat/templatehub/service/UserService.java | 22 + .../templatehub/service/VersionService.java | 45 + .../service/impl/AccountServiceImpl.java | 216 + .../service/impl/CategoryServiceImpl.java | 97 + .../service/impl/DataConflictException.java | 31 + .../service/impl/LocalFileStorageServiceImpl.java | 80 + .../service/impl/MinIOFileStorageServiceImpl.java | 176 + .../service/impl/ResourceServiceImpl.java | 109 + .../templatehub/service/impl/RoleServiceImpl.java | 149 + .../templatehub/service/impl/StarServiceImpl.java | 86 + .../templatehub/service/impl/TagServiceImpl.java | 28 + .../service/impl/TemplateServiceImpl.java | 375 + .../service/impl/TemplateTagServiceImpl.java | 28 + .../templatehub/service/impl/UserServiceImpl.java | 28 + .../service/impl/VersionServiceImpl.java | 172 + .../sureness/SurenessFilterExample.java | 224 + .../processor/RefreshExpiredTokenException.java | 31 + .../sureness/provider/DatabaseAccountProvider.java | 42 + .../provider/DatabasePathTreeProvider.java | 55 + .../hertzbeat/templatehub/util/Base62Util.java | 71 + .../hertzbeat/templatehub/util/Base64Util.java | 42 + .../hertzbeat/templatehub/util/JsonUtil.java | 122 + .../hertzbeat/templatehub/util/ResponseUtil.java | 79 + .../src/main/resources/application.yml | 65 + .../src/main/resources/sureness.yml | 29 + .../HertzbeatTemplateDOHubApplicationTests.java | 30 + .../HertzbeatTemplateHubApplicationTests.java | 30 + .../templatehub/config/FileStorageConfigTest.java | 34 + .../controller/CategoryControllerTest.java | 160 + .../controller/CategoryDOControllerTest.java | 160 + .../controller/ShareControllerTest.java | 130 + .../templatehub/controller/StarControllerTest.java | 178 + .../controller/StarDOControllerTest.java | 164 + .../controller/TemplateControllerTest.java | 143 + .../controller/TemplateDOControllerTest.java | 143 + .../controller/VersionControllerTest.java | 174 + .../controller/VersionDOControllerTest.java | 160 + .../exception/GlobalExceptionHandlerTest.java | 82 + .../templatehub/model/dao/CategoryDODaoTest.java | 60 + .../templatehub/model/dao/CategoryDaoTest.java | 68 + .../templatehub/model/dao/StarDODaoTest.java | 27 + .../templatehub/model/dao/StarDaoTest.java | 29 + .../templatehub/model/dao/TemplateDODaoTest.java | 151 + .../templatehub/model/dao/TemplateDaoTest.java | 153 + .../templatehub/model/dao/VersionDODaoTest.java | 59 + .../templatehub/model/dao/VersionDaoTest.java | 61 + .../templatehub/service/CategoryDOServiceTest.java | 141 + .../templatehub/service/CategoryServiceTest.java | 141 + .../templatehub/service/StarDOServiceTest.java | 126 + .../templatehub/service/StarServiceTest.java | 124 + .../templatehub/service/TemplateDOServiceTest.java | 204 + .../templatehub/service/TemplateServiceTest.java | 204 + .../templatehub/service/VersionDOServiceTest.java | 167 + .../templatehub/service/VersionServiceTest.java | 229 + .../hertzbeat/templatehub/util/Base62UtilTest.java | 71 + .../hertzbeat/templatehub/util/Base64UtilTest.java | 50 + .../src/test/resources/test-data.sql | 16 + .../store/history/AbstractHistoryDataStorage.java | 1 + .../history/influxdb/InfluxdbDataStorage.java | 4 +- .../history/tdengine/TdEngineDataStorage.java | 2 +- .../vm/VictoriaMetricsClusterDataStorage.java | 15 +- .../history/vm/VictoriaMetricsDataStorage.java | 19 +- web-app/src/app/layout/basic/basic.component.ts | 11 +- .../app/layout/basic/widgets/notify.component.ts | 15 +- .../app/layout/basic/widgets/search.component.ts | 41 +- web-app/src/app/pojo/Monitor.ts | 2 - web-app/src/app/pojo/StatusPageHistory.ts | 2 +- .../alert-setting/alert-setting.component.less | 116 +- .../alert/alert-setting/alert-setting.component.ts | 40 +- .../app/routes/bulletin/bulletin.component.html | 49 +- .../src/app/routes/bulletin/bulletin.component.ts | 200 +- .../monitor-detail/monitor-detail.component.html | 6 +- .../monitor-detail/monitor-detail.component.ts | 8 +- .../monitor-edit/monitor-edit.component.html | 1 + .../monitor/monitor-edit/monitor-edit.component.ts | 18 +- .../monitor-form/monitor-form.component.html | 6 +- .../monitor/monitor-form/monitor-form.component.ts | 11 +- .../monitor/monitor-new/monitor-new.component.html | 1 + .../monitor/monitor-new/monitor-new.component.ts | 6 +- .../status-public/status-public.component.html | 2 +- web-app/src/app/service/alert-define.service.ts | 7 +- web-app/src/app/service/auth.service.ts | 7 +- web-app/src/app/service/bulletin-define.service.ts | 36 +- .../monitor-select-menu.component.less | 62 +- .../multi-func-input.component.less | 48 +- .../tags-select/tags-select.component.less | 8 +- .../tags-select/tags-select.component.ts | 6 +- .../components/toolbar/toolbar.component.less | 40 +- web-app/src/app/shared/constants.ts | 2 +- web-app/src/assets/app-data.json | 6 - web-app/src/assets/i18n/en-US.json | 22 +- web-app/yarn.lock | 24226 +++++++++---------- 816 files changed, 58797 insertions(+), 23458 deletions(-) diff --cc collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/CollectServer.java index 000000000,a17141bf6..6dc6c1901 mode 000000,100644..100644 --- a/collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/CollectServer.java +++ b/collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/CollectServer.java @@@ -1,0 -1,184 +1,195 @@@ + /* + * 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.collector.dispatch.entrance; + + import com.google.common.util.concurrent.ThreadFactoryBuilder; + import io.netty.channel.Channel; + import lombok.extern.slf4j.Slf4j; + import org.apache.hertzbeat.collector.dispatch.CollectorInfoProperties; + import org.apache.hertzbeat.collector.dispatch.DispatchProperties; + import org.apache.hertzbeat.collector.dispatch.entrance.internal.CollectJobService; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.CollectCyclicDataProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.CollectOneTimeDataProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.DeleteCyclicTaskProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.GoCloseProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.GoOfflineProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.GoOnlineProcessor; + import org.apache.hertzbeat.collector.dispatch.entrance.processor.HeartbeatProcessor; ++import org.apache.hertzbeat.collector.dispatch.entrance.processor.ScriptRequestProcessor; + import org.apache.hertzbeat.collector.dispatch.timer.TimerDispatch; + import org.apache.hertzbeat.common.entity.dto.CollectorInfo; + import org.apache.hertzbeat.common.entity.message.ClusterMsg; ++import org.apache.hertzbeat.common.script.ScriptExecutor; + import org.apache.hertzbeat.common.support.CommonThreadPool; + import org.apache.hertzbeat.common.util.JsonUtil; + import org.apache.hertzbeat.remoting.RemotingClient; + import org.apache.hertzbeat.remoting.event.NettyEventListener; + import org.apache.hertzbeat.remoting.netty.NettyClientConfig; + import org.apache.hertzbeat.remoting.netty.NettyRemotingClient; + import org.springframework.boot.CommandLineRunner; + import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; + import org.springframework.core.annotation.Order; + import org.springframework.stereotype.Component; + + import java.util.concurrent.Executors; + import java.util.concurrent.ScheduledExecutorService; + import java.util.concurrent.ThreadFactory; + import java.util.concurrent.TimeUnit; + + /** + * collect server + */ + @Component + @Order + @ConditionalOnProperty(prefix = "collector.dispatch.entrance.netty", + name = "enabled", havingValue = "true") + @Slf4j + public class CollectServer implements CommandLineRunner { + + private final CollectJobService collectJobService; + + private final TimerDispatch timerDispatch; + + private final CollectorInfoProperties infoProperties; ++ ++ private final ScriptExecutor scriptExecutor; + + private RemotingClient remotingClient; + + private ScheduledExecutorService scheduledExecutor; + + public CollectServer(final CollectJobService collectJobService, + final TimerDispatch timerDispatch, + final DispatchProperties properties, + final CommonThreadPool threadPool, - final CollectorInfoProperties infoProperties) { ++ final CollectorInfoProperties infoProperties, ++ ScriptExecutor scriptExecutor) { + if (properties == null || properties.getEntrance() == null || properties.getEntrance().getNetty() == null) { + log.error("init error, please config dispatch entrance netty props in application.yml"); + throw new IllegalArgumentException("please config dispatch entrance netty props"); + } + DispatchProperties.EntranceProperties.NettyProperties nettyProperties = properties.getEntrance().getNetty(); + if (nettyProperties.getManagerHost() == null || nettyProperties.getManagerPort() == 0) { + throw new IllegalArgumentException("please config dispatch entrance netty master host and port"); + } + this.collectJobService = collectJobService; + this.timerDispatch = timerDispatch; + this.collectJobService.setCollectServer(this); + this.infoProperties = infoProperties; ++ this.scriptExecutor = scriptExecutor; + this.init(properties, threadPool); + } + + private void init(final DispatchProperties properties, final CommonThreadPool threadPool) { + NettyClientConfig nettyClientConfig = new NettyClientConfig(); + DispatchProperties.EntranceProperties.NettyProperties nettyProperties = properties.getEntrance().getNetty(); + nettyClientConfig.setServerHost(nettyProperties.getManagerHost()); + nettyClientConfig.setServerPort(nettyProperties.getManagerPort()); + this.remotingClient = new NettyRemotingClient(nettyClientConfig, new CollectNettyEventListener(), threadPool); + + this.remotingClient.registerProcessor(ClusterMsg.MessageType.HEARTBEAT, new HeartbeatProcessor()); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.ISSUE_CYCLIC_TASK, new CollectCyclicDataProcessor(this)); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.DELETE_CYCLIC_TASK, new DeleteCyclicTaskProcessor(this)); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.ISSUE_ONE_TIME_TASK, new CollectOneTimeDataProcessor(this)); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.GO_OFFLINE, new GoOfflineProcessor()); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.GO_ONLINE, new GoOnlineProcessor()); + this.remotingClient.registerProcessor(ClusterMsg.MessageType.GO_CLOSE, new GoCloseProcessor(this)); ++ this.remotingClient.registerProcessor(ClusterMsg.MessageType.SCRIPT_PLUGIN, new ScriptRequestProcessor(this)); + } + + public void shutdown() { + this.scheduledExecutor.shutdownNow(); + + this.remotingClient.shutdown(); + } + + public CollectJobService getCollectJobService() { + return collectJobService; + } + ++ public ScriptExecutor getScriptExecutor() { ++ return scriptExecutor; ++ } ++ + public void sendMsg(final ClusterMsg.Message message) { + this.remotingClient.sendMsg(message); + } + + @Override + public void run(String... args) throws Exception { + this.remotingClient.start(); + } + + /** + * CollectNettyEventListener + */ + public class CollectNettyEventListener implements NettyEventListener { + + @Override + public void onChannelActive(Channel channel) { + String identity = CollectServer.this.collectJobService.getCollectorIdentity(); + String mode = CollectServer.this.collectJobService.getCollectorMode(); + CollectorInfo collectorInfo = CollectorInfo.builder() + .name(identity) + .ip(infoProperties.getIp()) + .mode(mode) + .version(infoProperties.getVersion()) + // todo more info + .build(); + timerDispatch.goOnline(); + // send online message + ClusterMsg.Message message = ClusterMsg.Message.newBuilder() + .setIdentity(identity) + .setType(ClusterMsg.MessageType.GO_ONLINE) + .setMsg(JsonUtil.toJson(collectorInfo)) + .build(); + CollectServer.this.sendMsg(message); + + if (scheduledExecutor == null) { + ThreadFactory threadFactory = new ThreadFactoryBuilder() + .setUncaughtExceptionHandler((thread, throwable) -> { + log.error("HeartBeat Scheduler has uncaughtException."); + log.error(throwable.getMessage(), throwable); + }) + .setDaemon(true) + .setNameFormat("heartbeat-worker-%d") + .build(); + scheduledExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory); + // schedule send heartbeat message + scheduledExecutor.scheduleAtFixedRate(() -> { + try { + ClusterMsg.Message heartbeat = ClusterMsg.Message.newBuilder() + .setIdentity(identity) + .setDirection(ClusterMsg.Direction.REQUEST) + .setType(ClusterMsg.MessageType.HEARTBEAT) + .build(); + CollectServer.this.sendMsg(heartbeat); + log.info("collector send cluster server heartbeat, time: {}.", System.currentTimeMillis()); + } catch (Exception e) { + log.error("schedule send heartbeat to server error.{}", e.getMessage()); + } + }, 5, 5, TimeUnit.SECONDS); + } + } + + @Override + public void onChannelIdle(Channel channel) { + log.info("handle idle event triggered. collector is going offline."); + } + } + } diff --cc collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/processor/ScriptRequestProcessor.java index 1cf4a0a59,000000000..1cf4a0a59 mode 100644,000000..100644 --- a/collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/processor/ScriptRequestProcessor.java +++ b/collector/collector-common/src/main/java/org/apache/hertzbeat/collector/dispatch/entrance/processor/ScriptRequestProcessor.java diff --cc collector/pom.xml index 7ec17f3c8,039b37b67..2aab2fbd1 --- a/collector/pom.xml +++ b/collector/pom.xml @@@ -52,174 -83,7 +83,56 @@@ <groupId>org.apache.hertzbeat</groupId> <artifactId>hertzbeat-common</artifactId> </dependency> - <!-- remoting --> - <dependency> - <groupId>org.apache.hertzbeat</groupId> - <artifactId>hertzbeat-remoting</artifactId> - </dependency> - <!-- run sql script--> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - </dependency> - <!-- kafka --> - <dependency> - <groupId>org.apache.kafka</groupId> - <artifactId>kafka-clients</artifactId> - </dependency> - <!-- http --> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - </dependency> - <!--network--> - <dependency> - <groupId>commons-net</groupId> - <artifactId>commons-net</artifactId> - <version>3.8.0</version> - </dependency> - <!--json path parser--> - <dependency> - <groupId>com.jayway.jsonpath</groupId> - <artifactId>json-path</artifactId> - </dependency> - <!-- lru hashmap --> - <dependency> - <groupId>com.googlecode.concurrentlinkedhashmap</groupId> - <artifactId>concurrentlinkedhashmap-lru</artifactId> - <version>${concurrentlinkedhashmap-lru.version}</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - </dependency> - <!--collect--> - <!-- mysql --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <scope>provided</scope> - </dependency> - <!-- clickhouse --> - <dependency> - <groupId>com.clickhouse</groupId> - <artifactId>clickhouse-jdbc</artifactId> - </dependency> - - <!-- dm --> - <dependency> - <groupId>com.dameng</groupId> - <artifactId>DmJdbcDriver18</artifactId> - </dependency> - <!-- postgresql --> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - </dependency> - <!-- linux ssh --> - <dependency> - <groupId>org.apache.sshd</groupId> - <artifactId>sshd-core</artifactId> - <version>${sshd-core.version}</version> - </dependency> - <dependency> - <groupId>net.i2p.crypto</groupId> - <artifactId>eddsa</artifactId> - <version>${eddsa.version}</version> - </dependency> - <!-- sql server --> - <dependency> - <groupId>com.microsoft.sqlserver</groupId> - <artifactId>mssql-jdbc</artifactId> - </dependency> - <!-- oracle --> - <dependency> - <groupId>com.oracle.database.jdbc</groupId> - <artifactId>ojdbc8</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.oracle.database.nls</groupId> - <artifactId>orai18n</artifactId> - <scope>provided</scope> - </dependency> - <!--redis--> - <dependency> - <groupId>io.lettuce</groupId> - <artifactId>lettuce-core</artifactId> - </dependency> - <!-- mongodb --> - <dependency> - <groupId>org.mongodb</groupId> - <artifactId>mongodb-driver-sync</artifactId> - </dependency> - <!--snmp--> - <dependency> - <groupId>org.snmp4j</groupId> - <artifactId>snmp4j</artifactId> - <version>${snmp4j.version}</version> - </dependency> - - <!-- rocketmq --> - <dependency> - <groupId>org.apache.rocketmq</groupId> - <artifactId>rocketmq-tools</artifactId> - <version>${rocketmq-tools.version}</version> - </dependency> + <!--dns--> + <dependency> + <groupId>dnsjava</groupId> + <artifactId>dnsjava</artifactId> + <version>${dnsjava.version}</version> + </dependency> + + <!-- consul --> + <dependency> + <groupId>com.ecwid.consul</groupId> + <artifactId>consul-api</artifactId> + <version>${consul-api.version}</version> + </dependency> + <!-- nacos --> + <dependency> + <groupId>com.alibaba.nacos</groupId> + <artifactId>nacos-client</artifactId> + <version>${nacos-client.version}</version> + </dependency> + <!-- nebula graph client --> + <dependency> + <groupId>com.vesoft</groupId> + <artifactId>client</artifactId> + <version>${vesoft-client.version}</version> + <exclusions> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + </exclusion> + <exclusion> + <groupId>com.alibaba</groupId> + <artifactId>fastjson</artifactId> + </exclusion> + </exclusions> + </dependency> + <!-- mqtt --> + <dependency> + <groupId>com.hivemq</groupId> + <artifactId>hivemq-mqtt-client</artifactId> + <version>1.3.3</version> + </dependency> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js</artifactId> + </dependency> + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js-scriptengine</artifactId> + </dependency> </dependencies> <build> diff --cc common/pom.xml index e0116da7d,bfa3faa7c..8e28c9153 --- a/common/pom.xml +++ b/common/pom.xml @@@ -129,14 -129,18 +129,28 @@@ <version>${jutf7.version}</version> </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi</artifactId> + <version>${poi.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi-ooxml</artifactId> + <version>${poi.version}</version> + <scope>compile</scope> + </dependency> ++ + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js</artifactId> + </dependency> + + <dependency> + <groupId>org.graalvm.js</groupId> + <artifactId>js-scriptengine</artifactId> + </dependency> </dependencies> + </project> diff --cc pom.xml index f8afb6825,6c0cc4b56..6a172f631 --- a/pom.xml +++ b/pom.xml @@@ -161,10 -161,8 +161,11 @@@ <spring-boot-starter-sureness.version>1.1.0</spring-boot-starter-sureness.version> <huawei.sdk.version>3.1.37</huawei.sdk.version> <huawei.obs.version>3.23.5</huawei.obs.version> + <commons-net>3.8.0</commons-net> - + + <js.version>23.0.5</js.version> - - ++ ++ <iotdb-session.version>0.13.3</iotdb-session.version> <influxdb.version>2.23</influxdb.version> <spring-cloud-starter-openfeign.version>3.0.5</spring-cloud-starter-openfeign.version> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
