K8S SWCK SkyWalking全链路跟踪工具安装

2024-06-03 06:44

本文主要是介绍K8S SWCK SkyWalking全链路跟踪工具安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方参考:
如何使用java探针注入器?

配置两个demo,建立调用关系,

首先创建一个基础镜像dockerfile


from centos


先安装java

参考:     linux rpm方式安装java

JAVA_HOME=/usr/java/jdk1.8.0-x64
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
vi /etc/profile
source /etc/profile
java -version

需要安装maven,并修改镜像地址为阿里的,方便下载


参考:Linux中maven下载、安装、配置详细教程

wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
vim /etc/profile
export MAVEN_HOME=/root/maven/apache-maven-3.8.8
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
source /etc/profile
mvn -version
build the springboot and springcloudgateway image

推送到仓库

harbor/yourharbor/base:v0.0.1

下载这两个demo的代码

$ git clone https://github.com/dashanji/swck-spring-cloud-k8s-demo
$ cd swck-spring-cloud-k8s-demo && make

打成镜像并推送至仓库


使用es作为存储,需要创建storage


参考:Storage Usage

vi  storage-swck.yamlapiVersion: operator.skywalking.apache.org/v1alpha1
kind: Storage
metadata:name: swck-storagenamespace: develop
spec:type: elasticsearchconnectType: externaladdress: "http://your-elasticsearch:9200" #ES地址,如果在其它命令空间,需要在域名后面添加命名空间,例如:.develop#security: #user:#  secretName: defaultkubectl apply -f storage-swck.yaml 
检查安装是否成功
kubectl get storage -n develop


安装证书管理器(cert-manger)

wget https://github.com/jetstack/cert-manager/releases/download/v1.13.3/cert-manager.yaml
kubectl apply -f cert-manager.yaml
检查安装是否成功
kubectl get pod -n cert-manager

安装SWCK operator

mkdir swck & cd swck
wget https://archive.apache.org/dist/skywalking/swck/0.6.1/skywalking-swck-0.6.1-bin.tgz
tar -xvf skywalking-swck-0.6.1-bin.tgz


operator有个镜像需要修改
参考:(问题解决) 缺少gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0


kubectl apply -f /config/operator-bundle.yaml
检查安装是否成功
kubectl get pod -n skywalking-swck-system

部署oap和ui


在 develop 命名空间中部署 OAPServer 组件和 UI 组件。

wget https://raw.githubusercontent.com/apache/skywalking-swck/master/operator/config/samples/default.yaml
cp default.yaml oap-ui-default.xmlvi oap-ui-default.xml 
apiVersion: operator.skywalking.apache.org/v1alpha1
kind: OAPServer
metadata:name: defaultnamespace: develop
spec:version: 9.2.0instances: 1image: apache/skywalking-oap-server:9.2.0service:template:type: ClusterIPstorage:name: swck-storage
---
apiVersion: operator.skywalking.apache.org/v1alpha1
kind: UI
metadata:name: defaultnamespace: develop
spec:version: 9.2.0instances: 1image: apache/skywalking-ui:9.2.0OAPServerAddress: http://default-oap:12800service:template:type: NodePortingress:host: demo.ui.skywalking


      

#yaml中的9.2.0版本不需要修改,
9.5和9.7版本均不能自动生成sw_record索引

