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

相关文章

jdk1.8的Jenkins安装配置实践

《jdk1.8的Jenkins安装配置实践》Jenkins是一款流行的开源持续集成工具,支持自动构建、测试和部署,通过Jenkins,开发团队可以实现代码提交后自动进行构建、测试,并将构建结果分发到测... 目录Jenkins介绍Jenkins环境搭建Jenkins安装配置Jenkins插件安装Git安装配

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注