The Java agent for Apache SkyWalking

Overview

Apache SkyWalking Java Agent

Sky Walking logo

GitHub stars Twitter Follow

Maven Central CI

SkyWalking-Java: The Java Agent for Apache SkyWalking, which provides the native tracing/metrics/logging abilities for Java projects.

SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.

Documentation

Downloads

Please head to the releases page to download a release of Apache SkyWalking.

Compiling project

./mvnw clean package

The agent binary package is generated in skywalking-agent folder.

Set Generated Source Codes(grpc-java and java folders in apm-protocol/apm-network/target/generated-sources/protobuf) folders if you are using IntelliJ IDE.

Code of conduct

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please follow the REPORTING GUIDELINES to report unacceptable behavior.

Live Demo

Find the demo and screenshots on our website.

Contact Us

License

Apache 2.0 License.

Issues
  • fix multi-db-instance on same host port

    fix multi-db-instance on same host port

    Fix https://github.com/apache/skywalking/issues/4941

    • [ ] Add a unit test to verify that the fix works.

    • [x] Explain briefly why the bug exists and how to fix it. When my java application depend on multi-db-instance on same host:port,I always got wrong db.instance value in skywalking-ui. I found the same problem on that issue, there is a bad cache design in MySQL agent plugin, so I fix it.

    • [x] If this pull request closes/resolves/fixes an existing issue, replace the issue number. skywalking/#4941.

    • [ ] Update the CHANGES log.

    bug plugin 
    opened by lpcy 17
  • optimize lettuce plugin

    optimize lettuce plugin

    Fix

    • [x] Add a unit test to verify that the fix works.

    • [x] Explain briefly why the bug exists and how to fix it.

    • [x] Update the CHANGES log.

    This is a big change for the lettuce plugin

    Lettuce is an async Redis client base on netty, and wide use in our company. Recently I found almost every lettuce span has the time elapsed less than 1ms and has a long gap between two spans. After reading the lettuce source code, I found the plugin some bug. because lettuce is an async framework base on netty, old interceptor named 'RedisChannelWriterInterceptor' stop span in after method can not record the time elapsed, it should be close in 'RedisCommand#complete' or 'RedisCommand#completeExceptionally' or 'RedisCommand#cancel' called when Redis server response lettuce plugin record nothing when lettuce work on reactive mode (project reactor) record Redis peer in skywalking dynamic field can simplify

    The new plugin can work with Redis standalone and Redis Sentinel and Redis cluster(old version can not). Redis cluster and Redis sentinel need to use docker-compose. I do not know how to make scenarios test in this two cluster model

    enhancement plugin 
    opened by darcydai 3
  • Support mTLS for gRPC channel

    Support mTLS for gRPC channel

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [x] Update the CHANGES log.
    enhancement 
    opened by dmsolr 1
  • Fix do not have using absolute path of private key

    Fix do not have using absolute path of private key

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [ ] Update the CHANGES log.
    bug 
    opened by dmsolr 0
  • Fix wrong CI required check context name

    Fix wrong CI required check context name

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [ ] Update the CHANGES log.
    opened by kezhenxu94 0
  • Fix change log link

    Fix change log link

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [ ] Update the CHANGES log.
    chore 
    opened by wu-sheng 0
  • Make branch protection and review required back.

    Make branch protection and review required back.

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [ ] Update the CHANGES log.
    CI Setting 
    opened by wu-sheng 0
  • Set up release process and make release doc ready.

    Set up release process and make release doc ready.

    • [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #.
    • [ ] Update the CHANGES log.
    documentation 
    opened by wu-sheng 0
  • Add Kafka LogReporter and make grpc log reporter sharing grpc channel with reporters

    Add Kafka LogReporter and make grpc log reporter sharing grpc channel with reporters

    … with reporters

    enhancement 
    opened by dmsolr 4
  • Add support for extClassLoader

    Add support for extClassLoader

    opened by daimingzhi 9
Owner
The Apache Software Foundation
The Apache Software Foundation
Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

async-profiler This project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem. It features HotSpot-specifi

null 4.3k Sep 12, 2021
Performance visualisation tools

grav A collection of tools to help visualise process execution. This blog post has some detail on the rationale and implementation detail. Scheduler p

Mark Price 268 Sep 5, 2021
Simple JVM Profiler Using StatsD and Other Metrics Backends

statsd-jvm-profiler statsd-jvm-profiler is a JVM agent profiler that sends profiling data to StatsD. Inspired by riemann-jvm-profiler, it was primaril

Etsy, Inc. 327 Aug 5, 2021
Sends stacktrace-level performance data from a JVM process to Riemann.

Riemann JVM Profiler riemann-jvm-profiler is a JVM agent that you can inject into any JVM process--one written in Clojure, Java, Scala, Groovy, etc.--

Riemann 288 Jul 20, 2021
JVM Profiler Sending Metrics to Kafka, Console Output or Custom Reporter

Uber JVM Profiler Uber JVM Profiler provides a Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed w

Uber Common 1.5k Sep 16, 2021
面向开发人员、声明式的 Metrics 采集与监控系统,可以对结构化与非结构化、有界数据与无界数据进行采集,通过对采集数据进行提取、过滤、逻辑运算等处理后将结果存储流行的监控系统或存储引擎中(如 Prometheus、Nightingale、Open-Falcon)从而搭建起完整的监控体系,同时也可以结合 grafana 完成数据的可视化

介绍 AnyMetrics - 面向开发人员、声明式的 Metrics 采集与监控系统,可以对结构化与非结构化、有界数据与无界数据进行采集,通过对采集数据进行提取、过滤、逻辑运算、聚合等处理后将结果存储流行的监控系统或存储引擎中(如 Prometheus、Nightingale、Open-Falco

lichao 6 Aug 16, 2021
Java memory allocation profiler

Aprof - Java Memory Allocation Profiler What is it? The Aprof project is a Java Memory Allocation Profiler with very low performance impact on profile

Devexperts 205 Jul 7, 2021
面向云原生的一站式日志采集配置及运维平台

面向云原生的一站式日志采集配置及运维平台 阅读本README文档,您可以了解到滴滴LogiAM的用户群体、产品定位等信息,并通过体验地址,快速体验以“应用/服务”为采集粒度,从应用维度批量下发采集任务全流程。 若滴滴LogiAM已在贵司的生产环境进行使用,并想要获得官方更好地支持和指导,可以通过OC

DiDi 57 Sep 8, 2021
Java Agent for Memory Measurements

Overview Jamm provides MemoryMeter, a Java agent for all Java versions to measure actual object memory use including JVM overhead. Use To use MemoryMe

Jonathan Ellis 586 Sep 7, 2021
A Java agent that rewrites bytecode to instrument allocation sites

The Allocation Instrumenter is a Java agent written using the java.lang.instrument API and ASM. Each allocation in your Java program is instrumented;

Google 410 Sep 16, 2021
Zipkin is a distributed tracing system

zipkin Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in service architectures. Features

Open Zipkin 14.7k Sep 15, 2021
BTrace - a safe, dynamic tracing tool for the Java platform

btrace A safe, dynamic tracing tool for the Java platform Version 2.1.0 Quick Summary BTrace is a safe, dynamic tracing tool for the Java platform. BT

btrace.io 4.8k Sep 18, 2021
PerfJ is a wrapper of linux perf for java programs.

PerfJ PerfJ is a wrapper of linux perf for java programs. As Brendan Gregg's words In order to profile java programs, you need a profiler that can sam

Min Zhou 356 Jun 20, 2021
Turn -XX:+TraceBytecodes output into a FlameGraph compatible stack format

A tool to turn the output of -XX:+TraceBytecodes (a JDK debug-only feature to print every bytecode executed by the interpreter) into a simple stack fo

Claes Redestad 28 Jul 2, 2021
production heap profiling for the JVM. compatible with google-perftools.

Heapster Heapster provides an agent library to do heap profiling for JVM processes with output compatible with Google perftools. The goal of Heapster

marius a. eriksen 391 Aug 26, 2021
An application metrics facade for the most popular monitoring tools. Think SLF4J, but for metrics.

Micrometer Application Metrics An application metrics facade for the most popular monitoring tools. Instrument your code with dimensional metrics with

Micrometer Metrics 3k Sep 15, 2021
Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

GCViewer 1.36 GCViewer is a little tool that visualizes verbose GC output generated by Sun / Oracle, IBM, HP and BEA Java Virtual Machines. It is free

null 3.8k Sep 9, 2021
Best-of-breed OpenTracing utilities, instrumentations and extensions

OpenTracing Toolbox OpenTracing Toolbox is a collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing i

Zalando SE 174 Sep 13, 2021
Java monitoring for the command-line, profiler included

jvmtop is a lightweight console application to monitor all accessible, running jvms on a machine. In a top-like manner, it displays JVM internal metri

null 1.1k Sep 17, 2021