Versions Compared

Key

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

...

Abstract

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 OzHera codebase, developers, and community into the Apache Software Foundation. We believe that incorporating OzHera into the Apache Software Foundation can foster a stronger and more diverse community.
We propose donating the source code of 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, 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 OzHera through open-source channels. Considering the problem of fragmentation and isolation among traditional observability systems, 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 OzHera is to help users discover problems within 1 minute and locate them within 5 minutes.##

Rationale

The 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 OzHera team actively participates in community collaborations, and the project's founder, ZhiYong Zhang, is also a Committer of Apache Dubbo. 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. 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, 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 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 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

...

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

Known Risks

...

Orphaned products

...

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

...

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 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 OzHera project.### **

Relationships with Other Apache Products

...

The core objective of 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/heraozhera-all/README.md]( . Following links provide more information:

...

...

...

...

Initial Source

The initial source code for OzHera is hosted at [https://github.com/XiaoMi/mone/tree/master/hera-all](https://github.com/XiaoMi/mone/tree/master/hera-all)
## External Dependencies| **Dependency** | **License** |
| --- | --- |
| 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 License

...

## Required Resources
### **Mailing lists**

...

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@apachexiaoyu@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.

...