开箱即用的性能分析工具pinpoint

pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控,属于分布式调用链监控组件。

它主要的特点是开箱即用、完备的Web界面,对性能影响较小,无侵入式安装探针,小团队懒人的必备佳品。

官网:https://github.com/naver/pinpoint

监控截图如下:

服务器端主要分为三部分:

  1. pinpoint-collector.war 控制器,用于接受各客户端传回来的数据,保存在Hbase里。需要部署在中间件(比如tomcat)中
  2. pinpoint-web.war 监控界面,即上图这个还不错的Web界面。需要部署在中间件(比如tomcat)中
  3. Habse数据库 ,用于存储数据

客户端pinpoint-agent,其实就是一个jar包,主要是放在待监控的目标机器上,随待监控的jvm启动即可。支持tomcat、jboss、spring boot.

以tomcat为例:只需要在tomcat的catalina.sh中加入以下代码即可

CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

安装部署都比较简单,不赘述,参考官网即可

https://github.com/naver/pinpoint/blob/1.7.3/doc/installation.md

注意事项

pinpoint-collector对外开放的三个端口9994\9995\9996,主要用于从agent处获取数据,其中9994为tcp协议,9995及9996均为udp协议,在生产环境开通网络权限时需要注意

还有就是pinpoint-agent并不是把所有的请求都会拦截发送到pinpoint-collector上,只是部分请求(大约20%),因此只能做性能分析告警用,不能作为全数据参考。

其他的分布式调用链监控组件

参照这篇

https://blog.youkuaiyun.com/u012394095/article/details/79700200

