包含skywalkingdocker的词条

本篇文章给大家谈谈skywalkingdocker,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

docker+ES7数据库方式安装skywalking

这里介绍的是skywalking的8.X版唤返本的安装,老版本的6.x的和他有点不一样

升级elasticsearch版本7.9.0,oap版本为8.1.0,UI版本为8.1.0

docker官网

基础镜像

安装elasticsearch

检查启动情况

创建持久化目录,并重键链肆启稿轿启动elasticsearch

官网地址

基础镜像

注意事项:SW_STORAGE参数严格区分elasticsearch的版本

docker官网

基础镜像

注意:这里映射的端口为8088,防止端口冲突。

启动ui

在window系统中使用google浏览器访问skywalking-ui界面

skywalking缺点

Zipkin欠缺APM报表能力,产品升级完善快,社区活跃,埋点无侵入也失去了一些灵活性。

kywalking 是一个国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器,skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

链路追踪框架对比、;

1.Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了郑仔前广泛的使用,特点是轻量,使用部署简单。_

2.Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具,特点是支持多种插件,UI功能强大,接入端无代码侵入。_

3.SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。目前喊清已成为apache顶级项目_

4.CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日戚缓志采集,监控报警等一系列的监控平台工具。

[img]

skywalking

elasticsearch默认是没有开启跨域,我们需要配置跨域,并配置集群节点名字:

修改容器中 /usr/share/elasticsearch/config/elasticsearch.yml 文件,添加配置如下:

参数说明:

cluster.name:集群服务名字 http.cors.enabled:开启跨域 http.cors.allow-origin: 允许跨域域名,*代表所有域名 network.host: 外部访问的IP discovery.zen.minimum_master_nodes: 最小主节点个数

安装完成后,重启容器 docker restart elasticsearch ,再访问

效果如下

安装 ElasticSearch管理界面elasticsearch-hq

安装完成后,访问控制台模烂地址

--link elasticsearch:elasticsearch:存储服务使用elasticsearch -e SW_STORAGE=elasticsearch7:存储服务elasticsearch的版本 -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200:存储服务elasticsearch的链接地址

安装完成后,我们接下来访问Skywalking控制台:

通过 -javaagent 来旦凳漏指定skywalking的agent组件的skywalking-agent.jar即可

另外:agent负责采集数据粗数然后将数据提交到OAP(collector)中,因此我们需要在agent的配置文件中指定OAP的地址,当然默认是本地127.0.0.1

进入到config目录,找到:agent.config配置文件

未修改前如下:

接下来我们依次启动应用程序,以第一章的tracing-1-parent中的servie1,service2,service3为例来启动,我们只需修改启动参数即可,

我们需要将启动参数修改如下

图示如下:

依次启动service1,service2,service3,然后接口

访问: 查看skywalking的ui

window系统安装skywalking

skywalking 是一个开源的观测平台, 用于从服务和云原生基础设施收集, 分析, 聚合以及可视化数据.。生产环境下该平台是安装在颂喊linux 系统上,或者是docker容器化运行。但如果要在野滑野本地开发的话可能免不了要在windows系统下安装。

windows系统安装skywalking特别简单。解压apache-skywalking-apm-8.1.0.tar.gz,进入bin目录,在让模cmd窗口执行命令

测试的windows系统在虚拟机中。windows系统默认防火墙不支持远程访问。在虚拟机的浏览器端进行访问测试:

application.yml

springboot项目tomcat服务器默认8080端口,与skywalking-UI端口冲突,默认修改application.yml的项目端口号

SkywalkingDemoController

controller/SkywalkingDemoController

修改项目的 VM 运行参数,点击菜单栏中的 Run - EditConfigurations... ,此处我们以skywalkingdemo1 项目为例,修改参数如下:

修改D:\skywalking\webapp\webapp.yml 。 主要修改port: 18080

skywalking—docker镜像构建k8s部署

前言

