Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Abstract

Hera OzHera is an application performance monitoring platform that revolves around the application itself, integrating capabilities such as metric monitoring, distributed tracing, logging, and alerting. It automatically creates monitoring dashboards for applications, including response time, CPU and memory usage, network transfer speed, JVM status, application exceptions, container/host status, and more. This helps developers and operations personnel to accurately and efficiently discover and troubleshoot issues, as well as gain in-depth insights into various aspects of the application.

Proposal

The objective of this proposal is to bring the existing Hera OzHera codebase, developers, and community into the Apache Software Foundation. We believe that incorporating Hera OzHera into the Apache Software Foundation can foster a stronger and more diverse community.
We propose donating the source code of Hera OzHera and its related materials (documentation, wiki, etc.) to the Apache Software Foundation. These codebase and materials are already licensed under the Apache License 2.0. The current availability of these resources can be found on GitHub at: [https://github.com/XiaoMi/mone/tree/master/hera-all](https://github.com/XiaoMi/mone/tree/master/heraozhera-all).

Background

With the increasing popularity and adoption of microservices in system architecture, the complexity of observability has also grown. Traditional observability products are mostly designed independently from their own perspectives, making it difficult to seamlessly connect them from a global perspective.
For the reasons mentioned above, Hera OzHera began its design and development at Xiaomi in early 2020. After several years of evolution, it has become the de facto standard for observability at Xiaomi, and some small and medium-sized enterprises have also adopted Hea OzHera through open-source channels. Considering the problem of fragmentation and isolation among traditional observability systems, Hera OzHera is designed to integrate data from the logging, tracing, and metrics dimensions, achieving a three-in-one solution to address the aforementioned challenges. With just a few simple clicks, it can quickly trace the entire life trajectory of exceptions or errors.
The goal of Hera OzHera is to help users discover problems within 1 minute and locate them within 5 minutes.

Rationale

The Hera OzHera platform has the following core features:-

  • Embrace cloud-native

...

  • OzHera platform follows the Opentracing standard and integrates multiple popular open-source products, including OpenTelemetry, Grafana, Prometheus, ES, CAdvisor, and more. Additionally,

...

  • OzHera provides deep integration with K8S and offers a one-click deployment for operators on K8S.

...

  • Accurate: Availability Metrics

...

  • We define corresponding availability metrics for common RPC (Dubbo, HTTP, etc.) requests.

...

  • OzHera automatically extracts these request-scope metrics from tracing, and during extraction, we enhance the ability to recognize business error codes. With a single metric, we can accurately express exceptions in RPC and encapsulated business processing.

...

  • Fast: Metrics-Tracing-Logging Integration Based on the trace ID, we establish a closed-loop integration between alerts, metrics, traces, and logs. Starting from the alert card, users can quickly view the relevant chain of links and log information, significantly improving the efficiency of problem identification.

...

  • Cost-effective: Storage costs less than one-thousandth, meets 99.9% of tracing demands

...

  • OzHera identifies exceptional calls (error span, exceptional business error codes, error logs, spans with duration exceeding 1 second, etc.) and ensures the storage of entire exception trace data. For normal traces, we adopt a default sampling strategy of one in ten thousand.

...

  • Enterprise-level Observability Product We provide a comprehensive account, permission, and application management mechanism, making it easy for users to quickly implement within the enterprise and integrate with the enterprise's own account and application deployment system. It also enables fast integration with enterprise office software for alert notifications. The core links are decoupled for easy and rapid scaling. For tracing large amounts of data, we have implemented tail sampling strategies to support real-time observability requirements for high-QPS and high-performance systems.

The Hera OzHera team actively participates in community collaborations, and the project's founder, ZhiYong Zhang, is also a Committer of Apache Dubbo. Hera OzHera itself integrates many open-source components (OpenTelemetry, Grafana, Prometheus, etc.). These components excel in their individual application observability capabilities but lack a highly integrated, interconnected, and efficient cloud-native APM platform. Hera OzHera aims to be such a platform, and we believe that by joining the Apache Foundation, we can work in a more global and open manner, presenting the project as business-friendly yet neutral technology.

Current Status

Meritocracy

From the very beginning, Hera OzHera has been operating in accordance with the Apache way, adhering to standards and protocols. Outstanding contributors are the cornerstone of this project, and they include not only developers from Xiaomi and other companies but also individual developers who are encouraged to contribute. In this project, exceptional contributors are recognized and rewarded, fostering a collaborative and inclusive environment where decisions and project development are driven by capabilities and contributions.

Community

The contributors of Hera OzHera are actively involved in Apache community projects, and every member can access the project roadmap, issues, and code through various channels such as mailing lists and JIRA. By entering the Apache incubator, we believe Hera OzHera can receive broader promotion and participation from companies and individuals.

Core Developers

...

  • Zhiyong Zhang. He is the chief architect as well as a developer of the project,and a Committer of Apache Dubbo, from Xiaomi.(GitHub ID: goodjava)

...

  • Xinyan Xing. He is the founder of this project and actively invovled in many technical discussions, from Xiaomi.(GitHub ID: jifengzhilong)

...

  • JinLiang Ou. He is the founder of this project and actively invovled in many technical discussions, from Xiaomi.(GitHub ID: oujinliang)

...

  • Wenbang Shan. He is an architect as well as a developer of the project, from Xiaomi.(GitHub ID: shanwb)

...

  • Ping zhang. He is an architect as well as a developer of the project, from Xiaomi.(GitHub ID: caochengxiang)

...

  • Yang Chen. He is a developer of the project, from Kwai. (GitHub ID: Detoxify)

...

  • Peng Chen. He is a developer of the project, from JD. (GitHub ID: kongniancp)

...

  • Tao Ding. He is a developer of the project, from Xiaomi. (GitHub ID: sadadw1)

...

  • Xiaowei Zhang He is a developer of the project, from Xiaomi. (GitHub ID: wudiwodi)

...

  • Tao Wang He is a developer of the project, from Xiaomi. (GitHub ID: wtt40122)

Aligment

Hera OzHera has deeply integrated with various development frameworks, many of which come from Apache, CNCF, and other sources. We will continue to expand HeraOzHera's ecosystem.

Known Risks

Orphaned products

Hera OzHera originated from Xiaomi and is currently being used or considered for adoption by Xiaomi and several external companies. We are actively attracting more enterprises and individual developers to participate in the project and actively operating it.

Inexperience with Open Source

The project originated from Xiaomi, and the core developers are active contributors and avid users of open source. For example, some members have deeply contributed to Dubbo. Additionally, Xiaomi has considerable experience and talented individuals in the open source domain. Building upon this strong foundation, we will carry out our work and provide guidance to newcomers.

Homogenous Developers

Hera OzHera originated from Xiaomi, but the current contributors come from different companies and individuals. We are actively attracting more companies and individuals to participate in the project.

Reliance on Salaried Developers

Currently, the majority of core developers working on the Hera OzHera project are salaried by Xiaomi. We look forward to attracting more individuals and companies outside of Xiaomi to join this project, whether they are small and medium-sized enterprises or individual developers, as long as they have enthusiasm for the Hera OzHera project.

Relationships with Other Apache Products

The core objective of Hera OzHera is to become a comprehensive solution in the observability domain, with deep integration capabilities with various Apache products such as Dubbo, RocketMQ, and more.

A Excessive Fascination with the Apache Brand

We trust and respect the reputation of the Apache brand and have been actively involved with it. Our main objective is to contribute Hera as an open-source project to Apache, encouraging the participation of more companies and individuals, and providing convenience to a larger audience.

Documentation

Documentation about Linkis can be found at [https://github.com/XiaoMi/mone/blob/master/hera-all/README.md](https://github.com/XiaoMi/mone/blob/master/heraozhera-all/README.md) . Following links provide more information:-

  • Codebase at Github:

...

...

...

...

  • Issue Tracking

...

  • :

...

...

...

Initial Source

The initial source code for Hera OzHera is hosted at [https://github.com/XiaoMi/mone/tree/master/hera-all](https://github.com/XiaoMi/mone/tree/master/hera-all)

External Dependencies

...

ozhera-all

External Dependencies

DependencyLicense
Animal-sniffer-annotations

...

MIT License

...

...

Hamcrest-core

...

BSD

...

...

HdrHistogram

...

Public Domain, per Creative Commons CC0

...

...

HikariCP

...

Apache License, Version 2.0

...

...

LatencyUtils

...

PUBLIC DOMAIN

...

...

Protostuff-core

...

Apache License, Version 2.0

...

...

accessors-smart

...

Apache License, Version 2.0

...

...

activation

...

Common Development and Distribution License CDDL&JAF

...

...

aggs-matrix-stats-client

...

Apache License, Version 2.0

...

...

android-json

...

Apache License, Version 2.0

...

...

animal-sniffer-annotations

...

MIT license

...

...

annotations

...

Apache License, Version 2.0

...

...

ant

...

PUBLIC DOMAIN

...

...

apiguardian-api

...

Apache License, Version 2.0

...

...

armeria-junit5

...

Apache License, Version 2.0

...

...

armeria

...

Apache License, Version 2.0

...

...

asm

...

BSD-3-Clause

...

...

aspectjrt

...

Eclipse Public License - v 1.0

...

...

aspectjweaver

...

Eclipse Public License - v 1.0

...

...

assertj-core

...

Apache License, Version 2.0

...

...

auto-service-annotations

...

Apache License, Version 2.0

...

...

automaton

...

BSD

...

...

bcpkix-jdk15on

...

Bouncy Castle Licence

...

...

bcprov-ext-jdk15on

...

Bouncy Castle Licence

...

...

bcprov-jdk15on

...

Bouncy Castle Licence

...

...

bcutil-jdk15on

...

Bouncy Castle Licence

...

...

bucket4j-core

...

Apache License, Version 2.0

...

...

builder-annotations

...

Apache License, Version 2.0

...

...

byte-buddy

...

Apache License, Version 2.0

...

...

c3p0

...

Eclipse Public License, Version 1.0&GNU Lesser General Public License, Version 2.1

...

...

cglib-nodep

...

Apache License, Version 2.0

...

...

checker-qual

...

The MIT License

...

...

classmate

...

Apache License, Version 2.0

...

...

commons-beanutils

...

Apache License, Version 2.0

...

...

commons-cli

...

The Apache Software License, Version 2.0

...

...

commons-codec

...

The Apache Software License, Version 2.0

...

...

commons-collections4

...

Apache License, Version 2.0

...

...

commons-collections

...

Apache License, Version 2.0

...

...

commons-compiler

...

The 3-Clause BSD License

...

...

commons-compress

...

Apache License, Version 2.0

...

...

commons-digester

...

Apache License, Version 2.0

...

...

commons-io

...

The Apache Software License, Version 2.0

...

...

commons-lang3

...

Apache License, Version 2.0

...

...

commons-lang

...

Apache License, Version 2.0

...

...

commons-logging

...

Apache License, Version 2.0

...

...

commons-pool2

...

Apache License, Version 2.0

...

...

commons-text

...

Apache License, Version 2.0

...

...

commons-validator

...

Apache License, Version 2.0

...

...

curvesapi

...

BSD License

...

...

disruptor

...

Apache License, Version 2.0

...

...

docker-java-api

...

Apache License, Version 2.0

...

...

dubbo

...

Apache License, Version 2.0

...

...

duct-tape

...

MIT License

...

...

elasticsearch

...

Apache License, Version 2.0

...

...

error_prone_annotations

...

Apache 2.0

...

...

failureaccess

...

Apache License, Version 2.0

...

...

fastjson2

...

Apache License, Version 2.0

...

...

fastjson

...

Apache 2

...

...

fluent-hc

...

Apache License, Version 2.0

...

...

freemarker

...

BSD-style license

...

...

fuzzywuzzy

...

GPL 2

...

...

generex

...

Apache License, Version 2.0

...

...

groovy

...

PUBLIC DOMAIN

...

...

grpc-core

...

Apache License, Version 2.0

...

...

gson-fire

...

Apache-2.0

...

...

gson

...

Apache License, Version 2.0

...

...

guava

...

Apache License, Version 2.0

...

...

hamcrest-core

...

New BSD License

...

...

hamcrest

...

BSD Licence 3

...

...

hessian

...

The Apache Software License, Version 1.1

...

...

hibernate-validator

...

Apache License, Version 2.0

...

...

hppc

...

Apache License, Version 2.0

...

...

httpasyncclient

...

Apache License, Version 2.0

...

...

httpclient

...

Apache License, Version 2.0

...

...

httpcore-nio

...

Apache License, Version 2.0

...

...

httpcore

...

Apache License, Version 2.0

...

...

hutool-all

...

Mulan Permissive Software License,Version 1

...

...

hyperscan

...

BSD

...

...

instrumentation-api

...

Apache License, Version 2.0

...

...

j2objc-annotations

...

The Apache Software License, Version 2.0

...

...

jackson-core

...

Apache License, Version 2.0

...

...

jaeger-client

...

Apache License, Version 2.0

...

...

jakarta.activation-api

...

EDL 1.0

...

...

janino

...

The 3-Clause BSD License

...

...

java-jwt

...

The MIT License MIT

...

...

javacpp-platform

...

Apache License, Version 2.0

...

...

javacpp

...

Apache License, Version 2.0

...

...

javassist

...

Apache License 2.0

...

...

javax.annotation-api

...

COMMON DEVELOPMENT AND DISTRIBUTION LICENSE CDDL

...

...

javax.mail

...

CDDL&GPLv2

...

...

javax.servlet-api

...

COMMON DEVELOPMENT AND DISTRIBUTION LICENSE CDDL

...

...

jboss-annotations-api_1.2_spec

...

CDDL or GPLv2 with exceptions

...

...

jbpt-core

...

GNU LESSER GENERAL PUBLIC LICENSE&jBPT

...

...

jcip-annotations

...

BEA licensed

...

...

jcl-over-slf4j

...

MIT License

...

...

jcommander

...

Apache License, Version 2.0

...

...

jctools-core

...

Apache License, Version 2.0

...

...

jedis

...

MIT

...

...

jetty-io

...

Eclipse Public License - v 1.0

...

...

jline

...

The 2-Clause BSD License

...

...

jna

...

LGPL, version 2.1

...

...

joda-convert

...

Apache License, Version 2.0

...

...

jopt-simple

...

The MIT License

...

...

jose4j

...

The Apache Software License, Version 2.0

...

...

json-path

...

Apache License, Version 2.0

...

...

jsqlparser

...

Apache License, Version 2.0

...

...

jsr305

...

The Apache Software License, Version 2.0

...

...

jul-to-slf4j

...

MIT License

...

...

junit

...

Eclipse Public License - v 1.0

...

...

kotlin-stdlib

...

Apache License, Version 2.0

...

...

kubernetes-client

...

Apache License, Version 2.0

...

...

lang-mustache-client

...

Apache License, Version 2.0

...

...

lettuce-core

...

Apache License, Version 2.0

...

...

libthrift

...

Apache License, Version 2.0

...

...

listenablefuture

...

Apache License, Version 2.0

...

...

log4j

...

Apache License, Version 2.0

...

...

logback-classic

...

Eclipse Public License - v 1.0&GNU Lesser General Public License

...

...

logging-interceptor

...

Apache License, Version 2.0

...

...

lombok

...

The MIT License

...

...

lucene-core

...

Apache License, Version 2.0

...

...

lz4-java

...

Apache License, Version 2.0

...

...

mail

...

Common Development and Distribution License CDDL

...

...

mapper-extras-client

...

Apache License, Version 2.0

...

...

mapstruct

...

The Apache Software License, Version 2.0

...

...

mchange-commons-java

...

Eclipse Public License, Version 1.0&GNU Lesser General Public License, Version 2.1

...

...

metrics-core

...

Apache License, Version 2.0

...

...

micrometer-core

...

Apache License, Version 2.0

...

...

mockito-core

...

The MIT License

...

...

mockito-junit-jupiter

...

The MIT License

...

...

mongodb

...

MIT License

...

...

msgpack-core

...

Apache 2

...

...

mybatis

...

The Apache Software License, Version 2.0

...

...

mysql-connector-java

...

The GNU General Public License, Version 2

...

...

nacos-api

...

Apache License, Version 2.0

...

...

netty-all

...

Apache License, Version 2.0

...

...

nutz

...

The Apache Software License, Version 2.0

...

...

objenesis

...

Apache License, Version 2.0

...

...

okhttp

...

The Apache Software License, Version 2.0

...

...

okio

...

The Apache Software License, Version 2.0

...

...

opencensus-api

...

Apache License, Version 2.0

...

...

opentelemetry-api

...

Apache License, Version 2.0

...

...

opentest4j

...

Apache License, Version 2.0

...

...

opentracing-tracerresolver

...

Apache License, Version 2.0

...

...

opentracing-util

...

Apache License, Version 2.0

...

...

pagehelper

...

The MIT License MIT

...

...

parent-join-client

...

Apache License, Version 2.0

...

...

perfmark-api

...

Apache License, Version 2.0

...

...

picocli

...

Apache License, Version 2.0

...

...

pinyin4j

...

BSD

...

...

poi

...

The Apache Software License, Version 2.0

...

...

proto-google-common-protos

...

Apache License, Version 2.0

...

...

protobuf-java

...

The 3-Clause BSD License

...

...

qdox

...

Apache License, Version 2.0

...

...

rank-eval-client

...

Apache License, Version 2.0

...

...

reactive-streams

...

Creative Commons Legal Code

...

...

reactor-core

...

Apache License, Version 2.0

...

...

reflections

...

Apache License, Version 2.0

...

...

reload4j

...

Apache License, Version 2.0

...

...

resourcecify-annotations

...

Apache License, Version 2.0

...

...

resteasy-client

...

Apache License, Version 2.0

...

...

rocketmq-client

...

Apache License, Version 2.0

...

...

rocksdbjni

...

Apache License, Version 2.0

...

...

simpleclient

...

Apache License, Version 2.0

...

...

slf4j-api

...

MIT License

...

...

snakeyaml

...

Apache License, Version 2.0

...

...

spock-core

...

Apache License, Version 2.0

...

...

spring-boot

...

Apache License, Version 2.0

...

...

stax-api

...

The Apache Software License, Version 2.0

...

...

sundr-core

...

Apache License, Version 2.0

...

...

swagger-annotations

...

Apache License 2.0

...

...

testcontainers

...

MIT License

...

...

testng

...

Apache License, Version 2.0

...

...

tomcat-annotations-api

...

Apache License, Version 2.0

...

...

toxiproxy-java

...

Apache License, Version 2.0

...

...

truth

...

Apache License, Version 2.0

...

...

validation-api

...

Apache License, Version 2.0

...

...

visible-assertions

...

MIT License

...

...

xmlbeans

...

The Apache Software License, Version 2.0

...

...

xmlunit-core

...

Apache License, Version 2.0

...

...

zipkin

...

Apache License, Version 2.0

...

...

zjsonpatch

...

The Apache Software License, Version 2.0

...

...

zstd-jni

...

BSD 2-Clause

...

Required Resources

...

 Initial Committers

...

License

Required Resources

Mailing lists

  • dev@ozhera.apache.org

  • commits@ozhera.apache.org

  • private@ozhera.apache.org

Git Repositories:

  • github.com/apache/incubator-ozhera

  

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

  • Xinyan Xing (jifengzhilong at gmail dot com)

...

  • Zhiyong Zhang (goodjava at qq dot com)

...

  • Jinliang Ou(oujinliang at gmail dot com)

...

  • Wenbang Shan (shanwenbang at sina dot cn)

...

  • Ping Zhang (caochengxiang2 at gmail dot com)

...

  • Xiaowei Zhang (wudiwodi at gmail dot com)

...

  • Tao Wang(1136220284 at qq dot com)

...

  • Tao Ding(dingtao_242 at 126 dot com)

...

  • Yang Chen (pana_1993 at 163 dot com)

...

  • Peng Chen (chenpeng-smile at 163 dot com)

Sponsors

Champion

- Yu Xiao (xiaoyu@  Duo Zhang (zhangduo@apache.org)

Mentors

  • Yu Xiao

...

  • (xiaoyu@apache.org)
  • Duo Zhang (zhangduo@apache.org)
  • Yu Li (liyu@apache.org)
  • Kevin Ratnasekera <djkevincr@apache.org>

Sponsoring Entity

We are expecting the Apache Incubator could sponsor this project.

...