详解ElasticAPM实现微服务的链路追踪(一)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Elastic APM实现链路追踪,首先要引用开源的APMAgent(APM代理),然后将监控的信息发送到APMServer,然后在转存入ElasticSearch,最后有Kibana展示;具体流程如下图所示:


前言

Elastic APM实现链路追踪,首先要引用开源的APMAgent(APM代理),然后将监控的信息发送到APMServer,然后在转存入ElasticSearch,最后有Kibana展示;具体流程如下图所示:

129.png

首先我们下载ElasticSearch、Kibana、APM Server;可以先简单的理解为 ElasticSearch是存储数据用的,Kibana是展示数据用的。

ElasticSearch下载地址:

https://www.elastic.co/cn/downloads/elasticsearch

Kibana下载地址:

https://www.elastic.co/cn/downloads/kibana

APM Server下载地址:

https://www.elastic.co/cn/downloads/apm

在下载时需要注意,ElasticSearch、Kibana、APM Server要下载相同的版本,相同平台的;下图为下载时的注意事项。

0.png

这里我下载的都是window下的安装包,下载文件如下图:

1.png

Elastic免费版本支持内容


安装ElasticSearch

ElasticSearch依赖于java的SDK,所以需要安装Java的SDK。

java安装参考:https://www.cnblogs.com/kiba/p/12318306.html

为了测试,我随便找了一台有java环境的电脑,系统是window10,java环境如下图:

2.png

然后将ElasticSearch压缩包解压,找到config\elasticsearch.yml文件,记事本打开,修改配置如下:

cluster.name: kiba001
node.name: master
node.master: true
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["kiba518"]

然后找到bin下面的elasticsearch.bat,双击运行脚本安装ElasticSearch。

3.png


elasticsearch.bat会启动一个CMD窗口,该窗口将是ElasticSearch的宿主,即关闭了他,ElasticSearch就会关闭。

让CMD窗口运行一会,然后打开浏览器,输入 http://localhost:9200 ,显式以下画面,说明ES安装成功。因为我是随机找的有java环境的电脑安装的,所以ElasticSearch虽然依赖于JDK,但似乎对版本并不苛刻。

4.png

安装Kibana

与ElasticSearch类似,将Kibana压缩包解压,找到bin下面的Kibana.bat,双击运行脚本安装Kibana。

Kibana.bat也会启动一个CMD窗口,该窗口将是Kibana的宿主。

让CMD窗口运行一会,然后打开浏览器,输入http://localhost:5601/,显式以下画面,说明kibana安装成功。

5.png


Config文件夹下的kibana.yml是默认的配置文件,想深入研究的可以百度搜索一下这个文件的使用,这里我没有配置,所以使用的都是默认配置,用的请求地址也是localhost。

6.png

修改server.host可以修改请求地址:

server.host: "0.0.0.0"

修改i18n.locale的值为"zh-CN"为,可以启动汉化版本kibana。


7.png

安装APM Server

首先解压APM Server的压缩包,如下图:


8.png


然后在里面找到ApmServer的配置文件apm-server.ym。

将配置文件最开始的host: “localhost:8200”修改成“0.0.0.0:8200”,以便让他能允许通过ip:端口号的方式访问。然后增加elasticsearch地址配置:

apm-server:
  # Defines the host and port the server is listening on. Use "unix:/path/to.sock" to listen on a unix domain socket.
  host: "0.0.0.0:8200"
output.elasticsearch:
  hosts: ["localhost:9200"]
  #hosts: ["已安装好的ES地址,多个之间用逗号隔开"]

效果如下:

9.png


然后运行apm-server.exe,这里需要注意的是apm-server.exe是个window服务,所以这里不能双击运行。不过安装包中已经有可以启动服务的文件了——install-service-apm-server.ps1。

具体安装ApmServer步骤。

1.从下载页面下载 APM Server Windows zip 文件。

2.将 zip 文件的内容解压缩到 C:\Program Files

3.将 apm-server-7.16.3-windows 目录重命名为 APM-Server

4.以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标,然后选择以管理员身份运行)。如果运行的是 Windows XP,则可能需要下载并安装 PowerShell。

5.从 PowerShell 提示符处,运行以下命令以将 APM Server 安装为 Windows 服务。

10.png


然后在弹出的页面中输入Y,然后回车。

11.png

注意:如果您的系统禁用了脚本执行,则需要为当前会话设置执行策略,以允许脚本运行。示例:

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-apm-server.ps1`

然后我们打开控制面板—管理工具—服务,就可以看到,我们已经安装了一个apm-server的服务了。

不过他的当前状态是未启动,我们右键将服务启动就可以了。

12.png


然后我们浏览http://localhost:8200/,得到如下界面,代表ApmServer已经安装成功了。

13.png

默认的日志在:C:\ProgramData\apm-server

相关实践学习
基于OpenTelemetry构建全链路追踪与监控
本实验将带领您快速上手可观测链路OpenTelemetry版,包括部署并接入多语言应用、体验TraceId自动注入至日志以实现调用链与日志的关联查询、以及切换调用链透传协议以满足全链路打通的需求。
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
6月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
3月前
|
存储 监控 Go
带你十天轻松搞定 Go 微服务系列(九、链路追踪)
带你十天轻松搞定 Go 微服务系列(九、链路追踪)
|
8天前
|
存储 NoSQL 关系型数据库
微服务Zipkin链路追踪原理,图解版,一文吃透!
本文重点讲解Zipkin链路追踪的原理与使用,帮助解决微服务架构下的服务响应延迟等问题,提升系统性能与稳定性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务Zipkin链路追踪原理,图解版,一文吃透!
|
3月前
|
Kubernetes 监控 API
微服务从代码到k8s部署应有尽有系列(十二、链路追踪)
微服务从代码到k8s部署应有尽有系列(十二、链路追踪)
|
6月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
994 0
|
11月前
|
存储 前端开发 算法
微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪
微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪
128 1
|
中间件 Go API
Go语言微服务框架 - 9.分布式链路追踪-OpenTracing的初步引入
我们从API层到数据库层的链路已经打通,简单的CRUD功能已经可以快速实现。 随着模块的增加,我们会越发感受到系统的复杂性,开始关注系统的可维护性。这时,有个名词会进入我们的视野:**分布式链路追踪**
140 0
|
监控 网络协议 Java
分布式链路追踪- SkyWalking使用手册
分布式链路追踪- SkyWalking使用手册
1217 0
分布式链路追踪- SkyWalking使用手册
|
3月前
|
存储 监控 开发者
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
|
12月前
|
存储 监控 数据可视化
Golang链路追踪:实现高效可靠的分布式系统监控
Golang链路追踪:实现高效可靠的分布式系统监控