《Elastic(中国)基础开发宝典》——添加免费且开放的 Elastic APM 作为Elastic可观测性部署的一部分(上)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 《Elastic(中国)基础开发宝典》——添加免费且开放的 Elastic APM 作为Elastic可观测性部署的一部分(上)

今天,我们将介绍扩展部署时所需的操作,以便您可以开始收集来自应用程序性能 监测(APM)的指标或者"跟踪"可观测性集群中的数据,所有这些都可以免费实现。


1. 什么是 APM?


利用应用程序性能监测,您可以查看应用程序将时间花在哪些地方、在执行哪些操 作、在调用哪些其他应用程序或服务,以及遇到了哪些错误或异常情况。

image.png

 

此外通过APM,您还可以了解关键性能指标的历史记录和趋势比如延迟和吞吐 量,以及事务和依赖信息:

image.png

无论您是针对SLA违规设置告警还是要衡量最新版的影响亦或是决定下次改进 所涉及的方面,APM都可以帮助您进行根本原因分析,进而改善用户体验,并让平 均解决时间(MTTR)不断趋近于零。


2. 逻辑架构


Elastic APM依赖于APM服务器,后者会将应用程序跟踪和指标数据从安装有APM 代理的应用程序转发到Elastic可观测性集群。Elastic APM支持多种不同的代理类型:

原生 Elastic APM 代理,支持多种语言,包括JavaNETGoRubyPythonNode.jsPHP 和客户端JavaScript;

已装载OpenTelemetry测量工具的代码

已装载OpenTracing测量工具的代码

已装载Jaeger测量工具的代码。

image.png

 

在本篇博文中,我们会通过一个简单示例说明如何使用原生Elastic APM Ruby代 理来装载代码,但总体步骤其实与其他语言类似。


3. 设置 APM 服务器


APM服务器将跟踪和应用程序指标数据从APM代理转发到Elasticsearch。要将 APM数据添加到您的Elastic可观测性集群,我们可以按照Kibana本身提供的简要说明进行操作。