skywalking是个非常不错的apm产帆闭品,但是在使用过程中有个非常蛋疼的问题,在基于es的存储情况下,es的数据一有问题,就会导致整个skywalking web ui服务不可用,然后需要agent端一个服务一个服亏汪务的停用,然后服务重新部署后好,全部走一遍。这种问题同样也会存在skywalking的版本升级迭代中。而且apm 这种过程数据是允许丢弃的,默认skywalking中关于trace的数据记录只保存了90分钟。故博主准备将skywalking的部署容器化,一键部署升级。下文是整个skywalking 容器化部署的过程。

目标:将skywalking的docker镜像运行在k8s的集群环境中提供服务

docker镜像构建

FROMregistry.cn-xx.xx.com/keking/jdk:1.8ADDapache-skywalking-apm-incubating/  /opt/apache-skywalking-apm-incubating/RUNln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime \

    echo 'Asia/Shanghai' /etc/timezone \

    chmod +x /opt/apache-skywalking-apm-incubating/config/setApplicationEnv.sh \

    chmod +x /opt/apache-skywalking-apm-incubating/webapp/setWebAppEnv.sh \

    chmod +x /opt/apache-skywalking-apm-incubating/bin/startup.sh \

    echo "tail -fn 100 /opt/apache-skywalking-apm-incubating/logs/webapp.log" /opt/apache-skywalking-apm-incubating/bin/startup.shEXPOSE8080 10800 11800 12800CMD/opt/apache-skywalking-apm-incubating/态空裂config/setApplicationEnv.sh \

    sh /opt/apache-skywalking-apm-incubating/webapp/setWebAppEnv.sh \

    /opt/apache-skywalking-apm-incubating/bin/startup.sh

在编写Dockerfile时需要考虑几个问题:skywalking中哪些配置需要动态配置(运行时设置)?怎么保证进程一直运行(skywalking 的startup.sh和tomcat中 的startup.sh类似)?

application.yml

#cluster:#  zookeeper:#    hostPort: localhost:2181#    sessionTimeout: 100000naming:jetty:#OS real network IP(binding required), for agent to find collector clusterhost:0.0.0.0port:10800contextPath:/cache:#  guava:caffeine:remote:gRPC:# OS real network IP(binding required), for collector nodes communicate with each other in cluster. collectorN --(gRPC) -- collectorMhost:#real_hostport:11800agent_gRPC:gRPC:#os real network ip(binding required), for agent to uplink data(trace/metrics) to collector. agent--(grpc)-- collectorhost:#real_hostport:11800# Set these two setting to open ssl#sslCertChainFile: $path#sslPrivateKeyFile: $path# Set your own token to active auth#authentication: xxxxxxagent_jetty:jetty:# OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)-- collector# SkyWalking native Java/.Net/node.js agents don't use this.# Open this for other implementor.host:0.0.0.0port:12800contextPath:/analysis_register:default:analysis_jvm:default:analysis_segment_parser:default:bufferFilePath:../buffer/bufferOffsetMaxFileSize:10MbufferSegmentMaxFileSize:500MbufferFileCleanWhenRestart:trueui:jetty:# Stay in `localhost` if UI starts up in default mode.# Change it to OS real network IP(binding required), if deploy collector in different machine.host:0.0.0.0port:12800contextPath:/storage:elasticsearch:clusterName:#elasticsearch_clusterNameclusterTransportSniffer:trueclusterNodes:#elasticsearch_clusterNodesindexShardsNumber:2indexReplicasNumber:0highPerformanceMode:true# Batch process setting, refer to Execute the bulk every 2000 requestsbulkSize:20# flush the bulk every 20mbflushInterval:10# flush the bulk every 10 seconds whatever the number of requestsconcurrentRequests:2# the number of concurrent requests# Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.traceDataTTL:2880# Unit is minuteminuteMetricDataTTL:90# Unit is minutehourMetricDataTTL:36# Unit is hourdayMetricDataTTL:45# Unit is daymonthMetricDataTTL:18# Unit is month#storage:#  h2:#    url: jdbc:h2:~/memorydb#    userName: saconfiguration:default:#namespace: xxxxx# alarm thresholdapplicationApdexThreshold:2000serviceErrorRateThreshold:10.00serviceAverageResponseTimeThreshold:2000instanceErrorRateThreshold:10.00instanceAverageResponseTimeThreshold:2000applicationErrorRateThreshold:10.00applicationAverageResponseTimeThreshold:2000# thermodynamicthermodynamicResponseTimeStep:50thermodynamicCountOfResponseTimeSteps:40# max collection's size of worker cache collection, setting it smaller when collector OutOfMemory crashed.workerCacheMaxSize:10000#receiver_zipkin:#  default:#    host: localhost#    port: 9411#    contextPath: /

webapp.yml

动态配置:密码,grpc等需要绑定主机的ip都需要运行时设置,这里我们在启动skywalking的startup.sh只之前,先执行了两个设置配置的脚本,通过k8s在运行时设置的环境变量来替换需要动态配置的参数

setApplicationEnv.sh

#!/usr/bin/env shsed -i"s/#elasticsearch_clusterNodes/${elasticsearch_clusterNodes}/g"/opt/apache-skywalking-apm-incubating/config/application.ymlsed -i"s/#elasticsearch_clusterName/${elasticsearch_clusterName}/g"/opt/apache-skywalking-apm-incubating/config/application.ymlsed -i"s/#real_host/${real_host}/g"/opt/apache-skywalking-apm-incubating/config/application.yml

setWebAppEnv.sh

#!/usr/bin/env shsed -i"s/#skywalking_password/${skywalking_password}/g"/opt/apache-skywalking-apm-incubating/webapp/webapp.ymlsed -i"s/#real_host/${real_host}/g"/opt/apache-skywalking-apm-incubating/webapp/webapp.yml

保持进程存在:通过在skywalking 启动脚本startup.sh末尾追加"tail -fn 100

/opt/apache-skywalking-apm-incubating/logs/webapp.log",来让进程保持运行,并不断输出webapp.log的日志

Kubernetes中部署

apiVersion:extensions/v1beta1kind:Deploymentmetadata:name:skywalkingnamespace:uatspec:replicas:1selector:matchLabels:app:skywalkingtemplate:metadata:labels:app:skywalkingspec:imagePullSecrets:-name:registry-pull-secretnodeSelector:apm:skywalkingcontainers:-name:skywalkingimage:registry.cn-xx.xx.com/keking/kk-skywalking:5.2imagePullPolicy:Alwaysenv:-name:elasticsearch_clusterNamevalue:elasticsearch-name:elasticsearch_clusterNodesvalue:172.16.16.129:31300-name:skywalking_passwordvalue:xxx-name:real_hostvalueFrom:fieldRef:fieldPath:status.podIPresources:limits:cpu:1000mmemory:4Girequests:cpu:700mmemory:2Gi---apiVersion:v1kind:Servicemetadata:name:skywalkingnamespace:uatlabels:app:skywalkingspec:selector:app:skywalkingports:-name:web-aport:8080targetPort:8080nodePort:31180-name:web-bport:10800targetPort:10800nodePort:31181-name:web-cport:11800targetPort:11800nodePort:31182-name:web-dport:12800targetPort:12800nodePort:31183type:NodePort

Kubernetes部署脚本中唯一需要注意的就是env中关于pod ip的获取,skywalking中有几个ip必须绑定容器的真实ip,这个地方可以通过环境变量设置到容器里面去

结语

整个skywalking容器化部署从测试到可用大概耗时1天,其中花了个多小时整了下谭兄的skywalking-docker镜像(

),发现有个脚本有权限问题(谭兄反馈已解决,还没来的及测试),以及有几个地方自己不是很好控制,便build了自己的docker镜像,其中最大的问题还是解决集群中网络通讯的问题,一开始我把skywalking中的服务ip都设置为0.0.0.0,然后通过集群的nodePort映射出来,这个时候的agent通过集群ip+31181是可以访问到naming服务的,然后通过naming服务获取到的collector gRPC服务缺变成了0.0.0.0:11800, 这个地址agent肯定访问不到collector的,后面通过绑定pod ip的方式解决了这个问题。

Docker 部署 SkyWalking OAP & UI

简易部署(仅供体验)

端口含拍老说明

自谈升定义配置

配置挂载路径 /skywalking/config ,配置文件说明贺正:

参数说明:

更多配置参考:

关于skywalkingdocker和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表