(Skywalking is missing the 'sw_records-all' index. #10910);
name: default也要修改,改完之后各种异常

安装

kubectl apply -f oap-ui-default.xmlkubectl get oapserver -n develop
kubectl get ui -n developkubectl get pod -A|grep def


查看oap和ui的日志,看否成功
kibana检查数据是否进入ES
查看SW开头的索引


修改configMap中的oap地址

kubectl edit configmap skywalking-swck-java-agent-configmap -n skywalking-swck-system


改成develop空间的地址,前面已安装到develop空间中了,default-oap.develop:11800
在当前空间中使用这个oap地址,
注意:如果在develop空间中的服务也需要使用这个默认配置,可以在develop空间中修改这个configmap

部署 spring boot 应用


创建 springboot-system 命名空间。
$ kubectl create namespace springboot-system
给 springboot-system 命名空间打上标签使能 java 探针注入器。
$ kubectl label namespace springboot-system swck-injection=enabled

接下来为 spring boot 应用对应的部署文件 springboot.yaml ,其中使用了 annotation 覆盖默认的探针配置,比如 service_name ,将其覆盖为 backend-service 。

[root@yourLinux swck]# vi springboot.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: demo-springbootnamespace: springboot-system
spec:selector:matchLabels:app: demo-springboottemplate:metadata:labels:swck-java-agent-injected: "true"  # enable the java agent injectorapp: demo-springbootannotations:strategy.skywalking.apache.org/agent.Overlay: "true"  # enable the agent overlayagent.skywalking.apache.org/agent.service_name: "backend-service"    # agent.skywalking.apache.org/collector.backend_service: "default-oap.default:11800"spec:containers:- name: springbootimagePullPolicy: IfNotPresentimage: yourharborIP/yourharbor/app:v0.0.1command: ["java"]args: ["-jar","/app.jar"]
---
apiVersion: v1
kind: Service
metadata:name: demonamespace: springboot-system
spec:type: ClusterIPports:- name: 8085-tcpport: 8085protocol: TCPtargetPort: 8085selector:app: demo-springboot

在 springboot-system 命名空间中部署 spring boot 应用。
$ kubectl apply -f springboot.yaml
查看部署情况。
$ kubectl get pod -n springboot-system
通过 JavaAgent 查看最终注入的 java 探针配置。
$ kubectl get javaagent -n springboot-system

部署 spring cloud gateway 应用


创建 gateway-system 命名空间。
$ kubectl create namespace gateway-system
给 gateway-system 命名空间打上标签使能 java 探针注入器。
$ kubectl label namespace gateway-system swck-injection=enabled
kubectl get ns --show-labels
接下来为 spring cloud gateway 应用对应的部署文件 springgateway.yaml ,其中使用了 annotation 覆盖默认的探针配置,比如 service_name ,将其覆盖为 gateway-service 。此外,在使用 spring cloud gateway 时,我们需要在探针配置中添加 spring cloud gateway 插件。
容器中:/sky/agent/optional-plugins/目录下有这个apm(cloud-gateway-3.x)
需要注意的是,在使用 annotation 覆盖探针配置之前,需要增加 strategy.skywalking.apache.org/agent.Overlay: "true" 来使覆盖生效。


[root@yourLinux swck]# cat springgateway.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demo-gatewayname: demo-gatewaynamespace: gateway-system
spec:selector:matchLabels:app: demo-gatewaytemplate:metadata:labels:swck-java-agent-injected: "true"app: demo-gatewayannotations:strategy.skywalking.apache.org/agent.Overlay: "true"agent.skywalking.apache.org/agent.service_name: "gateway-service"     #  agent.skywalking.apache.org/collector.backend_service: "default-oap.default:11800"optional.skywalking.apache.org: "cloud-gateway-3.x" # add spring cloud gateway pluginspec:containers:- image: yourharborIP/yourharbor/gateway:v0.0.1name: gatewaycommand: ["java"]args: ["-jar","/gateway.jar"]
---
apiVersion: v1
kind: Service
metadata:name: service-gatewaynamespace: gateway-system
spec:type: ClusterIPports:- name: 9999-tcpport: 9999protocol: TCPtargetPort: 9999selector:app: demo-gateway

在 gateway-system 命名空间中部署 spring cloud gateway 应用。
$ kubectl apply -f springgateway.yaml
查看部署情况。
$ kubectl get pod -n gateway-system
通过 JavaAgent 获取最终注入的java探针配置。

检查javaagent


$ kubectl get javaagent -n gateway-system
查看UI暴露的nodePort
kubectl get service default-ui -n develop
查看gateway地址及端口
kubectl get service service-gateway -n gateway-system


跑几百个请求测试一下

for i in {1..100}; do curl http://yourip:9999/gateway/hello && echo ""; done


打开ui查看


一个服务启动后,通过如下命令可以看到是否探针是否启动成功,oap使用的是哪个
 

kubectl get javaagent -A

通过describe命令可以观察一下initContainer中,javaagent是如何加到你的app中的

  kubectl describe pod -l app=demo-springboot -n springboot-systemkubectl describe pod -l app=demo-gateway -n gateway-system

日志

pom.xml引入依赖:

<groupId>org.apache.skywalking</groupId>

<artifactId>apm-toolkit-logback-1.x</artifactId>

logback.xml添加appender

参考:
kywalking部署之后日志不显示


 

这篇关于K8S SWCK SkyWalking全链路跟踪工具安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026244

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP