megaease / easeagent

An agent component for the Java system
Apache License 2.0
576 stars 118 forks source link
apm distributed-tracing java javaagent metrics microservices monitoring observability opentracing prometheus servicemesh spring-cloud tracing zipkin zipkin-brave

EaseAgent

A lightweight & opening Java Agent for Cloud-Native and APM system

Overview

Purpose

Principles

Features

Architecture Diagram

image

Description

Plugin Framework in core module is base on Byte buddy technology.

  1. Easeagent's plugin defines where (which classes and methods) to make enhancements by implementing the Points and what to do at the point of enhancement by implementing the Interceptor.
  2. When the program invokes the enhanced method of class defined by Points, the unique index(uid) owned by the method will be used as a parameter to call the common interface of Agent Common Method Advice, which finds the Agent Interceptor Chain by the Unique Index and calls the before method of each Interceptor in the chain in order of priority.
  3. Normally, both the Metric Interceptor and the Tracing Interceptor are in the agent interceptor chain and are called sequentially.
  4. According to call the Metric API and Tracing API in interceptors, the Metric and Tracing information will be stored in MetricRegistry and Tracing.
  5. The Reporter module will get information from MetricRegistry and Tracing and send it to Kafka.
  6. The after method of each interceptor in the Agent Interceptor Chain will be invoked in the reverse order of the before invoked at last.
  7. The tracing data can be sent to kafka server or zipkin server, the metric data can be sent to kafka server and pull by Prometheus server.

QuickStart

Get And Set Environment Variable

Setup Environment Variable and then download the latest release of easeagent.jar or build it from the source.

Setup Environment Variable

$ cd ~/easeagent #[Replace with agent path]
$ export EASE_AGENT_PATH=`pwd` # export EASE_AGENT_PATH=[Replace with agent path]
$ mkdir plugins

Download

Download easeagent.jar from releases releases.

$ curl -Lk https://github.com/megaease/easeagent/releases/latest/download/easeagent.jar -O

Build From the Source

You need Java 1.8+ and git:

Download EaseAgent with git clone https://github.com/megaease/easeagent.git.

$ cd easeagent
$ mvn clean package -Dmaven.test.skip
$ cp ./build/target/easeagent-dep.jar $EASE_AGENT_PATH/easeagent.jar

The ./build/target/easeagent-dep.jar is the agent jar with all the dependencies.

For the Windows platform, please make sure git core.autocrlf is set to false before git clone. You can use git config --global core.autocrlf false to modify core.autocrlf.

How to use easeagent.jar on host?

How to use easeagent.jar in docker?

Get Configuration file

Extracting the default configuration file.

$ cd $EASE_AGENT_PATH
$ jar xf easeagent.jar agent.properties easeagent-log4j2.xml

By default, there is an agent.properties configuration file, which is configured to print all output data to the console.

Monitor Spring Petclinic

Prerequisites

Project Details

Initialize and Start the project

$ git clone https://github.com/megaease/easeagent-spring-petclinic.git
$ cd easeagent-spring-petclinic
$ git submodule update --init
$ ./spring-petclinic.sh start

The script will download the latest release of EaseAgent. If you want to use your own built EaseAgent, copy it to the directory: easeagent/downloaded

$ cp $EASE_AGENT_PATH/easeagent.jar easeagent/downloaded/easeagent-latest.jar

It requires Docker to pull images from the docker hub, be patient.

Open Browser to visit grafana UI: http://localhost:3000.

Metric

Click the search dashboards, the first icon in the left menu bar. Choose the spring-petclinic-easeagent to open the dashboard we prepare for you.

Prometheus Metric Schedule: Prometheus Metric

metric

Tracing

If you want to check the tracing-data, you could click the explore in the left menu bar. Click the Search - beta to switch search mode. Click search query button in the right up corner, there is a list containing many tracing. Choose one to click.

tracing

Build Spring Petclinic

Spring Petclinic Demo

Add an Enhancement Plugin

Add a Demo Plugin to EaseAgent

User Manual

For more information, please refer to the User Manual.

Enhancement Plugin Development Guide

Refer to Plugin Development Guide.

Report Plugin Development Guide

Report plugin enables user report tracing/metric data to different kinds of the backend in a different format.

Refer to Report Plugin Development Guide

Community

If you have any questions, welcome to discuss them in our community. Welcome to join!

Licenses

EaseAgent is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.