{
    "version": "https://jsonfeed.org/version/1",
    "title": "Apache HertzBeat - Agentless Monitoring System Blog",
    "home_page_url": "https://hertzbeat.apache.org/blog",
    "description": "Apache HertzBeat - Agentless Monitoring System Blog",
    "items": [
        {
            "id": "https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0",
            "content_html": "<p>Dear Community Members,</p>\n<p>We are excited to announce the official release of Apache HertzBeat™ 1.8.0! This major release brings significant enhancements including AI-powered features, expanded monitoring capabilities, improved performance, and stronger community contributions.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"downloads-and-documentation\">Downloads and Documentation<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#downloads-and-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat™ 1.8.0 Download Link</strong>: <a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></li>\n<li class=\"\"><strong>Apache HertzBeat™ Documentation</strong>: <a href=\"https://hertzbeat.apache.org/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/</a></li>\n<li class=\"\"><strong>Release Notes</strong>: <a href=\"https://github.com/apache/hertzbeat/releases/tag/1.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/releases/tag/1.8.0</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-major-updates\">🚀 Major Updates<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-major-updates\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-features-and-enhancements\">New Features and Enhancements<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#new-features-and-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"ai-powered-monitoring--chat-interface\">AI-Powered Monitoring &amp; Chat Interface<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#ai-powered-monitoring--chat-interface\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>GSOC Chat UI</strong>: Implemented comprehensive chat interface with conversation management and OpenAI chat client support (#3679)</li>\n<li class=\"\"><strong>Cross-Service Tools</strong>: Added necessary AI-powered tools across all monitoring services (#3722)</li>\n<li class=\"\"><strong>MCP Server</strong>: Implemented Model Context Protocol server to securely run scripts and commands (#3547)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"expanded-monitoring-support\">Expanded Monitoring Support<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#expanded-monitoring-support\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>QuestDB Integration</strong>: Added QuestDB as a Time Series Database Storage option (#3731)</li>\n<li class=\"\"><strong>Dell iDRAC Monitoring</strong>: Added configuration file for Dell iDRAC server monitoring (#3763)</li>\n<li class=\"\"><strong>Apollo Configuration Center</strong>: Added support for Apollo configuration center monitoring (#3768)</li>\n<li class=\"\"><strong>Jenkins Monitoring</strong>: Added comprehensive Jenkins monitoring capabilities (#3774)</li>\n<li class=\"\"><strong>DNS Record Types</strong>: Enhanced DNS monitoring with additional record types (#3799)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"enhanced-user-experience\">Enhanced User Experience<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#enhanced-user-experience\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>Dashboard Optimization</strong>: Completely redesigned dashboard page with new theme adaptation (#3730)</li>\n<li class=\"\"><strong>Indicator Favorites</strong>: Added monitoring center indicator favorites feature for quick access (#3735)</li>\n<li class=\"\"><strong>Label Selector Component</strong>: Implemented optimized label-selector component for better label management (#3762)</li>\n<li class=\"\"><strong>RISC-V Support</strong>: Added RISC-V architecture support with Dockerfile modifications (#3713)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"log-monitoring-capabilities\">Log Monitoring Capabilities<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#log-monitoring-capabilities\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>OSPP Log Monitoring</strong>: Implemented comprehensive log monitoring capabilities with advanced parsing and alerting (#3673)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"performance-improvements\">Performance Improvements<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#performance-improvements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"prometheus-integration\">Prometheus Integration<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#prometheus-integration\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>Streaming Parsing</strong>: Enhanced Prometheus streaming parsing with CRLF support (#3745)</li>\n<li class=\"\"><strong>Parsing Optimization</strong>: Multiple rounds of Prometheus streaming parsing optimization (#3752, #3761)</li>\n<li class=\"\"><strong>Gretimedb Optimization</strong>: Optimized Gretimedb time-series statistics (#3776)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"system-performance\">System Performance<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#system-performance\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>SSE Exception Handling</strong>: Improved Server-Sent Events exception handling (#3775)</li>\n<li class=\"\"><strong>Threshold Rules</strong>: Enhanced threshold rules operations and expression log output (#3780)</li>\n<li class=\"\"><strong>Query Parameter Handling</strong>: Fixed Long.parseLong() errors when search parameters are floats (#3483)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"bug-fixes-and-stability\">Bug Fixes and Stability<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#bug-fixes-and-stability\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"core-system-fixes\">Core System Fixes<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#core-system-fixes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>Default Path Whitelist</strong>: Fixed issue where default path did not match whitelist (#3740)</li>\n<li class=\"\"><strong>Webhook URL Parameters</strong>: Fixed missing webhook URL query parameters (#3779)</li>\n<li class=\"\"><strong>Service Discovery</strong>: Fixed service discovery host field NullPointerException (#3767)</li>\n<li class=\"\"><strong>Database Migration</strong>: Removed v174 and added v180 Flyway scripts (#3787)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"configuration-and-deployment\">Configuration and Deployment<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#configuration-and-deployment\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>AI Configuration Sync</strong>: Fixed AI-related configuration synchronization for Docker Compose (#3751)</li>\n<li class=\"\"><strong>CNCF Link Update</strong>: Updated CNCF link to current location (#3746)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"documentation-and-internationalization\">Documentation and Internationalization<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#documentation-and-internationalization\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"enhanced-documentation\">Enhanced Documentation<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#enhanced-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>RISC-V Documentation</strong>: Added RISC-V related help documentation (#3712)</li>\n<li class=\"\"><strong>Japanese i18n</strong>: Added Japanese internationalization support for iDRAC monitoring (#3766)</li>\n<li class=\"\"><strong>Release Documentation</strong>: Updated documentation for release process and added 1.7.3 release notes (#3749)</li>\n<li class=\"\"><strong>Contributor Updates</strong>: Regular contributor documentation updates (#3759, #3783)</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"uiux-improvements\">UI/UX Improvements<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#uiux-improvements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\"><strong>Styling Issues</strong>: Resolved various styling issues across the application (#3734)</li>\n<li class=\"\"><strong>Apache Branding</strong>: Replaced logos with new ASF branding (#3770)</li>\n<li class=\"\"><strong>Localization</strong>: Improved localization with nitpicking on en-US.json (#3800)</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-community-growth\">🌟 Community Growth<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-community-growth\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-contributors\">New Contributors<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#new-contributors\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>We're thrilled to welcome 16 new contributors to the Apache HertzBeat community:</p>\n<ul>\n<li class=\"\">@cxhello</li>\n<li class=\"\">@yexuanyang</li>\n<li class=\"\">@mengnankkkk</li>\n<li class=\"\">@jl15988</li>\n<li class=\"\">@dedyks</li>\n<li class=\"\">@pentium100</li>\n<li class=\"\">@AlbertYang0801</li>\n<li class=\"\">@warrobe</li>\n<li class=\"\">@Jetiaime</li>\n<li class=\"\">@P-Peaceful</li>\n<li class=\"\">@zhaoyangplus</li>\n<li class=\"\">@KOYR</li>\n<li class=\"\">@Lathika226</li>\n<li class=\"\">@Sahil-Shadwal</li>\n<li class=\"\">@Prakash1185</li>\n<li class=\"\">@BhanuNidumolu</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"program-contributions\">Program Contributions<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#program-contributions\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>GSOC (Google Summer of Code)</strong>: Significant contributions in chat interface and AI features</li>\n<li class=\"\"><strong>OSPP (Open Source Promotion Plan)</strong>: Major contributions in RISC-V support, MCP server, and log monitoring</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-statistics\">📊 Statistics<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-statistics\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>This release includes:</p>\n<ul>\n<li class=\"\"><strong>40+ Pull Requests</strong> merged</li>\n<li class=\"\"><strong>16 New Contributors</strong> joined the community</li>\n<li class=\"\"><strong>5 Major Features</strong> added</li>\n<li class=\"\"><strong>20+ Bug Fixes</strong> resolved</li>\n<li class=\"\"><strong>Multiple Performance Improvements</strong></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-upgrade-instructions\">🔄 Upgrade Instructions<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-upgrade-instructions\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"from-v17x-to-v180\">From v1.7.x to v1.8.0<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#from-v17x-to-v180\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"docker-deployment\">Docker Deployment<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#docker-deployment\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># Stop existing container</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker stop hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># Remove old container</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker rm hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># Pull new version</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker pull apache/hertzbeat:1.8.0</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># Run new container</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat apache/hertzbeat:1.8.0</span><br></span></code></pre></div></div>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"package-deployment\">Package Deployment<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#package-deployment\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ol>\n<li class=\"\">Download v1.8.0 package from <a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">download page</a></li>\n<li class=\"\">Backup your existing configuration</li>\n<li class=\"\">Extract new package and replace installation</li>\n<li class=\"\">Update configuration if needed</li>\n<li class=\"\">Restart HertzBeat service</li>\n</ol>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"kuberneteshelm-deployment\">Kubernetes/Helm Deployment<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#kuberneteshelm-deployment\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<p>Update your Helm chart to use the new version:</p>\n<div class=\"language-yaml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token key atrule\" style=\"color:#00a4db\">image</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">tag</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"1.8.0\"</span><br></span></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-important-notes\">🚨 Important Notes<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-important-notes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Database Migration</strong>: This release includes database schema changes. Ensure proper backup before upgrading</li>\n<li class=\"\"><strong>Configuration Changes</strong>: Some AI-related configurations may need to be updated</li>\n<li class=\"\"><strong>Breaking Changes</strong>: Review the changelog for any breaking changes affecting your deployment</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-whats-next\">🔮 What's Next<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-whats-next\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The Apache HertzBeat community is already working on future releases with:</p>\n<ul>\n<li class=\"\">Enhanced AI capabilities</li>\n<li class=\"\">More monitoring integrations</li>\n<li class=\"\">Performance optimizations</li>\n<li class=\"\">Improved user experience</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-acknowledgments\">🙏 Acknowledgments<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-acknowledgments\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>We extend our heartfelt gratitude to all contributors who made this release possible:</p>\n<ul>\n<li class=\"\">All code contributors who submitted pull requests</li>\n<li class=\"\">Community members who reported issues and provided feedback</li>\n<li class=\"\">Documentation writers and translators</li>\n<li class=\"\">Testers who helped ensure quality</li>\n<li class=\"\">The Apache Software Foundation for their continued support</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-get-involved\">📞 Get Involved<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-get-involved\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>GitHub</strong>: <a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></li>\n<li class=\"\"><strong>Mailing Lists</strong>: <a href=\"https://hertzbeat.apache.org/docs/community/mailing_lists\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/community/mailing_lists</a></li>\n<li class=\"\"><strong>Discord</strong>: <a href=\"https://discord.gg/Fb6M73htGr\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://discord.gg/Fb6M73htGr</a></li>\n<li class=\"\"><strong>Documentation</strong>: <a href=\"https://hertzbeat.apache.org/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-full-changelog\">📋 Full Changelog<a href=\"https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0#-full-changelog\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>For a complete list of changes, please refer to the <a href=\"https://github.com/apache/hertzbeat/compare/v1.7.3...1.8.0\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">full changelog</a>.</p>\n<hr>\n<p><strong>Download Apache HertzBeat™ 1.8.0 today and experience the power of AI-driven monitoring!</strong></p>\n<p><em>Apache HertzBeat, the Apache feather logo, and the HertzBeat name are trademarks of The Apache Software Foundation.</em></p>",
            "url": "https://hertzbeat.apache.org/blog/2026/02/05/hertzbeat-v1.8.0",
            "title": "Announcement of Apache HertzBeat™ 1.8.0 Release",
            "summary": "Dear Community Members,",
            "date_modified": "2026-02-05T00:00:00.000Z",
            "author": {
                "name": "Apache HertzBeat Community",
                "url": "https://github.com/apache/hertzbeat"
            },
            "tags": [
                "opensource",
                "release",
                "v1.8.0"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/12/07/new-committer",
            "content_html": "<blockquote>\n<p>Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"self-introduction\">Self-Introduction<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#self-introduction\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Since starting my career, I have mainly been engaged in backend development work and have a great interest in open-source projects. I am currently employed at a financial software company and also undertake the management work of operation and maintenance.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"first-encounter-apache-hertzbeat\">First Encounter Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#first-encounter-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>In our actual work, we have been using the monitoring system consisting of Prometheus and Grafana. As the number of devices and services to be monitored increased, and due to the limited number of operation and maintenance personnel, the workload for daily configuration and maintenance rose sharply, making it impossible for us to promptly handle and respond to user feedback.\nAt this point, we have been constantly looking for a lightweight open-source monitoring system. Apache HertzBeat is ready to use out of the box, has comprehensive functions, does not require an agent, is compatible with Prometheus, and fully covers all the protocols we currently use. Therefore, we quickly set it up and put it into use based on Docker internally.</p>\n<p>As an open-source enthusiast myself, I encountered a few minor issues after using the software for some time. Since it happened to be written in a programming language I'm proficient in, I delved into the source code, endeavoured to refine the implementation, and contributed my improvements back to the community.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"the-path-to-open-source-contributions\">The Path to Open Source Contributions<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#the-path-to-open-source-contributions\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>I initially began using the tagging feature, only to discover right away that tag maintenance had an NPE issue. So I delved into the source code and gained a preliminary understanding of the cause. Following the official documentation, I submitted <a href=\"https://github.com/apache/hertzbeat/issues/3605\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">issue#3605</a> and created my first pull request to address it. Though a minor change, it was merged promptly, which proved immensely encouraging.</p>\n<p>During subsequent, more in-depth usage, based on the actual monitored devices and scenarios, I primarily added several new monitoring services, such as <a href=\"https://github.com/apache/hertzbeat/pull/3656\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache DolphinScheduler</a>, <a href=\"https://github.com/apache/hertzbeat/pull/3715\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MacOS</a>, <a href=\"https://github.com/apache/hertzbeat/pull/3721\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Synology NAS</a>, amongst others. Collaborating with other community contributors, I refined and resolved the <code>jexl</code> keyword issue while also enhancing the status page functionality.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"community-engagement-and-growth\">Community Engagement and Growth<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#community-engagement-and-growth\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Through daily contributions to Apache HertzBeat, I have also learnt how to collaborate more effectively within open-source projects. Communicating and working alongside community members has given me a deeper appreciation for the unique appeal of the ‘Apache Way’ and the spirit of open-source.</p>\n<p>Becoming a Committer entails greater responsibility. Beyond continuing to contribute, it is vital to maintain a rigorous approach, offering constructive feedback and recognition to contributors, thereby helping more individuals participate in the community and grow within it.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"advice-for-open-source-developers\">Advice for Open Source Developers<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#advice-for-open-source-developers\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>For developers who are new to open source, first of all, please be brave to try and let go of your worries to take the first step. The process of making contributions requires time, but as long as you have patience, you will achieve results.</p>\n<p>In the Apache HertzBeat community, by communicating more, many enthusiastic and friendly open-source contributors in the community can collaborate together. We can first gradually use and experience the functions, and start to attempt to contribute. For example, small contributions such as correcting spelling errors in the documentation and fixing incorrect comments, and then gradually deepen our understanding of the source code and try to fix the problems.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"conclusion\">Conclusion<a href=\"https://hertzbeat.apache.org/blog/2025/12/07/new-committer#conclusion\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>My heartfelt thanks to all community partners for your patient reviews and thoughtful guidance. It has been a tremendous privilege to witness Apache HertzBeat successfully graduate to a TLP project during this period.</p>\n<p>Becoming a Committer marks merely a small milestone for me. I look forward to continuing to uphold the spirit of open source alongside Apache HertzBeat, attracting more outstanding developers to jointly build a technologically advanced and vibrant community.</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/12/07/new-committer",
            "title": "Welcome HertzBeat's New Community Committer!",
            "summary": "Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.",
            "date_modified": "2025-12-07T00:00:00.000Z",
            "author": {
                "name": "Delei",
                "url": "https://github.com/delei"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/10/31/new-committer",
            "content_html": "<blockquote>\n<p>Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"self-introduction\">Self-Introduction<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#self-introduction\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Name</strong>: Siguo Duan</li>\n<li class=\"\"><strong>Github</strong>: <a href=\"https://github.com/Duansg\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Duansg</a></li>\n<li class=\"\"><strong>Email</strong>: <a href=\"mailto:duansg@apache.org\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">duansg@apache.org</a></li>\n<li class=\"\"><strong>Position</strong>: Senior Development Engineer</li>\n<li class=\"\"><strong>Primary Technical Focus</strong>: Currently engaged in the e-commerce industry, primarily focused on the research and development of data processing and management for a billion-item product middle platform.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"first-encounter-apache-hertzbeat\">First Encounter Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#first-encounter-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>In practical projects, to enhance the existing monitoring system, we aim to implement visual monitoring and alerts for existing metrics. However, we also wish to avoid introducing or integrating overly complex monitoring systems. Consequently, I began searching for a monitoring solution that is ready-to-use, feature-rich, and easily extensible. It was during this process that I gradually encountered and became familiar with Apache HertzBeat.</p>\n<p>Through continuous research and debugging, I began delving into its source code and gradually became involved in community contributions. Today, keeping up with community updates, reviewing pull requests, and discussing issues have become part of my daily routine.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"the-path-to-open-source-contributions\">The Path to Open Source Contributions<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#the-path-to-open-source-contributions\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The initial biggest challenge in formally contributing to the Apache HertzBeat project was unfamiliarity with its architecture, particularly the collaboration mechanisms between modules. By reading official documentation, source code, and historical PRs from the community, I gradually gained clarity on the project's structure. Simultaneously, discussions with community members during PR reviews provided invaluable advice and fresh perspectives—these exchanges fostered significant growth.</p>\n<p>Through systematic reading of source code and analysis of historical changes, I gradually gained a deep understanding of the project structure and actively participated in code fixes and feature enhancements. To date, I have submitted and merged multiple contributions to the Apache HertzBeat project, including but not limited to:</p>\n<blockquote>\n<p><a href=\"https://github.com/apache/hertzbeat/commits?author=Duansg\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">47 commits</a>  23,649 ++  5,547 --</p>\n</blockquote>\n<p><strong>Submitted PR (47 commits)</strong></p>\n<ul>\n<li class=\"\">\n<p>Fix:</p>\n<p>Prometheus real-time thresholds not taking effect issue(<a href=\"https://github.com/apache/hertzbeat/pull/3434\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3434</a>)、null pointer exception in custom dashboards(<a href=\"https://github.com/apache/hertzbeat/pull/3448\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3448</a>)、Jacoco test report generation failure(<a href=\"https://github.com/apache/hertzbeat/pull/3455\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3455</a>)、\nPage count calculation error(<a href=\"https://github.com/apache/hertzbeat/pull/3467\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3467</a>)、ANTLR4 semantic parsing fixes and optimizations(<a href=\"https://github.com/apache/hertzbeat/pull/3482\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3482</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3488\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3488</a>)、collector startup notification exception(<a href=\"https://github.com/apache/hertzbeat/pull/3579\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3579</a>)、\nFailure to send notifications when collector is offline(<a href=\"https://github.com/apache/hertzbeat/pull/3601\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3601</a>)、JEXL keyword issue fixes and additions(<a href=\"https://github.com/apache/hertzbeat/pull/3629\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3629</a>)、Security handling for JDBC URL(<a href=\"https://github.com/apache/hertzbeat/pull/3625\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3625</a>)、\nMonitoring template fixes(<a href=\"https://github.com/apache/hertzbeat/pull/3636\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3636</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3649\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3649</a>)、Server-chan whitelist optimization(<a href=\"https://github.com/apache/hertzbeat/pull/3740\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3740</a>)、Grafana visualization integration display issues(<a href=\"https://github.com/apache/hertzbeat/pull/3666\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3666</a>)</p>\n</li>\n<li class=\"\">\n<p>Improvement:</p>\n<p>Prometheus parse(<a href=\"https://github.com/apache/hertzbeat/pull/3761\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3761</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3752\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3752</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3745\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3745</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3725\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3725</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3662\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3662</a>)、Improved metric rendering performance<a href=\"https://github.com/apache/hertzbeat/pull/3719\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3719</a>、\nStyling improvements(<a href=\"https://github.com/apache/hertzbeat/pull/3734\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3734</a>)、SSE exception handling improvements(<a href=\"https://github.com/apache/hertzbeat/pull/3775\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3775</a>)、Threshold rule operation enhancements(<a href=\"https://github.com/apache/hertzbeat/pull/3780\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3780</a>)</p>\n</li>\n<li class=\"\">\n<p>Refactor:</p>\n<p>Alert cache management(<a href=\"https://github.com/apache/hertzbeat/pull/3525\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3525</a>)、PromQL threshold comparison logic(<a href=\"https://github.com/apache/hertzbeat/pull/3574\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3574</a>)、Prometheus tag value UTF-8 support(<a href=\"https://github.com/apache/hertzbeat/pull/3810\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3810</a>)</p>\n</li>\n<li class=\"\">\n<p>New Features:</p>\n<p>PromQL threshold configuration preview(<a href=\"https://github.com/apache/hertzbeat/pull/3505\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3505</a>)、System time zone feature(<a href=\"https://github.com/apache/hertzbeat/pull/3588\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3588</a>)、Metric Favorites Feature(<a href=\"https://github.com/apache/hertzbeat/pull/3735\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3735</a>)\nJenkins Monitoring(<a href=\"https://github.com/apache/hertzbeat/pull/3774\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3774</a>)、Apollo Configuration Center Monitoring(<a href=\"https://github.com/apache/hertzbeat/pull/3768\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3768</a>)、TDengine monitoring(<a href=\"https://github.com/apache/hertzbeat/pull/3678\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3678</a>)\nHuawei Cloud alert integration(<a href=\"https://github.com/apache/hertzbeat/pull/3443\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3443</a>)、Alibaba Cloud SLS alert integration(<a href=\"https://github.com/apache/hertzbeat/pull/3422\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3422</a>)、Metrics Parsing(<a href=\"https://github.com/apache/hertzbeat/pull/3645\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3645</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3612\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3612</a>)\nInternationalization-Related(<a href=\"https://github.com/apache/hertzbeat/pull/3585\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3585</a><a href=\"https://github.com/apache/hertzbeat/pull/3565\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3565</a>)</p>\n</li>\n<li class=\"\">\n<p>Document:</p>\n<p>Document-related(<a href=\"https://github.com/apache/hertzbeat/pull/3383\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3383</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3380\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3380</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3526\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3526</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3559\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3559</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3600\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3600</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3658\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3658</a>、<a href=\"https://github.com/apache/hertzbeat/pull/3695\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">#3695</a>)</p>\n</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"community-engagement-and-growth\">Community Engagement and Growth<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#community-engagement-and-growth\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>By participating in Apache HertzBeat's regular meetings and contributing daily, I not only broadened my technical horizons but also learned how to collaborate more effectively within open-source projects. Communicating and working alongside community members has given me a deeper appreciation for the open, inclusive, and supportive spirit of the open-source community.</p>\n<p>Becoming a Committer means taking on greater responsibility. Beyond continuing to refine the code, it is even more crucial to maintain a rigorous approach during code reviews, providing contributors with constructive feedback and recognition to help more people participate and grow.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"advice-for-open-source-developers\">Advice for Open Source Developers<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#advice-for-open-source-developers\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The journey into open source begins with passion and grows through practice. Open source is not only a vehicle for technical enthusiasm but also a journey of mutual growth with the community.</p>\n<p>For developers new to open source, taking the plunge is the most crucial step. Even the smallest contributions can accumulate into invaluable experience. In your daily work, actively participate in community discussions and code reviews, learning continuously through collaboration. Maintain patience and persistence—every challenge you encounter presents an opportunity for growth.</p>\n<p>Within the Apache HertzBeat community, there are ample opportunities to actively participate in projects. Keep a close eye on the issue list and engage in frequent communication—you'll always find someone eager to respond to your ideas and gain inspiration from your perspectives. This is the very essence of community collaboration: a mutual journey forward.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"contribute-to-apache-hertzbeat\">Contribute to Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#contribute-to-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The best time to plant a tree was ten years ago. The second-best time is now. If you'd like to contribute to Apache HertzBeat, you can start in the following ways:</p>\n<ol>\n<li class=\"\">Documentation and Translation: Improving or translating project documentation not only helps you quickly familiarize yourself with the project but also enables more users to understand it.</li>\n<li class=\"\">Issue Fixing: Browse project issues and attempt to claim and resolve some simple issues or optimization points.</li>\n<li class=\"\">Functional Expansion: Participate in discussions and development of new features based on interests and project requirements, gradually deepening understanding of the project architecture and refining functionality.</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"conclusion\">Conclusion<a href=\"https://hertzbeat.apache.org/blog/2025/10/31/new-committer#conclusion\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>We hope Apache HertzBeat will continue to uphold the spirit of open source, attracting more talented developers to jointly build a technologically advanced and vibrant community. I will also continue to contribute my efforts to Apache HertzBeat, and I look forward to welcoming more developers to join us in advancing the project's development.</p>\n<p>A huge thank you to everyone in the community for your meticulous reviews and patient guidance on every PR. May the project's impact continue to grow, and may the community thrive!</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/10/31/new-committer",
            "title": "Welcome HertzBeat's New Community Committer!",
            "summary": "Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat Committer.",
            "date_modified": "2025-10-31T00:00:00.000Z",
            "author": {
                "name": "Duansg",
                "url": "https://github.com/Duansg"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/10/04/new-pmc",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"personal-journey\">Personal Journey<a href=\"https://hertzbeat.apache.org/blog/2025/10/04/new-pmc#personal-journey\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>In 2023, I stumbled upon the open-source project HertzBeat. At the time, I was still just following online tutorials and books to learn the source code of some well-known open-source frameworks.\nWith a mindset of learning, I attempted to run HertzBeat locally. However, I soon encountered an issue where the project wouldn't start. Because of this, I submitted my first PR—modifying the startup documentation.\nThis PR was swiftly merged into the master branch, which greatly encouraged me. From then on, I began to delve deeper into HertzBeat. It was challenging at first, and I didn't know where to start.\nAs I gained a deeper understanding of it, I gradually began to dissect its modules and code structure. During this period, I claimed numerous tasks and bugs from the community's issue list and submitted corresponding PRs.\nFrom documentation, unit testing, frontend, backend, to new feature development, I unknowingly gained extensive knowledge within this project. This knowledge no longer felt cold and abstract like what's presented in books or blogs; instead, it came alive before my eyes.</p>\n<p>A year later, I became a Committer—a new phase in my contributions to open-source projects. Beyond maintaining code, this role emphasizes proactively fostering a positive community atmosphere and mentoring new contributors to deepen their involvement with HertzBeat. This experience revealed that technology isn't just about code—it's about collaboration, sharing, and collective growth.</p>\n<p>Today, I am honored to be invited to join the PMC. This recognition not only affirms my past contributions but also fuels my motivation to continue nurturing the community's growth! I sincerely wish Apache HertzBeat a healthy and enduring future.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"to-developers-interested-in-contributing-to-apache-hertzbeat\">To Developers Interested in Contributing to Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/10/04/new-pmc#to-developers-interested-in-contributing-to-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>For those considering open-source participation, I sincerely encourage you to build a solid foundation and cultivate genuine interest. Foundations enable you to quickly grasp new projects, while passion fuels your drive to contribute to open source.</p>\n<p>Finally, hope everyone to actively engage with Apache HertzBeat and contribute to our community.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgments\">Acknowledgments<a href=\"https://hertzbeat.apache.org/blog/2025/10/04/new-pmc#acknowledgments\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Special thanks to <a href=\"https://github.com/tomsun28\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Tom</a> and all the Apache HertzBeat™ community members for their support.</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/10/04/new-pmc",
            "title": "From First Encounter with Open Source to Becoming a PMC Member of Apache HertzBeat™",
            "summary": "Personal Journey",
            "date_modified": "2025-10-04T00:00:00.000Z",
            "author": {
                "name": "Calvin",
                "url": "https://github.com/Calvin979"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3",
            "content_html": "<p>Dear Community Members,</p>\n<p>We are thrilled to announce the official release of Apache HertzBeat™ 1.7.3. This also marks the first release since Apache HertzBeat™ graduated to become a Top-Level Project at Apache.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"downloads-and-documentation\">Downloads and Documentation<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#downloads-and-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat™ 1.7.3 Download Link</strong>: <a href=\"https://hertzbeat.apache.org/zh-cn/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/zh-cn/docs/download</a></li>\n<li class=\"\"><strong>Apache HertzBeat™ Documentation</strong>: <a href=\"https://hertzbeat.apache.org/zh-cn/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/zh-cn/docs/</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"major-updates\">Major Updates<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#major-updates\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-features-and-enhancements\">New Features and Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#new-features-and-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Monitoring Support Expansion</strong>: Added monitoring support for Apache DolphinScheduler(#3656), TDengine(#3678), macOS systems(#3715), Synology NAS(#3721), and HertzBeat(#3641). Oracle monitoring now includes user password-related metrics(#3674).</li>\n<li class=\"\"><strong>Core Feature Enhancements</strong>: Supports periodic threshold preview(#3505), export all monitoring configurations(#3509), monitoring templates support JSON nested parsing(#3645), HTTP collection supports parsing numeric data using JsonPath(#3612), and VictoriaMetrics metrics now support adding custom labels(#3622).</li>\n<li class=\"\"><strong>Internationalization (i18n)</strong>: Supports internationalization for collector online notifications(#3585).</li>\n<li class=\"\"><strong>More New Features</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"bug-fixes\">Bug Fixes<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Grafana Integration Issues</strong>: Fixed visualization display issues in Grafana integration (#3666).</li>\n<li class=\"\"><strong>System Stability</strong>: Fixed startup errors when VictoriaMetrics storage is not configured (#3552), resolved premature input stream closure in Prometheus parsing (#3567), and fixed missing offline notifications when collectors go offline (#3601).</li>\n<li class=\"\"><strong>Data Parsing Issues</strong>: Fixed AES key decoding errors in collectors (#3652), resolved JDBC configuration parameter failures (#3625), and addressed multiple monitoring template parsing failures caused by Jexl keyword conflicts (#3629, #3632, #3685, #3686, #3687, #3693, #3705, #3707, #3708).</li>\n<li class=\"\"><strong>Other Bug Fixes</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"refactoring-and-optimization\">Refactoring and Optimization<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#refactoring-and-optimization\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Performance Optimization</strong>: Optimized monitoring list page loading performance (#3719), improved scheduling logic for batch refresh tasks (#3660), enabled Gzip compression for VictoriaMetrics write requests (#3595).</li>\n<li class=\"\"><strong>Logic Refactoring &amp; Improvements</strong>: Refactored the processing logic of the Alarm Cache Manager (AlarmCacheManager) (#3525), redesigned Prometheus label parsing logic and PromQL generation logic (#3662, #3725), optimized comparators for alert judgment logic (#3574).</li>\n<li class=\"\"><strong>UI/UX Improvements</strong>: Optimized status page layout and UI (#3680), enhanced status page event list (#3727), improved homepage navigation bar layout (#3616), refined interaction effects on the new monitoring page (#3726), updated UI theme (#3682), enhanced monitoring data chart components (#3668).</li>\n<li class=\"\"><strong>Other Optimizations</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"tests-and-quality\">Tests and Quality<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#tests-and-quality\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Unit Test Coverage</strong>: Added unit tests for VictoriaMetrics data storage (#3595).</li>\n<li class=\"\"><strong>End-to-End Testing</strong>: Improved Kafka end-to-end (e2e) test quality (#3520).</li>\n<li class=\"\"><strong>Testing Efficiency</strong>: Implemented parallel CI to accelerate the build process (#3523).</li>\n<li class=\"\"><strong>Other Testing Improvements</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"documentation-enhancements\">Documentation Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#documentation-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Internationalized Documentation</strong>: Led by @Calvin979, added extensive Japanese documentation (i18n) for numerous monitoring templates, covering dozens of templates including HPE Switch, Huawei Switch, Kafka, JVM, Linux, MySQL, Redis, SpringBoot, and more.</li>\n<li class=\"\"><strong>Content Corrections &amp; Optimizations</strong>: Fixed errors, broken links, and semantic issues in documentation (#3526, #3559, #3608, #3695).</li>\n<li class=\"\"><strong>Community &amp; Ecosystem</strong>: Added blog posts introducing new committers and PMC members (#3522, #3561, #3563, #3569), updated project graduation-related documentation and website content (#3584, #3692, #3701, #3729), updated contributor documentation (#3667).</li>\n<li class=\"\"><strong>More Documentation Updates</strong></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgements\">Acknowledgements<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#acknowledgements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Special thanks to the following community members for their collaborative efforts:</p>\n<blockquote>\n<p>@pjfanning @chingjustwe @delei @rowankid @MasamiYui @tomsun28 @Aias00 @zhangshenghang @zqr10159 @LiuTianyou @yy549159265 @lx1229 @VampireAchao\n@cto-huhang @pwallk @bigcyy @sarthakeash @Carpe-Wang @YxYL6125 @tuzuy @lynx009 @Duansg @carlpinto25 @Calvin979 @Cyanty @Saramanda9988</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"whats-changed\">What's Changed<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<div class=\"language-markdown codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-markdown codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [release] release new version 1.7.2 by @tomsun28 in #3510</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hpe switch by @Calvin979 in #3511</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese huawei switch by @Calvin979 in #3515</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hive by @Calvin979 in #3506</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hugeGraph by @Calvin979 in #3518</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support for Periodic Threshold preview. by @Duansg in #3505</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Improve kafka e2e by @zhangshenghang in #3520</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese iceberg by @Calvin979 in #3519</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Update the correct replacement of outdated functions and placeholders by @Cyanty in #3516</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese influxdb by @Calvin979 in #3521</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hikvision by @Calvin979 in #3499</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add new commiter blog by @MasamiYui in #3522</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] fix i18n error and append two metrics about disk infos by @lx1229 in #3514</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat]parallel ci by @Aias00 in #3523</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese influxdb promql by @Calvin979 in #3527</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> fix: fix something by @Aias00 in #3524</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese iotdb by @Calvin979 in #3530</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> download version deal by @lynx009 in #3531</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update outdated links by @lynx009 in #3535</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc]update download page text by @zqr10159 in #3532</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese ipmi by @Calvin979 in #3537</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese jetty by @Calvin979 in #3539</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> enable GitHub Dependabot to create PRs for security alerts but not for every dependency update by @pjfanning in #3543</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Fix some issues in the documentation by @Duansg in #3526</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] recommend newer mysql connector jar by @pjfanning in #3541</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add hertzbeat maturity and fix doc by @tomsun28 in #3544</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update download page by @lynx009 in #3549</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kafka by @Calvin979 in #3548</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese jvm by @Calvin979 in #3545</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kafka client by @Calvin979 in #3550</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support export all allmonitors by @YxYL6125 in #3509</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> feat: Add LogUtil wrapper and optimize logging comments by @Carpe-Wang in #3489</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [refactor] AlarmCacheManager refactoring processing logic by @Duansg in #3525</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] make jackson serialize all field visibility by @tomsun28 in #3551</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix npe due the victoria insert not config when startup by @tomsun28 in #3552</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] V1.7.2 version blog by @lynx009 in #3558</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kafka promql by @Calvin979 in #3553</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Fix documentation error and adjust Chinese semantics by @Duansg in #3559</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add new pmc and committer by @tomsun28 in #3561</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kingbase by @Calvin979 in #3562</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add new committer by @MasamiYui in #3563</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Add QueryExecutor does not support internationalization. by @Duansg in #3565</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kubernetes by @Calvin979 in #3568</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [mqtt] refact the MQTT based on the Paho SDK and support both unidirectional and bidirectional MQTT over TLS connections. by @yy549159265 in #3474</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [docs] Add new committer blog by @bigcyy in #3569</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix MySQL WrongArgumentException by @pwallk in #3564</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese kvrocks by @Calvin979 in #3570</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese linux by @Calvin979 in #3571</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">fix</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> Fix</span><span class=\"token plain\"> a problem where the inputstream was closed prematurely when parsing Prometheus by @zqr10159 in #3567</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">doc</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> add</span><span class=\"token plain\"> FAQs about task limits by @zqr10159 in #3581</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [infra] upgrade openjdk image to fix Debian source failed by @tomsun28 in #3587</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support i18n of collector online notification by @Duansg in #3585</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-linux_script.yml by @Calvin979 in #3575</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-mariadb.yml by @Calvin979 in #3577</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-memcached.yml by @Calvin979 in #3578</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-modbus.yml by @Calvin979 in #3580</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] System time zone optimization. by @Duansg in #3588</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-mongodb.yml by @Calvin979 in #3590</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [refactor] Refactor the comparison logic by @Duansg in #3574</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fix collector online metadata filling by @Duansg in #3579</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-mongodb_atlas.yml by @Calvin979 in #3593</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-mysql.yml by @cto-huhang in #3594</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-zookeeper.yml and app-zookeeper_sd.yml by @Cyanty in #3596</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-nginx.yml by @Duansg in #3600</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-rocketmq.yml and app-rabbitmq.yml by @Saramanda9988 in #3598</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] VM write request sets up gzip compression and adds saveData unit tests by @Cyanty in #3595</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Auto-generate AES key if not configured by @bigcyy in #3604</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update japanese i18n in app-mqtt.yml and app-mysql.yml by @Calvin979 in #3597</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fix collector offline without sending offline notification by @Duansg in #3601</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] fix image reference issues in documents by @delei in #3608</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-nacos.yml by @cto-huhang in #3599</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-nvidia.yml, app-ping.yml, app-pop3.yml, app-port.yml and app-push.yml by @Calvin979 in #3611</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update japanese i18n in app-nacos_sd.yml, app-nebula_graph.yml, app-zookeeper.yml by @Calvin979 in #3602</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-nebula_graph_cluster.yml and update japanese of client by @Calvin979 in #3603</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] the tagValue may be null in the determineNewLabels method by @delei in #3606</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-netease_mailbox.yml and app-ntp.yml by @Calvin979 in #3607</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-oceanbase.yml by @VampireAchao in #3614</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Http collect supports jsonpath parsing of numeric type by @Duansg in #3612</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Optimize the home website navbar layout UI for medium-sized screens by @VampireAchao in #3616</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-opensuse.yml by @Calvin979 in #3619</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-oracle.yml by @Calvin979 in #3621</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-postgresql.yml by @Calvin979 in #3624</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add linux operating system practice usecase by @delei in #3628</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fixed springboot3abnormal use of the keyword jexl by @Duansg in #3629</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] add customized labels to VM metrics by @chingjustwe in #3622</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fixed issue where jdbc url was replaced by @Duansg in #3625</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] remove optional metrics by @Duansg in #3636</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-openai.yml and app-opengauss.yml by @Calvin979 in #3617</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-smtp.yml, app-ssl_cert.yml, app-storm.yml, app-udp_port.yml, app-uniview.yml, app-website.yml, app-websocket.yml by @Calvin979 in #3643</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix potential StringIndexOutOfBoundsException by @delei in #3642</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Monitoring templates support JSON nested parsing. by @Duansg in #3645</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add English version of linux operating system practice usecase by @delei in #3631</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in springboot2 monitoring template by @delei in #3632</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-qq_mailbox.yml and app-redfish.yml by @Calvin979 in #3635</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-prometheus.yml, app-pulsar.yml and app-registry.yml by @Calvin979 in #3639</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-s7.yml, app-tplink_switch.yml, app-shenyu.yml by @Calvin979 in #3648</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support HertzBeat self monitor by @zqr10159 in #3641</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fixed an issue where template configuration was overwritten by @Duansg in #3649</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix the collector aes decode with secret error by @tomsun28 in #3652</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-tidb.yml, app-windows_script.yml by @Calvin979 in #3650</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-springboot3.yml by @Duansg in #3658</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] improve documentation formatting and readability by @delei in #3659</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-prestodb.yml, app-spark.yml by @Calvin979 in #3651</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-process.yml by @Calvin979 in #3654</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-spring_gateway.yml, app-sqlserver.yml by @Calvin979 in #3661</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-redhat.yml by @Calvin979 in #3655</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n and remove chinese in script folder by @Calvin979 in #3665</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update contribution doc by @tomsun28 in #3667</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [GSOC] MCP server setup, authorization, and basic tool support by @sarthakeash in #3610</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-redis.yml by @Calvin979 in #3669</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] add Apache DolphinScheduler monitoring support by @delei in #3656</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Optimize the scheduling logic for batch flush tasks by @Cyanty in #3660</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fixed Grafana visualization integration display issue by @Duansg in #3666</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] add user password monitoring metrics in oracle monitor by @delei in #3674</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-redis_cluster.yml by @Calvin979 in #3672</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-dolphinscheduler.yml by @Calvin979 in #3677</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] optimize status page layout and UI by @delei in #3680</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-redis_sentinel.yml by @Calvin979 in #3681</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] remove all (incubating) by @VampireAchao in #3584</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in postgresql monitoring template by @delei in #3685</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in hertzbeat monitoring template by @delei in #3686</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in windows monitoring template by @delei in #3687</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in spring_gateway monitoring template by @delei in #3693</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update doc while graduate by @tomsun28 in #3692</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Fixed menu path errors and MD document format anomalies. by @Duansg in #3695</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> chore: update ui theme by @tomsun28 in #3682</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-rockylinux.yml by @Calvin979 in #3688</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-seatunnel.yml by @Calvin979 in #3691</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-tomcat.yml by @Calvin979 in #3700</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [refactor] modify message column to TEXT type by @delei in #3698</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update website, doc while graduate by @tomsun28 in #3701</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] resolve translation value fetching for uppercase app names by @rowankid in #3690</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-vastbase.yml by @Calvin979 in #3704</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in kingbase monitoring template by @delei in #3705</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Support TDengine monitoring by @Duansg in #3678</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in greenplum monitoring template by @delei in #3707</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fixed jexl keyword issue in vastbase monitoring template by @delei in #3708</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> refactor: Optimize the monitoring data chart component by @tuzuy in #3668</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Improve the parsing logic of prometheus label by @Duansg in #3662</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] modify github link. by @lynx009 in #3714</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-ubuntu.yml, app-windows.yml and app-yarn.yml by @Calvin979 in #3703</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-valkey.yml by @Calvin979 in #3706</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Improve performance issues when loading large numbers of metric cards in Monitors by @Duansg in #3719</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add japanese i18n in app-tdengine.yml by @Calvin979 in #3717</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] add macOS monitoring support by @delei in #3715</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] add Synology NAS monitoring support by @delei in #3721</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Improve Prometheus label PromQL parsing logic by @Duansg in #3725</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [release] release new version 1.7.3 by @LiuTianyou in #3724</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] changed scroll of intervals in New Monitor page by @carlpinto25 in #3726</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] optimize the incident list on the status page to support paginated queries by @delei in #3727</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> docs: update doc and add graduation blog by @tomsun28 in #3729</span><br></span></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-contributors\">New Contributors<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#new-contributors\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">@yy549159265 made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3474\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3474</a></li>\n<li class=\"\">@cto-huhang made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3594\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3594</a></li>\n<li class=\"\">@Saramanda9988 made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3598\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3598</a></li>\n<li class=\"\">@delei made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3608\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3608</a></li>\n<li class=\"\">@chingjustwe made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3622\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3622</a></li>\n<li class=\"\">@rowankid made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3690\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3690</a></li>\n<li class=\"\">@tuzuy made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3668\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3668</a></li>\n<li class=\"\">@carlpinto25 made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3726\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3726</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"apache-hertzbeat\">Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3#apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><strong>Repository URL:</strong></p>\n<p><a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></p>\n<p><strong>Official Website:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/</a></p>\n<p><strong>Apache HertzBeat™ Download Link:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></p>\n<p><strong>Apache HertzBeat™ Docker Images:</strong></p>\n<p>Apache HertzBeat™ provides Docker images for each release, available on Docker Hub:</p>\n<ul>\n<li class=\"\">HertzBeat: <a href=\"https://hub.docker.com/r/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat</a></li>\n<li class=\"\">HertzBeat Collector: <a href=\"https://hub.docker.com/r/apache/hertzbeat-collector\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat-collector</a></li>\n</ul>\n<p><strong>How to Contribute to the Apache HertzBeat™ Open Source Community?</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/community/contribution\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/community/contribution</a></p>",
            "url": "https://hertzbeat.apache.org/blog/2025/09/06/hertzbeat-v1.7.3",
            "title": "Announcement of Apache HertzBeat™ 1.7.3 Release",
            "summary": "Dear Community Members,",
            "date_modified": "2025-09-06T00:00:00.000Z",
            "author": {
                "name": "LiuTianyou",
                "url": "https://github.com/LiuTianyou"
            },
            "tags": [
                "opensource",
                "release"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation",
            "content_html": "<blockquote>\n<p><strong>A Milestone Moment for Our Open-Source Project</strong></p>\n<p>On August 21, 2025, the Apache Software Foundation (ASF), the world's largest open-source software foundation, officially announced that Apache HertzBeat™ has graduated to become an Apache Top-Level Project (TLP).</p>\n<p>Apache HertzBeat™ applied to join the Apache Incubator in April 2024 and released its first Apache version two months later. On August 21, 2025, the Apache Board of Directors approved the resolution for Apache HertzBeat's graduation, ending a 17-month incubation period and officially establishing Apache HertzBeat™ as an Apache Top-Level Project.</p>\n<p>This achievement signifies that Apache HertzBeat's technological innovation, community governance, and ecosystem maturity in the monitoring field have fully met the stringent standards of the Apache Foundation, making it a key choice for global open-source monitoring infrastructure.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-what-is-apache-hertzbeat\">1. What is Apache HertzBeat?<a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#1-what-is-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Apache HertzBeat</a> is an easy-to-use, open-source, real-time monitoring and alerting system that requires no agent, features a high-performance cluster, is compatible with Prometheus, and offers powerful custom monitoring and status page building capabilities.</p>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"hertzBeat\" src=\"https://hertzbeat.apache.org/assets/images/hertzbeat-arch-6398f3632e55c96b54141c9e0b49b211.png\" width=\"1778\" height=\"1148\" class=\"img_O5Rn\"></p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"features\">Features<a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#features\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>All-in-one monitoring, alerting, and notification</strong>, supporting one-stop monitoring, threshold alerting, and notifications for application services, applications, databases, caches, operating systems, big data, middleware, web servers, cloud-native, network, custom, and more.</li>\n<li class=\"\"><strong>User-friendly and easy to use</strong>, requiring no <code>Agent</code>. All operations are done through a <code>WEB</code> interface, allowing you to set up monitoring and alerts with just a few clicks, with no learning curve.</li>\n<li class=\"\"><strong>Configurable protocol specifications</strong> such as <code>Http, Jmx, Ssh, Snmp, Jdbc, Prometheus</code>. You only need to configure a monitoring template <code>YML</code> in your browser to use these protocols to collect any desired metrics. Can you believe that you can quickly adapt to a new monitoring type like <code>K8s</code> or <code>Docker</code> with just a simple configuration?</li>\n<li class=\"\"><strong>Compatible with the <code>Prometheus</code> ecosystem and more</strong>, allowing you to monitor everything that Prometheus can with simple page operations.</li>\n<li class=\"\"><strong>High performance</strong>, supporting horizontal scaling of multi-collector clusters, multi-isolated network monitoring, and cloud-edge collaboration.</li>\n<li class=\"\"><strong>Flexible alert threshold rules</strong>, with timely notifications via <code>Email</code>, <code>Discord</code>, <code>Slack</code>, <code>Telegram</code>, <code>DingTalk</code>, <code>WeChat</code>, <code>Feishu</code>, <code>SMS</code>, <code>Webhook</code>, <code>ServerChan</code>, and other methods.</li>\n<li class=\"\"><strong>Powerful status page building capabilities</strong>, making it easy to convey the real-time status of your product services to users.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-incubation-journey-and-milestones\">2. Incubation Journey and Milestones<a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#2-incubation-journey-and-milestones\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"i-incubation-journey\"><strong>I. Incubation Journey</strong><a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#i-incubation-journey\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>April 2024</strong>:\nHertzBeat officially applied to join the Apache Incubator and became an Apache Incubator project.</p>\n</li>\n<li class=\"\">\n<p><strong>June 2024</strong>:\nThe first Apache version was released, marking the project's official entry into the Apache ecosystem. (During this period, a large number of non-compliant third-party dependencies were replaced, such as the database JPA specification implementation being replaced from Hibernate to EclipseLink).</p>\n</li>\n<li class=\"\">\n<p><strong>August 21, 2025</strong>:\nAfter <strong>17 months of efficient incubation</strong>, the Apache Board of Directors passed the resolution for HertzBeat's graduation, officially promoting it to an Apache Top-Level Project (TLP).</p>\n</li>\n</ul>\n<p>Under the guidance of the Apache Foundation Incubator, three major transformations were completed:</p>\n<ul>\n<li class=\"\"><strong>Structured Governance:</strong> Established a PMC-led open governance model, with community decisions made publicly through mailing lists.</li>\n<li class=\"\"><strong>Standardized Processes:</strong> Adopted the Apache release process, with all versions approved by IPMC vote.</li>\n<li class=\"\"><strong>Global Collaboration:</strong> Attracted developers and users from all over the world to contribute to Apache HertzBeat.</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"ii-technical-milestones\"><strong>II. Technical Milestones</strong><a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#ii-technical-milestones\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<p>During the incubation period, HertzBeat maintained an active pace of research, development, and iteration, releasing multiple versions to bring users richer features, more stable performance, and a better experience.</p>\n<ul>\n<li class=\"\">Released 5 ASF-compliant versions (1.6.0 - 1.7.2)</li>\n<li class=\"\">Key feature enhancements include:<!-- -->\n<ul>\n<li class=\"\"><strong>Multi-protocol expansion</strong> - Added support for key components or protocols such as Ipmi, PLC, NVIDIA, Redfish.</li>\n<li class=\"\"><strong>Intelligent alert center</strong> - Implemented multi-expression alerts, periodic thresholds, and alert suppression/silencing/dispatch functions.</li>\n<li class=\"\"><strong>Dynamic service discovery</strong> - Achieved automatic task discovery through http_sd and Zookeeper/Nacos.</li>\n<li class=\"\"><strong>Cloud service integration</strong> - Supported integration with alert sources from Alibaba Cloud SLS, Huawei Cloud, and Volcano Engine.</li>\n<li class=\"\"><strong>AI capability enhancement</strong> - Integrated AI platforms such as OpenAI.</li>\n<li class=\"\"><strong>Storage optimization</strong> - Upgraded storage performance for VictoriaMetrics and GreptimeDB.</li>\n<li class=\"\"><strong>Internationalization support</strong> - Added multi-language interfaces, including Japanese/Traditional Chinese.</li>\n<li class=\"\"><strong>Data processing enhancement</strong> - Supported SQL/PromQL expression syntax analysis, refactoring data flow with Apache Arrow.</li>\n</ul>\n</li>\n</ul>\n<p>The continuous iteration of these versions fully demonstrates HertzBeat's dedication to technology and its high regard for user needs. Each version release is a solid step in HertzBeat's growth, bringing users a more powerful and user-friendly monitoring experience.</p>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-community-development\"><strong>3. Community Development</strong><a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#3-community-development\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<p>During the Apache incubation period, HertzBeat strictly adhered to the Apache Way:</p>\n<ul>\n<li class=\"\">\n<p><strong>Equal contribution and authority accumulation</strong>: All developers participate equally, gradually building a reputation and gaining access, such as code repository submission rights, through code contributions, documentation improvements, and issue resolution.</p>\n</li>\n<li class=\"\">\n<p><strong>Open and transparent communication</strong>: Technical selections, version planning, and other discussions are conducted openly via mailing lists, with communication records archived and searchable. Members can participate anytime, anywhere, and new members can quickly integrate by reviewing these records.</p>\n</li>\n<li class=\"\">\n<p><strong>Consensus-driven decision-making</strong>: For key decisions such as adding or removing features and choosing technical routes, the community engages in thorough discussions, weighing various factors. If a complete consensus cannot be reached, voting is used to assist, ensuring that the project's direction aligns with the overall interests of the community.</p>\n</li>\n<li class=\"\">\n<p><strong>Contributor Growth</strong>:</p>\n<ul>\n<li class=\"\">During the incubation period, <strong>13 new Committers</strong> were added, including <strong>3 nominated PPMC members</strong>, and the number of contributors reached 275. The core team also covers multiple time zones in China, the US, and Europe.</li>\n<li class=\"\">GitHub <strong>Stars surpassed 6K+</strong>, with an average of <strong>30+</strong> monthly active developers.</li>\n</ul>\n</li>\n<li class=\"\">\n<p><strong>User Ecosystem</strong>:</p>\n<ul>\n<li class=\"\"><strong>Application Areas</strong>: Since its incubation, Apache HertzBeat™ has been successfully implemented in various industry scenarios due to its lightweight, agentless, and highly scalable features, becoming a new choice for enterprise monitoring infrastructure.</li>\n<li class=\"\"><strong>Developer Ecosystem</strong>: The community has contributed a large number of monitoring templates covering mainstream technology stacks such as Kubernetes, Docker, Redis, and MySQL, significantly reducing the cost of monitoring configuration.</li>\n</ul>\n</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-future-outlook-and-plans\">3. Future Outlook and Plans<a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#3-future-outlook-and-plans\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Becoming an Apache Top-Level Project is a milestone, but it is also a new beginning. The Apache HertzBeat™ community will continue to uphold the Apache Foundation's \"community over code\" philosophy and evolve around the following core directions, striving to become a world-leading open-source observability platform:</p>\n<ol>\n<li class=\"\">\n<p>AI and Intelligent Capabilities</p>\n<ul>\n<li class=\"\">Explore the application of AI in monitoring data analysis, anomaly detection, and intelligent alerting.</li>\n<li class=\"\">Integrate more AI models and services to enhance the user experience.</li>\n</ul>\n</li>\n<li class=\"\">\n<p>Enhance Product Performance and Scalability</p>\n<ul>\n<li class=\"\">Continuously optimize collection scheduling algorithms and cluster architecture to support larger-scale monitoring scenarios.</li>\n<li class=\"\">Improve system stability, reduce resource consumption, and enhance data processing efficiency.</li>\n</ul>\n</li>\n<li class=\"\">\n<p>Improve Functionality and User Experience</p>\n<ul>\n<li class=\"\">Simplify the monitoring configuration process and provide a more intuitive and user-friendly interface.</li>\n<li class=\"\">Enhance the status page functionality and support more customization options.</li>\n</ul>\n</li>\n<li class=\"\">\n<p>Strengthen Community Building and Internationalization</p>\n<ul>\n<li class=\"\">Expand the community size and attract more contributors to participate in project development.</li>\n<li class=\"\">Improve multi-language support, including document internationalization and interface localization.</li>\n</ul>\n</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"4-acknowledgments\">4. Acknowledgments<a href=\"https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation#4-acknowledgments\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The successful graduation of Apache HertzBeat™ from the incubator would not have been possible without the collective efforts of all community members and supporters. We would like to express our sincerest gratitude to:</p>\n<ul>\n<li class=\"\">\n<p><strong>The Apache Foundation &amp; Incubator</strong>\nThank you to the Apache Foundation for providing a neutral collaboration platform, a comprehensive incubation process, and the help of incubator members in project governance, version releases, and community building.</p>\n</li>\n<li class=\"\">\n<p><strong>Sincere thanks to our Apache mentors for their selfless dedication and guidance</strong>\nThank you to our mentors (a tribute to the guidance of mentors such as <strong>Yonglun Zhang</strong>, <strong>Yu Xiao</strong>, <strong>Justin Mclean</strong>, and <strong>Francis Chuang</strong>) for their valuable advice, architectural reviews, and community governance guidance during the incubation process. Your professional experience and selfless help have guided the project in the right direction, in line with the Apache Way.</p>\n</li>\n<li class=\"\">\n<p><strong>Sincere thanks to all code contributors, documentation maintainers, and community participants</strong>\nThank you to the hundreds of contributors worldwide for their wisdom and efforts. Whether it's code submissions, issue feedback, document translation, or community discussions, your every effort is a vital driving force for the project's progress.</p>\n</li>\n<li class=\"\">\n<p><strong>A special tribute to the core contributors and Project Management Committee members</strong>\nThank you for your long-term persistence and dedication, which have played a key role in the evolution of the technical architecture, the establishment of community norms, and project promotion.</p>\n</li>\n<li class=\"\">\n<p><strong>Thank you to all users and adopting organizations for their trust and support</strong>\nThank you for your practical validation and continuous feedback in production environments. These valuable experiences have greatly promoted the maturity and improvement of the product.</p>\n</li>\n</ul>\n<p>Finally, we have always believed that: <strong>Community Achieves Greatness</strong>. A tribute to open source, a tribute to every participant, and may our code run on machines worldwide!</p>\n<p>We welcome more developers to join us and have fun!</p>\n<p>—— The Apache HertzBeat™ Community</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/08/24/hertzbeat-graduation",
            "title": "Apache HertzBeat™ Graduates as an Apache Top-Level Project!",
            "summary": "A Milestone Moment for Our Open-Source Project",
            "date_modified": "2025-08-24T00:00:00.000Z",
            "author": {
                "name": "TJxiaobao",
                "url": "https://github.com/TJxiaobao"
            },
            "tags": [
                "opensource",
                "apache"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/07/11/new-committer",
            "content_html": "<p>Hello everyone, I'm Yang Chen, currently a graduate student at Chongqing University of Posts and Telecommunications. I'm deeply honored to receive recognition and invitation from the Apache HertzBeat™ community to officially become a project Committer. This marks the true beginning of my open-source journey!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"my-open-source-exploration\">My Open Source Exploration<a href=\"https://hertzbeat.apache.org/blog/2025/07/11/new-committer#my-open-source-exploration\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>As early as my undergraduate years, I had exposure to open source.\nBack then, I developed a <a href=\"https://github.com/bigcyy/GroupNotifier\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">epidemic notice QQ bot</a> based on the open-source <a href=\"https://github.com/mamoe/mirai\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Mirai</a> framework. However, that was more at the usage level.\nIn my junior year, I attempted to independently open-source an AI project called <a href=\"https://github.com/bigcyy/customized-chat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">customized_chat</a>, which was my first step into \"open source.\"\nBut these experiences were all solo explorations, and I deeply felt that this wasn't true open source, as it failed to establish a complete community ecosystem.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"meeting-hertzbeat-true-open-source-practice\">Meeting HertzBeat: True Open Source Practice<a href=\"https://hertzbeat.apache.org/blog/2025/07/11/new-committer#meeting-hertzbeat-true-open-source-practice\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>To participate more deeply in open source, I began searching for suitable open-source activities and thus encountered HertzBeat. For me, this was the true beginning of my open-source journey. Here, I not only learned solid technical development but also experienced a mature community ecosystem. I deeply understood the essence of the \"Apache Way\" - the community builds the project, not the project builds the community.</p>\n<p>I first learned about HertzBeat through GSoC (Google Summer of Code), when the community's proposal about developing monitoring MCP deeply attracted me. So I proactively contacted Tom and officially began participating in community activities. Tom was very enthusiastic, and the entire community was exceptionally active.\nI clearly remember my first PR (Pull Request), when I even conducted online testing with a user in an Issue, which was quite a unique experience for me. Although I wasn't ultimately selected for GSoC, during that period, I had already deeply participated in the community and fully experienced its excellence.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"growth-and-gains-from-open-source\">Growth and Gains from Open Source<a href=\"https://hertzbeat.apache.org/blog/2025/07/11/new-committer#growth-and-gains-from-open-source\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Participating in open source has indeed significantly improved my abilities. By reading HertzBeat's architectural design and actively participating in community discussions, I've accumulated many valuable experiences, such as:</p>\n<ul>\n<li class=\"\">Cutting-edge Technology: I gained deep understanding of monitoring system design and implementation, and practiced core technologies like concurrent programming and distributed systems in the project.</li>\n<li class=\"\">Practical Abilities: Through solving real problems and participating in code contributions, I successfully transformed theoretical knowledge into practical operational skills.</li>\n<li class=\"\">Community Culture Experience: I personally experienced the unique charm of the \"Apache Way\" and engaged in deep exchanges and learning with developers from around the world.</li>\n</ul>\n<p>My experience has convinced me that open source is not just about writing code, but an excellent platform for learning, growing, and contributing.</p>\n<p>If you're also passionate about technology, eager to improve yourself through practice, and want to experience true community collaboration, then the Apache HertzBeat™ community is definitely your best choice!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"finally\">Finally<a href=\"https://hertzbeat.apache.org/blog/2025/07/11/new-committer#finally\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>I sincerely thank <a href=\"https://github.com/tomsun28\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Tom</a>, <a href=\"https://github.com/zhangshenghang\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Shenghang</a>, <a href=\"https://github.com/zqr10159\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Logic</a>, and other community members for their meticulous code reviews and patient guidance. I hope Apache HertzBeat™ continues to thrive!</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/07/11/new-committer",
            "title": "Welcome HertzBeat's New Community Committer!",
            "summary": "Hello everyone, I'm Yang Chen, currently a graduate student at Chongqing University of Posts and Telecommunications. I'm deeply honored to receive recognition and invitation from the Apache HertzBeat™ community to officially become a project Committer. This marks the true beginning of my open-source journey!",
            "date_modified": "2025-07-11T00:00:00.000Z",
            "author": {
                "name": "bigcyy",
                "url": "https://github.com/bigcyy"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2",
            "content_html": "<p>Dear Community Members,</p>\n<p>We are thrilled to announce the official release of Apache HertzBeat™ version 1.7.2!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"downloads-and-documentation\">Downloads and Documentation<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#downloads-and-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat™ 1.7.2 Download Link</strong>: <a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></li>\n<li class=\"\"><strong>Apache HertzBeat™ Documentation</strong>: <a href=\"https://hertzbeat.apache.org/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"major-updates\">Major Updates<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#major-updates\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-features-and-enhancements\">New Features and Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#new-features-and-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Cloud Alert Integration</strong>: Supports Alibaba Cloud SLS Log Service alert sources (#3422), Huawei Cloud Monitor alert sources (#3443), and Volcano Engine alert sources (#3451).</li>\n<li class=\"\"><strong>Service Discovery Enhancements</strong>: Added Zookeeper service discovery support (#3377), Nacos auto-discovery (#3324), and HTTP service discovery collector with authentication support (#3388).</li>\n<li class=\"\"><strong>AI &amp; Data Source Expansion</strong>: Integrated Ollama AI model (#3441), added OpenRouter AI provider support (#3439), and enabled GreptimeDB as a Grafana data source (#3403).</li>\n<li class=\"\"><strong>Expression &amp; Data Processing</strong>: Supports sql and promql expression syntax (#3410); added batch import metrics to VictoriaMetrics (#3337).</li>\n<li class=\"\"><strong>Platform Compatibility</strong>: Added Darwin (macOS) platform support (#3431).</li>\n<li class=\"\"><strong>Monitoring Metric Enhancements</strong>: New statusCode metric data (#3446).</li>\n<li class=\"\"><strong>Other new features</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"bug-fixes\">Bug Fixes<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Alert Notification Issues</strong>: Fixed Uptime Kuma/Zabbix/Tencent Cloud Webhook URL errors (#3351); corrected Feishu notification format (#3508).</li>\n<li class=\"\"><strong>Threshold Functionality</strong>: Fixed real-time Prometheus threshold failure (#3434).</li>\n<li class=\"\"><strong>Monitoring Status Errors</strong>: Resolved incorrect sub-monitor status display (#3340) and monitoring list pagination issues (#3467).</li>\n<li class=\"\"><strong>System Stability</strong>: Fixed null pointer exception in custom monitoring dashboard (#3448); resolved Jacoco test report generation failure (#3455).</li>\n<li class=\"\"><strong>Data Parsing Issues</strong>: Fixed ANTLR4 parsing logic (binary operators/vectors) (#3482, #3488); corrected alert expression parsing errors (#3497, #3504).</li>\n<li class=\"\"><strong>Data Storage Optimization</strong>: Improved GreptimeDB storage and query logic (#3387).</li>\n<li class=\"\"><strong>Other bug fixes</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"refactoring-and-optimization\">Refactoring and Optimization<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#refactoring-and-optimization\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Security Validation Enhancements</strong>: Strengthened URL validation (WeCom/Telegram/Slack/ServerChan) (#3361-3364); added JNDI security checks (#3358); verified plugin service paths (#3375).</li>\n<li class=\"\"><strong>Architecture &amp; Storage Optimization</strong>: Updated security model (#3450); optimized DB column types (commonAnnotations/alertFingerprints to TEXT) (#3463); adjusted JDBC logic (#3500).</li>\n<li class=\"\"><strong>Dev Toolchain</strong>: Added Maven Wrapper (mvnw) (#3430); updated dependencies (#3359, #3498); supported mvnd and optimized backend builds (#3491).</li>\n<li class=\"\"><strong>Observability</strong>: Disabled OpenTelemetry exporters by default to prevent connection errors (#3437, #3461).</li>\n<li class=\"\"><strong>Community Collaboration</strong>: Updated Issue templates (#3421).</li>\n<li class=\"\"><strong>Other optimizations</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"tests-and-quality\">Tests and Quality<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#tests-and-quality\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Unit Test Coverage</strong>: Added unit tests for HttpSdCollectImpl (#3386).</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"documentation-enhancements\">Documentation Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#documentation-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Internationalization</strong>: Added 30+ Japanese documentation components (API/CentOS/Cisco switches/ClickHouse, etc.) (#3352, #3376, #3389).</li>\n<li class=\"\"><strong>Alert Documentation</strong>: Updated alert threshold configuration (#3399), notification templates (#3466), and Volcano Engine integration guide (#3460).</li>\n<li class=\"\"><strong>Deployment &amp; Configuration</strong>: Added Grafana anonymous auth configuration (#3407); Rainbond cloud one-click installation guide (#3440).</li>\n<li class=\"\"><strong>Content Refinement</strong>: Fixed time template syntax errors (#3378); optimized Chinese terminology (#3380, #3383); updated Greptime-init docs (#3355).</li>\n<li class=\"\"><strong>Community</strong>: Added contributor/committer profiles (#3357, #3391, #3395); release blogs (#3449).</li>\n<li class=\"\"><strong>More documentation updates</strong></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgements\">Acknowledgements<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#acknowledgements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Special thanks to the following community members for their collaborative efforts:</p>\n<blockquote>\n<p>@pruidong @MasamiYui @tomsun28 @Aias00 @zhangshenghang @zqr10159 @LiuTianyou @LL-LIN @lx1229 @xiaomizhou2 @pwallk\n@bigcyy @yuluo-yx @TJxiaobao @RainBondsongyg @Duansg @Calvin979 @Cyanty</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"whats-changed\">What's Changed<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<div class=\"language-markdown codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-markdown codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix incorrect webhook URLs for Uptime Kuma, Zabbix, and Tencent Cloud by @bigcyy in https://github.com/apache/hertzbeat/pull/3351</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese api by @Calvin979 in https://github.com/apache/hertzbeat/pull/3352</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update OS monitor by @MasamiYui in https://github.com/apache/hertzbeat/pull/3353</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">doc</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">start</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: update greptime-init documentation by @zqr10159 in https://github.com/apache/hertzbeat/pull/3355</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] new ppmc liutianyou and update qq num by @tomsun28 in https://github.com/apache/hertzbeat/pull/3357</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Incorrect SD sub-monitor status by @MasamiYui in https://github.com/apache/hertzbeat/pull/3340</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve url validation for WeComRobotAlertNotifyHandlerImpl by @Aias00 in https://github.com/apache/hertzbeat/pull/3361</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve url validation for TelegramBotAlertNotifyHandlerImpl by @Aias00 in https://github.com/apache/hertzbeat/pull/3362</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve url validation for SlackAlertNotifyHandlerImpl by @Aias00 in https://github.com/apache/hertzbeat/pull/3363</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve url validation for serverChan by @Aias00 in https://github.com/apache/hertzbeat/pull/3364</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve jndi validation by @Aias00 in https://github.com/apache/hertzbeat/pull/3358</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> update maven dep by @Aias00 in https://github.com/apache/hertzbeat/pull/3359</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese centos by @Calvin979 in https://github.com/apache/hertzbeat/pull/3376</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] fix incorrect time template syntax usercase in doc by @LL-LIN in https://github.com/apache/hertzbeat/pull/3378</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add blog by @LiuTianyou in https://github.com/apache/hertzbeat/pull/3379</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] add path validation for pluginservice by @Aias00 in https://github.com/apache/hertzbeat/pull/3375</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] Support Zookeeper Service Discovery  by @bigcyy in https://github.com/apache/hertzbeat/pull/3377</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] modify chinese words by @Duansg in https://github.com/apache/hertzbeat/pull/3380</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Task] Batch import metrics data in victoria-metrics by @MasamiYui in https://github.com/apache/hertzbeat/pull/3337</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] support auto nacos service discovery by @xiaomizhou2 in https://github.com/apache/hertzbeat/pull/3324</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] modify supplement related documentation by @Duansg in https://github.com/apache/hertzbeat/pull/3383</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese cisco switch by @Calvin979 in https://github.com/apache/hertzbeat/pull/3389</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [test] Add unit tests for HttpSdCollectImpl by @xiaomizhou2 in https://github.com/apache/hertzbeat/pull/3386</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">fix</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">warehouse</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: improve GreptimeDB data storage and querying by @zqr10159 in https://github.com/apache/hertzbeat/pull/3387</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese clickhouse by @Calvin979 in https://github.com/apache/hertzbeat/pull/3390</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] new contributor and committer, update doc by @tomsun28 in https://github.com/apache/hertzbeat/pull/3391</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese consul sd by @Calvin979 in https://github.com/apache/hertzbeat/pull/3392</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc]add new committer blog by @pwallk in https://github.com/apache/hertzbeat/pull/3395</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese coreos by @Calvin979 in https://github.com/apache/hertzbeat/pull/3393</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese dahua by @Calvin979 in https://github.com/apache/hertzbeat/pull/3396</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese Debian by @Calvin979 in https://github.com/apache/hertzbeat/pull/3398</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] http sd collector adds authentication by @Cyanty in https://github.com/apache/hertzbeat/pull/3388</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese deepseek &amp; dm by @Calvin979 in https://github.com/apache/hertzbeat/pull/3400</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [docs] update alert threshold doc by @bigcyy in https://github.com/apache/hertzbeat/pull/3399</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese dns by @Calvin979 in https://github.com/apache/hertzbeat/pull/3404</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese dns sd by @Calvin979 in https://github.com/apache/hertzbeat/pull/3405</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese docker by @Calvin979 in https://github.com/apache/hertzbeat/pull/3408</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese doris_be by @Calvin979 in https://github.com/apache/hertzbeat/pull/3409</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc] Update 1.7.1  by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3411</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update home doc by @tomsun28 in https://github.com/apache/hertzbeat/pull/3418</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Update anonymous user auth configuration of the grafana dashboard document by @Cyanty in https://github.com/apache/hertzbeat/pull/3407</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese doris_fe by @Calvin979 in https://github.com/apache/hertzbeat/pull/3416</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">infra</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> Update</span><span class=\"token plain\"> issue tmpl by @yuluo-yx in https://github.com/apache/hertzbeat/pull/3421</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature]Make GreptimeDB as a grafana data source  by @zqr10159 in https://github.com/apache/hertzbeat/pull/3403</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] support sql(\"...\") and promql(\"...\") expressions including SQL condition parsing by @bigcyy in https://github.com/apache/hertzbeat/pull/3410</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese dynamic_tp by @Calvin979 in https://github.com/apache/hertzbeat/pull/3419</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese elasticsearch by @Calvin979 in https://github.com/apache/hertzbeat/pull/3423</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature]Support Alibaba Cloud 'Simple Log Service(SLS)' alert source by @Duansg in https://github.com/apache/hertzbeat/pull/3422</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] add mvnw by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3430</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese emqx by @Calvin979 in https://github.com/apache/hertzbeat/pull/3433</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improvement] disable default OpenTelemetry exporters to prevent connection errors by @bigcyy in https://github.com/apache/hertzbeat/pull/3437</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix the issue where Prometheus RealTime Threshold is not eff… by @Duansg in https://github.com/apache/hertzbeat/pull/3434</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] add support for ollama and update docs by @bigcyy in https://github.com/apache/hertzbeat/pull/3441</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [release] add support for darwin by @lx1229 in https://github.com/apache/hertzbeat/pull/3431</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support Huawei Cloud </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`Cloud Eye`</span><span class=\"token plain\"> alert source by @Duansg in https://github.com/apache/hertzbeat/pull/3443</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese euleros by @Calvin979 in https://github.com/apache/hertzbeat/pull/3442</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> docs: Add one-click installation for Rainbond Cloud by @RainBondsongyg in https://github.com/apache/hertzbeat/pull/3440</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] add support for OpenRouter AI provider by @bigcyy in https://github.com/apache/hertzbeat/pull/3439</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese flink by @Calvin979 in https://github.com/apache/hertzbeat/pull/3447</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [security] update hertzbeat security model by @tomsun28 in https://github.com/apache/hertzbeat/pull/3450</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] support volcengine alert source by @LiuTianyou in https://github.com/apache/hertzbeat/pull/3451</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add publish version 1.7.1 blog by @tomsun28 in https://github.com/apache/hertzbeat/pull/3449</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese flink on yarn by @Calvin979 in https://github.com/apache/hertzbeat/pull/3452</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese freebsd by @Calvin979 in https://github.com/apache/hertzbeat/pull/3456</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improvement] disable default OpenTelemetry exporters to prevent connection errors by @bigcyy in https://github.com/apache/hertzbeat/pull/3461</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add doc for integrate volcengine alerts by @LiuTianyou in https://github.com/apache/hertzbeat/pull/3460</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Fix] fix custom monitoring bulletin </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`NullPointerException`</span><span class=\"token plain\"> by @Duansg in https://github.com/apache/hertzbeat/pull/3448</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] fix jacoco can not generate test reports. by @Duansg in https://github.com/apache/hertzbeat/pull/3455</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Alert notification template by @MasamiYui in https://github.com/apache/hertzbeat/pull/3466</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese greenplum by @Calvin979 in https://github.com/apache/hertzbeat/pull/3468</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improvement] change column definitions for commonAnnotations and alertFingerprints to TEXT type by @bigcyy in https://github.com/apache/hertzbeat/pull/3463</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fix </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`Monitors`</span><span class=\"token plain\"> paging display. by @Duansg in https://github.com/apache/hertzbeat/pull/3467</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese greptime by @Calvin979 in https://github.com/apache/hertzbeat/pull/3469</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese h3c switch by @Calvin979 in https://github.com/apache/hertzbeat/pull/3471</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add statusCode metrics data. by @Duansg in https://github.com/apache/hertzbeat/pull/3446</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hadoop by @Calvin979 in https://github.com/apache/hertzbeat/pull/3476</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">docs</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">webhook</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: update Chinese documentation for alert integration by @zqr10159 in https://github.com/apache/hertzbeat/pull/3478</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hbase master by @Calvin979 in https://github.com/apache/hertzbeat/pull/3477</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hbase region server by @Calvin979 in https://github.com/apache/hertzbeat/pull/3479</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hdfs datanode by @Calvin979 in https://github.com/apache/hertzbeat/pull/3487</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] antlr4 </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`vectors and`</span><span class=\"token plain\"> parse semantic fixes and optimizations by @Duansg in https://github.com/apache/hertzbeat/pull/3482</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">ci</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> add</span><span class=\"token plain\"> mvnd support and update backend build by @zqr10159 in https://github.com/apache/hertzbeat/pull/3491</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hdfs namenode by @Calvin979 in https://github.com/apache/hertzbeat/pull/3490</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hertzbeat by @Calvin979 in https://github.com/apache/hertzbeat/pull/3492</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] Fix antlr4 parsing of </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`or`</span><span class=\"token plain\"> and </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`unless`</span><span class=\"token plain\"> logical and set binary operators by @Duansg in https://github.com/apache/hertzbeat/pull/3488</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] japanese hertzbeat token by @Calvin979 in https://github.com/apache/hertzbeat/pull/3493</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feat] update_mvnd_version by @Aias00 in https://github.com/apache/hertzbeat/pull/3498</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> add:a small jdbc modified. by @TJxiaobao in https://github.com/apache/hertzbeat/pull/3500</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> fixed:a minor issue change by @TJxiaobao in https://github.com/apache/hertzbeat/pull/3428</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix incorrect expression parsing in alert setting component by @bigcyy in https://github.com/apache/hertzbeat/pull/3497</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Correctly parse binary comparison expressions by @bigcyy in https://github.com/apache/hertzbeat/pull/3504</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]Fixed an error in the format of the flying book notification by @pruidong in https://github.com/apache/hertzbeat/pull/3508</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [release] release new version 1.7.2 by @tomsun28 in https://github.com/apache/hertzbeat/pull/3510</span><br></span></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-contributors\">New Contributors<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#new-contributors\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">@Duansg made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3380\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3380</a></li>\n<li class=\"\">@lx1229 made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3431\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3431</a></li>\n<li class=\"\">@RainBondsongyg made their first contribution in <a href=\"https://github.com/apache/hertzbeat/pull/3440\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat/pull/3440</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"apache-hertzbeat\">Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2#apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><strong>Repository URL:</strong></p>\n<p><a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></p>\n<p><strong>Official Website:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/</a></p>\n<p><strong>Apache HertzBeat™ Download Link:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></p>\n<p><strong>Apache HertzBeat™ Docker Images:</strong></p>\n<p>Apache HertzBeat™ provides Docker images for each release, available on Docker Hub:</p>\n<ul>\n<li class=\"\">HertzBeat: <a href=\"https://hub.docker.com/r/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat</a></li>\n<li class=\"\">HertzBeat Collector: <a href=\"https://hub.docker.com/r/apache/hertzbeat-collector\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat-collector</a></li>\n</ul>\n<p><strong>How to Contribute to the Apache HertzBeat™ Open Source Community?</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/community/contribution\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/community/contribution</a></p>",
            "url": "https://hertzbeat.apache.org/blog/2025/07/07/hertzbeat-v1.7.2",
            "title": "Announcement of Apache HertzBeat™ 1.7.2 Release",
            "summary": "Dear Community Members,",
            "date_modified": "2025-07-07T00:00:00.000Z",
            "author": {
                "name": "tomsun28",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "release"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/06/29/new-committer",
            "content_html": "<blockquote>\n<p>Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat™ Committer.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"self-introduction\">Self-Introduction<a href=\"https://hertzbeat.apache.org/blog/2025/06/29/new-committer#self-introduction\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>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.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"my-journey-with-hertzbeat\">My Journey with HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/06/29/new-committer#my-journey-with-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>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 – that’s when I discovered HertzBeat.</p>\n<p>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.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"welcoming-community-atmosphere\">Welcoming Community Atmosphere<a href=\"https://hertzbeat.apache.org/blog/2025/06/29/new-committer#welcoming-community-atmosphere\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>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.</p>\n<p>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.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"about-open-source\">About Open Source<a href=\"https://hertzbeat.apache.org/blog/2025/06/29/new-committer#about-open-source\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>For me, open source is a vessel for technical passion; growing alongside the community makes for a profoundly meaningful journey.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"conclusion\">Conclusion<a href=\"https://hertzbeat.apache.org/blog/2025/06/29/new-committer#conclusion\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>A heartfelt thank you to <a href=\"https://github.com/tomsun28\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@tomsun28</a> 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!</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/06/29/new-committer",
            "title": "Welcome HertzBeat's New Community Committer!",
            "summary": "Hello everyone, it's a great honor to be invited by the community to become Apache HertzBeat™ Committer.",
            "date_modified": "2025-06-29T00:00:00.000Z",
            "author": {
                "name": "MasamiYui",
                "url": "https://github.com/MasamiYui"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1",
            "content_html": "<p>Dear Community Members,</p>\n<p>We are thrilled to announce the official release of Apache HertzBeat™ version 1.7.1!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"downloads-and-documentation\">Downloads and Documentation<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#downloads-and-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat™ 1.7.1 Download Link</strong>: <a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></li>\n<li class=\"\"><strong>Apache HertzBeat™ Documentation</strong>: <a href=\"https://hertzbeat.apache.org/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"major-updates\">Major Updates<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#major-updates\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-features-and-enhancements\">New Features and Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#new-features-and-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Added support for Siemens PLC S7 protocol (#3194)</li>\n<li class=\"\">Introduced support for Hikvision, Dahua, and Uniview devices (#3211, #3214)</li>\n<li class=\"\">Support for Uptime Kuma and Zabbix alert sources (#3312, #3317)</li>\n<li class=\"\">Service discovery enhancements: Eureka, Consul, and DNS SD (#3323, #3326, #3328)</li>\n<li class=\"\">Alert grouping and inhibition support (#3206)</li>\n<li class=\"\">System notification as a new alert method (#3275)</li>\n<li class=\"\">Collector-side alerting capability (#2693)</li>\n<li class=\"\">Initial logging module implemented (#3218)</li>\n<li class=\"\">Integrated OpenTelemetry for logs and traces (#3319)</li>\n<li class=\"\">Added PushGateway support for pushing metrics (#3204)</li>\n<li class=\"\">Enhanced Monitor List and Detail UIs (#3199, #3200)</li>\n<li class=\"\">Improved Grafana configuration priorities and exception handling (#3241)</li>\n<li class=\"\">Optimized prompts, UI labels, and display titles (#3270, #3289)</li>\n<li class=\"\">Introduced an AI bot for assistance (#3285)</li>\n<li class=\"\">Added i18n support for AI bot (#3330)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"bug-fixes\">Bug Fixes<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Fixed whitespace issue in instance filtering for alert expressions (#3276)</li>\n<li class=\"\">Corrected incorrect webhook alert template (#3265)</li>\n<li class=\"\">Fixed incorrect pendingTimeouts calculation in HashedWheelTimer (#3174)</li>\n<li class=\"\">Resolved historical data display issues in VictoriaMetrics charts (#3248, #3264, #3297)</li>\n<li class=\"\">Fixed async job cancellation not removing cached jobs (#3240)</li>\n<li class=\"\">Fixed UI issue with bulletin indicator selection (#3201)</li>\n<li class=\"\">Fixed Prometheus metric response parsing errors (#3274)</li>\n<li class=\"\">Resolved Collector OOM error (#3295)</li>\n<li class=\"\">Fixed frontend title showing “Not page name” when filtered by monitor type (#3289)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"refactoring-and-optimization\">Refactoring and Optimization<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#refactoring-and-optimization\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Unified usage of label instead of tag (#3278)</li>\n<li class=\"\">Refactored alert datasource calculations (#3253)</li>\n<li class=\"\">Optimized Kafka collection logic and increased test coverage (#3189)</li>\n<li class=\"\">Improved DnsCollectTest status code logic (#3209)</li>\n<li class=\"\">Refactored HTTP service discovery implementation (#3300)</li>\n<li class=\"\">Defaulted to UTF-8 encoding (#3315)</li>\n<li class=\"\">Removed potential CVE vulnerability action (#3303)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"tests-and-quality\">Tests and Quality<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#tests-and-quality\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Added unit tests for:</li>\n<li class=\"\">AlertInhibitController (#3183)</li>\n<li class=\"\">XML response parsing (#3212)</li>\n<li class=\"\">PeriodicAlertCalculator (#3304)</li>\n<li class=\"\">Added E2E tests for:</li>\n<li class=\"\">JDBC common collection (#3273)</li>\n<li class=\"\">Redis collector (#3283)</li>\n<li class=\"\">Kubernetes monitoring (#3280)</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"documentation-enhancements\">Documentation Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#documentation-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">Help and usage docs:</li>\n<li class=\"\">Alert Center, Alert Silence, Alarm Inhibition (#3181, #3229, #3206)</li>\n<li class=\"\">Metrics collection workflow blog (#3195)</li>\n<li class=\"\">Spring Boot 2.x/3.x monitoring config (#3231)</li>\n<li class=\"\">Grafana dashboard setup (#3238)</li>\n<li class=\"\">Upgrade guide (EN &amp; CN) (#3302)</li>\n<li class=\"\">Spring Boot auto practice use case (EN &amp; CN) (#3293, #3298)</li>\n<li class=\"\">Alert integration help documentation (#3308)</li>\n<li class=\"\">Style and maintenance:</li>\n<li class=\"\">Code style check documentation (#3232)</li>\n<li class=\"\">Dead link checker improvements (#3302)</li>\n<li class=\"\">Markdown formatting fixes and lint config updates (#3310)</li>\n<li class=\"\">Internationalization:</li>\n<li class=\"\">Japanese docs for README, ActiveMQ, Airflow, AlmaLinux (#3329, #3333, #3339, #3343)</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgements\">Acknowledgements<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#acknowledgements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Special thanks to the following community members for their collaborative efforts:</p>\n<blockquote>\n<p>@LinuxSuRen @gagaradio @boyucjz @MasamiYui @tomsun28 @Aias00 @zhangshenghang @zqr10159 @LiuTianyou @a-little-fool @Calvin979<br>\n<!-- -->@LL-LIN @JuJinPark @xiaomizhou2 @leo-934 @Rancho-7 @pwallk @bigcyy @sarthakeash @KevinLLF @PengJingzhao @Cyanty @markguo123</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"whats-changed\">What's Changed<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">fix: Ai is a typo by @LinuxSuRen in #3176</li>\n<li class=\"\">[Doc]  Modify the error records in the document by @zhangshenghang in #3178</li>\n<li class=\"\">[bug]bugfix<!-- -->:fix<!-- --> bug for package import error by @PengJingzhao in #3180</li>\n<li class=\"\">[doc] add help documentation for Alarms Center by @bigcyy in #3181</li>\n<li class=\"\">[docs] add collector user guide by @sarthakeash in #3187</li>\n<li class=\"\">[bugfix] Modify inconsistent icons by @MasamiYui in #3190</li>\n<li class=\"\">[doc] add blog bout How Does Metrics Collection Work by @JuJinPark in #3195</li>\n<li class=\"\">[improve] update monitor detail ui by @tomsun28 in #3199</li>\n<li class=\"\">[doc] update new hertzbeat ppmc by @tomsun28 in #3191</li>\n<li class=\"\">[improve] update monitor list ui by @tomsun28 in #3200</li>\n<li class=\"\">update download info by @Aias00 in #3203</li>\n<li class=\"\">[bugfix] fix bulletin indicator selection status error by @bigcyy in #3201</li>\n<li class=\"\">[improve] optimize kafka collection logic and expand test coverage by @Rancho-7 in #3189</li>\n<li class=\"\">[improve] support the use of time expressions in HTTP payloads by @LiuTianyou in #3192</li>\n<li class=\"\">[improve] i18n Portuguese by @LiuTianyou in #3193</li>\n<li class=\"\">support plc s7 protocol for siemens by @boyucjz in #3194</li>\n<li class=\"\">[doc] add doc for alarm grouping and alarm inhibit by @LiuTianyou in #3206</li>\n<li class=\"\">[improve] optimize <code>DnsCollectTest</code> with status code. by @Rancho-7 in #3209</li>\n<li class=\"\">[doc] archive version docs by @tomsun28 in #3207</li>\n<li class=\"\">[feature]Implementation of Hikvision camera monitoring and http monitoring xml parsing function by @zqr10159 in #3211</li>\n<li class=\"\">[test]add test for controller AlertInhibitController by @PengJingzhao in #3183</li>\n<li class=\"\">[test] hertzbeat-collector: add unit test for XML response parsing by @zqr10159 in #3212</li>\n<li class=\"\">add a Pushgateway to push module by @leo-934 in #3204</li>\n<li class=\"\">[feature]add support for Dahua and Uniview devices by @zqr10159 in #3214</li>\n<li class=\"\">[Doc] Fix dead link by @zhangshenghang in #3227</li>\n<li class=\"\">[feature]A preliminary logging module implementation by @zqr10159 in #3218</li>\n<li class=\"\">[Doc] Modify the YML configuration parameters for Spring Boot 2.0/3.0 monitoring by @Cyanty in #3231</li>\n<li class=\"\">[Doc] Add Blog by @zhangshenghang in #3224</li>\n<li class=\"\">[doc] add alerting silence doc. by @a-little-fool in #3229</li>\n<li class=\"\">[doc] code style check by @a-little-fool in #3232</li>\n<li class=\"\">[bugfix]: Fix the issue where pendingTimeouts may be incorrect in the HashedWheelTimer. by @gagaradio in #3174</li>\n<li class=\"\">[doc] add code-style-check zh-ch. by @a-little-fool in #3236</li>\n<li class=\"\">[doc]update Grafana dashboard setup instructions by @zqr10159 in #3238</li>\n<li class=\"\">[bugfix] Added jobContentCache.remove(jobId) to cancelAsyncCollectJob by @bigcyy in #3240</li>\n<li class=\"\">[doc] add new release 1.7.0 blog by @tomsun28 in #3237</li>\n<li class=\"\">[improve] Adjust Grafana configuration priority hierarchy and optimize API request exception handling by @Cyanty in #3241</li>\n<li class=\"\">switch to online parser &amp; add query datasource by @leo-934 in #3215</li>\n<li class=\"\">[feat] enable label-based filtering and selection for monitoring thresholds by @bigcyy in #3223</li>\n<li class=\"\">[doc] add new contributors to wall by @tomsun28 in #3243</li>\n<li class=\"\">fix UriComponentsBuilder in PromqlQueryExecutor by @leo-934 in #3244</li>\n<li class=\"\">[Feature] Add log mcp for java by @zhangshenghang in #3254</li>\n<li class=\"\">[bugfix] fix a remote command execution. by @a-little-fool in #3250</li>\n<li class=\"\">[refactor] Alert datasource calculate by @MasamiYui in #3253</li>\n<li class=\"\">[bugfix] Resolve incorrect display of detailed information in Prometheus task history monitoring charts under VictoriaMetrics. by @KevinLLF in #3248</li>\n<li class=\"\">[doc] add new contributor in wall by @tomsun28 in #3259</li>\n<li class=\"\">[bugfix] Set the prometheus monitoring time and correct historical data queries (#3264) by @Cyanty in #3264</li>\n<li class=\"\">[bugfix]  Wrong webhook alert template by @MasamiYui in #3265</li>\n<li class=\"\">[bugfix] correct instance filtering regex in RealTimeAlertCalculator by @bigcyy in #3269</li>\n<li class=\"\">[feature] Support Collector Alarm by @pwallk in #2693</li>\n<li class=\"\">[feature] add Maven Wrapper scripts  by @zhangshenghang in #3271</li>\n<li class=\"\">[webapp] update header logo style by @tomsun28 in #3272</li>\n<li class=\"\">[Improve] optimize prompt by @zhangshenghang in #3270</li>\n<li class=\"\">[bugfix] fix the prometheus metric response data parsing is abnormal by @LiuTianyou in #3274</li>\n<li class=\"\">[feature] new alert supports reminding through system notifications by @LiuTianyou in #3275</li>\n<li class=\"\">[bugfix] support no-whitespace alert expressions in instance filtering by @bigcyy in #3276</li>\n<li class=\"\">[refactor] refact tag to label code  by @tomsun28 in #3278</li>\n<li class=\"\">[doc] update contributors wall  by @tomsun28 in #3281</li>\n<li class=\"\">[improve] Add jdbc common collect e2e code (#3273) by @Cyanty in #3273</li>\n<li class=\"\">[improve] Add E2E tests for Redis collector by @KevinLLF in #3283</li>\n<li class=\"\">[Feature]Support AI bot by @zhangshenghang in #3285</li>\n<li class=\"\">[bugfix]: page title show  \"Not page name\" when filter monitor list by type by @LiuTianyou in #3289</li>\n<li class=\"\">[Task] Set local database as default file server provider by @MasamiYui in #3282</li>\n<li class=\"\">[doc]  update doc, usecase blog and help doc by @tomsun28 in #3286</li>\n<li class=\"\">[e2e] add e2e  test for k8s monitor by @LiuTianyou in #3280</li>\n<li class=\"\">[webapp] try reduce memory growth and fix crash by @tomsun28 in #3292</li>\n<li class=\"\">[Doc] Add springboot auto practice usecase by @Cyanty in #3293</li>\n<li class=\"\">[bugfix] fix collector direct oom by @tomsun28 in #3295</li>\n<li class=\"\">[Doc] Add English doc for springboot auto practice usecase by @Cyanty in #3298</li>\n<li class=\"\">[bugfix] enables support for VictoriaMetrics in cluster mode within HertzBeat by @bigcyy in #3297</li>\n<li class=\"\">[improve] Optimize the way of Dead Link Check by @Cyanty in #3302</li>\n<li class=\"\">[docs] Add Chinese and English versions of the HertzBeat upgrade guide by @markguo123 in #3294</li>\n<li class=\"\">[refactor] Remove the possible CVE-2025-30066 security vulnerability action and ignore the 500 code for link check by @Cyanty in #3303</li>\n<li class=\"\">[Improve] Add unit test for PeriodicAlertCalculator by @MasamiYui in #3304</li>\n<li class=\"\">[docs] Correct Markdown formatting and update lint config to enable local checking by @bigcyy in #3310</li>\n<li class=\"\">[docs] add help documentation for alert integration by @bigcyy in #3308</li>\n<li class=\"\">[feature] Support Uptime Kuma alert source by @xiaomizhou2 in #3312</li>\n<li class=\"\">[refactor] refactor auto discovery http sd by @tomsun28 in #3300</li>\n<li class=\"\">[refactor] set default encoding charset utf8 by @tomsun28 in #3315</li>\n<li class=\"\">[feature] Support Zabbix alert source by @xiaomizhou2 in #3317</li>\n<li class=\"\">update the license file, to add the plc4j-driver-s7 license by @boyucjz in #3318</li>\n<li class=\"\">[bugfix] fix the calculator expr exist not work by @tomsun28 in #3314</li>\n<li class=\"\">[feature]: integrate OpenTelemetry for GreptimeDB logs and traces- Rename hertzbeat-log to hertzbeat-otel by @zqr10159 in #3319</li>\n<li class=\"\">[doc] japanese readme by @Calvin979 in #3329</li>\n<li class=\"\">[Improve] Add i18 for ai bot by @MasamiYui in #3330</li>\n<li class=\"\">[feature] Support Eureka Service Discovery by @pwallk in #3323</li>\n<li class=\"\">[doc] japanese activemq by @Calvin979 in #3333</li>\n<li class=\"\">[feat] add deep wiki badge by @Aias00 in #3334</li>\n<li class=\"\">[doc] japanese airflow by @Calvin979 in #3339</li>\n<li class=\"\">[feature] Support Consul Service Discovery by @pwallk in #3326</li>\n<li class=\"\">[feat] Enhance Label Management for Monitors by @bigcyy in #3327</li>\n<li class=\"\">[doc] japanese almalinux by @Calvin979 in #3343</li>\n<li class=\"\">[feature] Support DNS Service Discovery by @MasamiYui in #3328</li>\n<li class=\"\">[build] Update .gitignore and add Maven wrapper properties by @zhangshenghang in #3346</li>\n<li class=\"\">[bugfix] Fix frontend error when all monitor metrics are selected in new bulletin form  by @LL-LIN in #3345</li>\n<li class=\"\">[release] update release version 1.7.1 by @zhangshenghang in #3347</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-contributors\">New Contributors<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#new-contributors\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\">@PengJingzhao made their first contribution in #3180</li>\n<li class=\"\">@boyucjz made their first contribution in #3194</li>\n<li class=\"\">@gagaradio made their first contribution in #3174</li>\n<li class=\"\">@KevinLLF made their first contribution in #3248</li>\n<li class=\"\">@markguo123 made their first contribution in #3294</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"apache-hertzbeat\">Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1#apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><strong>Repository URL:</strong></p>\n<p><a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></p>\n<p><strong>Official Website:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/</a></p>\n<p><strong>Apache HertzBeat™ Download Link:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></p>\n<p><strong>Apache HertzBeat™ Docker Images:</strong></p>\n<p>Apache HertzBeat™ provides Docker images for each release, available on Docker Hub:</p>\n<ul>\n<li class=\"\">HertzBeat: <a href=\"https://hub.docker.com/r/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat</a></li>\n<li class=\"\">HertzBeat Collector: <a href=\"https://hub.docker.com/r/apache/hertzbeat-collector\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat-collector</a></li>\n</ul>\n<p><strong>How to Contribute to the Apache HertzBeat™ Open Source Community?</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/community/contribution\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/community/contribution</a></p>",
            "url": "https://hertzbeat.apache.org/blog/2025/06/10/hertzbeat-v1.7.1",
            "title": "Announcement of Apache HertzBeat™ 1.7.1 Release",
            "summary": "Dear Community Members,",
            "date_modified": "2025-06-10T00:00:00.000Z",
            "author": {
                "name": "tomsun28",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "release"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/05/22/new-committer",
            "content_html": "<blockquote>\n<p>Hello everyone, it's a great honor to be invited by the community to become a Committer of the Apache HertzBeat™ project.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"self-introduction\">Self-Introduction<a href=\"https://hertzbeat.apache.org/blog/2025/05/22/new-committer#self-introduction\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>I have been engaged in Java backend development since 2022. Currently, I am working as a backend developer in a company and also taking on some operations and maintenance tasks.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"getting-to-know-apache-hertzbeat\">Getting to know Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/05/22/new-committer#getting-to-know-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Last year, I came across the Apache HertzBeat™ project by chance. After reading the documentation, I found that this monitoring tool is easy to use, does not require an Agent, and can be operated entirely through a web page. So, I quickly set it up within the company based on Docker and put it into use.</p>\n<p>Due to the <code>All in one</code> design architecture of Apache HertzBeat™, it has greatly reduced my mental burden, and I was able to quickly integrate various internal company services into the monitoring system.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"participate-and-contribute\">Participate and Contribute<a href=\"https://hertzbeat.apache.org/blog/2025/05/22/new-committer#participate-and-contribute\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>During the usage process, I discovered a database query bug. So, I forked the code and started debugging it locally. I found that the fix was not complicated and since no one else had addressed it, I submitted my first PR. To my surprise, it was merged quickly, which greatly encouraged me.</p>\n<p>In the following period, I continued to familiarize myself with the Apache HertzBeat™ code, paying close attention to ISSUES and PRs. As my understanding of the system deepened, apart from fixing BUGs and improving documentation, I also developed some new features, such as database storage templates and SSH tunnels.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"conclusion\">Conclusion<a href=\"https://hertzbeat.apache.org/blog/2025/05/22/new-committer#conclusion\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>I'm deeply grateful to <a href=\"https://github.com/tomsun28\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">@tomsun28</a> for inviting me to become a committer for this project. I also want to thank other members of the community for assisting me in reviewing code and providing invaluable help. Apache HertzBeat™ boasts a highly active community, and I sincerely hope more people will join and contribute to it, Finally, I wish Apache HertzBeat™ can graduate from the incubator soon!</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/05/22/new-committer",
            "title": "Welcome HertzBeat's New Community Committer!",
            "summary": "Hello everyone, it's a great honor to be invited by the community to become a Committer of the Apache HertzBeat™ project.",
            "date_modified": "2025-05-22T00:00:00.000Z",
            "author": {
                "name": "pwallk",
                "url": "https://github.com/pwallk"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/5/19/new-pmc",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"from-contributor-to-pmc\">From Contributor to PMC<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#from-contributor-to-pmc\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>About a year ago, I discovered Apache HertzBeat™ - an agentless monitoring system with out-of-the-box features that immediately caught my interest through its pure web-based operations. After starting to use it, I made my first code contribution. When that initial PR got merged, my confidence in open source contribution skyrocketed. Since then, I've continuously looked for opportunities to contribute through documentation improvements, feature testing, code refactoring, and more in the community issue list.</p>\n<p>As my contributions grew, I gradually evolved from an \"occasional code submitter\" to a \"deep project participant\". Fixing bugs, optimizing documentation, designing new features... This journey not only enhanced my technical skills but more importantly taught me how to collaborate effectively within a community.</p>\n<p>After becoming a Committer, my responsibilities expanded beyond coding to include community discussions, PR reviews, and helping new members onboard. This experience gave me a profound realization: <strong>Open source isn't just about code - it's fundamentally about human collaboration</strong>.</p>\n<p>This year, I was honored to be nominated as a PPMC member. Just like when I first received the Committer invitation, I felt the same excitement. I understand this recognition carries not just acknowledgment of past contributions but also the community's trust and expectations. As PMC, my responsibilities now include ensuring project health through strategic planning, community event organization, and requirement coordination. This role enables deeper involvement in core decision-making, from technical direction to ecosystem development, driving HertzBeat's continuous evolution.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"personal-growth\">Personal Growth<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#personal-growth\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>My deep involvement in open source over this past year has brought significant growth:</p>\n<ul>\n<li class=\"\"><strong>Learning Best Practices</strong>: Exposure to standardized code, excellent designs, and community best practices for tools like Git, CI/CD, and e2e testing</li>\n<li class=\"\"><strong>Collaboration &amp; Communication</strong>: Learning to write clear issue descriptions, participate in technical discussions, and resolve differences in distributed teams</li>\n<li class=\"\"><strong>Product Thinking Development</strong>: Understanding user needs of open source projects and transitioning from developer to maintainer perspective</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"looking-ahead\">Looking Ahead<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#looking-ahead\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>For the future, I plan to focus on:</p>\n<ul>\n<li class=\"\"><strong>User Support</strong>: Helping resolve user issues</li>\n<li class=\"\"><strong>Technology Promotion</strong>: Making Apache HertzBeat™ a top choice in monitoring through wider adoption</li>\n<li class=\"\"><strong>Contributor Ecosystem</strong>: Nurturing and developing more contributors for Apache HertzBeat</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"what-is-apache-hertzbeat\">What is Apache HertzBeat?<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#what-is-apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Apache HertzBeat™ is an open source real-time monitoring system emphasizing ease-of-use and lightweight design. It supports monitoring and alerting for servers, databases, middleware, and application services, providing a simple yet powerful solution for IT infrastructure monitoring.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"how-to-contribute\">How to Contribute?<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#how-to-contribute\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>We welcome contributions of code, documentation, and ideas. My open source journey taught me that the hardest parts are starting and persisting. If interested, visit our contribution guide:<br>\n<a href=\"https://hertzbeat.apache.org/zh-cn/docs/community/contribution\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/zh-cn/docs/community/contribution</a>\nFeel free to email me at <a href=\"mailto:liutianyou@apache.org\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">liutianyou@apache.org</a> - I'm happy to help you take your first open source steps!</p>\n<ul>\n<li class=\"\">Official Site: <a href=\"https://hertzbeat.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org</a></li>\n<li class=\"\">GitHub: <a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></li>\n<li class=\"\">Mailing List: <a href=\"mailto:dev@hertzbeat.apache.org\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">dev@hertzbeat.apache.org</a></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgments\">Acknowledgments<a href=\"https://hertzbeat.apache.org/blog/2025/5/19/new-pmc#acknowledgments\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Special thanks to <strong>Tom</strong>, <strong>Qingran Zhao</strong>, <strong>TJxiaobao</strong>, <strong>Jast</strong> for guidance, and all Apache HertzBeat™ community members for support.</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/5/19/new-pmc",
            "title": "From User to PPMC Member: Contributing to Open Source with Passion at Apache HertzBeat",
            "summary": "From Contributor to PMC",
            "date_modified": "2025-05-19T00:00:00.000Z",
            "author": {
                "name": "liutianyou",
                "url": "https://github.com/Liutianyou"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"docker-based-upgrade\">Docker-based Upgrade<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#docker-based-upgrade\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-data-backup\">1. Data Backup<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#1-data-backup\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\">\n<p><strong>Back up the database</strong>: Manually back up MySQL data as needed.</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">mysqldump -h&lt;HOST-IP&gt; -P`&lt;PORT&gt;` -uroot -p\"PASSWORD\" `&lt;DB_NAME&gt;` &gt; hertzbeat_backup-`date +%Y-%m-%d`.sql  # Single database  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">mysqldump -h&lt;HOST-IP&gt; -P`&lt;PORT&gt;` -uroot -p\"PASSWORD\" --all-databases &gt; hertzbeat_backup-`date +%Y-%m-%d`.sql  # Full database  </span><br></span></code></pre></div></div>\n</li>\n<li class=\"\">\n<p><strong>Back up configuration files and data directory</strong>:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">mv application.yml application-bak.yml &amp;&amp; mv sureness.yml sureness-bak.yml  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">cp -R data data-`date +%Y-%m-%d`.bak  </span><br></span></code></pre></div></div>\n</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-stop-and-remove-the-hertzbeat-container\">2. Stop and Remove the HertzBeat Container<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#2-stop-and-remove-the-hertzbeat-container\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker stop hertzbeat &amp;&amp; docker rm hertzbeat  </span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-upgrade-database-schema\">3. Upgrade Database Schema<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#3-upgrade-database-schema\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Navigate to <a href=\"https://github.com/apache/hertzbeat/tree/master/hertzbeat-startup/src/main/resources/db/migration\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">HertzBeat GitHub Migration Scripts</a>, select the appropriate <code>V160__update_column.sql</code> file under your database type (e.g., MySQL), and execute it in MySQL.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"4-restart-hertzbeat-with-the-new-image\">4. Restart HertzBeat with the New Image<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#4-restart-hertzbeat-with-the-new-image\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">docker run -d -p 1157:1157 -p 1158:1158 \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    -v $(pwd)/data:/opt/hertzbeat/data \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    -v $(pwd)/logs:/opt/hertzbeat/logs \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    -v $(pwd)/application.yml:/opt/hertzbeat/config/application.yml \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    -v $(pwd)/sureness.yml:/opt/hertzbeat/config/sureness.yml \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    --restart=always \\  </span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    --name hertzbeat apache/hertzbeat:v1.7.0  </span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"5-update-configuration-files\">5. Update Configuration Files<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#5-update-configuration-files\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Modify the backup configurations as needed:</p>\n<ul>\n<li class=\"\">\n<p><strong><code>application.yml</code></strong> (Typical modifications):</p>\n<div class=\"language-yaml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token key atrule\" style=\"color:#00a4db\">datasource</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">driver-class-name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> com.mysql.cj.jdbc.Driver</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">username</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> root</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">password</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> root</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">url</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> jdbc</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">mysql</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//localhost</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">3306/hertzbeat</span><span class=\"token punctuation\" style=\"color:#393A34\">?</span><span class=\"token plain\">useUnicode=true</span><span class=\"token important\">&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">hikari</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">max-lifetime</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">120000</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">jpa</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">show-sql</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:#36acaa\">false</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">database-platform</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> org.eclipse.persistence.platform.database.MySQLPlatform</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">database</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> mysql</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">properties</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">eclipselink</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">logging</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">level</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> SEVERE</span><br></span></code></pre></div></div>\n</li>\n<li class=\"\">\n<p><strong><code>sureness.yml</code></strong> (Optional, modify for account/password changes):</p>\n<div class=\"language-yaml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token key atrule\" style=\"color:#00a4db\">account</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">appId</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> admin</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">credential</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">role</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">[</span><span class=\"token plain\">admin</span><span class=\"token punctuation\" style=\"color:#393A34\">]</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">appId</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> tom</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">credential</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">role</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">[</span><span class=\"token plain\">user</span><span class=\"token punctuation\" style=\"color:#393A34\">]</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">appId</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> guest</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">credential</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">role</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">[</span><span class=\"token plain\">guest</span><span class=\"token punctuation\" style=\"color:#393A34\">]</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">appId</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> lili</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">credential</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 94C6B34E7A199A9F9D4E1F208093B489</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">salt</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">123</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">role</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">[</span><span class=\"token plain\">user</span><span class=\"token punctuation\" style=\"color:#393A34\">]</span><br></span></code></pre></div></div>\n</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"6-add-database-drivers\">6. Add Database Drivers<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode#6-add-database-drivers\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Due to Apache Foundation’s license compliance requirements, HertzBeat cannot include GPL-licensed dependencies (e.g., MySQL, Oracle). Users must manually download drivers and place them in the <code>ext-lib</code> directory, then mount it to <code>/opt/hertzbeat/ext-lib</code>:</p>\n<ul>\n<li class=\"\"><strong>MySQL Driver</strong>: <a href=\"https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Download MySQL Connector/J 8.0.25</a></li>\n<li class=\"\"><strong>Oracle Driver</strong> (Required for Oracle monitoring):<!-- -->\n<ul>\n<li class=\"\"><a href=\"https://download.oracle.com/otn-pub/otn_software/jdbc/234/ojdbc8.jar\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">ojdbc8.jar</a></li>\n<li class=\"\"><a href=\"https://repo.mavenlibs.com/maven/com/oracle/database/nls/orai18n/21.5.0.0/orai18n-21.5.0.0.jar\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">orai18n-21.5.0.0.jar</a></li>\n</ul>\n</li>\n</ul>",
            "url": "https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-docker-mode",
            "title": "HertzBeat Upgrade Guide (Docker Mode)",
            "summary": "Docker-based Upgrade",
            "date_modified": "2025-04-23T00:00:00.000Z",
            "tags": []
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-prerequisites\">1. Prerequisites<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#1-prerequisites\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ol>\n<li class=\"\">\n<p>Ensure the following tools are installed:</p>\n<ul>\n<li class=\"\">Helm 3.x</li>\n<li class=\"\">kubectl</li>\n<li class=\"\">Git (optional)</li>\n</ul>\n</li>\n<li class=\"\">\n<p>Verify current deployment information:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm list -n &lt;your-namespace&gt;</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># If the old chart package is missing, export values.yaml with:</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm get values hertzbeat -n &lt;your-namespace&gt; &gt; hertzbeat-1.6.1-values.yaml</span><br></span></code></pre></div></div>\n</li>\n<li class=\"\">\n<p>Data Backup:</p>\n</li>\n</ol>\n<blockquote>\n<p><strong>For custom monitoring templates:</strong></p>\n<ul>\n<li class=\"\">\n<p>Backup <code>/opt/hertzbeat/define</code> from the running pod:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">kubectl cp hertzbeat/hertzbeat-978477f84-fr894:/opt/hertzbeat/define ./define</span><br></span></code></pre></div></div>\n</li>\n</ul>\n<p><strong>For external databases (MySQL/PostgreSQL):</strong></p>\n<ul>\n<li class=\"\">\n<p>Use <code>mysqldump</code>/<code>pg_dump</code> or copy PVC directories:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">kubectl get pvc -n hertzbeat</span><br></span></code></pre></div></div>\n</li>\n</ul>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-upgrade-steps\">2. Upgrade Steps<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#2-upgrade-steps\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-pull-the-latest-chart\">1. Pull the latest Chart<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#1-pull-the-latest-chart\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm repo update</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm pull hertzbeat/hertzbeat --version 1.7.0 --untar</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">cd hertzbeat</span><br></span></code></pre></div></div>\n<p>Or clone from GitHub:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">git clone https://github.com/hertzbeat/helm-charts.git</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">cd helm-charts/charts/hertzbeat</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-update-valuesyaml\">2. Update values.yaml<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#2-update-valuesyaml\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Compare and merge configurations:</p>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">diff -u ../hertzbeat-1.6.1-values.yaml values.yaml</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"># Use vimdiff to compare and merge changes</span><br></span></code></pre></div></div>\n<p>Key configurations to check:</p>\n<ul>\n<li class=\"\"><code>image.tag</code></li>\n<li class=\"\"><code>resources</code></li>\n<li class=\"\"><code>persistence</code></li>\n<li class=\"\"><code>service.type</code></li>\n<li class=\"\">Ingress settings</li>\n<li class=\"\">External database configurations</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-dry-run-upgrade\">3. Dry-run Upgrade<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#3-dry-run-upgrade\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm upgrade hertzbeat . -n &lt;your-namespace&gt; \\</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --values values.yaml \\</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --dry-run \\</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --debug</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"4-execute-upgrade\">4. Execute Upgrade<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#4-execute-upgrade\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm upgrade hertzbeat . -n &lt;your-namespace&gt; \\</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --values values.yaml \\</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --atomic \\          # Auto-rollback on failure</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  --timeout 10m       # Set timeout</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"5-verify-upgrade\">5. Verify Upgrade<a href=\"https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode#5-verify-upgrade\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<div class=\"language-bash codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-bash codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">helm status hertzbeat -n &lt;your-namespace&gt;</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">kubectl get pods -n &lt;your-namespace&gt; -l app.kubernetes.io/instance=hertzbeat</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">kubectl logs -n &lt;your-namespace&gt; -l app.kubernetes.io/instance=hertzbeat --tail=100</span><br></span></code></pre></div></div>",
            "url": "https://hertzbeat.apache.org/blog/2025/04/23/hertzbeat-upgrade-guide-from-v1.6.1-to-v1.7.0-helm-mode",
            "title": "HertzBeat Upgrade Guide from v1.6.1 to v1.7.0 (Helm Mode)",
            "summary": "1. Prerequisites",
            "date_modified": "2025-04-23T00:00:00.000Z",
            "tags": []
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0",
            "content_html": "<p>Dear Community Members,</p>\n<p>We are thrilled to announce the official release of Apache HertzBeat™ version 1.7.0!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"downloads-and-documentation\">Downloads and Documentation<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#downloads-and-documentation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat™ 1.7.0 Download Link</strong>: <a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></li>\n<li class=\"\"><strong>Apache HertzBeat™ Documentation</strong>: <a href=\"https://hertzbeat.apache.org/docs/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/</a></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"major-updates\">Major Updates<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#major-updates\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"new-features-and-enhancements\">New Features and Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#new-features-and-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Custom Refresh Interval</strong>: Supports custom refresh intervals for each group of metrics to meet monitoring needs in different scenarios.</li>\n<li class=\"\"><strong>Task Auto Discovery</strong>: Supports automatic task discovery via <code>http_sd</code>, enhancing task flexibility and manageability.</li>\n<li class=\"\"><strong>New Alarm Module</strong>: Supports real-time threshold and scheduled threshold, grouped convergence, alarm suppression, alarm silencing, and more.</li>\n<li class=\"\"><strong>Kafka Monitoring Enhancement</strong>: Optimized Kafka monitoring features, including improved Kafka chart displays and added Kafka consumer group monitoring metrics.</li>\n<li class=\"\"><strong>Support for Multiple Protocols and Monitoring Types</strong>: Added support for monitoring <code>Plc</code> protocol, further expanding the monitoring scope.</li>\n<li class=\"\"><strong>Alarm Function Enhancement</strong>: Supports replacing Tencent Cloud SDK with HTTP API for sending SMS notifications, increasing the flexibility and scalability of alarm notifications. Additionally, it supports multi-query expression threshold alarms and periodic alarm thresholds.</li>\n<li class=\"\"><strong>Multilingual Support</strong>: Added support for languages such as Japanese and Traditional Chinese, enhancing the international user experience.</li>\n<li class=\"\"><strong>Monitoring Function Enhancement</strong>: Supports monitoring for more types such as <code>StarRocks FE</code>, providing users with more monitoring options.</li>\n<li class=\"\"><strong>E2E Testing Enhancement</strong>: Added multiple E2E test codes, including for Kafka, SSH, and API, improving test coverage and stability.</li>\n<li class=\"\"><strong>Data Storage Optimization</strong>: Updated <code>VictoriaMetrics</code> and <code>Greptime</code> storage to improve data storage performance and stability.</li>\n<li class=\"\"><strong>More New Features</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"bug-fixes\">Bug Fixes<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#bug-fixes\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Fix Docker Build Errors</strong>: Fixed the collector Docker build errors, ensuring normal Docker image builds.</li>\n<li class=\"\"><strong>Fix Linux Process Monitoring Issue</strong>: Fixed an issue where Linux process monitoring failed without warning when a process exited abnormally, improving monitoring stability.</li>\n<li class=\"\"><strong>Fix Windows Chinese Encoding Issue</strong>: Fixed the issue with Chinese encoding on Windows, ensuring normal operation in Windows environments.</li>\n<li class=\"\"><strong>Fix Grafana Configuration Issue</strong>: Fixed issues related to Grafana configuration, improving the Grafana integration experience.</li>\n<li class=\"\"><strong>Fix Windows Metric Configuration Issue</strong>: Updated Windows metric YAML files to resolve related issues.</li>\n<li class=\"\"><strong>Fix Flyway Location Detection Issue</strong>: Fixed the issue where Flyway could not automatically detect vendor locations, improving database migration reliability.</li>\n<li class=\"\"><strong>Fix Data Storage Issues</strong>: Fixed issues related to data storage, including Prometheus data storage issues and data update logic issues, ensuring data accuracy and integrity.</li>\n<li class=\"\"><strong>Fix Alarm Notification Issues</strong>: Fixed issues related to alarm notifications, including duplicate sending and configuration problems, improving alarm notification accuracy and reliability.</li>\n<li class=\"\"><strong>Fix Monitoring Status Update Issue</strong>: Fixed the issue where monitoring status wasn't updated, ensuring real-time and accurate monitoring status.</li>\n<li class=\"\"><strong>And Other Bug Fixes</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"refactoring-and-optimization\">Refactoring and Optimization<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#refactoring-and-optimization\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Memory Structure Optimization</strong>: Used <code>Apache Arrow</code> as the in-memory data structure, improving memory usage efficiency and performance.</li>\n<li class=\"\"><strong>Code Standard Optimization</strong>: Optimized the code according to coding standards, improving code quality and readability.</li>\n<li class=\"\"><strong>Cache Optimization</strong>: Added an <code>LRU</code> local cache based on the Singleton pattern, improving cache efficiency and performance.</li>\n<li class=\"\"><strong>Memory Leak Fix</strong>: Fixed potential memory leak issues, improving system stability and reliability.</li>\n<li class=\"\"><strong>And Other Optimizations</strong></li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"documentation-enhancements\">Documentation Enhancements<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#documentation-enhancements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Updated Deployment Documentation</strong>: Updated deployment documentation with more detailed deployment guidance.</li>\n<li class=\"\"><strong>Updated Security Model Documentation</strong>: Updated the security model documentation.</li>\n<li class=\"\"><strong>Updated Grafana Configuration Documentation</strong>: Updated Grafana configuration methods and documentation for exposing URLs, enhancing user experience.</li>\n<li class=\"\"><strong>Updated Windows Monitoring Documentation</strong>: Updated Windows system monitoring documentation with more detailed monitoring guidance.</li>\n<li class=\"\"><strong>Updated Monitoring Metrics Documentation</strong>: Updated documentation for multiple monitoring metrics, including Kafka, Linux processes, etc., improving the accuracy and completeness of the documentation.</li>\n<li class=\"\"><strong>Updated Developer Documentation</strong>: Added documentation for custom collector development, helping developers with secondary development.</li>\n<li class=\"\"><strong>More Documentation Updates</strong></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgements\">Acknowledgements<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#acknowledgements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Special thanks to the following community members for their collaborative efforts:</p>\n<blockquote>\n<p>@ghyghoo8 @kerwin612 @pjfanning @helei1030 @shinestare @simonsigre @myangle1120 @MasamiYui @Craaaaazy77 @tomsun28 @Aias00 @zhangshenghang @wanhao23 @zqr10159 @LiuTianyou\n@hasimmollah @lixiaobaivv @LL-LIN @JuJinPark @ponfee @starryCoder @NikhilMurugesan @leo-934 @Rancho-7 @MonsterChenzhuo @zuobiao-zhou @pwallk @bigcyy @ZY945 @sarthakeash\n@All-The-Best-for @TJxiaobao @yyahang @yunfan24 @a-little-fool @yasminvo @Yanshuming1 @ayu-v0 @jonasHanhan @Calvin979 @Suvrat1629 @Vedant7789 @notbugggg @lctking @po-168 @doveLin0818</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"whats-changed\">What's Changed<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#whats-changed\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<div class=\"language-markdown codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-markdown codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">doc</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">download</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: update for v1.6.1 release by @zqr10159 in https://github.com/apache/hertzbeat/pull/2794</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc] improve website by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2795</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update deploy doc by @tomsun28 in https://github.com/apache/hertzbeat/pull/2796</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">Task</span><span class=\"token url\" style=\"color:#36acaa\">][</span><span class=\"token url variable\" style=\"color:#36acaa\">OSPP</span><span class=\"token url\" style=\"color:#36acaa\">]</span><span class=\"token plain\"> HertzBeat Official Template Marketplace by @All-The-Best-for in https://github.com/apache/hertzbeat/pull/2641</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve]:Improve the way Ai is entered and requested by @Yanshuming1 in https://github.com/apache/hertzbeat/pull/2762</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix collector docker build error by @tomsun28 in https://github.com/apache/hertzbeat/pull/2799</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix]Remove the duplicate declaration of commons-net by @shinestare in https://github.com/apache/hertzbeat/pull/2801</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update new contributors by @tomsun28 in https://github.com/apache/hertzbeat/pull/2802</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Improve module name by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2805</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] code according to code specifications by @po-168 in https://github.com/apache/hertzbeat/pull/2809</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support custom refresh intervals for each group of metrics by @zuobiao-zhou in https://github.com/apache/hertzbeat/pull/2718</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Fix error links caused by module name changes. by @zuobiao-zhou in https://github.com/apache/hertzbeat/pull/2807</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] fix the Linux process monitoring process exits abnormally without warning by @LiuTianyou in https://github.com/apache/hertzbeat/pull/2810</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc] Add blog by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2812</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] improve kafka monitor by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2813</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] add e2e code by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2811</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] modify e2e test by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2814</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update windows metrics yml by @tomsun28 in https://github.com/apache/hertzbeat/pull/2816</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update grafana auth method and add expose url by @tomsun28 in https://github.com/apache/hertzbeat/pull/2818</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Fixed the omissions in #2805 by @kerwin612 in https://github.com/apache/hertzbeat/pull/2826</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [refactor] change name from http_sd to registry by @Calvin979 in https://github.com/apache/hertzbeat/pull/2827</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix]fix windows chinese encoding by @starryCoder in https://github.com/apache/hertzbeat/pull/2831</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Added custom development collector documentation by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2833</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update and fix template yml priority  by @tomsun28 in https://github.com/apache/hertzbeat/pull/2829</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [chore] Delete redundant Spaces by @ayu-v0 in https://github.com/apache/hertzbeat/pull/2834</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">doc</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> update</span><span class=\"token plain\"> sidebar category label and plugin documentation by @zqr10159 in https://github.com/apache/hertzbeat/pull/2837</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] bugfix flyway location can not auto detect vendor when not h2 by @tomsun28 in https://github.com/apache/hertzbeat/pull/2835</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update victoriametrics and greptime store by @tomsun28 in https://github.com/apache/hertzbeat/pull/2836</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] support managing tasks by using http_sd by @Calvin979 in https://github.com/apache/hertzbeat/pull/2830</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [fix] auto generated by protocol buffer by @tomsun28 in https://github.com/apache/hertzbeat/pull/2842</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] Add ssh e2e code  by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2843</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]Fix wrong app name by @zqr10159 in https://github.com/apache/hertzbeat/pull/2845</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] add security model doc and update contributors by @tomsun28 in https://github.com/apache/hertzbeat/pull/2846</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve dependency by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2855</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update security doc and some by @tomsun28 in https://github.com/apache/hertzbeat/pull/2856</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> A bug fix by @TJxiaobao in https://github.com/apache/hertzbeat/pull/2853</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add ',' separator between monitoring types by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2865</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc]improve-windows-monitoring:Update Windows system monitoring docu… by @starryCoder in https://github.com/apache/hertzbeat/pull/2869</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Optimize] Add a reminder about potential collection issues caused by the Docker deployment method of collector. by @zuobiao-zhou in https://github.com/apache/hertzbeat/pull/2844</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve]Add more helpful messages when adding a Kafka monitor by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2876</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> modified:add a small change. by @TJxiaobao in https://github.com/apache/hertzbeat/pull/2878</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Fix] fix clickhouse monitor by @LiuTianyou in https://github.com/apache/hertzbeat/pull/2874</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [chore] Delete the redundant else by @ayu-v0 in https://github.com/apache/hertzbeat/pull/2881</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve]Remove stack property from line charts by @zqr10159 in https://github.com/apache/hertzbeat/pull/2888</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve]improve linux process by @LiuTianyou in https://github.com/apache/hertzbeat/pull/2889</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve]Beautify Charts by @zqr10159 in https://github.com/apache/hertzbeat/pull/2891</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add more hints when users are switching data source. by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2880</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [collector]feature:Add monitoring metrics for consumer groups in Kafka client by @doveLin0818 in https://github.com/apache/hertzbeat/pull/2887</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Improve Kafka chart display by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2894</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [collector]bugfix:fix the issue of reusing the </span><span class=\"token code-snippet code keyword\" style=\"color:#00009f\">`adminClient`</span><span class=\"token plain\"> in the Kafka client. by @doveLin0818 in https://github.com/apache/hertzbeat/pull/2895</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve]add Plc protocol , Modbus monitor by @ZY945 in https://github.com/apache/hertzbeat/pull/2850</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] add notification when port number changes automatically due to HTTPS toggle.(#2779) by @yunfan24 in https://github.com/apache/hertzbeat/pull/2896</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] integrate with Apache Arrow by @Calvin979 in https://github.com/apache/hertzbeat/pull/2864</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc] update doc by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2900</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Imporve] Support Kafka internal topic configuration by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2901</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">fix</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">flink</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: update calculate metrics definitions by @zqr10159 in https://github.com/apache/hertzbeat/pull/2905</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add a new Singleton-pattern-based LRU local cache by @doveLin0818 in https://github.com/apache/hertzbeat/pull/2907</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> add an online parser for prometheus. by @leo-934 in https://github.com/apache/hertzbeat/pull/2851</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Improve OBS by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2909</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] fix import of CollectRep by @Calvin979 in https://github.com/apache/hertzbeat/pull/2910</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">feature</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">web-app</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: Add Alarm Voice Alerts by @zqr10159 in https://github.com/apache/hertzbeat/pull/2906</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix the bug where canceling an edit on a record still updates the page values. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2911</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix docker container name unable to display problem by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2914</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Optimize CacheService and add relevant unit test by @lctking in https://github.com/apache/hertzbeat/pull/2912</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Add required field indicators and form validation prompts for convergence strategies and silent strategies in the form. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2913</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feture]Add docker e2e test by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2916</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">bugfix</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> fix</span><span class=\"token plain\"> setColumns method in CollectRep class by @zqr10159 in https://github.com/apache/hertzbeat/pull/2918</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">improve</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">warehouse</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: replace empty json object key with empty string by @zqr10159 in https://github.com/apache/hertzbeat/pull/2919</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Bug fix for alarm voice. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2920</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Update app-windows_script.yml by @simonsigre in https://github.com/apache/hertzbeat/pull/2922</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fixed the 'java.lang.UnsupportedOperationException' exception caused by getCurrentMetricsData by @lixiaobaivv in https://github.com/apache/hertzbeat/pull/2923</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Optimize the e2e code structure by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2926</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] optimize website navbar css(#2928) by @ponfee in https://github.com/apache/hertzbeat/pull/2929</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Adding CPU Temperature Check Into Default Ubuntu Checks by @simonsigre in https://github.com/apache/hertzbeat/pull/2930</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Improve the synchronization of the mute status. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2927</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]  Corrected case 'DashBoard' is a lower case 'B' by @simonsigre in https://github.com/apache/hertzbeat/pull/2935</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]  Modify the doris_be.md document into an English version by @Craaaaazy77 in https://github.com/apache/hertzbeat/pull/2936</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Refactor and Split the Message Notification Component. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2924</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [home] updated navbar css   #2928 by @Vedant7789 in https://github.com/apache/hertzbeat/pull/2934</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve]Improve e2e code by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2945</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [refactor] refactoring methods replaceCryPlaceholder and replaceSmilingPlace by @hasimmollah in https://github.com/apache/hertzbeat/pull/2832</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [alarm] refactor new alarm by @tomsun28 in https://github.com/apache/hertzbeat/pull/2902</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">bugfix</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">db</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: optimize column update. by @zqr10159 in https://github.com/apache/hertzbeat/pull/2947</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add Supported MySQL Versions. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2949</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] Support customized JMX monitoring through the Factory Pattern. by @doveLin0818 in https://github.com/apache/hertzbeat/pull/2932</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve]Modify Chinese comments by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2950</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] fix some alarm relate bug, update alarm center ui  by @tomsun28 in https://github.com/apache/hertzbeat/pull/2951</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> 【Improve】adjust log level from INFO to WARN. by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2952</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc]:Add English version of documentation for Kafka Consumer Detail by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2953</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Imporve] Improve Huaweicloud by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2954</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update alarm inhibit rule and alarm ui by @tomsun28 in https://github.com/apache/hertzbeat/pull/2957</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bufix] fix collector job scheduler error by @tomsun28 in https://github.com/apache/hertzbeat/pull/2966</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve]:Standardize Kafka metric naming by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2961</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [BUG] \"Advanced Settings\" is all white in dark mode by @Suvrat1629 in https://github.com/apache/hertzbeat/pull/2965</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] add no popup option after next login by @LiuTianyou in https://github.com/apache/hertzbeat/pull/2969</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] replace googletagmanager to matomo by @Aias00 in https://github.com/apache/hertzbeat/pull/2877</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Fix the search functionality issue. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2970</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">bugfix</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">warehouse</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: add metrics data update logic in memory storage by @zqr10159 in https://github.com/apache/hertzbeat/pull/2973</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Add more test cases for Kafka junit tests by @Rancho-7 in https://github.com/apache/hertzbeat/pull/2976</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] alert integration extern source  by @tomsun28 in https://github.com/apache/hertzbeat/pull/2978</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix NullPointerException by @ayu-v0 in https://github.com/apache/hertzbeat/pull/2849</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] key-value-input component hover effect fixed by @ghyghoo8 in https://github.com/apache/hertzbeat/pull/2972</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix alert integration extern source bug by @tomsun28 in https://github.com/apache/hertzbeat/pull/2979</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] Support copy monitoring by @zhangshenghang in https://github.com/apache/hertzbeat/pull/2981</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix hbase dashboard display anomalies and turn on HTTPS by @MonsterChenzhuo in https://github.com/apache/hertzbeat/pull/2980</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update i18n json stru and update search ui by @tomsun28 in https://github.com/apache/hertzbeat/pull/2986</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] improve xml parsing code by @pjfanning in https://github.com/apache/hertzbeat/pull/2988</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [docs]doc:Added spark Chinese documents and changed the original spar… by @helei1030 in https://github.com/apache/hertzbeat/pull/2987</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [type:improve] fix dependencies vulnerabilites by @Aias00 in https://github.com/apache/hertzbeat/pull/2989</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add privateKey passphrase config for linux monitor by @MasamiYui in https://github.com/apache/hertzbeat/pull/2982</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [type:fix] remove matomo ip by @Aias00 in https://github.com/apache/hertzbeat/pull/2990</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Added multilingual defaults for forms by @wanhao23 in https://github.com/apache/hertzbeat/pull/2991</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve]Add Copy token button by @zqr10159 in https://github.com/apache/hertzbeat/pull/2992</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] close HttpResponse in HttpCollectImpl by @pjfanning in https://github.com/apache/hertzbeat/pull/2993</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] close http response in PrometheusAutoCollectImpl by @pjfanning in https://github.com/apache/hertzbeat/pull/2994</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] fix more instances of unclosed Http Responses by @pjfanning in https://github.com/apache/hertzbeat/pull/2995</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix wrong http user-agent content by @tomsun28 in https://github.com/apache/hertzbeat/pull/2996</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support monitoring for StarRocks FE and StarRocks BE. by @yunfan24 in https://github.com/apache/hertzbeat/pull/2997</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] refactor base64 code to simplify the conversions by @pjfanning in https://github.com/apache/hertzbeat/pull/2999</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] bugfix edit monitor http query params error by @tomsun28 in https://github.com/apache/hertzbeat/pull/3001</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Complete multiple languages by @wanhao23 in https://github.com/apache/hertzbeat/pull/3002</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add alerter_zh_TW.properties configuration to adapt to mult… by @jonasHanhan in https://github.com/apache/hertzbeat/pull/3004</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix some unit tests that failed to run by @NikhilMurugesan in https://github.com/apache/hertzbeat/pull/3007</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">feature</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">alert</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: implement drag-and-drop functionality for alert templates by @zqr10159 in https://github.com/apache/hertzbeat/pull/3005</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Freeze the 'Operate' column on the right side of the list. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3009</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] always specify the char encoding in getBytes by @pjfanning in https://github.com/apache/hertzbeat/pull/3011</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]Fix page not found by @zqr10159 in https://github.com/apache/hertzbeat/pull/3014</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Modify mask issue by @myangle1120 in https://github.com/apache/hertzbeat/pull/3018</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [issue-2998] remove invalid check in isValidLabelValue by @pjfanning in https://github.com/apache/hertzbeat/pull/3015</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [MINOR UPDATE] Use Encode to string when possible (Base64) by @pjfanning in https://github.com/apache/hertzbeat/pull/3016</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] update english doc by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3028</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] Add API e2e code by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3029</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] update new contributor wall by @tomsun28 in https://github.com/apache/hertzbeat/pull/3025</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> OnlineParserTest doesn't test anything by @pjfanning in https://github.com/apache/hertzbeat/pull/3010</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] periodic alert threshold by @tomsun28 in https://github.com/apache/hertzbeat/pull/3024</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix and enable some unit tests. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3031</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add pagination and name-based search functionality in notification module by @yunfan24 in https://github.com/apache/hertzbeat/pull/2948</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fixed the bug in the threshold rules search box. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3034</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Replaced hardcoded text with internationalized string. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3035</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [update] upgrade actions/upload-artifact to v4 by @yunfan24 in https://github.com/apache/hertzbeat/pull/3046</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Search ignores case sensitivity. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3042</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Add sse support for alert center, no need to manually refresh the page, add slide-in animation by @zqr10159 in https://github.com/apache/hertzbeat/pull/3051</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [alert] support multi query expr threshold  by @tomsun28 in https://github.com/apache/hertzbeat/pull/3054</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">improve</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">alert-center</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: enhance alert card animations and interactions by @zqr10159 in https://github.com/apache/hertzbeat/pull/3055</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update theme ui color  by @tomsun28 in https://github.com/apache/hertzbeat/pull/3057</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix the issue where the monitoring status is not updated. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3056</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix]style(alert-center): enhance 3D transformation and z-index layers by @zqr10159 in https://github.com/apache/hertzbeat/pull/3059</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature]Add zookeeper e2e code by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3030</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add Sftp config for monitor by @MasamiYui in https://github.com/apache/hertzbeat/pull/3038</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add Japanese by @wanhao23 in https://github.com/apache/hertzbeat/pull/3013</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix singleton not support remove, search id error, audio fetch 401 by @tomsun28 in https://github.com/apache/hertzbeat/pull/3062</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [API DOC] Change Swagger description by @pwallk in https://github.com/apache/hertzbeat/pull/3061</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] update ui theme by @tomsun28 in https://github.com/apache/hertzbeat/pull/3064</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support SSH Tunnel by @pwallk in https://github.com/apache/hertzbeat/pull/3060</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Complete the missing labels in the i18n file. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3065</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature]Add Chinese check by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3066</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Refactor SMS sending and replace Tencent Cloud SDK with HTTP API. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3063</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Bugfix] fix when the monitor is modified, the status is erroneously changed by @pwallk in https://github.com/apache/hertzbeat/pull/3067</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url\" style=\"color:#36acaa\">[</span><span class=\"token url content\" style=\"color:#36acaa\">improve</span><span class=\"token url\" style=\"color:#36acaa\">](</span><span class=\"token url\" style=\"color:#36acaa\">web-app</span><span class=\"token url\" style=\"color:#36acaa\">)</span><span class=\"token plain\">: update monitor chart configuration and springboot GreptimeDB version by @zqr10159 in https://github.com/apache/hertzbeat/pull/3071</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Update the SMS configuration document. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3073</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] SMS notification supports unisms. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3077</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] update and fix alert ui when theme dark by @tomsun28 in https://github.com/apache/hertzbeat/pull/3082</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Improve and unify the search. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3085</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] supports alibaba SMS. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3084</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] optimize kafka collect test by @Rancho-7 in https://github.com/apache/hertzbeat/pull/3093</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> correct home's new_committer_process by @a-little-fool in https://github.com/apache/hertzbeat/pull/3094</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] kafka client detect error by @Rancho-7 in https://github.com/apache/hertzbeat/pull/3088</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Doc]Improve openai doc by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3097</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Improve] Message notification prompt optimization by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3095</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] fix web oom crash when backend api can not access by @tomsun28 in https://github.com/apache/hertzbeat/pull/3100</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [Feature] Add deepseek Api Monitor by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3096</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> feat/adding-ptBR-translation by @yasminvo in https://github.com/apache/hertzbeat/pull/3098</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix alert sse illegal state exception by @tomsun28 in https://github.com/apache/hertzbeat/pull/3106</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix exception thrown when searching for CollectRep.Field in the list by @JuJinPark in https://github.com/apache/hertzbeat/pull/3109</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [type: fix] #3090 garbled characters by @notbugggg in https://github.com/apache/hertzbeat/pull/3113</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc]fix link by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3123</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add GSOC doc by @zhangshenghang in https://github.com/apache/hertzbeat/pull/3122</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add alibaba SMS and unisms documentation. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3114</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] support reuse jdbc connection switch by @tomsun28 in https://github.com/apache/hertzbeat/pull/3101</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] fix monitor define param wrong placeholder tip by @tomsun28 in https://github.com/apache/hertzbeat/pull/3118</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix swagger opening exception that Failed to load API definition. (#3127) by @yyahang in https://github.com/apache/hertzbeat/pull/3129</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] welcome new committer and contributor by @tomsun28 in https://github.com/apache/hertzbeat/pull/3132</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] add smslocal sms notification by @a-little-fool in https://github.com/apache/hertzbeat/pull/3135</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Optimize the progress display of monitoring imports by @MasamiYui in https://github.com/apache/hertzbeat/pull/3120</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] fix potential memory leakage and content length issues. by @tomsun28 in https://github.com/apache/hertzbeat/pull/3128</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix overflow arrow buffer index by @tomsun28 in https://github.com/apache/hertzbeat/pull/3137</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] improve plugin upload  by @LiuTianyou in https://github.com/apache/hertzbeat/pull/3139</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add new committer blog by @yunfan24 in https://github.com/apache/hertzbeat/pull/3140</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Configuring gitpod with java by @kerwin612 in https://github.com/apache/hertzbeat/pull/3141</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Fix the issue of the empty dropdown menu on the Kanban board page. by @kerwin612 in https://github.com/apache/hertzbeat/pull/3142</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Add AWS sms client  by @JuJinPark in https://github.com/apache/hertzbeat/pull/3134</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support skywalking alert source by @MasamiYui in https://github.com/apache/hertzbeat/pull/3144</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] support SSH proxy jump connections by @LL-LIN in https://github.com/apache/hertzbeat/pull/3138</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] support bind metrics label and others into alert by @tomsun28 in https://github.com/apache/hertzbeat/pull/3146</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fixed #3112, disappear left menu tree item when restart service by @notbugggg in https://github.com/apache/hertzbeat/pull/3116</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix collect dispatch error by @tomsun28 in https://github.com/apache/hertzbeat/pull/3150</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] Merge SMS configuration class. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3148</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [webapp] fix less style file over max build error by @tomsun28 in https://github.com/apache/hertzbeat/pull/3151</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix nightly docker build github action by @tomsun28 in https://github.com/apache/hertzbeat/pull/3153</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Supports sending messages to a specific Telegram group topic.(#3079) by @bigcyy in https://github.com/apache/hertzbeat/pull/3143</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> Abstract Redundant Input Components into ConfigurableFieldComponent for Unified Management by @kerwin612 in https://github.com/apache/hertzbeat/pull/3152</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] Support TencentCloud alert source by @bigcyy in https://github.com/apache/hertzbeat/pull/3149</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> </span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">[</span><span class=\"token url-reference url variable\" style=\"color:#36acaa\">bugfix</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">]</span><span class=\"token url-reference url punctuation\" style=\"color:#393A34\">:</span><span class=\"token url-reference url\" style=\"color:#36acaa\"> fix</span><span class=\"token plain\"> incomplete class documentation in AppServiceImpl by @bigcyy in https://github.com/apache/hertzbeat/pull/3162</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] Fix http header being incorrectly encoded. by @yunfan24 in https://github.com/apache/hertzbeat/pull/3108</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] retain sorting state after monitor list auto-refresh by @LL-LIN in https://github.com/apache/hertzbeat/pull/3156</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] add twilio sms client support by @sarthakeash in https://github.com/apache/hertzbeat/pull/3159</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [doc] Add alert integration japanese i18 by @MasamiYui in https://github.com/apache/hertzbeat/pull/3164</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [release] update release version 1.7.0 version and docs by @tomsun28 in https://github.com/apache/hertzbeat/pull/3165</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [feature] implement labels-based monitors filtering in bulletin creation flow by @LL-LIN in https://github.com/apache/hertzbeat/pull/3161</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix postgre mount error, use mariadb instead of mysql in compose by @tomsun28 in https://github.com/apache/hertzbeat/pull/3168</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [bugfix] fix bind Labels are not updated when the Alarm Severity switches by @bigcyy in https://github.com/apache/hertzbeat/pull/3170</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update git archive export ignore by @tomsun28 in https://github.com/apache/hertzbeat/pull/3172</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token list punctuation\" style=\"color:#393A34\">*</span><span class=\"token plain\"> [improve] update notice copyright years by @tomsun28 in https://github.com/apache/hertzbeat/pull/3171</span><br></span></code></pre></div></div>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"apache-hertzbeat\">Apache HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0#apache-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><strong>Repository URL:</strong></p>\n<p><a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://github.com/apache/hertzbeat</a></p>\n<p><strong>Official Website:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/</a></p>\n<p><strong>Apache HertzBeat™ Download Link:</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/download\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/download</a></p>\n<p><strong>Apache HertzBeat™ Docker Images:</strong></p>\n<p>Apache HertzBeat™ provides Docker images for each release, available on Docker Hub:</p>\n<ul>\n<li class=\"\">HertzBeat: <a href=\"https://hub.docker.com/r/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat</a></li>\n<li class=\"\">HertzBeat Collector: <a href=\"https://hub.docker.com/r/apache/hertzbeat-collector\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hub.docker.com/r/apache/hertzbeat-collector</a></li>\n</ul>\n<p><strong>How to Contribute to the Apache HertzBeat™ Open Source Community?</strong></p>\n<p><a href=\"https://hertzbeat.apache.org/docs/community/contribution\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://hertzbeat.apache.org/docs/community/contribution</a></p>",
            "url": "https://hertzbeat.apache.org/blog/2025/04/10/hertzbeat-v1.7.0",
            "title": "Announcement of Apache HertzBeat™ 1.7.0 Release",
            "summary": "Dear Community Members,",
            "date_modified": "2025-04-10T00:00:00.000Z",
            "author": {
                "name": "tomsun28",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "release"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/04/06/new-pmc",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"from-committer-to-pmc-the-transformation-and-growth-of-roles\">From Committer to PMC: The Transformation and Growth of Roles<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#from-committer-to-pmc-the-transformation-and-growth-of-roles\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>A year ago, when I received the notification of becoming an Apache HertzBeat™ <strong>Committer</strong>, the joy and sense of mission I felt are still vivid in my memory. At that time, I was more focused on specific technical implementations and feature developments. Now, being invited to join the <strong>PMC</strong> means that I need to view the project's development from a more comprehensive perspective. This is not only an acknowledgment of my participation in open source but also a call for future responsibilities.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"in-depth-participation-accumulation-during-the-committer-period\">In-depth Participation: Accumulation during the Committer Period<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#in-depth-participation-accumulation-during-the-committer-period\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>After becoming a Committer, my daily work changed significantly:</p>\n<ul>\n<li class=\"\"><strong>Code review became the norm</strong>: From the initial simple PR reviews to the ability to systematically evaluate code quality, the rationality of the architecture, and consistency with the overall project direction.</li>\n<li class=\"\"><strong>Tighter community collaboration</strong>: I started to regularly participate in community meetings, assist new contributors in solving problems, and even take the lead in the development and implementation of certain features.</li>\n<li class=\"\"><strong>Participation in technical decision-making</strong>: On key issues such as monitoring protocol support and storage engine optimization, I began to put forward my own opinions and jointly develop implementation plans with the core team.</li>\n</ul>\n<p>During this period, I deeply realized that <strong>the vitality of an open source project lies not only in the code but also in community collaboration and trust</strong>. Every code merge and every problem discussion are minor adjustments to the project's direction, and the role of the Committer gave me the opportunity to be involved.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"becoming-a-pmc-the-upgrade-of-responsibilities-and-challenges\">Becoming a PMC: The Upgrade of Responsibilities and Challenges<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#becoming-a-pmc-the-upgrade-of-responsibilities-and-challenges\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>The responsibilities of the PPMC go far beyond the code level. It requires members to have a deeper understanding and thinking about the project's <strong>technical direction, community governance, and long-term development</strong>. When I received the PPMC invitation, I felt excited but also realized that I needed to face new challenges:</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-participation-in-technical-strategy\">1. Participation in Technical Strategy<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#1-participation-in-technical-strategy\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>As a PMC, I need to jointly plan the long-term roadmap of HertzBeat with other members. For example:</p>\n<ul>\n<li class=\"\"><strong>Performance optimization</strong>: In the face of large-scale monitoring scenarios, how to optimize storage and query efficiency.</li>\n<li class=\"\"><strong>Enhanced scalability</strong>: How to design a more flexible plugin mechanism to facilitate the community to contribute new monitoring types.</li>\n</ul>\n<p>These issues are no longer simple code implementations but involve in-depth discussions on technical selection, community resource allocation, and even project positioning.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-community-governance-and-health\">2. Community Governance and Health<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#2-community-governance-and-health\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>The PPMC needs to pay attention to the long-term healthy development of the community, including:</p>\n<ul>\n<li class=\"\"><strong>Contributor experience</strong>: How to optimize the documentation and lower the entry threshold for new members.</li>\n<li class=\"\"><strong>Community culture</strong>: Ensure a friendly discussion atmosphere and that conflicts can be properly resolved.</li>\n<li class=\"\"><strong>Sustainable development</strong>: Motivate long-term contributors while attracting new blood.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"personal-growth-the-transformation-of-skills-and-mentality\">Personal Growth: The Transformation of Skills and Mentality<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#personal-growth-the-transformation-of-skills-and-mentality\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>This year's experience has improved me in multiple dimensions:</p>\n<ul>\n<li class=\"\"><strong>Technical breadth</strong>: From focusing on specific functions to understanding the overall architecture of the distributed monitoring system.</li>\n<li class=\"\"><strong>Soft skills</strong>: Learned how to communicate effectively, coordinate different opinions, and promote community consensus.</li>\n<li class=\"\"><strong>Project management</strong>: Understood the operation mode of open source projects and balanced the ideal and practical constraints.</li>\n</ul>\n<p>The most profound realization is that <strong>in the open source community, technical ability is just the foundation, and the real value lies in whether you can create achievements greater than the individual through collaboration</strong>.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"future-prospects-moving-forward-with-hertzbeat\">Future Prospects: Moving Forward with HertzBeat<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#future-prospects-moving-forward-with-hertzbeat\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>As a newly appointed PMC, I have several key directions for the future:</p>\n<ol>\n<li class=\"\"><strong>Promote HertzBeat to become an important choice in the field of cloud-native monitoring</strong>, especially to form a differentiated advantage in terms of lightweight and ease of use.</li>\n<li class=\"\"><strong>Build a more active contributor community</strong> and cultivate core contributors through mentorship programs, regular activities, and other means.</li>\n<li class=\"\"><strong>Improve the project governance process</strong> to make decision-making more transparent and participation smoother.</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"acknowledgments-and-encouragement\">Acknowledgments and Encouragement<a href=\"https://hertzbeat.apache.org/blog/2025/04/06/new-pmc#acknowledgments-and-encouragement\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>I would like to especially thank <strong>Tom</strong> for his guidance and all community partners for their support. The Apache Way emphasizes that \"community is more important than code\", and this concept has deeply influenced my way of working.</p>\n<p>Finally, I want to share with you who are reading this: <strong>Open source is a long-lasting and warm journey. There is no need to pursue quick success. Just keep contributing, and the rewards will come naturally</strong>. I look forward to meeting more like-minded friends in the HertzBeat community!</p>\n<p>As we often say: <strong>\"Participating in open source is to make technology better, not to make life busier\"</strong> —— Let's encourage each other 😊</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/04/06/new-pmc",
            "title": "From Commiter to PMC： The Journey of Growth at Apache HertzBeat™",
            "summary": "From Committer to PMC: The Transformation and Growth of Roles",
            "date_modified": "2025-04-06T00:00:00.000Z",
            "author": {
                "name": "zhangshenghang",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"behind-the-scenes-of-hertzbeat-how-metric-collection-works\">Behind the Scenes of HertzBeat: How Metric Collection Works<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#behind-the-scenes-of-hertzbeat-how-metric-collection-works\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>HertzBeat is an open-source, real-time monitoring system designed for flexibility and ease of use. But how exactly does it collect, process, and store metrics from various systems?</p>\n<p>In this post, we’ll walk through the internal architecture behind <strong>HertzBeat’s metric collection pipeline</strong> — from job distribution to alerting and storage — with the help of a high-level system diagram.</p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"hertzbeats-metric-collection-architecture\">HertzBeat’s Metric Collection Architecture<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#hertzbeats-metric-collection-architecture\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p><img decoding=\"async\" loading=\"lazy\" alt=\"HertzBeat Architecture\" src=\"https://hertzbeat.apache.org/assets/images/hertzbeat-metrics-collection-arch-7c804671e1309b2b4227976d69ad515c.png\" width=\"2796\" height=\"1256\" class=\"img_O5Rn\"></p>\n<blockquote>\n<p><strong>Figure:</strong> High-level architecture of HertzBeat's metric collection system. The Manager handles job scheduling, alerting, and storage, while Collectors (external or internal) perform the actual metric collection. Communication between the Manager and Collectors uses a custom Netty TCP protocol.</p>\n</blockquote>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-job-distribution-assigning-what-to-monitor\">1. Job Distribution: Assigning What to Monitor<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#1-job-distribution-assigning-what-to-monitor\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>When the <strong>Manager</strong> component starts, it loads monitoring targets from the database. These targets define the host, collection interval, and other parameters.</p>\n<p>To distribute the workload, the Manager sends jobs to <strong>external Collectors</strong> over a custom <strong>Netty-based TCP protocol</strong>. The <code>CollectJobScheduling</code> module handles this logic using <strong>consistent hashing</strong>, ensuring jobs are evenly distributed across collectors.</p>\n<blockquote>\n<p>💡 HertzBeat also includes a built-in <strong>main collector</strong> (identified as <code>MAIN_COLLECTOR_NODE</code>) that runs directly inside the Manager. This allows HertzBeat to operate in <strong>standalone mode</strong> without requiring any external collectors.</p>\n</blockquote>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-task-scheduling-when-to-monitor\">2. Task Scheduling: When to Monitor<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#2-task-scheduling-when-to-monitor\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Once a Collector receives a job, it registers it with the <strong><code>TimerDispatch</code></strong> system.</p>\n<ul>\n<li class=\"\">For <strong>external collectors</strong>, the Manager sends the task via the TCP connection.</li>\n<li class=\"\">For the <strong>main collector</strong>, the Manager directly invokes <code>CollectJobService</code> within the same process.</li>\n</ul>\n<p>Each Collector runs a <strong><code>Timer</code></strong> in a background thread, which schedules tasks according to their configured intervals. When the time is up, the timer triggers a <code>TimerTask</code> to begin metric collection.</p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-task-execution-how-metrics-are-collected\">3. Task Execution: How Metrics Are Collected<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#3-task-execution-how-metrics-are-collected\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>When a <code>TimerTask</code> is triggered, it creates a <code>MetricsCollect</code> task and passes it to <code>MetricsTaskDispatch</code>, which places it in the <strong><code>MetricsCollectorQueue</code></strong>.</p>\n<ul>\n<li class=\"\">A dedicated thread (<code>CommonDispatcher</code>) continuously polls this queue.</li>\n<li class=\"\">Tasks are executed by a <strong>worker thread pool</strong>, allowing multiple metric collections to run concurrently.</li>\n<li class=\"\">Each task uses a specific <strong>collector strategy</strong> (e.g., HTTP, JDBC, SSH) to fetch metrics from the target system.</li>\n</ul>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"4-result-processing-what-happens-to-collected-data\">4. Result Processing: What Happens to Collected Data<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#4-result-processing-what-happens-to-collected-data\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Once metrics are collected, the results are processed by the <strong><code>CollectDataDispatch</code></strong> module.</p>\n<ul>\n<li class=\"\">If the task is recurring, it is rescheduled via <code>TimerDispatch</code>.</li>\n<li class=\"\">Results are added to a <strong><code>CommonDataQueue</code></strong> for further handling.</li>\n</ul>\n<p>For external collectors, results are sent <strong>back to the Manager</strong> via the Netty TCP connection. For the main collector, results are forwarded <strong>directly</strong> to the next processing stage without network overhead.</p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"5-alerting--storage-making-metrics-useful\">5. Alerting &amp; Storage: Making Metrics Useful<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#5-alerting--storage-making-metrics-useful\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>The Manager receives metric data and pushes it into the <code>MetricsDataToAlertQueue</code>, where it is processed through two main pipelines:</p>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-alerting\">🔔 Alerting<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#-alerting\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\">The <code>RealTimeAlertCalculator</code> consumes metrics from the alert queue.</li>\n<li class=\"\">It checks each metric against user-defined alert rules and triggers alerts if conditions are met.</li>\n</ul>\n<h4 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-storage\">🧠 Storage<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#-storage\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h4>\n<ul>\n<li class=\"\">After alert evaluation, metrics are added to the <code>MetricsDataToStorageQueue</code>.</li>\n<li class=\"\">A background thread (<code>DataStorageDispatch</code>) processes this queue and stores the metrics in a database for long-term analysis and dashboard visualization.</li>\n</ul>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"standalone-mode-no-external-collectors-required\">Standalone Mode: No External Collectors Required<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#standalone-mode-no-external-collectors-required\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Thanks to the built-in <strong>main collector</strong>, HertzBeat can operate entirely in standalone mode. This is especially useful for testing, small deployments, or quick setup. All core components — job scheduling, collection, alerting, and storage — run within a single process.</p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-conclusion\">🧠 Conclusion<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#-conclusion\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>HertzBeat’s metric collection system is designed for <strong>performance, scalability, and flexibility</strong>. With its:</p>\n<ul>\n<li class=\"\"><strong>Queue-based, multi-threaded architecture</strong></li>\n<li class=\"\"><strong>Persistent TCP connections</strong> for reliable job/result flow</li>\n<li class=\"\"><strong>Built-in main collector</strong> for standalone operation</li>\n</ul>\n<p>it handles large-scale monitoring workloads with minimal overhead and high efficiency.</p>\n<hr>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"-whats-next\">🙌 What’s Next?<a href=\"https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work#-whats-next\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>If you're curious to explore more:</p>\n<ul>\n<li class=\"\">⭐️ <a href=\"https://github.com/apache/hertzbeat\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Star the project on GitHub</a></li>\n<li class=\"\">🤝 <a href=\"https://github.com/apache/hertzbeat/issues\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Contribute or open an issue</a></li>\n</ul>",
            "url": "https://hertzbeat.apache.org/blog/2025/03/30/how-does-metrics-collection-work",
            "title": "Behind the Scenes of HertzBeat: How Metric Collection Works",
            "summary": "Behind the Scenes of HertzBeat: How Metric Collection Works",
            "date_modified": "2025-03-30T00:00:00.000Z",
            "author": {
                "name": "JuJinPark",
                "url": "https://github.com/JuJinPark"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/03/10/new-committer",
            "content_html": "<p>🎉 Hello everyone. I'm very glad to receive an invitation from the Apache HertzBeat™ community and officially become a Committer of the project!</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"my-open-source-journey\">My Open Source Journey<a href=\"https://hertzbeat.apache.org/blog/2025/03/10/new-committer#my-open-source-journey\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>As a senior undergraduate student, my interest in open source began in my sophomore year. However, early attempts were challenging—even getting projects to run smoothly was difficult, which once made me hesitant to dive deeper. That changed when I discovered HertzBeat in a tech community.</p>\n<p>HertzBeat's detailed contribution guidelines significantly lowered the entry barrier. Thanks to those who paved the way, I got the project running in just a few steps. Its graphical interface helped me quickly grasp the business logic. Later, I watched Tom's introductory video on Bilibili, which deepened my understanding.</p>\n<p>Starting with bug fixes, I gradually explored the codebase through breakpoint debugging and log analysis. What kept me motivated was the community's responsiveness—my first PR was merged on the same day, and my GitHub ID appeared in the contributors list the next morning. This positive feedback loop was incredibly encouraging.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"entry-points-for-open-source-participation\">Entry Points for Open Source Participation<a href=\"https://hertzbeat.apache.org/blog/2025/03/10/new-committer#entry-points-for-open-source-participation\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>For developers looking to contribute, here are my suggestions:</p>\n<ol>\n<li class=\"\"><strong>Start from a user's perspective</strong>: Use the project first, then identify optimizations like UI improvements (pagination, fuzzy search). Even typo fixes are welcome!</li>\n<li class=\"\"><strong>Technical debt treasure hunt</strong>: Search globally for <code>TODO</code>/<code>FIXME</code> comments to uncover \"hidden quests\" left by predecessors.</li>\n<li class=\"\"><strong>Watch Issues/Discussions</strong>: Stay updated through GitHub subscriptions or community chats. Engage in discussions and tackle interesting problems.</li>\n<li class=\"\"><strong>Documentation contributions</strong>: Fix typos, broken links, or missing translations—these are great starting points.</li>\n<li class=\"\"><strong>Enhance testing</strong>: Add unit/E2E tests to improve coverage and project stability.</li>\n<li class=\"\"><strong>Be proactive</strong>: Join developer groups, subscribe to mailing lists, or attend project meetings. Express your interests and align contributions with the project roadmap.</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"personal-growth\">Personal Growth<a href=\"https://hertzbeat.apache.org/blog/2025/03/10/new-committer#personal-growth\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Contributing to HertzBeat taught me the essence of geek culture—every line of code and detail is meticulously crafted, not just \"good enough.\" This mindset has elevated my development skills.</p>\n<p>Open source has also broadened my horizons. Previously, \"Apache\" only existed in my project dependencies. Through the community, I learned about the Apache Software Foundation's operations—and now I'm part of an ASF project myself!</p>\n<p>Most importantly, I've connected with experts from diverse regions and industries. Their experiences are invaluable treasures to me.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"closing-thoughts\">Closing Thoughts<a href=\"https://hertzbeat.apache.org/blog/2025/03/10/new-committer#closing-thoughts\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Thank you to the community and everyone who reviewed my code! Wishing Apache HertzBeat™ a successful graduation from the Apache Incubator and continued growth! 🚀</p>",
            "url": "https://hertzbeat.apache.org/blog/2025/03/10/new-committer",
            "title": "Warmly Welcome HertzBeat's New Community Committer!",
            "summary": "🎉 Hello everyone. I'm very glad to receive an invitation from the Apache HertzBeat™ community and officially become a Committer of the project!",
            "date_modified": "2025-03-10T00:00:00.000Z",
            "author": {
                "name": "yunfan24",
                "url": "https://github.com/yunfan24"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"the-origin-and-purpose-of-gsoc\">The Origin and Purpose of GSOC<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#the-origin-and-purpose-of-gsoc\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>GSOC, namely Google Summer of Code, is a global initiative launched by Google. It aims to encourage students to participate in the development of open-source software projects. Here is a detailed introduction:</p>\n<ul>\n<li class=\"\">GSOC started in 2005. Initially, it was a project established by Google to promote the development of the open-source community and encourage more students to engage in the development and innovation of open-source software. Through this project, Google hopes to inject fresh blood into the open-source world, enabling students to enhance their technical capabilities through practice, and at the same time, bring new ideas and contributions to open-source projects.</li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"task-an-ai-agent-for-monitoring-information-interaction-based-on-the-mcp-protocol\">Task: An AI Agent for Monitoring Information Interaction Based on the MCP Protocol<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#task-an-ai-agent-for-monitoring-information-interaction-based-on-the-mcp-protocol\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><strong>Website</strong>: <code>https://hertzbeat.apache.org/</code></p>\n<p><strong>Github</strong>: <code>http://github.com/apache/hertzbeat/</code></p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"background\">Background<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#background\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Apache HertzBeat™ is an open-source real-time monitoring tool that supports a wide range of monitoring targets, including web services, databases, middleware, and more. It is characterized by high performance, scalability, and security.</p>\n<p>With the continuous advancement of artificial intelligence (AI) technology, integrating AI with monitoring systems can significantly improve their usability and interactivity. By developing an AI agent based on the Model Context Protocol (MCP), we aim to enable conversational interaction for querying monitoring information, adding new monitoring tasks, and retrieving monitoring metrics. This will provide a more user-friendly and intelligent monitoring management experience.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"functional-requirements\">Functional Requirements<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#functional-requirements\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"query-monitoring-and-alarm-information\">Query Monitoring and Alarm Information<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#query-monitoring-and-alarm-information\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ol>\n<li class=\"\">\n<p><strong>Monitoring Item Status Monitoring</strong>\nBe able to obtain the status of monitoring items through natural language;\nFor example: Which monitoring items are currently abnormal? It should inform the user which monitoring items are abnormal and the time when the abnormality occurred.</p>\n</li>\n<li class=\"\">\n<p><strong>Search for Metric Data</strong>\nBe able to obtain metric data through natural language;\nFor example: a. Which servers currently have a CPU usage rate exceeding 80%?\nb. Display the CPU usage of server 192.168.1.1 in the last day in the form of a chart.</p>\n</li>\n<li class=\"\">\n<p><strong>Alarm Data</strong>\nObtain alarm data through natural language;\nFor example: Which monitoring alarms have been more frequent recently?</p>\n</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"add-new-monitoring-tasks\">Add New Monitoring Tasks<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#add-new-monitoring-tasks\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ol>\n<li class=\"\"><strong>Add New Monitoring Targets</strong>\nBe able to add new monitoring targets through natural language;\nFor example: a. I want to monitor the response time of the web service.\nb. Please help me add monitoring for the database connection pool.</li>\n<li class=\"\"><strong>Configure Alarm Thresholds</strong>\nBe able to configure alarm thresholds through natural language;\nFor example: a. Trigger an alarm when the web service response time exceeds 5 seconds.\nb. Send a notification when the database connection pool usage rate exceeds 90%.</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"considerations-during-design\">Considerations During Design<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#considerations-during-design\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ol>\n<li class=\"\">There are many data sources supported by the underlying storage. How to monitor? For example: Natural language -&gt; SQL -&gt; Query data source -&gt; Large language model.</li>\n<li class=\"\">Compatibility with large language models, supporting commonly used models.</li>\n<li class=\"\">The usability of the solution, making it convenient for users to use.</li>\n</ol>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"requirement-analysis\">Requirement Analysis<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#requirement-analysis\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Apache HertzBeat</strong>: As the core backend of the monitoring system, it provides data collection, storage, and management functions.</li>\n<li class=\"\"><strong>MCP Protocol</strong>: An open protocol that enables seamless integration between large language model (LLM) applications and external data sources and tools.</li>\n<li class=\"\"><strong>Front-end Interaction</strong>: Develop a user-friendly interface that supports voice or text input and displays monitoring information and interaction results.</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"recommended-skills\">Recommended Skills<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#recommended-skills\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Java + TypeScript</strong>: Apache HertzBeat™ is developed based on this technology stack. Therefore, mastering these technologies is crucial for integrating with HertzBeat.</li>\n<li class=\"\"><strong>SpringAi</strong>: It is recommended to use SpringAi to build the AI agent.</li>\n<li class=\"\"><strong>LLM + MCP</strong>: You need to understand large language models (LLM) and the MCP protocol. SpringAi seems to support the MCP protocol, or you can consider using the mcp-sdk directly.</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"scale\">Scale<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#scale\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<ul>\n<li class=\"\"><strong>Difficulty</strong>: Difficult</li>\n<li class=\"\"><strong>Project Scale</strong>: Approximately 350 hours</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"mentors\">Mentors<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#mentors\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>If you are interested, you can send an email to the mentors, including your solution and ideas.</p>\n<ul>\n<li class=\"\"><strong>Gong Chao</strong>: <code>gongchao@apache.org</code></li>\n<li class=\"\"><strong>Zhang Shenghang</strong>: <code>shenghang@apache.org</code></li>\n</ul>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"how-can-i-increase-my-chances-of-being-selected-as-a-gsoc-contributor\">How Can I Increase My Chances of Being Selected as a GSoC Contributor?<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#how-can-i-increase-my-chances-of-being-selected-as-a-gsoc-contributor\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<ol>\n<li class=\"\">After the list of organizations is announced, please visit the program website to view these organizations and find several organizations that interest you.</li>\n<li class=\"\">Carefully read the \"Project Ideas\" list of these organizations.</li>\n<li class=\"\">If you see an idea that interests you, please contact the organization through the organization's preferred communication method (listed on the organization's page on the GSoC website).</li>\n<li class=\"\">Communicate with the mentors and community members to determine whether this project idea is something you are willing to implement during the program. If what you do is not something you are interested in, it will not be a pleasant summer vacation for you and your mentor.</li>\n<li class=\"\">During the communication with the mentors and other members of the organization's community, you have obtained some information. Use this information to write a proposal.</li>\n<li class=\"\">Please submit the proposal as early as possible so that the mentors have time to provide feedback. You need to have time to make revisions based on their feedback and resubmit it before the deadline. Do not wait until the last minute to submit the proposal!</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2025-google-summer-of-code-timeline\">2025 Google Summer of Code Timeline<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#2025-google-summer-of-code-timeline\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>All times are Coordinated Universal Time (UTC)</p>\n<ol>\n<li class=\"\"><strong>January 27th - 18:00</strong>: Mentor organizations can start submitting applications to Google.</li>\n<li class=\"\"><strong>February 11th - 18:00</strong>: Deadline for mentor organization applications.</li>\n<li class=\"\"><strong>February 11th to 26th</strong>: Google program administrators review organization applications.</li>\n<li class=\"\"><strong>February 27th - 18:00</strong>: Release the list of approved mentor organizations.</li>\n<li class=\"\"><strong>February 27th to March 24th</strong>: Potential GSoC contributors discuss proposal ideas with the mentoring organizations.</li>\n<li class=\"\"><strong>March 24th - 18:00</strong>: Start accepting applications from Google Summer of Code contributors (i.e., GSoC contributors).</li>\n<li class=\"\"><strong>April 8th - 18:00</strong>: Deadline for GSoC contributor applications.</li>\n<li class=\"\"><strong>April 29th - 18:00</strong>: Organization administrators need to determine the ranking of GSoC contributor proposals.</li>\n<li class=\"\"><strong>May 8th - 18:00</strong>: Announce the accepted GSoC contributor projects.</li>\n<li class=\"\"><strong>May 8th to June 1st</strong>: Community interaction period. Participating Google Summer of Code contributors (GSoC contributors) get to know the mentors, read the documentation, learn relevant information, and prepare for starting the project work.</li>\n<li class=\"\"><strong>June 2nd</strong>: Start coding officially!</li>\n<li class=\"\"><strong>July 14th - 18:00</strong>: Mentors and Google Summer of Code contributors can start submitting mid-term evaluations (applicable to standard 12-week programming projects).</li>\n<li class=\"\"><strong>July 18th - 18:00</strong>: Deadline for mid-term evaluations (standard coding cycle).</li>\n<li class=\"\"><strong>July 14th to August 25th</strong>: Working stage. Under the guidance of the mentors, GSoC contributors carry out the projects.</li>\n<li class=\"\"><strong>August 25th to September 1st - 18:00</strong>: Final week. GSoC contributors submit the final results and the final mentor evaluations (standard coding cycle).</li>\n<li class=\"\"><strong>September 1st to 8th - 18:00</strong>: Mentors submit the final evaluation results of GSoC contributors (standard coding cycle).</li>\n<li class=\"\"><strong>September 1st to November 9th</strong>: GSoC contributors with an extended schedule can continue coding.</li>\n<li class=\"\"><strong>November 10th - 18:00</strong>: Deadline for all Google Summer of Code contributors to submit the final results and final evaluations.</li>\n<li class=\"\"><strong>November 17th - 18:00</strong>: Final date for mentors to submit evaluations for GSoC contributor projects with an extended deadline.</li>\n</ol>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"frequently-asked-questions-about-google-summer-of-code\">Frequently Asked Questions about Google Summer of Code<a href=\"https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025#frequently-asked-questions-about-google-summer-of-code\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><a href=\"https://developers.google.com/open-source/gsoc/faq?hl=zh-cn\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">https://developers.google.com/open-source/gsoc/faq?hl=zh-cn</a></p>",
            "url": "https://hertzbeat.apache.org/blog/2025/03/03/gsoc-2025",
            "title": "GSOC Google Summer of Code 2025 Recruitment is Underway | We Look Forward to Your Proposals",
            "summary": "The Origin and Purpose of GSOC",
            "date_modified": "2025-03-03T00:00:00.000Z",
            "author": {
                "name": "zhangshenghang",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        },
        {
            "id": "https://hertzbeat.apache.org/blog/2024/11/24/custom-development",
            "content_html": "<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"introduction-to-the-collector-module\">Introduction to the Collector Module<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#introduction-to-the-collector-module\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p><a href=\"https://hertzbeat.apache.org/assets/files/model-desc-d1a4d60dbef4934877da653ae2a1eb75.png\" target=\"_blank\" class=\"\">model-desc</a></p>\n<p>The overall structure of the Collector module can be divided into four main parts, each responsible for different tasks:</p>\n<ul>\n<li class=\"\">\n<p><strong>Collector Entry Point</strong>: This is the entry point for running the Collector module, from which collection tasks are executed after startup.</p>\n</li>\n<li class=\"\">\n<p><strong>collector-basic</strong>: This module mainly includes basic Collector implementations, such as monitoring for common protocols like HTTP and JDBC. The Collectors here typically do not require additional proprietary dependencies and can meet most basic monitoring needs.</p>\n</li>\n<li class=\"\">\n<p><strong>collector-common</strong>: This module stores some general-purpose utility classes and methods, such as shared connection pools and caching mechanisms, which other modules can reuse.</p>\n</li>\n<li class=\"\">\n<p><strong>collector-xxx</strong>: This is the extension Collector module for different services or protocols. For example, monitoring for specific services like MongoDB or RocketMQ often requires introducing their proprietary dependencies and developing within their respective modules. Below is an example of MongoDB's dependency:</p>\n<div class=\"language-xml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.mongodb`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`mongodb-driver-sync`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span></code></pre></div></div>\n</li>\n</ul>\n<p>Through this modular design, the Collector can easily be extended to adapt to various monitoring scenarios.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"adding-new-collector-monitoring\">Adding New Collector Monitoring<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#adding-new-collector-monitoring\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>Next, we will demonstrate how to develop a new Collector through the practical case of creating a <code>kafka-collector</code> module.</p>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"1-creating-the-kafka-collector-module\">1. Creating the <code>kafka-collector</code> Module<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#1-creating-the-kafka-collector-module\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>First, we need to create a new module in the project for Kafka monitoring, named <code>kafka-collector</code>. Then, modify the <code>pom.xml</code> file in this module.\n<a href=\"https://hertzbeat.apache.org/assets/files/model-create-26dd8d16e6bfc29a7cb414169a832feb.png\" target=\"_blank\" class=\"\">model-create</a></p>\n<p><strong><code>pom.xml</code> Configuration</strong></p>\n<div class=\"language-xml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token prolog\" style=\"color:#999988;font-style:italic\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">project</span><span class=\"token tag\" style=\"color:#00009f\"> </span><span class=\"token tag attr-name\" style=\"color:#00a4db\">xmlns</span><span class=\"token tag attr-value punctuation attr-equals\" style=\"color:#393A34\">=</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag attr-value\" style=\"color:#e3116c\">http://maven.apache.org/POM/4.0.0</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag\" style=\"color:#00009f\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token tag\" style=\"color:#00009f\">         </span><span class=\"token tag attr-name namespace\" style=\"color:#00a4db;opacity:0.7\">xmlns:</span><span class=\"token tag attr-name\" style=\"color:#00a4db\">xsi</span><span class=\"token tag attr-value punctuation attr-equals\" style=\"color:#393A34\">=</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag attr-value\" style=\"color:#e3116c\">http://www.w3.org/2001/XMLSchema-instance</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag\" style=\"color:#00009f\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token tag\" style=\"color:#00009f\">         </span><span class=\"token tag attr-name namespace\" style=\"color:#00a4db;opacity:0.7\">xsi:</span><span class=\"token tag attr-name\" style=\"color:#00a4db\">schemaLocation</span><span class=\"token tag attr-value punctuation attr-equals\" style=\"color:#393A34\">=</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag attr-value\" style=\"color:#e3116c\">http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd</span><span class=\"token tag attr-value punctuation\" style=\"color:#393A34\">\"</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">modelVersion</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`4.0.0`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">modelVersion</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">parent</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.apache.hertzbeat`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`hertzbeat-collector`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`2.0-SNAPSHOT`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">parent</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`hertzbeat-collector-kafka`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">name</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`${project.artifactId}`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">name</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">properties</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">maven.compiler.source</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">17</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">maven.compiler.source</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">maven.compiler.target</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">17</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">maven.compiler.target</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">project.build.sourceEncoding</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">UTF-8</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">project.build.sourceEncoding</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">properties</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependencies</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.apache.hertzbeat`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`hertzbeat-collector-common`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">scope</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`provided`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">scope</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">&lt;!-- kafka --&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.apache.kafka`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`kafka-clients`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependencies</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">project</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span></code></pre></div></div>\n<p>Points to note:</p>\n<ul>\n<li class=\"\">Set <code>artifactId</code> to <code>hertzbeat-collector-kafka</code> to maintain naming consistency.</li>\n<li class=\"\">Manually add the dependencies required for Kafka in <code>dependencies</code>.</li>\n</ul>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"2-adding-the-kafka-protocol-class\">2. Adding the Kafka Protocol Class<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#2-adding-the-kafka-protocol-class\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>To enable the Collector module to handle the Kafka monitoring protocol, we need to create a <code>KafkaProtocol</code> class to define the connection parameters for Kafka. This class should be located at <code>common/src/main/java/org/apache/hertzbeat/common/entity/job/protocol/KafkaProtocol.java</code>.</p>\n<div class=\"language-java codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token keyword\" style=\"color:#00009f\">package</span><span class=\"token plain\"> </span><span class=\"token namespace\" style=\"opacity:0.7\">org</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">apache</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">common</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">entity</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">job</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">protocol</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">lombok</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AllArgsConstructor</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">lombok</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Builder</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">lombok</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Data</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">lombok</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">NoArgsConstructor</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Data</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Builder</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@AllArgsConstructor</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@NoArgsConstructor</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">class</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaProtocol</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * IP address or domain name</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> host</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Port number</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> port</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Timeout</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> timeout</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Command</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> command</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"3-adding-kafka-support-in-metrics\">3. Adding Kafka Support in Metrics<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#3-adding-kafka-support-in-metrics\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>In the <code>common/src/main/java/org/apache/hertzbeat/common/entity/job/Metrics.java</code> class, add support for the Kafka protocol.</p>\n<div class=\"language-java codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaProtocol</span><span class=\"token plain\"> kclient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"4-adding-constants\">4. Adding Constants<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#4-adding-constants\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Define constants for the Kafka protocol in the <code>DispatchConstants</code> class.</p>\n<div class=\"language-java codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token class-name\">String</span><span class=\"token plain\"> </span><span class=\"token constant\" style=\"color:#36acaa\">PROTOCOL_KAFKA</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"kclient\"</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"5-adding-the-kafka-connection-class\">5. Adding the Kafka Connection Class<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#5-adding-the-kafka-connection-class\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>The <code>KafkaConnect</code> class is used to manage the connection logic for the Kafka Admin.</p>\n<div class=\"language-java codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token keyword\" style=\"color:#00009f\">package</span><span class=\"token plain\"> </span><span class=\"token namespace\" style=\"opacity:0.7\">org</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">apache</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">collector</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">collect</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">collector</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">collect</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">cache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AbstractConnection</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AdminClientConfig</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">KafkaAdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Properties</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">class</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaConnect</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">extends</span><span class=\"token plain\"> </span><span class=\"token class-name\">AbstractConnection</span><span class=\"token plain\">`</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">AdminClient</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">static</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaConnect</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token plain\"> brokerList</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Properties</span><span class=\"token plain\"> properties </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">Properties</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    properties</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">put</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">AdminClientConfig</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">BOOTSTRAP_SERVERS_CONFIG</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> brokerList</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    properties</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">put</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">AdminClientConfig</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">RETRIES_CONFIG</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">3</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    adminClient </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaAdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">create</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">properties</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Override</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getConnection</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Override</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">closeConnection</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">Exception</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">if</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token keyword\" style=\"color:#00009f\">this</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token plain\">adminClient </span><span class=\"token operator\" style=\"color:#393A34\">!=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">null</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">this</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token plain\">adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">close</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">static</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">synchronized</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getAdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token plain\"> brokerList</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">if</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">adminClient </span><span class=\"token operator\" style=\"color:#393A34\">==</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">null</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">Properties</span><span class=\"token plain\"> properties </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">Properties</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      properties</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">put</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">AdminClientConfig</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">BOOTSTRAP_SERVERS_CONFIG</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> brokerList</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      adminClient </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaAdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">create</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">properties</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"6-implementing-the-kafka-collection-class\">6. Implementing the Kafka Collection Class<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#6-implementing-the-kafka-collection-class\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>Inherit from the <code>AbstractCollect</code> class and implement the specific data collection logic within it. Specific logic details are not covered here.</p>\n<div class=\"language-java codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-java codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/*</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * Licensed to the Apache Software Foundation (ASF) under one or more</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * contributor license agreements.  See the NOTICE file distributed with</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * this work for additional information regarding copyright ownership.</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * The ASF licenses this file to You under the Apache License, Version 2.0</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * (the \"License\"); you may not use this file except in compliance with</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * the License.  You may obtain a copy of the License at</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> *     http://www.apache.org/licenses/LICENSE-2.0</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * Unless required by applicable law or agreed to in writing, software</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * distributed under the License is distributed on an \"AS IS\" BASIS,</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * See the License for the specific language governing permissions and</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> * limitations under the License.</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"> */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">package</span><span class=\"token plain\"> </span><span class=\"token namespace\" style=\"opacity:0.7\">org</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">apache</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">collector</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">collect</span><span class=\"token namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">lombok</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">extern</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">slf4j</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Slf4j</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">collector</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">collect</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AbstractCollect</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">collector</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">dispatch</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">DispatchConstants</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">entity</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">job</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">entity</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">job</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">protocol</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">KafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">hertzbeat</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">entity</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">message</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">CollectRep</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">AdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">DescribeTopicsResult</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">ListTopicsOptions</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">ListTopicsResult</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">OffsetSpec</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">clients</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">admin</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">TopicDescription</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">TopicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">apache</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">kafka</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">common</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">TopicPartitionInfo</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">org</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">springframework</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Assert</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Collections</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">List</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Map</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">Set</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">concurrent</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">ExecutionException</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">concurrent</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">TimeUnit</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">import</span><span class=\"token plain\"> </span><span class=\"token import namespace\" style=\"opacity:0.7\">java</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">util</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import namespace\" style=\"opacity:0.7\">concurrent</span><span class=\"token import namespace punctuation\" style=\"opacity:0.7;color:#393A34\">.</span><span class=\"token import class-name\">TimeoutException</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Slf4j</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">class</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaCollectImpl</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">extends</span><span class=\"token plain\"> </span><span class=\"token class-name\">AbstractCollect</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Override</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">preCheck</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">Metrics</span><span class=\"token plain\"> metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">IllegalArgumentException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">KafkaProtocol</span><span class=\"token plain\"> kafkaProtocol </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getKclient</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">// Ensure that metrics and kafkaProtocol are not null</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Assert</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">isTrue</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">metrics </span><span class=\"token operator\" style=\"color:#393A34\">!=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">null</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">&amp;&amp;</span><span class=\"token plain\"> kafkaProtocol </span><span class=\"token operator\" style=\"color:#393A34\">!=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">null</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"Kafka collect must have kafkaProtocol params\"</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">// Ensure that host and port are not empty</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Assert</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">hasText</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">kafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getHost</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"Kafka Protocol host is required.\"</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Assert</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">hasText</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">kafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getPort</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\"Kafka Protocol port is required.\"</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Override</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">collect</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">MetricsData</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">long</span><span class=\"token plain\"> monitorId</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> app</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">Metrics</span><span class=\"token plain\"> metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">try</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">KafkaProtocol</span><span class=\"token plain\"> kafkaProtocol </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getKclient</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">String</span><span class=\"token plain\"> command </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> kafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">boolean</span><span class=\"token plain\"> isKafkaCommand </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">SupportedCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">isKafkaCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">command</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">if</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token operator\" style=\"color:#393A34\">!</span><span class=\"token plain\">isKafkaCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        log</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">error</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token string\" style=\"color:#e3116c\">\"Unsupported command: {}\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> command</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">// Create AdminClient with the provided host and port</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">KafkaConnect</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getAdminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">kafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getHost</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">+</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">\":\"</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">+</span><span class=\"token plain\"> kafkaProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">getPort</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">// Execute the appropriate collection method based on the command</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">switch</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">SupportedCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">fromCommand</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">command</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:#00009f\">case</span><span class=\"token plain\"> </span><span class=\"token constant\" style=\"color:#36acaa\">TOPIC_DESCRIBE</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicDescribe</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">break</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:#00009f\">case</span><span class=\"token plain\"> </span><span class=\"token constant\" style=\"color:#36acaa\">TOPIC_LIST</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicList</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">break</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:#00009f\">case</span><span class=\"token plain\"> </span><span class=\"token constant\" style=\"color:#36acaa\">TOPIC_OFFSET</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">break</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token keyword\" style=\"color:#00009f\">default</span><span class=\"token operator\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          log</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">error</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token string\" style=\"color:#e3116c\">\"Unsupported command: {}\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> command</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">break</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">catch</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">InterruptedException</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">|</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> e</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      log</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">error</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token string\" style=\"color:#e3116c\">\"Kafka collect error\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> e</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Collect the earliest and latest offsets for each topic</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param builder     The MetricsData builder</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param adminClient The AdminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @throws InterruptedException If the thread is interrupted</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @throws ExecutionException   If an error occurs during execution</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">MetricsData</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">ListTopicsResult</span><span class=\"token plain\"> listTopicsResult </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listTopics</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">ListTopicsOptions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listInternal</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token boolean\" style=\"color:#36acaa\">true</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Set</span><span class=\"token plain\">`</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">String</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` names </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> listTopicsResult</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">names</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    names</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">name </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">try</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token class-name\">Map</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">String</span><span class=\"token generics punctuation\" style=\"color:#393A34\">,</span><span class=\"token generics\"> </span><span class=\"token generics class-name\">TopicDescription</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"> map </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">describeTopics</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">Collections</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">singleton</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">all</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token number\" style=\"color:#36acaa\">3L</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TimeUnit</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">SECONDS</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        map</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">key</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partitions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">extractedOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> name</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> info</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">catch</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">TimeoutException</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">|</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">|</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> e</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        log</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">warn</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token string\" style=\"color:#e3116c\">\"Topic {} get offset fail\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> name</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">extractedOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">MetricsData</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> name</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TopicDescription</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TopicPartitionInfo</span><span class=\"token plain\"> info</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">try</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">TopicPartition</span><span class=\"token plain\"> topicPartition </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">TopicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partition</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">long</span><span class=\"token plain\"> earliestOffset </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getEarliestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token keyword\" style=\"color:#00009f\">long</span><span class=\"token plain\"> latestOffset </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getLatestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> valueRowBuilder </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">newBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partition</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">earliestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">latestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      builder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addValues</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">build</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">catch</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">TimeoutException</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">|</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">|</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> e</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      log</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">warn</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token string\" style=\"color:#e3116c\">\"Topic {} get offset fail\"</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> name</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Get the earliest offset for a given topic partition</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param adminClient    The AdminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param topicPartition The TopicPartition</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @return The earliest offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">long</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getEarliestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TopicPartition</span><span class=\"token plain\"> topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TimeoutException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token plain\"> adminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listOffsets</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">Collections</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">singletonMap</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">OffsetSpec</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">earliest</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">all</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token number\" style=\"color:#36acaa\">3L</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TimeUnit</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">SECONDS</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">offset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Get the latest offset for a given topic partition</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param adminClient    The AdminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param topicPartition The TopicPartition</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @return The latest offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">long</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">getLatestOffset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TopicPartition</span><span class=\"token plain\"> topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TimeoutException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token plain\"> adminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listOffsets</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">Collections</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">singletonMap</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">OffsetSpec</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">latest</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">all</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token number\" style=\"color:#36acaa\">3L</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">TimeUnit</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">SECONDS</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">topicPartition</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">            </span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">offset</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Collect the list of topics</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param builder     The MetricsData builder</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param adminClient The AdminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">static</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicList</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">MetricsData</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">ListTopicsOptions</span><span class=\"token plain\"> options </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">ListTopicsOptions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listInternal</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token boolean\" style=\"color:#36acaa\">true</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Set</span><span class=\"token plain\">`</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">String</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` names </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listTopics</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">options</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">names</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    names</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">name </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token plain\"> valueRow </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">newBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">build</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      builder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addValues</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">valueRow</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">/**</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * Collect the description of each topic</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   *</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param builder     The MetricsData builder</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   * @param adminClient The AdminClient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">   */</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">private</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">static</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">void</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">collectTopicDescribe</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">MetricsData</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> builder</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">AdminClient</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">throws</span><span class=\"token plain\"> </span><span class=\"token class-name\">InterruptedException</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> </span><span class=\"token class-name\">ExecutionException</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">ListTopicsOptions</span><span class=\"token plain\"> options </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token keyword\" style=\"color:#00009f\">new</span><span class=\"token plain\"> </span><span class=\"token class-name\">ListTopicsOptions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    options</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listInternal</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token boolean\" style=\"color:#36acaa\">true</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">ListTopicsResult</span><span class=\"token plain\"> listTopicsResult </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">listTopics</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">options</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Set</span><span class=\"token plain\">`</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">String</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` names </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> listTopicsResult</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">names</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">DescribeTopicsResult</span><span class=\"token plain\"> describeTopicsResult </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> adminClient</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">describeTopics</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">names</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token class-name\">Map</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">String</span><span class=\"token generics punctuation\" style=\"color:#393A34\">,</span><span class=\"token generics\"> </span><span class=\"token generics class-name\">TopicDescription</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\"> map </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> describeTopicsResult</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">all</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">get</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    map</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">key</span><span class=\"token punctuation\" style=\"color:#393A34\">,</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token class-name\">List</span><span class=\"token plain\">`</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token generics class-name\">TopicPartitionInfo</span><span class=\"token generics punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` listp </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partitions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      listp</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">forEach</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info </span><span class=\"token operator\" style=\"color:#393A34\">-&gt;</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">Builder</span><span class=\"token plain\"> valueRowBuilder </span><span class=\"token operator\" style=\"color:#393A34\">=</span><span class=\"token plain\"> </span><span class=\"token class-name\">CollectRep</span><span class=\"token class-name punctuation\" style=\"color:#393A34\">.</span><span class=\"token class-name\">ValueRow</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">newBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">value</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partitions</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">size</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">partition</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">leader</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">host</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">leader</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">port</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">replicas</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">size</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addColumns</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">valueOf</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">info</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">replicas</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        builder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">addValues</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token plain\">valueRowBuilder</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token function\" style=\"color:#d73a49\">build</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token annotation punctuation\" style=\"color:#393A34\">@Override</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token keyword\" style=\"color:#00009f\">public</span><span class=\"token plain\"> </span><span class=\"token class-name\">String</span><span class=\"token plain\"> </span><span class=\"token function\" style=\"color:#d73a49\">supportProtocol</span><span class=\"token punctuation\" style=\"color:#393A34\">(</span><span class=\"token punctuation\" style=\"color:#393A34\">)</span><span class=\"token plain\"> </span><span class=\"token punctuation\" style=\"color:#393A34\">{</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token keyword\" style=\"color:#00009f\">return</span><span class=\"token plain\"> </span><span class=\"token class-name\">DispatchConstants</span><span class=\"token punctuation\" style=\"color:#393A34\">.</span><span class=\"token constant\" style=\"color:#36acaa\">PROTOCOL_KAFKA</span><span class=\"token punctuation\" style=\"color:#393A34\">;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token punctuation\" style=\"color:#393A34\">}</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"7-configuring-the-spi-service-file\">7. Configuring the SPI Service File<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#7-configuring-the-spi-service-file\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>In the <code>collector/collector/src/main/resources/META-INF/services/org.apache.hertzbeat.collector.collect.AbstractCollect</code> file, add the <code>KafkaCollectImpl</code> class.</p>\n<div class=\"language-text codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-text codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">...</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">org.apache.hertzbeat.collector.collect.kafka.KafkaCollectImpl</span><br></span></code></pre></div></div>\n<h3 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"8-adding-kafka-dependencies-to-the-collector-module\">8. Adding Kafka Dependencies to the Collector Module<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#8-adding-kafka-dependencies-to-the-collector-module\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h3>\n<p>The final step is to add the <code>kafka-collector</code> module dependency in <code>collector/collector/pom.xml</code>:</p>\n<div class=\"language-xml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.apache.hertzbeat`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`hertzbeat-collector-kafka`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`${hertzbeat.version}`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span></code></pre></div></div>\n<p>By following the above steps, we have completed the development of a Kafka Collector, from protocol definition to the final SPI configuration and dependency management, fully extending a Kafka monitoring module.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"adding-configuration-parsing-files\">Adding Configuration Parsing Files<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#adding-configuration-parsing-files\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<div class=\"language-yaml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-yaml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># Licensed to the Apache Software Foundation (ASF) under one or more</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># contributor license agreements.  See the NOTICE file distributed with</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># this work for additional information regarding copyright ownership.</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># The ASF licenses this file to You under the Apache License, Version 2.0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># (the \"License\"); you may not use this file except in compliance with</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the License.  You may obtain a copy of the License at</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">#</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">#     http://www.apache.org/licenses/LICENSE-2.0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\">#</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># Unless required by applicable law or agreed to in writing, software</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># distributed under the License is distributed on an \"AS IS\" BASIS,</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># See the License for the specific language governing permissions and</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># limitations under the License.</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># The monitoring type category: service-application service monitoring db-database monitoring custom-custom monitoring os-operating system monitoring</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">category</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> mid</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># The monitoring type e.g.: linux windows tomcat mysql aws...</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">app</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> kafka_client</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># The monitoring i18n name</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Kafka消息系统（客户端）</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Kafka Message (Client)</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-TW</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Kafka消息系統（客戶端）</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># The description and help of this monitoring type</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">help</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> HertzBeat 使用 &lt;a href=\"https</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//hertzbeat.apache.org/docs/advanced/extend</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">jmx\"</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">Kafka Admin Client`&lt;/a</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` 对 Kafka 的通用指标进行采集监控。`&lt;/span</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> HertzBeat uses &lt;a href='https</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//hertzbeat.apache.org/docs/advanced/extend</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">jmx'</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">Kafka Admin Client`&lt;/a</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` to monitor Kafka general metrics. `&lt;/span</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-TW</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> HertzBeat 使用 &lt;a href=\"https</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//hertzbeat.apache.org/docs/advanced/extend</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">jmx\"</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">Kafka Admin Client`&lt;/a</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">` 對 Kafka 的通用指標進行采集監控。`&lt;/span</span><span class=\"token punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">helpLink</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//hertzbeat.apache.org/zh</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">cn/docs/help/kafka_client</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> https</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\">//hertzbeat.apache.org/docs/help/kafka_client</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># Input params define for monitoring (render web UI by the definition)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">params</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># field-param field key</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> host</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># name-param field display i18n name</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 目标Host</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Target Host</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># type-param field type (most mapping the HTML input type)</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> host</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># required-true or false</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">required</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:#36acaa\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> port</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 端口</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Port</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> number</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># when type is number, range is required</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">range</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token string\" style=\"color:#e3116c\">'[0,65535]'</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">required</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token boolean important\" style=\"color:#36acaa\">true</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">defaultValue</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">9092</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\" style=\"display:inline-block\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># collect metrics config list</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\"></span><span class=\"token key atrule\" style=\"color:#00a4db\">metrics</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># metrics - server_info</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic_list</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题列表</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic List</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># metrics scheduling priority (0-&gt;127) -&gt; (high-&gt;low), metrics with the same priority will be scheduled in parallel</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># priority 0's metrics are availability metrics, they will be scheduled first, only if availability metrics collect successfully will the scheduling continue</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">priority</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># collect metrics content</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">fields</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># field-metric name, type-metric type (0-number, 1-string), unit-metric unit ('%', 'ms', 'MB'), label-whether it is a metrics label field</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> TopicName</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题名称</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic Name</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the protocol used for monitoring, e.g., sql, ssh, http, telnet, wmi, snmp, sdk</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">protocol</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> kclient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the config content when protocol is jmx</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">kclient</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">host</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^host^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">port</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^port^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">command</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">list</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic_detail</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题详细信息</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic Detail Info</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># metrics scheduling priority (0-&gt;127) -&gt; (high-&gt;low), metrics with the same priority will be scheduled in parallel</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># priority 0's metrics are availability metrics, they will be scheduled first, only if availability metrics collect successfully will the scheduling continue</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">priority</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># collect metrics content</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">fields</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># field-metric name, type-metric type (0-number, 1-string), unit-metric unit ('%', 'ms', 'MB'), label-whether it is a metrics label field</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> TopicName</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题名称</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic Name</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> PartitionNum</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 分区数量</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Partition Num</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> PartitionLeader</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 分区领导者</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Partition Leader</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> BrokerHost</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Broker主机</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Broker Host</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> BrokerPort</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Broker端口</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Broker Port</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ReplicationFactorSize</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 复制因子大小</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Replication Factor Size</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ReplicationFactor</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 复制因子</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Replication Factor</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the protocol used for monitoring, e.g., sql, ssh, http, telnet, wmi, snmp, sdk</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">protocol</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> kclient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the config content when protocol is jmx</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">kclient</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">host</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^host^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">port</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^port^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">command</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">describe</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">name</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic_offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题偏移量</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic Offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># metrics scheduling priority (0-&gt;127) -&gt; (high-&gt;low), metrics with the same priority will be scheduled in parallel</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># priority 0's metrics are availability metrics, they will be scheduled first, only if availability metrics collect successfully will the scheduling continue</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">priority</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># collect metrics content</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">fields</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># field-metric name, type-metric type (0-number, 1-string), unit-metric unit ('%', 'ms', 'MB'), label-whether it is a metrics label field</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> TopicName</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 主题名称</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Topic Name</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> PartitionNum</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">1</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 分区数量</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Partition Num</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> earliest</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 最早偏移量</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Earliest Offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\"> </span><span class=\"token key atrule\" style=\"color:#00a4db\">field</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> latest</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">type</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> </span><span class=\"token number\" style=\"color:#36acaa\">0</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">        </span><span class=\"token key atrule\" style=\"color:#00a4db\">i18n</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">zh-CN</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> 最新偏移量</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">          </span><span class=\"token key atrule\" style=\"color:#00a4db\">en-US</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> Latest Offset</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the protocol used for monitoring, e.g., sql, ssh, http, telnet, wmi, snmp, sdk</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">protocol</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> kclient</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token comment\" style=\"color:#999988;font-style:italic\"># the config content when protocol is jmx</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">    </span><span class=\"token key atrule\" style=\"color:#00a4db\">kclient</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">host</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^host^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">port</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> ^_^port^_^</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">      </span><span class=\"token key atrule\" style=\"color:#00a4db\">command</span><span class=\"token punctuation\" style=\"color:#393A34\">:</span><span class=\"token plain\"> topic</span><span class=\"token punctuation\" style=\"color:#393A34\">-</span><span class=\"token plain\">offset</span><br></span></code></pre></div></div>\n<p>With these steps, the custom development of the <code>collector</code> is complete. You can start the service and begin monitoring metrics according to the normal logic.</p>\n<h2 class=\"anchor anchorTargetStickyNavbar_EEOy\" id=\"development-and-debugging\">Development and Debugging<a href=\"https://hertzbeat.apache.org/blog/2024/11/24/custom-development#development-and-debugging\" class=\"hash-link\" aria-label=\"Direct link to heading\" title=\"Direct link to heading\" translate=\"no\">​</a></h2>\n<p>When starting the <code>manager</code> module locally, if the added monitoring cannot find the class, add the dependency to the <code>manager</code> module.</p>\n<p><strong>Note: When packaging and submitting code, do not submit the dependencies under the <code>manager</code> module.</strong></p>\n<div class=\"language-xml codeBlockContainer_Ojl3 theme-code-block\" style=\"--prism-color:#393A34;--prism-background-color:#f6f8fa\"><div class=\"codeBlockContent_tZae\"><pre tabindex=\"0\" class=\"prism-code language-xml codeBlock_e4yB thin-scrollbar\" style=\"color:#393A34;background-color:#f6f8fa\"><code class=\"codeBlockLines_kvg8\"><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token comment\" style=\"color:#999988;font-style:italic\">&lt;!-- collector-kafka --&gt;</span><span class=\"token plain\"></span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`org.apache.hertzbeat`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">groupId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`hertzbeat-collector-kafka`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">artifactId</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">  `</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`${hertzbeat.version}`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">version</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span><span class=\"token-line\" style=\"color:#393A34\"><span class=\"token plain\">`</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&lt;/</span><span class=\"token tag\" style=\"color:#00009f\">dependency</span><span class=\"token tag punctuation\" style=\"color:#393A34\">&gt;</span><span class=\"token plain\">`</span><br></span></code></pre></div></div>",
            "url": "https://hertzbeat.apache.org/blog/2024/11/24/custom-development",
            "title": "How to Participate in Developing Custom Collectors",
            "summary": "Introduction to the Collector Module",
            "date_modified": "2024-11-24T00:00:00.000Z",
            "author": {
                "name": "zhangshenghang",
                "url": "https://github.com/zhangshenghang"
            },
            "tags": [
                "opensource",
                "practice"
            ]
        }
    ]
}