Kibana中,它会检测您是在Elastic Cloud (我们的托管式Elasticsearch服务中运行,还是在运行一个自管型集群。在我的这个示例中,运行的是自管型集群。 在确认ElasticsearchKibana正在运行后,我们连接到Kibana实例。如果您不 记得Kibana URL,可以在Kibana日志的开头找到它。例如,我的日志是这样的:

log [07:30:58.643] [info] [server] [Kibana] [http] http server running at https://192.168.1.175:5601

登录到Kibana (在我的示例中,使用elastic/ThisIsTooEasy)后,单击"汉堡图 标然后从主菜单中选择APM,以前往APM应用:

image.png

 

Kibana 检测到还没有任何APM数据,并提示我单击指向说明的链接:

image.png

单击链接后便可以看到一组开始前应完成的简要步骤。

image.png 

我们大概按照说明进行操作就可以了;我使用的是自签名证书,因此我需要执行一 些额外的步骤,但步骤大体上是相同的。


下载APM服务器

APM服务器连接到Elasticsearch;

将代理连接到APM服务器。


第一步 下载APM服务器


Elastic APMAPM服务器都是Elastic可观测性免费开放层的一部分——您可以根 据需要查看源代码;如果想进行功能改进,可以提交拉取请求;如果遇到问题或有 疑问,可以提交工单。

按照Kibana中的说明我们先从与操作系统对应的说明开始。我是在Mac上运行 的,因此我要按照这些说明进行设置。第一步让我们下载APM服务器tarball 或 所选操作系统系列使用的任何安装包类型并安装它。对于MacOS,这只是意味着 对其进行扩展并更改为新创建的目录:

curl -L -O
https://artifacts.elastic.co/downloads/apm-server/apm-server-7.12.0-darwin-x86_64.tar.gz
tar xzvf apm-server-7.12.0-darwin-x86_64.tar.gz
cd apm-server-7.12.0-darwin-x86_64/

进入apm-server-712.0-darwin-x86_64目录后,我们会看到一些文件

~/ELK/apm-server-7.12.0-darwin-x86_64 $ >ls -lF
total 132724
-rw-r--r-- 1 jamie
-rw-r--r-- 1 jamie
-rw-r--r-- 1 jamie 123M Mar 18 03:11 apm-server* -rw
server.yml
-rw-r--r-- 1 jamie staff 323K Mar 18 01:08 fields.yml drwxr-xr-x 3 jamie staff 96B Mar 18 01:08 ingest/

包括一些文档、字段规范、配置文件和APM服务器可执行文件。


第二步 将APM服务器连接到Elasticsearch


在这里,我们将稍微脱离一下说明。我们仍将设置Elasticsearch输出部分:

output.elasticsearch:
hosts: [""]
username:
password:

但是由于Elasticsearch使用的是自签名证书,因此我们也需要对它进行配置。

在我的示例中,Elasticsearch正在侦听https://192.168 .1.175:9200,因此我们将使 用它来设置hostsprotocol键的值

output.elasticsearch:
hosts: ["192.168.1.175:9200"]
protocol: "https"

我们可以使用elastic用户将APM服务器连接到Elasticsearch,APM服务器不 需要超级用户权限。我将创建一个能够正常工作但权限最少的角色,并将它命名为 apm_server。我们会在 Kibana 中的 “Security Management"安全管理)部分 执行此操作。要前往这个部分,请单击Kibana左上角的汉堡图标然后前往Stack Management]堆栈管理),我们可以在这里找到安全部分。依次单击Roles(角色)、 Create role (创建角色),并添加apm_server角色

image.png

然后保存。接下来,选择Users (用户^Create user (创建用户),并添加 apm_server_user:

image.png

当然您可以为角色和用户使用自己的名称,也可以如上所述只用elastic用户进 彳亍试验

接下来,我们将需要使用的usernamepassword的凭据添加到配置中,如下所示:

output.elasticsearch:
hosts: ["192.168.1.175:9200"]
protocol: "https"
username: "apm_server_user"
password:"ThisIsTooEasy"

我们快要能够启动APM服务器了,但如果我们现在启动的话,会遇到一个错误,提 示有关证书是由未知机构签名的:

./apm-server -e
{"log.level":"error","@timestamp":"2021-04-27T13:21:51.497- 0400","log.logger":"publisher_pipeline_output","log.origin":("file.name":"pipeline/output.go","file.line" :154),"message":"Failed to connect to
backoff(elasticsearch(https://192.168.1.175:9200)):Get \"https://192.168.1.175:9200\":
x509: certificate signed by unknown authority",“ecs.version":“1.6.0"}

为了缓解这种情况,我们需要告知APM服务器关于证书颁发机构的信息。在我的示 例中,这些信息位于~/ELK/elasticsearch文件夹下。

首先,我们将ca.crt复制到APM服务器的目录层次结构(我们可以从它所在位置直 接引用,但在真实环境中,您可能会在不同的主机上运行每个服务):

cp 〜/ELK/elasticsearch/ca/ca.crt .

然后,通过向apm_server.ymlelasticsearch.output部分添加另一个键将新的 ca.crt指定为颁发机构:

output.elasticsearch:
hosts: ["192.168.1.175:9200"]
protocol: "https"
username: "elastic" password:"ThisIsTooEasy" ssl:
certificate_authorities: ['certs/ca.crt']

第三步 启动APM服务器


我们现在可以启动APM服务器了。它将连接到Elasticsearch,但现在它只侦听 localhosto我想对配置再做一处更改,以便让它能够侦听主机IP,而不仅仅是 localhost,这样防火墙后面的其他主机就可以访问到它。在apm-server.yml文件 的开头附近有一个地方可以进行这项更改。我的APM服务器将在我运行其他资源 的同一机器上运行,所以我会使用相同的192.168.1.175地址,现在的配置如下所示

apm-server:
#定义服务器要侦听的主机和端口。使用"unix:/path/to.sock"侦听unix域套接字。 host:"192.168.1.175:8200"

最终,我们可以使用./apm-server-e启动APM服务器(-e会使它只登录到控制台这在启动时很有用)。

如果我们回到Kibana, APM应用中仍然没有显示任何内容,但有一个小按钮Check APM Server status可以检查APM服务器的状态。单击这个按钮应该会收到您已 正确设置APM服务器这条令人满意的消息

image.png


您可能还注意到,在状态检查下方还有一个关于APM代理的部分:

image.png

我们不妨在这一部分获取一些真实的装载测量工具数据!


更多精彩内容,欢迎观看:

《Elastic(中国)基础开发宝典》——添加免费且开放的 Elastic APM 作为Elastic可观测性部署的一部分(下):https://developer.aliyun.com/article/1220167?spm=a2c6h.13148508.setting.14.747d4f0e5pDIEa

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
|
2月前
|
Java 测试技术 API
如何在 Apache JMeter 中集成 Elastic APM
如何在 Apache JMeter 中集成 Elastic APM
48 1
|
6月前
|
监控 Java API
如何在Spring Boot中集成Elastic APM进行应用性能监控
如何在Spring Boot中集成Elastic APM进行应用性能监控
|
7月前
|
存储 Prometheus 运维
【阿里云云原生专栏】云原生下的可观测性:阿里云 ARMS 与 Prometheus 集成实践
【5月更文挑战第25天】阿里云ARMS与Prometheus集成,为云原生环境的可观测性提供强大解决方案。通过集成,二者能提供全面精准的应用监控,统一管理及高效告警,助力运维人员及时应对异常。集成示例代码展示配置方式,但需注意数据准确性、监控规划等问题。这种集成将在云原生时代发挥关键作用,不断进化以优化用户体验,推动业务稳定发展。
244 0
|
编解码 人工智能 运维
《云原生架构容器&微服务优秀案例集》——01 互联网——核桃编程 基于 ARMS 构建可观测体系,全方位提升用户体验
《云原生架构容器&微服务优秀案例集》——01 互联网——核桃编程 基于 ARMS 构建可观测体系,全方位提升用户体验
283 0
|
运维 Prometheus 监控
《云原生架构容器&微服务优秀案例集》——03 零售/电商——传音 基于 ARMS 构建全球一体化可观测平台高效支撑业务创新
《云原生架构容器&微服务优秀案例集》——03 零售/电商——传音 基于 ARMS 构建全球一体化可观测平台高效支撑业务创新
524 0
|
Prometheus 监控 Cloud Native
带你读《企业级云原生白皮书项目实战》——4.3.1 ARMS概述
带你读《企业级云原生白皮书项目实战》——4.3.1 ARMS概述
146 0
|
数据采集 监控 Kubernetes
带你读《企业级云原生白皮书项目实战》——4.3.2 ARMS优势
带你读《企业级云原生白皮书项目实战》——4.3.2 ARMS优势
145 0
|
SQL 监控 Cloud Native
带你读《企业级云原生白皮书项目实战》——4.3.3ARMS最佳实践(上)
带你读《企业级云原生白皮书项目实战》——4.3.3ARMS最佳实践(上)
142 0
|
监控 Cloud Native 前端开发
带你读《企业级云原生白皮书项目实战》——4.3.3ARMS最佳实践(下)
带你读《企业级云原生白皮书项目实战》——4.3.3ARMS最佳实践(下)
140 0

热门文章

最新文章