K8S学习笔记0626
K8S学习笔记0626
分布式链路追踪系统
早期监控工具功能比较单一,主要以监控CPU使用率、IO、内存资源、网速等网络基础设施为主(cacti、 nagios)
后来随着中间件技术的不断发展,APM也开始监控缓存、数据库、MQ等各种基础组件的性能(zabbix、Prometheus)
微服务兴起之后,系统功能被模块化,再加上k8s与容器化的兴起及应用数量的爆炸式增长,各模块和服务之的调用链路、响应时间、负载等越来越不好通过传统的工具进行监控和统计,此时APM系统诞生了(应运而生)。
APM的特点
收集应用程序性能
APM系统的核心作用是收集并展示应用程序接收请求和构建响应的性能,从而掌握整条链路的途径和性能,通过APM可以帮助运维人员快速统计出应用程序中访问量最多的URL、响应最慢的URL以及应用程序需要优化的URL等。
监控应用程序调用的中间件的性能(依赖调用):
程序也可能由于其依赖的中间件或者其它的API的性能有问题、例如被调用的数据库、缓存、Web服务器、第三方服务等响应慢而导致应用程序变慢,因此不仅要监控应用程序自身,还要监控其所有的外部依赖项。
在代码级别实现性能分析:
通过在代码级别分析应用程序中的class等,APM工具可以深入了解并分析导致应用程序性能较低的代码,另外目前安卓、IOS等手机APP都有Agent用于记录APP的启动时间、首屏加载时间、使用的网络类型、版本信息、崩溃记录等信息并提交到服务端进行统计分析和展示。
监控应用程序资源使用情况
监控资源使用情况尤其是CPU和内存的使用情况至关重要(如java程序的内存使用等),尤其是想根据资源利用率实现自动弹性伸缩应用程序。
统一展示监控数据和日志
应用程序的性能统计、访问和错误日志在统一的平台进行展示(devops运维平台),方便快速查询与故障定位。
APM项目
CAT:由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C、ode.js、 Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT需要开发人员手动在应用程序中埋点,对代码侵入性比较强。
Zipkin:—由Twitter公司开发并开源,基于Java语言实现,侵入性相对于CAT要低一点,需要对web.xml等相关配置文件进行修改,但依然对系统有一定的侵入性,Zipkin可以轻松与Spring Cloud进行集成,也是Spring Cloud推荐的APM系统。
jaeger是Uber推出的一款开源分布式追踪系统,主要使用go语言开发,对业务代码侵入性较少.
Pinpoint:韩国团队开源的APM产品,运用了字节码增强技术,只需要在启动时添加启动参数即可实现APM功能,对代码无侵入,目前支持Java和 PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗较大,因其出现的时间较长,完成度也很高,文档也较为丰富,应用的公司较多.
SkyWalking: Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目,2017年12月 SkyWalking成为Apache国内首个个人孵化项目,2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目,目前SkyWalking支持Java、.et、ode.js、go.python等探针,数据存储支持MySQL、 ElasticSearch等,SkyWalking与Pinpoint相同,对业务代码无侵入,不过探针采集数据粒度相较于Pinpoint来说略粗,但性能表现优秀,目前SkyWalking增长势头强劲,社区活跃,中文文档齐全,没有语言障碍,支持多语言探针,这些都是SkyWalking的优势所在,还有就是SkyWalking支持很多框架,包括很多国产框架,例如,Dubbo、gRPC.SOFARPC等等,同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。
开源的:piwik等
商业:百度统计/growingio等
由于以上APM系统较多,各个分布式链路追踪产品的API并不兼容,如果用户在各个产品之间进行切换,成本非常高,因此社区成立了OpenTracing组织,OpenTracing通过制定统一的API标准和数据结构模型,从而帮助开发人员和用户能够方便地使用或更换追踪系统。
Skywalking
Skywalking特点
实现从请求跟踪、指标收集和日志记录的完整信息记录。
多语言自动探针,支持Java、GO、Python.PHP、odeJS、LUA、Rust等客户端。
内置服务网格可观察性,支持从lstioEnvoy Service Mesh收集和分析数据。
模块化架构,存储、集管理、使用插件集合都可以进行自由选择。
支持告警。
优秀的可视化效果。
skywalking简介-组件
上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
左部分 SkyWalking UI :负责提供控台,查看链路等等。
数据库支持es、MySQL、tidb、h2等,推荐es
OAP平台(ObservabilityAnalysis Platform,可观测性分析平台)或OAP Server,它是一个高度件化的轻量级分析程序,由兼容各种探针Receiver、流式分析内核和查询内核三部分构成。 11800为数据写入端口,12800为查询端口
探针:基于无侵入式的收集,并通过HTTP或者gRPC方式发送数据到OAP Server。
存储实现(Storage lmplementors),SkyWalking OAP Server支持多种存储实现并且提供了标准接口,可支持不同的存储后端。
UI模块(SkyWalking),通过标准的GraphQL(Facebook在2012年开源)协议进行统计数据查询和展示。前端服务,端口号8080
部署es
使用es来存取数据
部署skywalking
提前安装jdk
wget config/application.yml
storage:selector: ${SW_STORAGE:elasticsearch7}elasticsearch7:nameSpace: ${SW_AMESPACE:}clusterodes: ${SW_STORAGE_ES_CLUSTER_ODES:192.168.226.151:9200}[root@lvs-master apache-skywalking-apm-bin-es7]# ./bin/startup.sh
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
准备工作
安装java环境
apt install openjdk-11-jre-headless从1.4.起,版本要求为11以上的版本。1.4.以下需要1.8以上的版本。
下载skywalking java agent包和halo博客包
wget .8.0/apache-skywalking-java-agent-8.8. .5./halo-1.5..jar
修改skywalking java agent 配置
vim /data/skywalking-agent/config/ # The agent namespace
=${SW_AGET_AMESPACE:halo}# The service name in UI
agent.service_name=${SW_AGET_AME:halo}# Backend service addresses.
collector.backend_service=${SW_AGET_COLLECTOR_BACKED_SERVICES:192.168.226.151:11800}
启动app
java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.5..jar
验证
global:显示服务的全局统计详情。服务(Service)表示对请求提供相同行为的一系列或一组工作负载(服务名称),在使用Agent或SDK的时候,可以自定义服务的名字,如果不定义的话,SkyWalking将会使用你在平台(例如说Istio)上定义的名字。服务实例(Instance)上述的一组工作负载中的每一个工作负载称为一个实例(一个服务运行的节点)一个服务实例可以是一个kubernetes中的pod或者是一个虚拟机甚至是物理机。端点(Endpoint):对于特定服务所接收的请求路径,如HTTP的URI路径和gRPC服务的类方法签名,如/api/v1/
CPM-calls per minute:服务平均每分钟请求数Slow Services (ms:慢响应服务,单位ms)Un-Health services(Apdex):Apdex 性能指标,1为满分Slow Endpoints(ms):全局维度的慢响应端点(APl),例如一个接口,显示的是全局慢响应Top 的数据,通过这个可以观测平台性能情况.Global Respe Latencypercentile inms):全局响应延迟百分位数统计,单位ms.Global Heatmap:服务响应时间热力分布图,根据当前时间段内不同响应时间(0ms,100ms)的数量用不同颜表示
Service Apdex(数字):当前服务的评分Service Apdex(折线图):一段时间内Apdex评分Service Avg Respe Times (ms) :平均响应廷时,单位msService Respe Time Percentile:百分比响应延时,参考Global Respe Latency (percentilein ms)Successful Rate (数字):请求成功率Successful Rate(折线图):一段时间的请求成功率Servce Load (CPM / PPM)(数字)﹔每分钟请求数,Servce Load (CPM / PPM)(折线图):不同时间的每分钟请求数Service Throughput (Bytes):该指标只适用于TCP服务。当前服务的吞吐量.Servce Instances Load (CPM/ PPM):每个服务实例的每分钟请求数Show Service Instance:每个服务实例的最大延时Service Instance Successful Rate:每个服务实例的请求成功率
Service lInstance Load (CPM /PPM):当前实例的每分钟请求数。Service Instance Throughput (Bytes) :该指标只适用于TCP服务,显示当前服务实例的吞吐量.Service Instance Successful Rate (%) .当前实例的请求成功率.Service Instance Latency (ms) :当前实例的响应延时。Service Instance Successful Rate (%) .当前实例的请求成功率.Service Instance Latency (ms) :当前实例的响应延时。JVM CPU (ava Service) : jvm占用CPU的百分比。JVM Memory (Java Service): JVM内存占用大小,单位m,包括堆内存,与堆外内存(直接内存).JVM GC Count JVM垃圾回收次数,包含YGC和OGcJVM GC Count JVM垃圾回收次数,包含YGC和OGcJVM Thread Count (Java Service).
端点整体统计:
Endpoint Load in Current Service (CPM/ PPM):每个端点(API)每分钟请求数Slow Endpoints in Current Service(ms):每个端点(API)的最慢响应请求时间,单位msSuccessful Rate in Current Service:(%)∶每个端点(API)的请求成功率当前端点统计:Endpoint Avg Respe Time:当前端点每个时间段的请求行响应时间Endpoint Load:当前端点每个时间段的请求数据Endpoint Respe Time Percentile(ms):当前端点每个时间段的响应时间占比Endpoint Successful Rate (%):当前端点每个时间段的请求成功率
Database Avg Respe Time (ms) :当前数据库事件平均响应时间,单位msDatabase Access Successful Rate (%):当前数据库访问成功率Database Traffic (CPM: Calls PerMinute) :当前数据库每分钟请求数Database Access Latency Percentile(ms):数据库不同比例的响应时间,Slow Statements (ms) :前个慢查询,单位msAll Database Loads (CPM: Calls PerMinute):所有数据库中请求量排序Un-Health Databases:所有数据库不健康排名,请求咸功率排名,失败最多的请求在最上。
jar(Java Archive,java归档文件):通常指包含 class、properties 文件,体积通常较小、运行简单,在dubbo、springCloud等微服务场合使用较多.war(Web application Archive,Web应用程序归档): war 是 Sun提出的一种 Web应用程序格式, tomcat运行的webapp通常是个单体服务,服务中包含JSP页面、JAR库文件、HTML及XML等文件,一个war包可以理解为是一个web项目,里面是项目的所有资源,这种项目通常打包为AME.war类型的压缩包,然后保存在 tomcat的 webapps目录下,tomcat成功启动后即可访问.ear(Enterprise Archive file,企业级归档文件):除了包括JAR、WAR 以外,还包括EJB组件,EJB(Enterprise Java Beans)是基于分布式事务处理的企业级应用程序的组件, ear需要使用jboss,weblogic,websphere 等商业运行环境, tomcat不支持.
准备工作
部署jdk
下载tomcat jar包
wget .5.81/bin/apache-tomcat-8.5.gz
下载jenkins war包
wget .57/jenkins.war
mv jenkins.war /apps/apache-tomcat-8.5.81/webapps/
配置tomcat启动参数
.8.0/en/setup/service-agent/java-agent/readme/
[root@lvs-master ~]# vim /apps/apache-tomcat-8.5.81/bin/catalina.sh CATALIA_OPTS=$CATALIA_OPTS -javaagent:/data/skywalking-agent/skywalking-agent.jar; export CATALIA_OPTS
修改skywalking java agent配置
[root@lvs-master ~]# vim /data/skywalking-agent/config/ # The agent namespace
=${SW_AGET_AMESPACE:jenkins}# The service name in UI
agent.service_name=${SW_AGET_AME:jenkins}
启动tomcat并部署Jenkins
[root@lvs-master ~]# /apps/apache-tomcat-8.5.81/bin/catalina.sh run
验证
启动zookeeper
/apps/zookeeper/bin/zkServer.sh start
修改producer和cumer配置
dubbo.registry.address=zookeeper://192.168.226.144:2181
添加skywalking Java agent启动参数
java -javaagent:/data/skywalking-agent/skywalking-agent.jar -Djava.awt.headless=true -Djava.preferIPv4Stack=true -server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:UseParallelGC -classpath /apps/dubbo-demo-provider-2.1.5/conf:/apps/dubbo-demo-provider-2.1.5/lib/cache-api-0.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/comm-codec-1.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/comm-logging-1.1.1.jar:/apps/dubbo-demo-provider-2.1.5/lib/comm-pool-1.5.5.jar:/apps/dubbo-demo-provider-2.1.5/lib/dubbo-2.1.5.jar:/apps/dubbo-demo-provider-2.1.5/lib/dubbo-demo-2.1.5.jar:/apps/dubbo-demo-provider-2.1.5/lib/dubbo-demo-provider-2.1.5.jar:/apps/dubbo-demo-provider-2.1.5/lib/fastjson-1.1.8.jar:/apps/dubbo-demo-provider-2.1.5/lib/gmbal-api-only-.0.0-b02.jar:/apps/dubbo-demo-provider-2.1.5/lib/grizzly-core-2.1.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/grizzly-framework-2.1.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/grizzly-portunif-2.1.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/grizzly-rcm-2.1.4.jar:/apps/dubbo-demo-provider-2.1.5/lib/hessian-4.0.7.jar:/apps/dubbo-demo-provider-2.1.5/lib/hibernate-validator-4.2.0.Final.jar:/apps/dubbo-demo-provider-2.1.5/lib/httpclient-4.1.2.jar:/apps/dubbo-demo-provider-2.1.5/lib/httpcore-4.1.2.jar:/apps/dubbo-demo-provider-2.1.5/lib/javassist-.15.0-GA.jar:/apps/dubbo-demo-provider-2.1.5/lib/jedis-2.0.0.jar:/apps/dubbo-demo-provider-2.1.5/lib/jetty-6.1.26.jar:/apps/dubbo-demo-provider-2.1.5/lib/jetty-util-6.1.26.jar:/apps/dubbo-demo-provider-2.1.5/lib/jline-0.9.94.jar:/apps/dubbo-demo-provider-2.1.5/lib/log4j-1.2.16.jar:/apps/dubbo-demo-provider-2.1.5/lib/management-api-.0.0-b012.jar:/apps/dubbo-demo-provider-2.1.5/lib/mina-core-1.1.7.jar:/apps/dubbo-demo-provider-2.1.5/lib/netty-.2.5.Final.jar:/apps/dubbo-demo-provider-2.1.5/lib/servlet-api-2.5-20081211.jar:/apps/dubbo-demo-provider-2.1.5/lib/slf4j-api-1.6.2.jar:/apps/dubbo-demo-provider-2.1.5/lib/spring-2.5.6.SEC0.jar:/apps/dubbo-demo-provider-2.1.5/lib/validation-api-1.0.0.GA.jar:/apps/dubbo-demo-provider-2.1.5/lib/zookeeper-...jar: com.alibaba.Mainjava -javaagent:/data/skywalking-agent/skywalking-agent.jar -Djava.awt.headless=true -Djava.preferIPv4Stack=true -server -Xmx1g -Xms1g -Xmn256m -XX:PermSize=128m -Xss256k -XX:DisableExplicitGC -XX:UseConcMarkSweepGC -XX:CMSParallelRemarkEnabled -XX:UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:UseFastAccessorMethods -XX:UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -classpath /apps/dubbo-demo-cumer-2.1.5/conf:/apps/dubbo-demo-cumer-2.1.5/lib/cache-api-0.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/comm-codec-1.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/comm-logging-1.1.1.jar:/apps/dubbo-demo-cumer-2.1.5/lib/comm-pool-1.5.5.jar:/apps/dubbo-demo-cumer-2.1.5/lib/dubbo-2.1.5.jar:/apps/dubbo-demo-cumer-2.1.5/lib/dubbo-demo-2.1.5.jar:/apps/dubbo-demo-cumer-2.1.5/lib/dubbo-demo-cumer-2.1.5.jar:/apps/dubbo-demo-cumer-2.1.5/lib/fastjson-1.1.8.jar:/apps/dubbo-demo-cumer-2.1.5/lib/gmbal-api-only-.0.0-b02.jar:/apps/dubbo-demo-cumer-2.1.5/lib/grizzly-core-2.1.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/grizzly-framework-2.1.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/grizzly-portunif-2.1.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/grizzly-rcm-2.1.4.jar:/apps/dubbo-demo-cumer-2.1.5/lib/hessian-4.0.7.jar:/apps/dubbo-demo-cumer-2.1.5/lib/hibernate-validator-4.2.0.Final.jar:/apps/dubbo-demo-cumer-2.1.5/lib/httpclient-4.1.2.jar:/apps/dubbo-demo-cumer-2.1.5/lib/httpcore-4.1.2.jar:/apps/dubbo-demo-cumer-2.1.5/lib/javassist-.15.0-GA.jar:/apps/dubbo-demo-cumer-2.1.5/lib/jedis-2.0.0.jar:/apps/dubbo-demo-cumer-2.1.5/lib/jetty-6.1.26.jar:/apps/dubbo-demo-cumer-2.1.5/lib/jetty-util-6.1.26.jar:/apps/dubbo-demo-cumer-2.1.5/lib/jline-0.9.94.jar:/apps/dubbo-demo-cumer-2.1.5/lib/log4j-1.2.16.jar:/apps/dubbo-demo-cumer-2.1.5/lib/management-api-.0.0-b012.jar:/apps/dubbo-demo-cumer-2.1.5/lib/mina-core-1.1.7.jar:/apps/dubbo-demo-cumer-2.1.5/lib/netty-.2.5.Final.jar:/apps/dubbo-demo-cumer-2.1.5/lib/servlet-api-2.5-20081211.jar:/apps/dubbo-demo-cumer-2.1.5/lib/slf4j-api-1.6.2.jar:/apps/dubbo-demo-cumer-2.1.5/lib/spring-2.5.6.SEC0.jar:/apps/dubbo-demo-cumer-2.1.5/lib/validation-api-1.0.0.GA.jar:/apps/dubbo-demo-cumer-2.1.5/lib/zookeeper-...jar: com.alibaba.Main
验证
部署zookeeper
部署produceer和cumer
kind: Deployment
#apiVersion: extensi/v1beta1
apiVersion: apps/v1
metadata:labels:app: myserver-providername: myserver-provider-deploymentnamespace: myserver
spec:replicas: 1selector:matchLabels:app: myserver-providertemplate:metadata:labels:app: myserver-providerspec:containers:- name: myserver-provider-container#image: local/magedu/dubbo-provider:v1 image: k8s-harbor/public/dubbo-provider-skywalking:v2#image: /magedu/dubbo-provider:v1 #imagePullPolicy: IfotPresentimagePullPolicy: Alwaysports:- containerPort: 20880protocol: TCPname: http
kind: Deployment
#apiVersion: extensi/v1beta1
apiVersion: apps/v1
metadata:labels:app: myserver-cumername: myserver-cumer-deploymentnamespace: myserver
spec:replicas: 1selector:matchLabels:app: myserver-cumertemplate:metadata:labels:app: myserver-cumerspec:imagePullSecrets:containers:- name: myserver-cumer-containerimage: k8s-harbor/public/dubbo-cumer-skywalking:20220702v2#image: local/magedu/dubbo-cumer:v1 #imagePullPolicy: IfotPresentimagePullPolicy: Alwaysports:- containerPort: 8080protocol: TCPname: http
验证
[root@lvs-master ~]# vim /apps/apache-skywalking-apm-bin-es7/config/alarm-settings.ymlrules:# Rule unique name, must be ended with `_rule`.service_resp_time_rule: 唯一规则名称必须rule结尾metrics-name: service_resp_time 指标名称op: >= 操作符= < > >= <=threshold: 1000 指标阈值msperiod: 1 采集间隔周期 分钟count: 1 匹配次数触发告警silence-period: 2 #告警触发后静默时间 分钟message: Respe time of service {name} is more than 1000ms in minutes of last 10 minutes.dingtalkHooks:textTemplate:{msgtype: text,text: {content: alert skywalking: \n %s.}}webhooks:- url: =9cf91648655a524929181fdabae7007c0abd1f1db92d4eaf0c85b97fd26b
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 18 条评论) |
本站网友 长沙采暖 | 19分钟前 发表 |
jvm占用CPU的百分比 | |
本站网友 王者名字 | 11分钟前 发表 |
通常指包含 class | |
本站网友 睿云 | 16分钟前 发表 |
每个端点(API)每分钟请求数Slow Endpoints in Current Service(ms) | |
本站网友 吉林市人才市场 | 19分钟前 发表 |
springCloud等微服务场合使用较多.war(Web application Archive | |
本站网友 太原房屋出租信息 | 14分钟前 发表 |
/apps/dubbo-demo-provider-2.1.5/lib/management-api-.0.0-b012.jar | |
本站网友 百花谷风景区 | 14分钟前 发表 |
com.alibaba.Main 验证 kubernetes环境运行微服务并实现链路追踪 部署zookeeper 部署produceer和cumer kind | |
本站网友 硅胶假体隆鼻永久吗 | 7分钟前 发表 |
目前支持 ES | |
本站网友 娄底个人二手房网 | 28分钟前 发表 |
服务响应时间热力分布图,根据当前时间段内不同响应时间(0ms,100ms)的数量用不同颜表示 Service Apdex(数字) | |
本站网友 利川市政府 | 30分钟前 发表 |
jar(Java Archive | |
本站网友 ctd | 12分钟前 发表 |
/apps/dubbo-demo-provider-2.1.5/lib/comm-codec-1.4.jar | |
本站网友 杠杆效应 | 14分钟前 发表 |
/apps/dubbo-demo-cumer-2.1.5/lib/dubbo-2.1.5.jar | |
本站网友 病房 | 11分钟前 发表 |
/apps/dubbo-demo-cumer-2.1.5/lib/grizzly-rcm-2.1.4.jar | |
本站网友 珠海房地产网 | 15分钟前 发表 |
v1 #imagePullPolicy | |
本站网友 红酒资讯 | 22分钟前 发表 |
该指标只适用于TCP服务 | |
本站网友 尿布疹 | 30分钟前 发表 |
每个端点(API)的最慢响应请求时间,单位msSuccessful Rate in Current Service:(%)∶每个端点(API)的请求成功率当前端点统计 | |
本站网友 做了无痛肠镜很后悔 | 26分钟前 发表 |
app | |
本站网友 酥饼的热量 | 26分钟前 发表 |
Endpoint Load in Current Service (CPM/ PPM) |