pinpoint

pinpoint-apmApache-2.0活跃维护

面向大规模分布式系统的应用性能管理工具,通过分布式追踪和监控,帮你定位跨服务调用中的性能瓶颈。

APM, (Application Performance Management) tool for large-scale distributed systems.

v4.0.1发布于 2026-11-09 06:39 UTC13,875star +4 / 7 天3,735fork同步于 2026-11-10 23:28 UTC

怎么上手

由 README 提炼,执行前请确认
README 未给出具体安装命令,仅指向 Quick-start guide 与 Installation guide 文档
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

面向大规模分布式系统的 APM 工具,通过无侵入探针追踪跨应用事务,帮你看清调用拓扑和瓶颈

面向大规模分布式系统的应用性能管理工具,通过分布式追踪和监控,帮你定位跨服务调用中的性能瓶颈。

核心能力

  • 用 ServerMap 可视化组件互联拓扑与节点状态
  • 实时监控应用内活跃线程数
  • 用散点图展示请求量与响应模式,可拖拽查看明细
  • 提供代码级调用栈,定位瓶颈与失败点
  • 探针无需改代码,资源开销约增加 3%

容易踩的坑

PHP/Python 应用需改用独立的 pinpoint-c-agent 探针仓库;部署到 Kubernetes 需使用单独的 pinpoint-kubernetes 项目;各框架插件支持的版本范围需查阅 Agent Plugins 目录确认

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v4.0.1
  1. v4.0.1最新正式版2026-11-09 · 2026-11-09 06:39 UTC

    Improvements

    [Agent] Enhanced Reactor tracing — propagate unsampled traces across publishOn, subscribeOn, delay, and interval (#14604) [Agent] Propagate unsampled traces across Reactor subscribe and retry (#14594) [Agent] Propagate unsampled traces across coroutine dispatch (#14592) [Agent] Added user-supplied URI template support for URI stat in the Jetty plugins (#14546) [Agent] Added serviceName to the span event ContextData [Collector] Apply the durability setting to SpanChunk (#14544) [Web] Added a search box to the sidebar service selector [Web] Added a search box to the server map service selector [Web] Switched the alarm modules from thymeleaf to thymeleaf-spring6 (#14534)

    Bug Fixes

    [Agent] Fixed a class retransform issue by keeping the original constant pool indices when rewriting a class from its class file (#9246) [Agent] Fixed a Base64 decoding compatibility issue by downgrading commons-codec to 1.22.1 (#14605) [Agent] Fixed an unnecessary retransform by skipping Spring beans that declare no method to intercept [Agent] Fixed the trace block depth in DisableTrace and DisableChildTrace traceBlockEnd() [Web] Fixed the DEFAULT servicemap not applying the search option (#14600) [Web] Fixed the server map right-click handlers to read the latest disableMenu state [Web] Fixed the Apdex hover popup to attach to the side of the node that has room [Web] Fixed the Apdex and service group popups disappearing when the server map menu is disabled [Web] Fixed an extra drawer scroll when viewing servers [Web] Fixed the group-by remove button showing when the error table cannot remove a group [Web] Fixed focus to return to the service search box with ArrowUp from the first result

    Security

    [Agent] Bumped fastjson from 1.2.83 to 1.2.84 to fix CVE-2026-16723 (RCE under the default configuration) (#14584) [Web] Bumped handlebars, storybook, and shell-quote to fix critical vulnerabilities [Web] Bumped vite, zod, and transitive dependencies to fix high vulnerabilities [Web] Bumped postcss-selector-parser to 7.1.7 to fix a moderate vulnerability [Web] Reported by @Hamaecco: Reject admin API calls when admin.password is not set (#14533)

    Dependency Updates

    [Build]

    • Spring Boot 3.5.14 → 3.5.16
    • Spring Framework 6.2.18 → 6.2.19
    • Spring Security 6.5.10 → 6.5.11
    • Spring Batch 5.2.5 → 5.2.6
    • Spring Data 3.5.11 → 3.5.13
    • Spring Cloud 4.3.0 → 4.3.3
    • Spring Kafka 3.3.15 → 3.3.16
    • Spring Retry 2.0.12 → 2.0.13
    • Spring Shell 3.4.2 → 3.4.3 [Build]
    • log4j2 2.25.4 → 2.25.5
    • jackson 2.21.4 → 2.21.8
    • snakeyaml 2.4 → 2.7
    • bouncycastle 1.81 → 1.86
    • httpclient5 5.4.4 → 5.6.5
    • tomcat-embed 10.1.55 → 10.1.61
    • snappy-java 1.1.10.4 → 1.1.10.12 [Build]
    • oshi-core 6.9.1 → 7.7.3
    • jna 5.18.1 → 5.19.1
    • zstd-jni 1.5.7-16 → 1.5.7-25
    • HikariCP 7.0.1 → 7.1.0
    • commons-lang3 3.18.0 → 3.21.0
    • commons-io 2.20.0 → 2.22.0
    • commons-codec 1.17.1 → 1.23.0
    • commons-pool2 2.12.0 → 2.13.1
    • commons-collections4 4.4 → 4.6.0
    • hamcrest 2.2 → 3.0

    Downloads

    Binaries are attached to this release:

    • pinpoint-agent-4.0.1.tar.gz
    • pinpoint-batch-4.0.1-exec.jar
    • pinpoint-alarm-batch-starter-4.0.1-exec.jar
    • pinpoint-collector-4.0.1-exec.jar
    • pinpoint-collector-starter-4.0.1-exec.jar
    • pinpoint-web-4.0.1-exec.jar
    • pinpoint-web-starter-4.0.1-exec.jar

    What's Changed

  2. v4.0.04.0.0 release2026-10-28 · 2026-10-28 10:51 UTC
    查看更新说明

    Pinpoint 4.0.0 is a major release that opens the 4.x line. It has three highlights:

    • Service, now on by default, groups applications so that each team can focus on its own service.
    • OpenTelemetry Trace Support brings applications instrumented with OpenTelemetry into Pinpoint without the Pinpoint agent.
    • Service Alarm is a renewed alarm system built around services. New Alarm Templates make it easy to set up the same alarms for many applications.

    It also adds Spring Boot 4.1 / Spring Framework 7.0 support and includes the agent-stability work that shipped in 3.1.1.

    This release changes defaults and removes several legacy code paths, so please read the Upgrade guide before upgrading in place from 3.1.x.

    Highlights

    Service (enabled by default)

    Service model

    Pinpoint 4.0.0 introduces the Service feature. You can group several applications into one service and see how services call each other on the Service Map. Screens that support the service feature show only the data of the applications in the selected service.

    • Monitoring: Focus on the data of the service you own and find the cause of a problem faster.
    • Operations: As applications grow, group them by service to keep the monitoring targets clear.

    Monitoring targets form a Service → Application → Agent hierarchy. The demo-shop-commerce service of the demo shopping mall looks like this:

    Service: demo-shop-commerce          products and orders
    ├─ Application: Shopping-Order       order processing
    │  ├─ Agent: shop-order-01
    │  └─ Agent: shop-order-02
    └─ Application: Shopping-Product     product lookup
       └─ Agent: shop-product-01
    

    Data that is not assigned to a service, such as data collected before the upgrade or sent by agents older than 4.0.0, stays in the DEFAULT service. Creating a new service does not move existing data into it. To use the service feature, create the service in the Web first, then set pinpoint.serviceName on the agents (see Agent). See the Service guide for details.

    OpenTelemetry Trace Support

    Pinpoint 4.0.0 receives OpenTelemetry traces directly. Applications instrumented with the OpenTelemetry Java agent, any OTel SDK, or the OpenTelemetry Collector appear in the same server map, transaction list and call tree as agent-collected data, without the Pinpoint agent.

    • OTLP over gRPC and HTTP Traces are accepted over gRPC and over HTTP in both protobuf and JSON, with gzip and standard OTLP responses. Span time keeps nanosecond precision (#13923).

    • URL Statistic and Error Analysis URL Statistic is built from OTel server spans using the route template (#14229). Exceptions recorded on OTel spans flow into Error Analysis with multi-language stacktrace parsing (JVM, Go, Node.js, Python) and grouping by route (#14233). SQL text is shown in the call tree.

    • Server map and service map links Caller → callee edges between OTel-instrumented applications are drawn from a pp entry in the W3C tracestate header, written by the sender via pinpoint-otel-extension (OpenTelemetry Java agent extension, plus guides for Java SDK, Python, Go and Node.js). When the caller cannot propagate it, the collector and a batch job join the two sides and fill in the edge (#14453). OTel span links open the linked transaction (

  3. v3.1.13.1.1 release2026-10-02 · 2026-10-02 06:04 UTC
    查看更新说明

    Pinpoint 3.1.1 is a maintenance release of the 3.1.x line. It focuses on agent stability and overhead on reactive and coroutine workloads (Reactor / WebFlux / reactor-netty / Kotlin coroutines), Spring Framework 7 compatibility, and security hardening of the Web and Batch modules. There are no schema changes; collector and web can be upgraded in place from 3.1.0.

    Highlights

    Agent — Reactor megamorphic-dispatch remediation (JDK 21/25)

    Backport of the master track that remediates the JIT megamorphic invokeinterface dispatch observed on reactive applications running on recent JDKs (C2 profile pollution across the generic reactor CoreSubscriber instrumentation).

    • The reactor AsyncContext carrier is unified into a single injected field, so the hot interceptors no longer go through polymorphic accessor lookups.
    • Each interceptor class now gets a generated monomorphic exception-guard wrapper instead of sharing one reflective guard. The code generation is enabled by default:
      # pinpoint.config (local / release profiles)
      profiler.interceptor.exception.guard.codegen=true   # set false to fall back to the 3.1.0 guard
      
    • The generic reactor CoreSubscriber instrumentation can be switched off for a lightweight mode (profiler.reactor.subscriber.instrument=false, default true). Publisher-seam wrapping and scheduler-task tracing stay behind config gates that are off by default (profiler.reactor.trace.scheduler.task, profiler.reactor.trace.scheduler.task.periodic).
    • DefaultAsyncTraceContext / DefaultRecorderFactory no longer call the Guice Provider.get() chain on every trace request; the singleton factories are injected or memoized (#14210).

    Agent — "Corrupted call stack" storms fixed and throttled

    Three layers address the Corrupted call stack found ... call stack is empty log floods (and the CPU spikes that came with them) reported on reactor-netty / WebFlux services:

    • DefaultCallStack.peek() returns the disabled instance while overflowed frames are outstanding, instead of null, so a transaction that exceeds profiler.callstack.max.sequence no longer logs a stack dump per span event (#14310).
    • OnErrorSubscriberInterceptor (onErrorResume / onErrorReturn / onErrorMap / onErrorComplete) carries its TraceBlock from before() to after() instead of looking the AsyncContext up twice, which closed a frame nobody opened on every failing WebClient response (#14319).
    • The corrupted-call-stack WARN and stack dump are throttled to one per 3 s per trace type; suppressed dumps are counted and reported on the next emitted one, and skip the exception construction entirely.

    Agent — Kotlin coroutines

    ResumeWithInterceptor keeps the span event opened in before() and closes exactly that one in after(), so a nested Reactor callback swapping the current trace during BaseContinuationImpl.resumeWith(...) no longer leaves unbalanced blocks (previously surfacing as corrupted call stacks on the parent ChildTrace).

    Agent — Spring Framework 7 compatibility

    • WebFlux and RestTemplate header adaptors no longer throw NoSuchMethodError on Spring Framework 7, where HttpHeaders stopped implementing MultiValueMap (#14278).
    • The RestTemplate plugin matches the new RestTemplate(Iterable<HttpMessageConverter<?>>) constructor, so RestTemplates built by Spring Boot 4 / Framework 7 are traced again.

    Agent — Plugin fixes

    • Redisson: reactive command tracing works on Redisson 3.17+ and 3.19+ (ReactiveProxyBuilder callback signature changes); it had been silently inactive on modern versions.
    • reactor-netty / netty HTTP client: HttpClientRequestWrapper.toRemoteHost() and HttpClientHandlerRequestWithBodyInterceptor no longer cast a non-inet remote address (e.g. Unix domain sockets) to InetSocketAddress, which threw ClassCastException inside the interceptor.
    • Duplicate accessor member injection is skipped in `ASMC
  4. v3.1.03.1.0 release2026-05-20 · 2026-05-20 23:14 UTC
    查看更新说明

    Highlights

    ApplicationName: 254-Character Support

    -Dpinpoint.modules.uid.version=v3
    # This property must be added when starting the agent.
    # It is compatible with collector versions 3.1.0 and higher.
    

    The maximum length of applicationName has been expanded from 24 to 254 characters, aligning it with SERVICE_NAME_MAX_LEN.

    Impact: Users with long, structured application identifiers (e.g., team.service.environment.region) can now register them as-is, removing the prior naming constraint that forced abbreviations.

    ServerMap V3 — Performance Improvements

    ServerMap has been rebuilt as ServerMap V3 with a redesigned storage layout and query path.

    Impact: Faster initial render and time-range navigation on large topologies, lower HBase read amplification, and improved support for 254-character ApplicationName values.

    GrpcBatchDataSender — Unary Span Transport

    A new span transport, SpanBatchGrpcDataSender, replaces the long-lived gRPC bidirectional stream (SpanGrpcDataSender) with a unary SendSpanList RPC that ships spans in independent batches.

    Starting from 3.1.0, BATCH is the default in both local and release profiles:

    # pinpoint-root.config
    profiler.transport.grpc.span.sender.type=BATCH    # BATCH | STREAM
    

    Collector-side support: the receiver-side SpanService exposes the new SendSpanList RPC and returns batch-level results. Requires a 3.1.0+ collector. Older collectors should keep sender.type=STREAM.

    Impact: simpler operational model (no stream restarts on partial failures), better resilience behind L7 proxies and rolling collector deploys, and tunable batching that lets operators trade latency versus RPC overhead per workload.

    OpenTelemetry Metric Collection

    Pinpoint Collector now supports receiving metrics via the OTLP protocol. Applications can send metrics using the OpenTelemetry SDK or OpenTelemetry Collector without requiring the Pinpoint Agent.

    📖 Manual

    Heatmap View

    A new Heatmap view is now available alongside Scatter Chart. While Scatter Chart plots individual transactions, Heatmap provides a statistics-based visualization for faster data overview.

    📖 Manual

    Error Reason Categorization

    Errors are now categorized (e.g. exception, http-status, sql) and the category is shown on the call stack in the web UI, so you can tell at a glance why a span was marked as an error.

    Opt-in via agent configuration:

    profiler.error.enable=true
    

    Choose which categories should mark a span as an error (default: all enabled):

    # Allow-list
    profiler.error.mark=http-status,sql
    # Or deny-list
    profiler.error.mark.exclude=exception
    

    JDBC SQL Cache Expiration

    The SQL cache now expires entries after a configurable time, causing the agent to re-send the metadata periodically.

    # Default: 168 hours (7 days). Set 0 or negative to disable.
    profiler.jdbc.sqlcacheexpirehours=168
    

    TraceIndex — Scatter Chart and Transaction List Performance Improvements

    Scatter Chart and Transaction List now use the new TraceIndex table for transacti

  5. v3.0.53.0.5 release2026-04-01 · 2026-04-01 23:30 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/pinpoint-apm/pinpoint/compare/v3.0.4...v3.0.5

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Pinpoint

    Maven codecov

    Latest Release (2026/10/28)

    We're happy to announce the release of Pinpoint v4.0.0. Please check the release note at (https://github.com/pinpoint-apm/pinpoint/releases/tag/v4.0.0).

    The current stable version is v4.0.0.

    Live Demo

    Take a quick look at Pinpoint with our demo!

    PHP, PYTHON

    Pinpoint also supports application written in PHP, Python. Check-out our agent repository.

    About Pinpoint

    Pinpoint is an APM (Application Performance Management) tool for large-scale distributed systems written in Java / PHP/PYTHON. Inspired by Dapper, Pinpoint provides a solution to help analyze the overall structure of the system and how components within them are interconnected by tracing transactions across distributed applications.

    You should definitely check Pinpoint out If you want to

    • understand your application topology at a glance
    • monitor your application in Real-Time
    • gain code-level visibility to every transaction
    • install APM Agents without changing a single line of code
    • have minimal impact on the performance (approximately 3% increase in resource usage)

    Getting Started

    Deploying Pinpoint to Kubernetes

    Overview

    Services nowadays often consist of many different components, communicating amongst themselves as well as making API calls to external services. How each and every transaction gets executed is often left as a blackbox. Pinpoint traces transaction flows between these components and provides a clear view to identify problem areas and potential bottlenecks. For a more intimate guide, please check out our Introduction to Pinpoint video clip.

    • ServerMap - Understand the topology of any distributed systems by visualizing how their components are interconnected. Clicking on a node reveals details about the component, such as its current status, and transaction count.

    • Realtime Active Thread Chart - Monitor active threads inside applications in real-time.

    • Request/Response Scatter Chart - Visualize request count and response patterns over time to identify potential problems. Transactions can be selected for additional detail by dragging over the chart.

      Server Map

    • CallStack - Gain code-level visibility to every transaction in a distributed environment, identifying bottlenecks and points of failure in a single view.

      Call Stack

    • Inspector - View additional details on the application such as CPU usage, Memory/Garbage Collection, TPS, and JVM arguments.

      Inspector

    • URI-metric URI-Metric

    • Infrastructure Infrastructure

    • Error-Analysis Error-Analysis 1 Error-Analysis 2

    Supported Modules

    The supported version range of each module is listed in Agent Plugins.

    Compatibility

    Java version required to run Pinpoint:

    Pinpoint VersionAgentCollectorWebBatch
    2.0.x6-13888
    2.1.x6-14888
    2.2.x7-14888
    2.3.x7-17888
    2.4.x7-18111111
    2.5.x8-19111111
    3.0.x8-21171717
    3.1.x8-25171717
    4.0.x8-25171717

    HBase compatibility table:

    Pinpoint VersionHBase 1.xHBase 2.x
    2.0.x - 2.2.xyesoptional
    2.3.x - 2.5.xyeshbase2-module
    3.0.xnoyes
    3.1.xnoyes
    4.0.xnoyes

    Agent - Collector compatibility table:

    Agent VersionCollector 2.x.xCollector 3.0.xCollector 3.1.xCollector 4.0.x
    2.x.xyesyesyesyes
    3.0.xnoyesyesyes
    3.1.xnonoyesyes
    4.0.xnononoyes

    Pinot compatibility table:

    Pinpoint VersionPinot 0.11.0Pinot 0.12.0Pinot 1.0.0Pinot 1.2.0Pinot 1.3.0Pinot 1.5.0
    2.5.xyesyesyesyesyes-
    3.0.xnonoyesyesyes-
    3.1.xnonononoyes-
    4.0.xnononononoyes

    Community

    Github issues
    Gitter

    We have Chinese community now, welcome to join!

    QQ Group1: 897594820QQ Group2: 812507584QQ Group3: 882020485DING Group : 21981598
    QQ Group1QQ Group2QQ Group3DING Group

    License

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

    Copyright 2018 NAVER Corp.
    
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
        http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.