天天看点

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

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

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

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

请求链路追踪:通过分析服务调用关系,绘制运行时拓扑信息,可视化展示

调用情况衡量:各个调用环节的性能分析,例如吞吐量、响应时间、错误次数

容器规划参考:扩容/缩容、服务降级、流量控制

运行情况反馈:告警,通过调用链结合业务日志快速定位错误信息

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

探针的性能消耗

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

代码的侵入性

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

监控维度

分析的维度尽可能多。

可扩展性

一个优秀的调用跟踪系统必须支持分布式部署,具备良好的可扩展

性。能够支持的组件越多当然越好。

主流系统:zipkin、skywalking、pinpoint

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

特性:

服务器地图(ServerMap)通过可视化分布式系统的模块和他们之间的相互联系来理解系统拓扑。点击某个节点会展示这个模块的详情,比如它当前的状态和请求数量。

实时活动线程图 (Realtime Active Thread Chart) :实时监控应用内部的活动线程。

请求/响应分布图( Request/Response Scatter Chart ) :长期可视化请求数量和应答模式来定位潜在问题。通过在图表上拉拽可以选择请求查看 更多的详细信息。

调用栈( CallStack ):在分布式环境中为每个调用生成代码级别的可视图,在单个视图中定位瓶颈和失败点。

检查器( Inspector ) :查看应用上的其他详细信息,比如CPU使用率,内存/垃圾回收,TPS,和JVM参数。

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

Docker部署:

首先要下载好pinpoint 镜像,然后docker load 导入

链接: https://pan.baidu.com/s/1-h8g7dxB9v6YiXMYVNv36Q 密码: u6qb

github下载慢的话可以直接将开源代码克隆到自己的gitee,然后下载,这样比较快

等待大概10min左右就能访问

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

返回代码目录(simple-microservice-dev4)

新增pingpoint agent,并修改配置文件(pinpoint 引入)

项目dockerfile修改

项目数据库修改

脚本化构建发布

浏览器查看状态

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

资源消耗比较大,所以只展示这些

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

请求数/调用次数

堆内存(JVM信息)

调用信息(堆栈跟踪)

响应时间

错误率

微服务调用链路拓扑

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

详情参考:

1、安装push插件

https://github.com/chartmuseum/helm-push

如果网络下载不了,也可以直接解压课件里包:

2、 在Jenkins主机配置Docker可信任,如果是HTTPS需要拷贝证书

k8s集群所有节点都需要配置

3、添加repo

4、推送与安装Chart(例子)

192.168.56.17此节点部署,前提是安装好docker

访问地址:http://IP:9999

初次会先设置管理员密码 ,然后登陆,默认管理员用户名root,密码就是刚设置的。

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

使用上一节课的dev3分支的代码(已经改好了的)

建议关闭https功能,否则自签证书会影响helm 拉取的问题

创建方式如下,还需要导入对应的数据库

参考:https://github.com/jenkinsci/kubernetes-plugin/tree/fc40c869edfd9e3904a9a56b0f80c5a25e988fa1/src/main/kubernetes

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

访问http://192.168.56.11:30006/ 即可进行配置

密码以及插件地址更新(很重要)

找到配置pv自动供给的NFS服务器(192.168.56.13),进入共享目录

不选择插件

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

配置新的账号

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

修改插件源

重建pod

插件安装

管理Jenkins->系统配置-->管理插件-->分别搜索Git Parameter/Git/Pipeline/kubernetes/Config File Provider,选中点击安装。 Git Parameter:Git参数化构建 Extended Choice Parameter: 参数化构建多选框 Git:拉取代码 Pipeline:流水线 kubernetes:连接Kubernetes动态创建Slave代理 Config File Provider:存储kubectl用于连接k8s集群的kubeconfig配置文件

Jenkins Pipeline是一套插件,支持在Jenkins中实现集成和持续交付管道;

pipeline通过特定语法对简单到复杂的传输管道进行建模;

声明式:遵循与Groovy相同语法。pipeline { }

脚本式:支持Groovy大部分功能,也是非常表达和灵活的工具。node { }

Jenkins Pipeline的定义被写入一个文本文件,称为Jenkinsfile。

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

在实际环境中, 往往有很多项目,特别是微服务架构,如果每个服务都创建一个item,势必给运维工作量增加很大,因此可以通过Jenkins的参数化构建, 人工交互确认发布的环境配置、预期状态等。

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

Kubernetes插件:Jenkins在Kubernetes集群中运行动态代理

插件介绍:https://github.com/jenkinsci/kubernetes-plugin

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

云配置

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

资料详见jenkins.zip

配置pipeline-demo: 涉及三个选择参数: NS(名称空间),SVC(发布的微服务名称),RS(发布的副本数)

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

配置pipeline

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

运行测试

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

](https://s4.51cto.com/images/blog/202009/20/9461e1f123f2f3418a245a35392dc6ac.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

根据所选的内容自动生成grovy语法

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

gitlab认证

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

harbor认证

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

kubernetes kubeconfig 认证

创建自定义配置

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

将k8s的config配置拷入配置内容

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

pipeline如下:

发布如下

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

校验如下(k8s集群查看):

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布

原理: 通过jenkins读取gitlab中的pipeline文件,从而实现版本控制来做到自动化

kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布
kubernetes(二十一) 微服务链路监控& 自动发布微服务链路监控& 自动发布