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/ozhera-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/ozhera-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/ozhera-all

External Dependencies

DependencyLicense
Animal-sniffer-annotationsMIT License
Hamcrest-coreBSD
HdrHistogramPublic Domain, per Creative Commons CC0
HikariCPApache License, Version 2.0
LatencyUtilsPUBLIC DOMAIN
Protostuff-coreApache License, Version 2.0
accessors-smartApache License, Version 2.0
activationCommon Development and Distribution License CDDL&JAF
aggs-matrix-stats-clientApache License, Version 2.0
android-jsonApache License, Version 2.0
animal-sniffer-annotationsMIT license
annotationsApache License, Version 2.0
antPUBLIC DOMAIN
apiguardian-apiApache License, Version 2.0
armeria-junit5Apache License, Version 2.0
armeriaApache License, Version 2.0
asmBSD-3-Clause
aspectjrtEclipse Public License - v 1.0
aspectjweaverEclipse Public License - v 1.0
assertj-coreApache License, Version 2.0
auto-service-annotationsApache License, Version 2.0
automatonBSD
bcpkix-jdk15onBouncy Castle Licence
bcprov-ext-jdk15onBouncy Castle Licence
bcprov-jdk15onBouncy Castle Licence
bcutil-jdk15onBouncy Castle Licence
bucket4j-coreApache License, Version 2.0
builder-annotationsApache License, Version 2.0
byte-buddyApache License, Version 2.0
c3p0Eclipse Public License, Version 1.0&GNU Lesser General Public License, Version 2.1
cglib-nodepApache License, Version 2.0
checker-qualThe MIT License
classmateApache License, Version 2.0
commons-beanutilsApache License, Version 2.0
commons-cliThe Apache Software License, Version 2.0
commons-codecThe Apache Software License, Version 2.0
commons-collections4Apache License, Version 2.0
commons-collectionsApache License, Version 2.0
commons-compilerThe 3-Clause BSD License
commons-compressApache License, Version 2.0
commons-digesterApache License, Version 2.0
commons-ioThe Apache Software License, Version 2.0
commons-lang3Apache License, Version 2.0
commons-langApache License, Version 2.0
commons-loggingApache License, Version 2.0
commons-pool2Apache License, Version 2.0
commons-textApache License, Version 2.0
commons-validatorApache License, Version 2.0
curvesapiBSD License
disruptorApache License, Version 2.0
docker-java-apiApache License, Version 2.0
dubboApache License, Version 2.0
duct-tapeMIT License
elasticsearchApache License, Version 2.0
error_prone_annotationsApache 2.0
failureaccessApache License, Version 2.0
fastjson2Apache License, Version 2.0
fastjsonApache 2
fluent-hcApache License, Version 2.0
freemarkerBSD-style license
fuzzywuzzyGPL 2
generexApache License, Version 2.0
groovyPUBLIC DOMAIN
grpc-coreApache License, Version 2.0
gson-fireApache-2.0
gsonApache License, Version 2.0
guavaApache License, Version 2.0
hamcrest-coreNew BSD License
hamcrestBSD Licence 3
hessianThe Apache Software License, Version 1.1
hibernate-validatorApache License, Version 2.0
hppcApache License, Version 2.0
httpasyncclientApache License, Version 2.0
httpclientApache License, Version 2.0
httpcore-nioApache License, Version 2.0
httpcoreApache License, Version 2.0
hutool-allMulan Permissive Software License,Version 1
hyperscanBSD
instrumentation-apiApache License, Version 2.0
j2objc-annotationsThe Apache Software License, Version 2.0
jackson-coreApache License, Version 2.0
jaeger-clientApache License, Version 2.0
jakarta.activation-apiEDL 1.0
janinoThe 3-Clause BSD License
java-jwtThe MIT License MIT
javacpp-platformApache License, Version 2.0
javacppApache License, Version 2.0
javassistApache License 2.0
javax.annotation-apiCOMMON DEVELOPMENT AND DISTRIBUTION LICENSE CDDL
javax.mailCDDL&GPLv2
javax.servlet-apiCOMMON DEVELOPMENT AND DISTRIBUTION LICENSE CDDL
jboss-annotations-api_1.2_specCDDL or GPLv2 with exceptions
jbpt-coreGNU LESSER GENERAL PUBLIC LICENSE&jBPT
jcip-annotationsBEA licensed
jcl-over-slf4jMIT License
jcommanderApache License, Version 2.0
jctools-coreApache License, Version 2.0
jedisMIT
jetty-ioEclipse Public License - v 1.0
jlineThe 2-Clause BSD License
jnaLGPL, version 2.1
joda-convertApache License, Version 2.0
jopt-simpleThe MIT License
jose4jThe Apache Software License, Version 2.0
json-pathApache License, Version 2.0
jsqlparserApache License, Version 2.0
jsr305The Apache Software License, Version 2.0
jul-to-slf4jMIT License
junitEclipse Public License - v 1.0
kotlin-stdlibApache License, Version 2.0
kubernetes-clientApache License, Version 2.0
lang-mustache-clientApache License, Version 2.0
lettuce-coreApache License, Version 2.0
libthriftApache License, Version 2.0
listenablefutureApache License, Version 2.0
log4jApache License, Version 2.0
logback-classicEclipse Public License - v 1.0&GNU Lesser General Public License
logging-interceptorApache License, Version 2.0
lombokThe MIT License
lucene-coreApache License, Version 2.0
lz4-javaApache License, Version 2.0
mailCommon Development and Distribution License CDDL
mapper-extras-clientApache License, Version 2.0
mapstructThe Apache Software License, Version 2.0
mchange-commons-javaEclipse Public License, Version 1.0&GNU Lesser General Public License, Version 2.1
metrics-coreApache License, Version 2.0
micrometer-coreApache License, Version 2.0
mockito-coreThe MIT License
mockito-junit-jupiterThe MIT License
mongodbMIT License
msgpack-coreApache 2
mybatisThe Apache Software License, Version 2.0
mysql-connector-javaThe GNU General Public License, Version 2
nacos-apiApache License, Version 2.0
netty-allApache License, Version 2.0
nutzThe Apache Software License, Version 2.0
objenesisApache License, Version 2.0
okhttpThe Apache Software License, Version 2.0
okioThe Apache Software License, Version 2.0
opencensus-apiApache License, Version 2.0
opentelemetry-apiApache License, Version 2.0
opentest4jApache License, Version 2.0
opentracing-tracerresolverApache License, Version 2.0
opentracing-utilApache License, Version 2.0
pagehelperThe MIT License MIT
parent-join-clientApache License, Version 2.0
perfmark-apiApache License, Version 2.0
picocliApache License, Version 2.0
pinyin4jBSD
poiThe Apache Software License, Version 2.0
proto-google-common-protosApache License, Version 2.0
protobuf-javaThe 3-Clause BSD License
qdoxApache License, Version 2.0
rank-eval-clientApache License, Version 2.0
reactive-streamsCreative Commons Legal Code
reactor-coreApache License, Version 2.0
reflectionsApache License, Version 2.0
reload4jApache License, Version 2.0
resourcecify-annotationsApache License, Version 2.0
resteasy-clientApache License, Version 2.0
rocketmq-clientApache License, Version 2.0
rocksdbjniApache License, Version 2.0
simpleclientApache License, Version 2.0
slf4j-apiMIT License
snakeyamlApache License, Version 2.0
spock-coreApache License, Version 2.0
spring-bootApache License, Version 2.0
stax-apiThe Apache Software License, Version 2.0
sundr-coreApache License, Version 2.0
swagger-annotationsApache License 2.0
testcontainersMIT License
testngApache License, Version 2.0
tomcat-annotations-apiApache License, Version 2.0
toxiproxy-javaApache License, Version 2.0
truthApache License, Version 2.0
validation-apiApache License, Version 2.0
visible-assertionsMIT License
xmlbeansThe Apache Software License, Version 2.0
xmlunit-coreApache License, Version 2.0
zipkinApache License, Version 2.0
zjsonpatchThe Apache Software License, Version 2.0
zstd-jniBSD 2-Clause 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

  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.


  • No labels