Abstract


HertzBeat is an easy-to-use, open source, real-time monitoring system. It features an agentless architecture, high-performance clustering, Prometheus compatibility, and powerful custom monitoring and status page building capabilities.

Proposal

HertzBeat was born to making monitoring more easy-to-use and customizable. It is positioned as a unified monitoring platform for IT infrastructure resource. It integrates and abstracts common protocols such as http, snmp, jdbc, ssh, prometheus, jmx and more, allowing users to customize the collection of desired metric data by configuring monitoring templates. It combines monitoring, alarm, and notification features into one platform, and supports monitoring for web service, program, database, cache, os, webserver, middleware, bigdata, cloud-native, network, custom-monitoring and more.

We are actively running the HertzBeat community and look forward to organizing more community events.
Based on community consensus, we expect to donate the HertzBeat codebase to the Apache Software Foundation. We believe that introducing HertzBeat to the ASF and following the Apache Way will continue to improve the quality of the project and the vitality of the community.


Voted on submitting the proposal to the Incubator. Check here: https://github.com/dromara/hertzbeat/issues/1634

Background

Metrics have always been crucial in the field of observability. Nowadays, there are some powerful open-source monitoring projects available, such as Zabbix, Prometheus and more. In the face of a variety of data collection specifications and protocols, we hope to be able to integrate these protocols in one platform and provide a one-click out-of-the-box, does not require too much learning costs, the full web page operation, the collection and display and alarms, and is a native cluster for the open-source product. Hope to give users (operations, developers, non-technical users), one more option.
Currently, HertzBeat is running in the production environments of several users and has been widely recognized and appreciated by those users.

Rationale


Monitoring needs are not limited to developers and operators; users from all walks of life have monitoring needs. Some users want zero upfront costs and no need to write complicated configurations. They just want to point and click on a page to monitor and alert. Some users want to monitor the availability of their websites, servers, etc. Some users don't want to deploy an agent on each endpoint. Some advanced users want to customize the monitoring of the desired metrics. And there are many other users who need a status page, etc. This is why HertzBeat exists. We want to help users monitor whatever they want to monitor, such as IT infrastructure, personal NAS devices, and more.
Here are some of the features of HertzBeat:

  • Combines monitoring, alarm, and notification features into one platform, and supports monitoring for web service, program, database, cache, os, webserver, middleware, bigdata, cloud-native, network, custom and more.

  • Easy to use and agentless, web-based and with one-click monitoring and alerting, zero learning curve.

  • Makes protocols such as Http, Jmx, Ssh, Snmp, Jdbc, Prometheus configurable, allowing you to collect any metrics by simply configuring the template YML file online. Imagine being able to quickly adapt to a new monitoring type like K8s or Docker simply by configuring online with HertzBeat.

  • Compatible with the Prometheus ecosystem and more, can monitoring what Prometheus can monitoring with few clicks on webui.

  • High performance, supports horizontal expansion of multi-collector clusters, multi-isolated network monitoring and cloud-edge collaboration.

  • Provides flexible alarm threshold rules and timely notifications delivered via Discord Slack Telegram Email Dingtalk WeChat FeiShu Webhook SMS ServerChan.

  • Provides powerful status page building capabilities, easily communicate the real-time status of your service to users.

Talking about why we want to be accepted into the Apache Incubator. There is no need to hide one thing. As developers who have built an open source software, we think it would be cool if it could be added to Apache. Apache Community is more neutral and trustworthy. Because of the characteristics of this open source software, it requires a lot of monitoring type adaptation and other development work. We need to attract developers from all over the world to participate (there are currently 171 contributors) and open source together to building the ideal HertzBeat, so is also the advantage and attraction of being an apache project.

We believe the Apache foundation is a great fit as the long-term home for HertzBeat, as it provides an established process for community-driven development and decision making by consensus. This is exactly the model we want for future HertzBeat development.

Current Status

Meritocracy:

HertzBeat project started in 2021 and was open-sourced on GitHub in January 2022. The project now has 171 contributors from dozens of companies.
From the first day of open source, we have been learning coding, community, documentation, PR, issues from the Apache project. We have been learning and practicing the "Apache Way" to run our project. Users and contributors are welcomed and respected. We encourage them to participate in the community and provide quality patches and/or support that moves the project forward by rewards. Besides, we also encourage non-code contributions (documentation, events, community management, etc.). Those who provide high-quality contributions will be encouraged to become committers.

Users


So far, we have accumulated a few users, and the accrued download time is over 100K+. The representative users are Skyworth, Cmge, Zhong-zi data, iFLYTEK, TanCloud, Sgcc, some universities and so on.

