作者:胡征南
应用程序性能管理(Application Performance Management)简称 APM。主要功能为监视和管理软件应用程序性能和可用性。
Elastic APM 是一款基于Elastic 技术栈的免费开源的性能监控系统。用于实时监控软件服务和应用程序的各项性能指标,如:请求访问的各项指标、访问耗时、数据库查询、缓存调用、外部 HTTP 请求等。便于开发人员快速排查和修复各种性能问题。
Elastic APM 也会自动采集各种系统异常。开发人员可以通过追踪异常的程序栈,识别系统异常发生的时间和次数。
自动采集的系统指标也是 Elastic APM 一个非常重要的数据源。采集维度主要包括,宿主机级别和服务代理(Agent)级别,如:使用 Java 语言系统编写的应用程序的 JVM 指标,Go 语言运行环境的运行指标等。
Elastic APM 由4个组件组成:APM 代理、APM 服务端、Elasticsearch 和 Kibana。
图1
APM AgentAPM Agent 为通过与应用服务相同的语言编写的开源类库。通过按照其他应用程序服务一样安装代理。安装完成之后,即可通过代理收集各项应用程序指标和运行时异常。收集的数据将在本都缓存较短时间后发送至 APM Server。
支持的语言主要包括:Go、Java、.NET、Node.js、Python、Ruby、JavaScript。
APM ServerAPM Server 是一款收集 APM Agent 数据、可独立部署的开源应用程序。APM Server 使得代理变得轻量级、防范安全风险、并提高了 Elastic 技术栈的跨语言能力。APM Server 将通过 APM Agent 收集的数据进行验证、处理后存入对应的 Elasticsearch 索引。经过几秒种后,就可以通过 Kibana APM 应用观测到可视化后的应用程序性能数据了。
ElasticsearchElasticsearch 是一款高度可伸缩的全文检索和分析引擎。用于近实时存储、搜索和分析大量数据。在 Elastic APM 中,Elasticsearch 用于存储和聚合性能监控指标。
KibanaKibana 是一款将 Elasticsearch 数据进行分析和可视化的开源数据分析平台。用于对检索、展示、操作 Elasticsearch 中存储的数据。
APM术语Service在 APM agent 配置中进行设置,以将特定的 APM agent 组标识为单个服务,这是一种逻辑上标识一组事务的方法。
Transaction组成一个服务的请求和响应,例如登录 api 调用,每个调用由单独的 span 组成。
Span事务中的单个事件,例如方法调用,数据库查询或缓存插入或检索,即需要花费时间才能完成的任何事件。
Erorrs具有匹配的异常或日志消息的异常组。
Trace代表请求的整个过程
。
它们之间的关系可以用如下的图来表示:
图2
分布式 Tracing当请求从一个微服务流向另一个微服务时,追踪器添加逻辑以创建唯一的追踪识别代码, 跨度 id
图3
图4
图5
APM的安装和使用启动步骤配置启动 APM 主要包含三个步骤:安装 APM Server、配置 APM Agent、在 Kibana 中配置可视化面板。
步骤一:安装 APM Server安装通过 APM 服务端地址下载合适的服务端安装包。
下载地址 :https://www.elastic.co/cn/downloads/apm设置和配置通过 apm-server setup [FLAGS] 可以设置APM 服务端
FLAGS :-h, --help 查看帮助。
--index-management 设置关联 Elasticsearch 索引管理,包括:索引模板、生命周期管理策略、写入别名。
--pipelines 注册定义在 ingest/pipeline/definition.json 中的管道。
配置示例:
apm-server setup --index-management
apm-server setup --pipelines
启动通过启动命令启动 APM 服务端,启动命令:
./apm-server -e
指定输出 Elasticsearch 及 APM 服务端
./apm-server -e -E output.elasticsearch.hosts=ElasticsearchAddress:9200 -E apm-server.host=localhost:8200
步骤二:配置APM Agent下载 APM 代理 可以通过 Maven Central 下载代理 Jar 包,不需要再项目中引入依赖,下载地址:https://search.maven.org/search?q=a:elastic-apm-agent使用 javaagent 参数启动应用,并设置好对应的配置项。elastic.apm.service_name 为服务名称
elastic.apm.server_urls 为服务端请求地址
elastic.apm.application_packages 为项目包路径
启动参数示例:java -javaagent:/path/to/elastic-apm-agent- version .jar \ -Delastic.apm.service_name=my-application \ -Delastic.apm.server_urls=http://localhost:8200 \ -Delastic.apm.secret_token= \ -Delastic.apm.application_packages=org.example \ -jar my-application.jar步骤三:在 Kibana 查看可视化面板启动 Kibana在 Kibana 中 可观测性(Observability) 菜单下选择 APM,如图1
图6 Observability 菜单中选择APM
图7 服务健康状态视图
图8 服务链路追踪视图
图9 服务拓扑图视图
Service MapAPM 的 服务拓扑( Service map )功能可以实时显示应用架构的服务拓扑图。可以展示服务是如何连接及服务相关指标,如:事务处理耗时、每分钟请求数量、每分钟错误数量等。APM 服务拓扑图也可以结合机器学习功能,基于异常检测得得分的实时健康状态显示。以上功能可用于帮助开发人员快速、可视化的观测到服务的状态和健康程度。
APM 服务拓扑图有两种显示方式,如下图所示:
全局显示:所有安装了APM客户端的服务及它们的连接关系。指定服务显示:高亮选中服务的连接关系。图10
服务拓扑是通过开箱即用的服务链路追踪实现的。即:未正确配置追踪服务的项目不会被追踪到,也不会在服务拓扑图中显示。
服务拓扑图中选择关注的服务,可以查看对应服务的详细信息。
图11
通过机器学习自动检测事务调用得分,并在服务拓扑图中通过图例显示。
异常得分小于25,服务处于健康状态 最大异常得分介于 26-74,服务可能处于亚健康状态 最大异常得分大于 75,服务出于不健康状态表1
服务拓扑图中有两种形状的节点。
圆形:检测到的服务,图标取决于使用了那种代理。
钻石形:数据库,外部系统和消息。根据已知的实体显示对于的图标,如 Elasticsearch 的图标。
参考文献
https://elasticstack.blog.csdn.net/article/details/102844900中文 域名 能备案吗?能的,目前以下这些域名都是支持备案的,大家在注册的时候...
ASP虚拟主机 如何购买?ASP是一种服务器端脚本编写环境,可以用来创建和运行动态...
vip域名 在哪里可以注册? .vip域名 可以直接在 TOP云 平台注册,注册前先查询想...
人工智能只是一种技术手段,数据资产最终决定人工智能的行业应用发展,以及企业...
微服务和分布式的区别什么?有什么特点?微服务设计是为了不因为某个模块的升级和B...
互联网和移动互联网技术开启了大规模生产、分享和应用数据的大数据时代。面对如...
只有 域名 需要备案吗?只有域名是不需要也不能备案的。因为在国内备案,都是指...
如何使用 VNC 登录云服务器? VNC 登录是腾讯云为用户提供的一种通过 Web 浏览器...
本文转载自微信公众号「菜鸟飞呀飞」,作者刘进坤。转载本文请联系菜鸟飞呀飞公...
服务器经常被攻击怎么办呢?大多数做在线游戏服务的网站,由于平台经常受到攻击...