当前位置: 首页 > news >正文

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部署之后日志不显示


 

http://www.lryc.cn/news/361075.html

相关文章:

  • Apache Omid Idea Debug 环境搭建
  • 【面试宝藏】Go并发编程面试题
  • ④单细胞学习-cellchat细胞间通讯
  • 即时通讯平台及门户系统WorkPlus打造移动应用管理平台
  • React@16.x(12)ref 转发-forwardRef
  • 电脑世界的大冒险:用人体比喻让孩子轻松理解电脑20240603
  • 构建智慧银行保险系统的先进技术架构
  • 来自大厂硬盘的降维打击!当希捷酷玩520 1TB SSD卷到369,请问阁下该怎么应对?
  • 什么是封装?为什么是要封装?
  • Spring Cloud | 服务 “注册与发现“ 框架 : Eureka框架
  • 编译链接问题
  • 电涡流的形成范围
  • 学业辅导导师:文心一言智能体详细介绍和开发
  • AI与NLP的完美结合:揭秘ChatGPT
  • 提交一个Bug需要哪些信息?
  • 【Hive SQL 每日一题】统计每月用户购买商品的种类分布
  • Nginx01-HTTP简介与Nginx简介(安装、命令介绍、目录介绍、配置文件介绍)
  • JAVA: 抽象类和接口
  • 风景的短视频一分钟:成都科成博通文化传媒公司
  • 力扣--双指针15.三数之和
  • C++ A (1020) : 幂运算
  • GVM: Golang多版本管理利器
  • AlmaLinux9安装zabbix6.4
  • 基于翔云C#语言的身份证实名认证接口开发示例
  • MySQL中的redo log 和 undo log
  • net/http与gin框架的关系分析
  • Docker的安装、启动和配置镜像加速
  • Linux系统下+jmeter分布式压测
  • 点点点还有没有做下去的必要
  • uni-app增加home图标,实现回到功能主页(九)