微服务应用性能如何?APM监控工具让你一览无余
摘要当微服务系统越来越庞大 , 各个服务间的调用关系也变得越来越复杂 , 需要一个工具来帮忙理清请求调用的服务链路 。 最近发现应用性能监控(Application Performance Monitoring , APM)也可以很好地解决该问题 。 对比SkyWalking和Elastic APM之后 , 发现Elastic APM更胜一筹 , 今天我们来一波Elastic APM的使用实践!
Elastic APM 简介Elastic APM是基于Elastic Stack构建的应用性能监控(APM)系统 。 它主要有如下用途:
- 用来实时监控应用性能信息 , 包括HTTP请求调用时长、数据库查询信息、缓存调用信息和外部的HTTP请求调用信息 。 有助于我们快速找出并解决性能问题 。
- 自动收集应用中未处理的错误和异常 , 显示异常的堆栈信息 , 有助于快速定位异常和了解出现频率 。
- 度量指标是调试生产系统时的另一个重要信息来源 。 Elastic APM Agent 会自动收集主机级别的度量指标(比如Java JVM和Go Runtime的指标) 。
- 支持分布式请求链路追踪 , 使你能够在一个视图中分析整个服务架构的性能问题 。
文章插图
- APM Agent:以应用程序库的形式提供 , 负责收集应用运行时的性能监控数据和错误数据 , 短时间缓存后发送APM Server 。
- APM Server:一个独立的组件 , 负责接收APM Agent中发送的性能监控数据 。 验证并处理完数据后 , 会转存储到Elasticsearch中 , 之后就可以在Kibana APM 应用中查看性能监控数据了 。
- Elasticsearch:用于存储应用性能监控数据并提供聚合功能 。
- Kibana APM app:可视化查看APM性能监控数据 , 有助于找到性能瓶颈 。
- Span(跨度):Span包含一次操作过程中代码执行路径的信息 。 它从操作的开始到结束进行度量 , 并且可以与其他Span具有父/子关系 。
- Transaction(事务):Transaction是一种特殊的Span , 具有与之关联的其他属性 。 它描述了Elastic APM Agent捕获的最高级别事件 , 比如一次请求、一次 批处理任务等 。
- Error(错误):Error事件至少包含错误发生的原始异常或创建的日志的信息 。
- Metric(度量):APM Agent 自动获取基本的主机级别指标 , 包括系统和进程级别的CPU和内存指标 。 也可以获取特定于代理的指标 , 例如Java Agent中的JVM指标和Go Agent中的Go运行时指标 。
安装Elasticsearch和Kibana安装Elastic APM之前 , 我们需要先安装好Elasticsearch和Kibana , 具体参考《你居然还去服务器上捞日志 , 搭个日志收集系统难道不香么!》 , 注意使用7.6.2版本 。
安装APM Server
- 下载APM Server的安装包 , 下载地址:www.elastic.co/cn/download…
文章插图
- 下载完成后解压到指定目录;
文章插图
- 修改配置文件apm-server.yml , 修改下Elasticsearch的连接地址即可;
output.elasticsearch:hosts: ["localhost:9200"]