SkyWalking vs Pinpoint: Which Open‑Source APM Wins for Your Stack?
This article provides a detailed, side‑by‑side comparison of SkyWalking 6.0.0‑GA and Pinpoint 1.8.2 across community activity, language support, protocols, storage options, UI, extensibility, alarm mechanisms, JVM and service monitoring, trace granularity, performance impact, release packaging and component compatibility, helping you choose the right APM solution for your needs.
This comparison is based on SkyWalking 6.0.0‑GA and Pinpoint 1.8.2 (latest as of 2019‑02‑19). Both open‑source APM products achieve non‑intrusive bytecode injection, unlike Zipkin or CAT, which were rejected for their code‑level intrusion.
Community Comparison
SkyWalking has a more active community, being an Apache incubating project with a Chinese community and direct communication channels (e.g., Apache SkyWalking group 392443393). Pinpoint, developed in Korea, has a language barrier and comparable recent commit frequency.
Supported Languages
Pinpoint supports Java and PHP only. SkyWalking supports Java, C#, PHP, and Node.js, and offers lower development cost for custom probes (e.g., Go).
Note: A Node.js agent for Pinpoint existed on GitHub (peaksnail/pinpoint-node-agent) but is no longer maintained.
Protocol Comparison
SkyWalking uses gRPC (http deprecated in 6.x) while Pinpoint uses Thrift. Neither protocol is inherently superior.
Storage Comparison (Important)
Pinpoint only supports HBase, requiring a dedicated HBase cluster and offering limited query capabilities (row‑key get or scan). SkyWalking supports multiple storages, primarily Elasticsearch in production, and allows flexible query dimensions (time, service, trace status, path, trace ID, etc.). Both support TTL; SkyWalking configures it in application.yml, Pinpoint via HBase scripts (e.g., TTL => 5184000 for ApplicationTraceIndex, TTL => 15552000 for SqlMetaData_Ver2).
ES is not universally superior to HBase: ES excels at search, HBase at storage. Choose based on log volume and query requirements.
UI Comparison
Pinpoint’s UI is slightly better, especially for topology visualization. A custom SkyWalking UI (rocketbot) is available on GitHub.
Extensibility Comparison
SkyWalking is designed to be pluggable. Custom storage can be added by implementing
org.apache.skywalking.oap.server.library.module.ModuleProvider. Pinpoint lacks such extensibility. SkyWalking also supports OpenTracing and community‑maintained plugins for C#, PHP, and Node.js, while Pinpoint’s plugin ecosystem is more limited.
Both support plugin development; Pinpoint’s guide is at http://naver.github.io/pinpoint/1.8.2/plugindevguide.html, SkyWalking’s at
https://github.com/apache/incubator-skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md.
Alarm Comparison
Pinpoint requires MySQL to persist alarm rules and users, adding maintenance overhead. SkyWalking configures alarms directly in config/alarm-settings.xml and supports webhook notifications, custom silence periods, and a richer set of service‑level indicators.
Pinpoint alarm reference: http://naver.github.io/pinpoint/1.8.2/alarm.html
SkyWalking alarm reference: https://github.com/apache/incubator-skywalking/blob/master/docs/en/setup/backend/backend-alarm.md
JVM Monitoring
SkyWalking monitors Heap, Non‑Heap, and both YGC and FGC. Pinpoint monitors Heap, Non‑Heap, FGC, DirectBufferMemory, and MappedBufferMemory, but lacks YGC.
Service Monitoring
Pinpoint provides CPU, open file descriptors, datasource, active threads, response time, and TPS. SkyWalking provides CPU, SLA, response time, and CPM. Overall, they are comparable.
Trace Granularity
Pinpoint offers finer granularity, showing detailed parameters for each traced interface.
Filter Trace
Both support ant‑style filter expressions. Pinpoint configures filters via a web UI wizard; SkyWalking uses the apm-trace-ignore-plugin for flexible rule definitions.
Performance Overhead
Pinpoint’s detailed data collection incurs higher overhead, while SkyWalking’s conservative default strategy results in lower impact. A stress test (image source: Juejin ) confirms this.
Release Package
SkyWalking ships as a set of JARs with a simple start.sh script. Pinpoint’s collector and web components are packaged as WAR files, requiring a servlet container (e.g., Tomcat).
Component Support Comparison
Web Containers : Pinpoint supports most containers, including commercial ones; SkyWalking only supports open‑source containers.
RPC Frameworks : SkyWalking supports a broader range, including Motan and SofaRPC.
Message Queues : SkyWalking adds RocketMQ support.
RDBMS/NoSQL : Pinpoint slightly ahead (supports MSSQL, MariaDB, HBase); SkyWalking lacks MSSQL, MariaDB, Cassandra, HBase.
Redis Clients : SkyWalking supports Jedis, Redisson, Lettuce; Pinpoint only Jedis and Lettuce.
Logging : Pinpoint lacks native log4j2 support (community plugin exists).
Overall, the choice depends on specific requirements: massive log storage favors Pinpoint (HBase), while multi‑language support, Elasticsearch search capability, and extensibility favor SkyWalking.
Conclusion
Both APM tools are excellent. Pinpoint excels in trace granularity, UI richness, and HBase‑based storage for massive logs. SkyWalking shines with an active Chinese community, broader language support, Elasticsearch search, pluggable architecture, and simpler deployment.
If you need massive log storage, consider Pinpoint.
If you value easy extensibility and multi‑language agents, choose SkyWalking.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
