--- title: "APM(一): Skywalking 与 Easyearch 集成" date: 2025-12-10 lastmod: 2025-12-10 description: "本文实战演示了集成 Skywalking 与 Easysearch 的过程。Easyearch 使用的版本是 1.14.1,需要开启 Elastic 兼容模式。" tags: ["Easysearch", "APM", "Skywalking"] summary: "概述 # SkyWalking 是一个开源的可观测性平台,用于收集、分析、聚合和可视化服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法,即使在云之间也能保持对分布式系统的清晰视图。它是一个现代的 APM,专门为云原生、基于容器的分布式系统设计。 SkyWalking 涵盖了云原生世界中所有的可观测性需求,包括: Tracing: SkyWalking 原生数据格式,以及 v1 和 v2 格式的 Zipkin 跟踪都得到支持。 Metrics: SkyWalking 支持成熟的指标格式,包括原生计量格式、OTEL 指标格式和 Telegraf 格式。SkyWalking 与服务网格平台(通常为 Istio 和 Envoy)集成,将可观测性构建到数据平面或控制平面。此外,SkyWalking 原生代理可以在指标模式下运行,从而显著提升性能。 Logging: 包括从磁盘收集或通过网络收集的日志。原生代理可以自动将追踪上下文与日志绑定,或使用 SkyWalking 通过文本内容绑定追踪和日志。 Profiling: Profiling 是一种强大的工具,帮助开发者从代码行角度理解应用程序的性能。SkyWalking 提供了内置于原生语言代理和独立的 eBPF 代理的剖析功能。 Event: 事件是一种特殊类型的数据,用于记录系统中的重要时刻,例如版本升级、配置变更等。将事件与指标关联有助于解释指标中的峰值或谷值,将事件与追踪和日志关联有助于排查根本原因。 更详细的信息请大家移步 Skywalking 官方网站。 测试环境 # 本篇使用的 Skywalking 版本是 10.2.0 ,需要 Java 11/17/21。 Easyearch 使用的版本是 1.14.1,需要开启 Elastic 兼容模式,具体操作参考 文档 。 生成 Java 密钥库文件 # 使用如下命令将 Easysearch 的 CA 证书(ca." --- ## 概述 SkyWalking 是一个开源的可观测性平台,用于收集、分析、聚合和可视化服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法,即使在云之间也能保持对分布式系统的清晰视图。它是一个现代的 APM,专门为云原生、基于容器的分布式系统设计。 SkyWalking 涵盖了云原生世界中所有的可观测性需求,包括: + Tracing: SkyWalking 原生数据格式,以及 v1 和 v2 格式的 Zipkin 跟踪都得到支持。 + Metrics: SkyWalking 支持成熟的指标格式,包括原生计量格式、OTEL 指标格式和 Telegraf 格式。SkyWalking 与服务网格平台(通常为 Istio 和 Envoy)集成,将可观测性构建到数据平面或控制平面。此外,SkyWalking 原生代理可以在指标模式下运行,从而显著提升性能。 + Logging: 包括从磁盘收集或通过网络收集的日志。原生代理可以自动将追踪上下文与日志绑定,或使用 SkyWalking 通过文本内容绑定追踪和日志。 + Profiling: Profiling 是一种强大的工具,帮助开发者从代码行角度理解应用程序的性能。SkyWalking 提供了内置于原生语言代理和独立的 eBPF 代理的剖析功能。 + Event: 事件是一种特殊类型的数据,用于记录系统中的重要时刻,例如版本升级、配置变更等。将事件与指标关联有助于解释指标中的峰值或谷值,将事件与追踪和日志关联有助于排查根本原因。 更详细的信息请大家移步 [Skywalking](https://skywalking.apache.org/) 官方网站。 ## 测试环境 本篇使用的 Skywalking 版本是 10.2.0 ,需要 Java 11/17/21。 Easyearch 使用的版本是 1.14.1,需要开启 Elastic 兼容模式,具体操作参考[文档](https://infinilabs.cn/blog/2025/filebeat-8-connect-eaysearch/) 。 ## 生成 Java 密钥库文件 使用如下命令将 Easysearch 的 CA 证书(ca.crt)导入到一个新的 Java 密钥库文件(es_keystore.jks)中,以便 SkyWalking 能够信任由该 CA 颁发的所有证书。生产环境中使用请替换命令中的密码。 ```plain keytool -import -v -trustcacerts -file ca.crt -keystore es_keystore.jks -keypass changeit -storepass changeit ``` ## 修改配置文件 SkyWalking 后端服务配置文件为 config/application.yml,这也是与 Easyearch 集成时需要修改的文件。Skywalking 与 Easyearch 集成有两种通信方式:http 或 https。http 方式非常简单,留给大家自行探索。本篇采用 https 方式,这也是 Easysearch 初始化后默认对外服务的协议。 拷贝上面生成的密钥库文件到 Skywalking 的 home 目录下,修改 application.yml 的 storage 部分 ```plain storage: selector: ${SW_STORAGE:elasticsearch} banyandb: # Since 10.2.0, the banyandb configuration is separated to an independent configuration file: `bydb.yaml`. elasticsearch: namespace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es1.infini.cloud:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"https"} connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000} socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000} responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000} numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0} user: ${SW_ES_USER:"admin"} password: ${SW_ES_PASSWORD:"infiniyyds@2025"} trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:"changeit"} ``` 注意 clusterNodes 配置的是域名,需要在 Skywalking 的主机上用 /etc/hosts 解析成具体的地址,如果有多个 Easysearch 节点,可以用逗号分隔。 ## 启动 确保 Easysearch 启动完毕后,再启动 Skywalking。正常启动完成后,可访问 Skywalking 服务页面,默认端口 8080。 {{% load-img "/img/blog/2025/integrating-skywalking-with-easysearch/1.png" "" %}} 正常连接后,Skywalking 会在 Easysearch 中创建很多 sw 开头的索引。 {{% load-img "/img/blog/2025/integrating-skywalking-with-easysearch/2.png" "" %}} OK,服务集成就到此完毕,后续我们将探索更多的 APM 内容。 {{% load-img "/img/blog/banner/about_yangf.png" "" %}}