使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

发布时间:2022-06-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 概述

老话说的好:任何成功都不是轻易得来的,是不断地坚持与面对的结果。

 

言归正传,之前我们聊了 SPRingCloud 开发的微服务是如何部署在  Kubernetes(K8s)集群中的,今天我们来聊聊在 Kubernetes(K8s)集群中是如何监控这些微服务的。

apache 的 Skywalking 就是一个不错的选择,SkyWalking 是一个可观察性分析平台和应用程序性能管理系统,可以对微服务进行链路追踪,可以对微服务的指标进行分析,可以快速定位运行慢的服务。

Skywalking官网地址:https://skywalking.apache.org/

 

今天我们就来搭建一套 Skywalking 服务,监控一下我们之前搭建在 Kubernetes(K8s)集群中的微服务。

 

2. 场景介绍

服务器 192.168.1.15 中,搭建并启动 Skywalking 控制台。

 

改造之前部署的 Eureka Client 服务 和 Gateway 服务,在服务中植入 Skywalking Java 代理。

微服务的部署详情可参见我的上一篇文章《Kubernetes(K8s)部署 SpringCloud 服务实战》(https://www.cnblogs.COM/w84422/p/15630185.htML

 

3. Skywalking 控制台的搭建 

3.1 下载 Skywalking 控制台程序

官网下载地址:https://skywalking.apache.org/downloads/

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

 

3.2 将程序包上传到 CentOS7 服务器,并解压

这里上传到 /home 目录

# tar -zxvf apache-skywalking-apm-8.8.1.tar.gz

 

3.3 启动 Skywalking 控制台

注意:该服务器要预先安装 JDK8,并在环境变量中设置。

Skywalking 会占用 8080 和 11800 端口。

# cd /home/apache-skywalking-apm-bin/bin

# ./startup.sh

 

3.4 在浏览器访问 Skywalking 控制台 

http://192.168.1.15:8080

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

 

4. 在微服务中植入 Skywalking Java 代理

4.1 概述

在微服务中需要植入 Skywalking Java 代理,才能将运行数据传递给 Skywalking 控制台。

Skywalking 的 Java 代理,支持 java -jar、Tomcat、docker、Kubernetes(K8s)等。

 

4.2 java -jar 方式植入代理

1)首先从官网下载 SkyWalking Java Agent 程序,上传到 CentOS7 服务器,解压

官网下载地址:https://skywalking.apache.org/downloads/

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

2)在 CentOS7 服务器设置环境变量

SW_AGENT_COLLECTOR_BACKEND_SERVICES:Skywalking控制台的地址,例如:192.168.1.15:11800,默认是 127.0.0.1:11800

 

3)启动微服务时,使用以下方式

# java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar=agent.service_name=服务的名称 -jar yourApp.jar

/path/to/skywalking-agent/skywalking-agent.jar 替换成真实的 SkyWalking Java Agent 所在的路径。

agent.service_name 是服务的名称,用于 Skywalking 控制台中的显示。

 

4.3 Docker 中的微服务植入代理

1)编排 Dockerfile 文件

将之前的 From java:8 替换为 From apache/skywalking-java-agent:8.5.0-jdk8 即可,其他不用

 

2)设置环境变量

SW_AGENT_NAME:容器中服务的名称,用于 Skywalking 控制台中的显示。

SW_AGENT_COLLECTOR_BACKEND_SERVICES:Skywalking控制台的地址,例如:192.168.1.15:11800,默认是 127.0.0.1:11800

 

4.4 Kubernetes(K8s)中的微服务植入代理

4.4.1 重新部署 eureka client 的 deployment

1)编辑脚本

vi eurekaclient-deployment-sw.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-eureka-client
sPEc:
  replicas: 1
  selector:
    matchLabels:
      app: my-eureka-client
  template:
    metadata:
      labels:
        app: my-eureka-client
    spec:
      volumes:
        - name: skywalking-agent
          emptyDir: { }

      inITContainers:
        - name: agent-container
          image: apache/skywalking-java-agent:8.7.0-alpine
          volumemounts:
            - name: skywalking-agent
              mountPath: /agent
          command: [ "/bin/sh" ]
          args: [ "-c", "cp -R /skywalking/agent /agent/" ]

      containers:
        - name: my-eureka-client
          image: myeurekaclient:1.0
          volumeMounts:
            - name: skywalking-agent
              mountPath: /skywalking
          env:
            - name: JAVA_TOOL_OPTIONS
              value: "-javaagent:/skywalking/agent/skywalking-agent.jar"
            - name: SW_AGENT_NAME
              value: "my-eureka-client"
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: "192.168.1.15:11800"

脚本的大概意思是pull apache/skywalking-java-agent:8.7.0-alpine 镜像,然后挂载一个空目录,将 Skywalking 的 Java 代理程序拷贝到目录中,然后微服务的容器也去挂载这个目录,并使用里面的文件,配合环境变量向 Skywalking 控制台发送数据。

 

2)删除之前 deployment

# kubectl delete deployment ;my-eureka-client

 

3)执行脚本

# kubectl apply -f eurekaclient-deployment-sw.yml

 

4.4.2 重新部署 Gateway 的 Deployment

1)编辑脚本

vi gateway-deployment-sw.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-gateway
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-gateway
  template:
    metadata:
      labels:
        app: my-gateway
    spec:
      volumes:
        - name: skywalking-agent
          emptyDir: { }

      initContainers:
        - name: agent-container
          image: apache/skywalking-java-agent:8.7.0-alpine
          volumeMounts:
            - name: skywalking-agent
              mountPath: /agent
          command: [ "/bin/sh" ]
          args: [ "-c", "cp -R /skywalking/agent /agent/" ]

      containers:
        - name: my-gateway
          image: mygateway:1.0
          volumeMounts:
            - name: skywalking-agent
              mountPath: /skywalking
          env:
            - name: JAVA_TOOL_OPTIONS
              value: "-javaagent:/skywalking/agent/skywalking-agent.jar"
            - name: SW_AGENT_NAME
              value: "my-gateway"
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: "192.168.1.15:11800"

 

2)删除之前 deployment

# kubectl delete my-gateway

 

3)执行脚本

# kubectl apply -f gateway-deployment-sw.yml

 

4.4.3 访问 Eureka Client 的简单接口

GET http://192.168.1.12:44000/my-eureka-client/eurekaClient/hello

 

4.4.4 Skywalking Demo数据展示 

 此时可以从 Skywalking 中看到接口的调用情况,一些指标的统计图,拓扑图、链路追踪等信息,可以帮助我们很好的监控集群,定位问题,快速的对微服务进行优化。

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

  

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

 

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

5. 综述

今天聊了一下 kubernetes(k8s)集群中的微服务是如何被 Skywalking 监控的,希望可以对大家的工作有所帮助。

欢迎帮忙点赞、评论、转发、加关注 :)

关注追风人聊Java,每天更新Java干货。

 

6. 个人公众号

追风人聊Java,欢迎大家关注

使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

 

脚本宝典总结

以上是脚本宝典为你收集整理的使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控全部内容,希望文章能够帮你解决使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。