<think>好的,我现在需要帮助用户寻找原生支持内存快照过滤配置的开源工具。首先,我需要理解用户的具体需求。他们提到“原生命存快照”,可能是指能够在应用程序运行时生成内存快照,并且支持过滤配置,即可以指定只保留特定部分的数据,而不是全部内存内容。这可能用于调试、性能分析或减少快照大小。 接下来,我需要回忆或查找相关的开源工具。根据已有的知识,我知道一些Java生态中的工具,比如Eclipse Memory Analyzer(MAT),它用于分析内存转储,但不确定是否支持生成快照时的过滤配置。另外,JVM本身可能有相关的参数,比如在生成Heap Dump时排除某些对象。不过用户需要的是原生支持,即工具本身具备这样的功能,而不需要额外编写脚本或代码。 然后,检查用户提供的引用内容。引用[1]提到OpenGauss数据库,引用[2]是ZooKeeper,引用[3]是Brave浏览器,引用[4]是HBase的删除列命令。这些似乎与内存快照过滤没有直接关联,但可能需要考虑是否有数据库或分布式系统工具内置了内存管理功能。比如,HBase或OpenGauss是否有内存快照机制,但根据现有信息,这些可能不是用户需要的。 接下来,我应该考虑其他可能的工具。比如,针对JVM的应用,可能使用JDK自带的jmap工具,但jmap生成Heap Dump时是否支持过滤?默认情况下不支持,但可以通过第三方工具处理生成的转储文件。或者,使用G1垃圾回收器的参数,如-XX:+HeapDumpBeforeFullGC和-XX:+HeapDumpAfterFullGC,结合其他过滤选项? 另外,.NET生态中的工具,如dotMemory或ProcDump,但用户要求开源工具,所以需要排除商业软件。可能像dotMemory有命令行工具支持,但不确定是否开源。 再考虑系统级工具,如core dump生成工具,如gcore,但通常这些工具生成的是整个进程的内存镜像,不支持过滤配置。用户需要的是在生成快照时就能过滤,而不是事后处理。 有没有开源项目专门针对内存快照的过滤?比如,可能某些APM(应用性能管理)工具,如Glowroot、Pinpoint等,是否支持?或者像JVMTI-based工具,用户自己编写代理来实现过滤,但用户希望原生的支持,即工具自带配置选项。 另外,检查是否有内存分析工具在生成快照时就允许配置过滤规则。例如,MAT可以分析快照,但生成快照时可能需要配合JVM参数。例如,使用jmap的live选项,只转储存活对象,但这是否算过滤?用户可能需要更细粒度的控制,比如按类名、包名过滤。 可能存在的工具包括: 1. **Eclipse MAT**:虽然主要用于分析,但生成快照时需要依赖JVM工具,可能通过插件或脚本在生成时过滤,但原生支持可能有限。 2. **Java Flight Recorder (JFR)**:作为JDK的一部分,JFR可以记录事件,包括内存分配,但快照过滤配置是否支持?需要查看文档。 3. **YourKit Java Profiler**:但这是商业软件,不符合开源要求。 4. **Apache Spark的Tungsten**:针对内存管理,但可能不相关。 5. **BCC (BPF Compiler Collection)**:用于Linux系统的性能分析工具,可以跟踪内存使用,但生成快照时过滤可能需要编写eBPF程序,可能不算原生支持。 6. **pprof**:Google的性能分析工具,支持内存分析,通常与gperftools一起使用,是否支持生成快照时过滤?可能需要配置采样率或特定选项。 经过上述思考,可能用户需要的工具是支持在生成内存快照时通过配置参数来过滤特定对象或区域的开源项目。目前,我想到的可能有: - **JVMTI Agents**:用户可以自己编写JVMTI代理来在生成堆转储时过滤,但这需要开发工作,不是开箱即用的工具。 - **Gatling的Java Agent**:用于性能测试,可能包含内存分析功能,但不确定。 可能需要进一步搜索是否有开源工具明确支持此功能。例如,在GitHub上搜索关键词如“heap dump filter”、“memory snapshot filter”等,可能会找到相关项目。例如,一个可能的候选是**HeapDumpFilter**(假设存在的项目),但需要确认是否存在这样的工具。 另外,参考用户提到的“原生命存快照”,可能是指应用程序本身支持生成内存快照并过滤,比如某些数据库或中间件内置的功能。但根据引用内容,OpenGauss或ZooKeeper可能没有相关特性。 总结,可能没有广泛使用的开源工具直接支持在生成内存快照时进行过滤配置,但可以通过组合现有工具和脚本实现。例如,生成完整快照后使用MAT或自定义脚本过滤,或者在生成快照时通过JVM参数限制对象类型。如果用户需要原生支持,可能需要更专业的工具或特定语言的库。</think>根据您的需求,寻找原生支持内存快照过滤配置的开源工具,以下是几个可能符合要求的工具及分析: --- ### **1. Eclipse Memory Analyzer (MAT)** - **功能**:主要用于分析内存堆转储文件(如`.hprof`),提供泄漏检测和内存消耗分析。 - **过滤支持**: - 原生支持在**分析阶段**通过OQL(对象查询语言)过滤特定对象或类,例如:`SELECT * FROM java.lang.String WHERE count > 1000`。 - 生成快照时需依赖JVM参数(如`jmap -dump:live`仅转储存活对象),但无法在生成时直接配置细粒度过滤。 - **开源地址**:[Eclipse MAT GitHub](https://github.com/eclipse/mat) --- ### **2. Java Flight Recorder (JFR)** - **功能**:JDK内置的性能监控工具,可记录内存分配、事件跟踪等。 - **过滤支持**: - 支持通过配置文件(`.jfc`)定义记录的事件类型和阈值,例如过滤特定类或方法的内存分配。 - 生成的内存快照可通过JMC(Java Mission Control)进一步筛选,但过滤主要在**记录阶段**而非快照生成时。 - **参考配置**: ```bash jcmd <PID> JFR.start settings=profile ``` --- ### **3. gperftools (含pprof)** - **功能**:Google开源的内存和CPU分析工具集,常用于C++程序。 - **过滤支持**: - 支持通过`HEAP_PROFILE_ALLOCATION_INTERVAL`等环境变量控制内存采样频率。 - 生成快照后可用`pprof`工具按函数、线程或调用栈过滤,但原生不提供生成时过滤配置。 - **开源地址**:[gperftools GitHub](https://github.com/gperftools/gperftools) --- ### **4. OpenJDK 的 jmap 与 jcmd** - **功能**:生成JVM堆转储文件。 - **过滤支持**: - `jmap -dump:live,file=heap.hprof <PID>`:仅转存活对象,属于基础过滤。 - 高级过滤需结合第三方工具(如自定义JVMTI代理)或脚本预处理。 --- ### **5. BPF Compiler Collection (BCC)** - **功能**:Linux系统级动态跟踪工具,基于eBPF实现。 - **过滤支持**: - 可通过编写eBPF程序在内存分配时动态过滤并记录特定事件。 - 灵活但需手动编码,非开箱即用。 - **开源地址**:[BCC GitHub](https://github.com/iovisor/bcc) --- ### **推荐方案** 若需**原生支持生成时过滤**,可考虑以下组合: 1. **JVM应用**:使用`JFR`配置事件过滤 + `MAT`分析。 2. **C/C++应用**:通过`gperftools`采样 + `pprof`后处理。 3. **自定义方案**:开发轻量级JVMTI代理或eBPF程序,拦截内存分配并过滤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值