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

本文涉及的产品
服务治理 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

相关实践学习
分布式链路追踪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 链路追踪组件埋点
|
9月前
|
Java 中间件 微服务
微服务 链路追踪组件
微服务 链路追踪组件
134 0
|
6天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
797 0
|
5月前
|
存储 前端开发 算法
微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪
微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪
|
7月前
|
中间件 Go API
Go语言微服务框架 - 9.分布式链路追踪-OpenTracing的初步引入
我们从API层到数据库层的链路已经打通,简单的CRUD功能已经可以快速实现。 随着模块的增加,我们会越发感受到系统的复杂性,开始关注系统的可维护性。这时,有个名词会进入我们的视野:**分布式链路追踪**
65 0
|
8月前
|
数据可视化 Java Docker
Sleuth微服务链路追踪整合ELK和zipkin
Sleuth微服务链路追踪整合ELK和zipkin
224 0
|
9月前
|
监控 负载均衡 前端开发
微服务架构之链路追踪原理
微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。
435 0
|
1天前
|
运维 监控 负载均衡
探索微服务架构下的服务网格
【5月更文挑战第20天】 在当今日益复杂的分布式系统中,微服务架构已成为企业技术栈的重要组成部分。随着微服务数量的膨胀和网络通信的复杂化,传统的服务发现与负载均衡机制显得力不从心。本文将深入探讨服务网格这一新兴模式,它如何在微服务环境中提供更灵活、动态且高效的服务间通信解决方案。我们将剖析服务网格的核心组件、工作原理以及它如何简化分布式系统的运维难题。
|
1天前
|
消息中间件 持续交付 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构逐渐显得笨重且难以适应快速变化的市场需求。微服务架构作为解决方案,以其灵活性、可扩展性和技术多样性受到青睐。本文将深入探讨微服务架构的核心概念,设计原则,以及如何通过最佳实践来构建和维护一个高效的微服务体系结构。我们将讨论关键的后端技术栈选择,服务划分策略,数据管理,以及持续集成与部署(CI/CD)流程的重要性。文章旨在为后端开发者提供一套实用的指南和思考框架,以支持他们在未来的软件项目中采用微服务架构。
|
1天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第20天】 在现代软件开发的潮流中,微服务架构已成为推动技术创新和服务灵活部署的关键。本文探讨了如何构建一个高效的微服务架构,涵盖其设计理念、技术栈选择以及面临的挑战与应对策略。通过深入分析,我们旨在为后端开发者提供一套实用的指导原则和最佳实践,以支持快速迭代和系统的可扩展性。