Community:


HertzBeat has built an open-source community with 171 developers and released over ten versions in the past year.

Core Developers:


The core developers are all experienced, open-source developers. They have operated the HertzBeat community for over two year.

Alignment:


HertzBeat supports monitoring Apache Tomcat, Apache Flink, Apache Kafka, Apache IotDb, Apache ShenYu, Apache AifFlow, Apache ActiveMq, Apache Hive, Apache Spark, Apache Hadoop and more, supports Apache IotDb as storage. The codebase of HertzBeat is already under the Apache License 2.0. The community has been learning and practicing the Apache Way since its establishment.

Known Risks

Project Name


We have checked and believe the name HertzBeat is suitable. There are no other projects discovered using this name through patent inquiry.

Orphaned products


A few users have already deployed HertzBeat in the production environment. The developers and community maintain a healthy development routine, and the risk of the project being abandoned is minimal. We are now actively operating the community and will continue to increase the vitality of the community to attract more contributors to the community.

Inexperience with Open Source:


Some HertzBeat contributors have experience working on open source projects before and are also active committers and contributors to other Apache projects.

  • @tomsun28 (gongchao@apache.org): Apache ShenYu Committer, Apache Shiro Contributor

  • @Ceilzcx: Apache ShenYu Contributor

Length of Incubation:


Expect to enter incubation in two months and graduate in about one years.

Homogenous Developers:


The contributors are from various organizations, including Dromara, Ctrip, Alibaba, iFLYTEK, FanRuan, TanCloud, ZJU edu, HTU edu, etc. At this stage, we admit that the HertzBeat community is not diverse enough. We need to pay more attention to creating a more diverse community by nominating committers based on their contributions to the project.

Reliance on Salaried Developers:


It is expected that HertzBeat development will occur on both salaried time and on volunteer time. Some developers are paid by their employers to contribute to this project. They are all passionate about the project, and we are confident that the project will continue even if no salaried developers contribute to the project. We are committed to recruiting additional committers including non-salaried developers.

Relationships with Other Apache Products:


We supports monitoring Apache Tomcat, Apache Flink, Apache Kafka, Apache IotDb, Apache ShenYu, Apache AifFlow, Apache ActiveMq, Apache Hive, Apache Spark, Apache Hadoop and more, have integrated with Apache IotDb, Apache Kafka, and Apache Commons. We plan to have better ecological integration with other Apache projects.

A Excessive Fascination with the Apache Brand:


We are interested in joining ASF to increase our connections in the open-source world. Based on extensive collaboration, it is possible to build a community of developers and committers that live longer than the founder. Also, the Apache Brand can help encourage more organizations to use HertzBeat more confidently.

Documentation


HertzBeat has offical website. Document currently supports English and Chinese.

Initial Source


The project consists of one repository, it is available on GitHub.
Code: https://github.com/dromara/hertzbeat

Source and Intellectual Property Submission Plan


Once HertzBeat is approved to join Apache Incubator, the Initial committers will submit iCLA(s), TanCloud will sign the SGA. We will ask the top 20 contributors to sign iCLAs for IP clearance. The code is already licensed under Apache License 2.0.

External Dependencies:

As all backend code dependencies are managed using Maven, none of the external libraries need to be packaged in a source distribution.
Most of dependencies have Apache compatible licenses,and the detail as follows:

Backend:

  • Apache 2.0

    • org.apache.commons:commons-collections4

    • commons-net:commons-net

    • org.apache.httpcomponents:httpclient

    • org.apache.kafka:kafka-clients

    • org.apache.sshd:sshd-core

    • org.apache.poi:poi

    • com.github.ben-manes.caffeine:caffeine

    • cc.blynk.clickhouse:clickhouse4j

    • com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru

    • com.dameng:DmJdbcDriver18

    • cn.afterturn:easypoi-annotation

    • cn.afterturn:easypoi-spring-boot-starter

    • com.ecwid.consul:consul-api

    • io.greptime:greptimedb-grpc

    • io.greptime:greptimedb-protocol

    • com.google.code.gson:gson

    • com.google.guava:guava

    • com.huaweicloud.sdk:huaweicloud-sdk-smn

    • org.apache.iotdb:iotdb-session

    • com.fasterxml.jackson.core:jackson-annotations

    • com.jayway.jsonpath:json-path

    • io.lettuce:lettuce-core

    • com.microsoft.sqlserver:mssql-jdbc

    • org.mongodb:mongodb-driver-sync

    • com.alibaba.nacos:nacos-client

    • net.sourceforge.nekohtml:nekohtml

    • io.netty:netty-all

    • com.huaweicloud:esdk-obs-java

    • com.squareup.okhttp3:okhttp

    • org.postgresql:postgresql

    • org.apache.rocketmq:rocketmq-tools

    • org.yaml:snakeyaml

    • org.snmp4j:snmp4j

    • com.usthe.sureness:spring-boot3-starter-sureness

    • org.springframework.boot:spring-boot-autoconfigure

    • org.springframework.boot:spring-boot-configuration-processor

    • org.springframework.boot:spring-boot-starter-actuator

    • org.springframework.boot:spring-boot-starter-data-jpa

    • org.springframework.boot:spring-boot-starter-freemarker

    • org.springframework.boot:spring-boot-starter-jdbc

    • org.springframework.boot:spring-boot-starter-mail

    • org.springframework.boot:spring-boot-starter-test

    • org.springframework.boot:spring-boot-starter-thymeleaf

    • org.springframework.boot:spring-boot-starter-validation

    • org.springframework.boot:spring-boot-starter-web

    • org.springdoc:springdoc-openapi-starter-webmvc-ui

    • org.springframework:spring-jdbc

    • com.tencentcloudapi:tencentcloud-sdk-java-sms

  • MIT

    • dnsjava:dnsjava

    • org.influxdb:influxdb-java

    • com.taosdata.jdbc:taos-jdbcdriver

    • org.projectlombok:lombok

    • org.slf4j:slf4j-api

  • BSD-3-Clause

    • com.googlecode.aviator:aviator

    • com.h2database:h2

    • com.google.protobuf:protobuf-java-util

    • com.google.protobuf:protobuf-java

  • GPL 2 (will be replaced during incubation)

    • jakarta.servlet:jakarta.servlet-api

Frontend:

  • Apache 2.0

    • rxjs

    • echarts

  • MIT

    • angular

    • delon

    • ng-zorro-antd

    • ajv

    • ajv-formats

    • angular-tag-cloud-module

    • jquery

    • monaco-editor

    • screenfull

    • slick-carousel

    • zone.js

    • ngx-color-picker

    • ngx-echarts

    • ngx-countdown

    • ngx-slick-carousel

  • BSD

    • tslib

Website:

  • MIT

    • docusaurus

    • semi-ui

    • @mdx-js/react

    • react

    • react-dom

    • react-slick

    • webpack

    • clsx

    • color

    • file-loader

    • sharp

    • slick-carousel

    • swiper

    • url-loader

    • workbox-routing

    • workbox-strategies

    • algolia

Cryptography:

The proposal does not include cryptographic code.

Required Resources

Mailing lists:

Git Repositories:


From https://github.com/dromara/hertzbeat to https://github.com/apache/hertzbeat.

Issue Tracking:


The community would like to continue using GitHub Issues.

Other Resources:


The community has already chosen GitHub actions as continuous integration tools.

Initial Committers


@tomsun28 has tried to ask all contributions of HertzBeat to see if they want to act as an initial committer. And by now the below eleven show their interest whose contributions are highly remarkable.

  • Chao Gong [gongchao@apache.org] (GitHub ID = tomsun28)

  • ChenXin Zheng [1758619238@qq.com] (GitHub ID = Ceilzcx)

  • Qingran Zhao [logic10159@gmail.com] (GitHub ID = zqr10159)

  • Xingcun Gao [2922035952@qq.com] (GitHub ID = TJxiaobao)

  • Yang Zhang [zhangyang_2002@foxmail.com] (GitHub ID = ZY945)

  • Hu Dongdong [924859690@qq.com] (GitHub ID = hudongdong129)

  • Jianing Wang [1552443053@qq.com] (GitHub ID = vinci-897)

  • QingHua Wang [1252532896@qq.com] (GitHub ID = wang1027-wqh)

  • Shusheng Zhou [2030509072@qq.com] (GitHub ID = a-little-fool)

  • Chen Gao [gcwm99@gmail.com] (GitHub ID = gcdd1993)

  • Dong Xiang [saharajournal@163.com] (GitHub ID = cuipiheqiuqiu)

Sponsors

Champion:

  • Yonglun Zhang [zhangyonglun at apache dot org]

Nominated Mentors:

  • Yonglun Zhang [zhangyonglun at apache dot org]

  • Yu Xiao [xiaoyu at apache dot org]

  • Justin Mclean [jmclean at apache dot org]

  • Francis Chuang [francischuang at apache dot org]

Sponsoring Entity:


We are expecting the Apache Incubator could sponsor this project.

  • No labels