第 7 章:基于 K8S 构建 Jenkins 微服务发布平台(上)-- 微服务链踣监控系统

四、微服务链踣监控系统

全链路监控是什么

随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。这些服务可能不同程语言开发,不同团队开发,可能部署很多副本。因此,就需要些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。全链路监控组件就在这样的问题背景下产生了。

0b7b7d55-a94f-4037-8d69-d59e78370c9e

全链路性能监控从整体维度到局部维度展示项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩知故障排除时间。

全链路监控解决什么问题

  • 请求链路追踪:通过分析服务调用关系,绘制运行时拓扑信息,可视化展示
  • 调用情况衡量:各个调用环节的性能分析,例如吞吐量、响应时间、错误次数
  • 容器规划参考:扩容/缩容、服务降级、流量控制
  • 运行情兄反馈:告警,通过调用结合业务日志快速定位错误信息

全链路监控选择依据

全链路监控系统有很多,应从这几方面选择:

·探针的性能消耗

APM组件服务的影晌应该做到足够小,数据分析要快,性能占用小。

·代码的侵入性

也作为业务组件,应当尽可能少入侵或者无入侵其他业务系统,对于使用方透明,减少开发人员的负担。

·监控维度

分析的维度尽可能多。

·可扩展性

一个优秀的调用跟踪系统必须支持分布式部署,具备良好的可扩展性。能够支持的組件越多当然好。

主流系统:zipkin、 skywalking、 pinpoint

Pinpoint介绍

Pinpoint是—个APM(应用程序性能管理)工具,适用于用java/PHP编写的大型分布式系统。

特性

  • 服务器地图(ServerMap)通过可视化分布式系统的模块和他们之间的相互联系来理解系统拓扑。点击某个节点会展示这个模块的详情,比如它当前的状态和请求数量。
  • 实时活动程图(Realtime Active Thread Chart):实时监控应用内部的活动线程。
  • 请求响晌应分布图( Request/ Response Scatter Chart):长期可视化清求数量和应答模式来定位潜在问冋题通过在图表上拉拽可以选择请求查看更多的详细信息.
  • 调用栈(Callstack):在分布式环境中为每个调用生成代码级别的可视图,在单个视图中定位瓶颈和失败点。
  • 检查器(Inspector):查看应用上的其他详细信息,比如CPU使用率,内存/应圾回收,TPS,和νM参数

Pinpoint 服务端部署

cbf94c58-e970-4f51-b30e-9b975ac943b0

# 克隆官方的连接

git clone https://github.com/naver/pinpoint-docker.git
cd pinpoint-docker
docker-compose pull
docker-compose up -d
[root@pinpoint pinpoint-docker-master]# docker-compose ps
            Name                           Command               State                                     Ports
---------------------------------------------------------------------------------------------------------------------------------------------------
pinpoint-agent                  /usr/local/bin/configure-a ...   Up
pinpoint-collector              sh /pinpoint/scripts/start ...   Up      0.0.0.0:9991->9991/tcp, 0.0.0.0:9992->9992/tcp, 0.0.0.0:9993->9993/tcp,
                                                                         0.0.0.0:9994->9994/tcp, 0.0.0.0:9995->9995/tcp, 0.0.0.0:9995->9995/udp,
                                                                         0.0.0.0:9996->9996/tcp, 0.0.0.0:9996->9996/udp
pinpoint-docker-master_zoo1_1   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:32774->2181/tcp, 2888/tcp, 3888/tcp
pinpoint-docker-master_zoo2_1   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:32775->2181/tcp, 2888/tcp, 3888/tcp
pinpoint-docker-master_zoo3_1   /docker-entrypoint.sh zkSe ...   Up      0.0.0.0:32776->2181/tcp, 2888/tcp, 3888/tcp
pinpoint-flink-jobmanager       /docker-entrypoint.sh jobm ...   Up      6123/tcp, 0.0.0.0:8081->8081/tcp
pinpoint-flink-taskmanager      /docker-entrypoint.sh task ...   Up      0.0.0.0:19994->19994/tcp, 0.0.0.0:6121->6121/tcp, 0.0.0.0:6122->6122/tcp,
                                                                         6123/tcp, 8081/tcp
pinpoint-hbase                  /bin/sh -c /usr/local/bin/ ...   Up      0.0.0.0:16010->16010/tcp, 0.0.0.0:16030->16030/tcp,
                                                                         0.0.0.0:60000->60000/tcp, 0.0.0.0:60020->60020/tcp
pinpoint-mysql                  docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp
pinpoint-quickstart             catalina.sh run                  Up      0.0.0.0:8000->8080/tcp
pinpoint-web                    sh /pinpoint/scripts/start ...   Up      0.0.0.0:8079->8079/tcp, 0.0.0.0:9997->9997/tcp
view code

Pinpoint Agent部署

53032468

对微服务接入,在其中新加入探针。

在dockerfile中新加入了一行参数

b48ab496-a8ab-435e-8d4c-4747c2fd5170

pinpoint的配置文件

6ae64805-39ea-4576-b9b7-0a0e5355eec8

配置完成后,访问页面的IP

微服务的多个部分的,不同模块的调用,链路的展示。12913750

打开product微服务的链路监控,可以看到它和后端的另外三个微服务的一个交互情况。

12923875

order ,product 微服务的与后端的数据库调用逻辑

12964875

链路监控还,可以查看到java代码的调用类。每一个类的一个性能时间消耗

image

image

java 应用,系统的资源性能的监控

image

47282593

监控java 应用哪些指标
1、堆内存:年轻代、老年代、非堆内存(持久代)
2、线程数量
3、GCC(垃圾回收),G1,CMS
4、CPU利用率
5、堆栈跟踪
6、接口状态
7、吞吐量
posted @ 2020-11-01 10:49  元贞  阅读(184)  评论(0)    收藏  举报