skywalking部署

 

背景介绍

目前公司后端服务全部为微服务并运行在kubernetes集群上,而大量的微服务的背后拥有很复杂的调用关系,纵使你是公司的资深开发也很难理清每一个后端服务之间的依赖关系,并且随着公司的发展,服务数量的增加以及内部调用链的复杂化,仅凭日志监控和基础服务监控是很难做到“See the Whole Picture”, 这个时候skywalking的出现刚刚好可以解决我们目前的问题。

 

简介

skywalking又称应用程序性能管理(APM)工具,它和日志管理工具都具有相同的底线目标:它们可以帮助你更深入地了解应用程序中正在发生的事情。尽管目标相似,但执行方式却不同,并且每个目标都专注于应用程序中的不同方面。

APM工具提供有关应用程序性能的分析。这些分析可以包括执行代码中不同elements所花费的时间,完成某些事务所需的时间等等。

这些工具还使我们能够监视生产环境,应用程序负载(事务,请求和每秒的页面数),计算响应时间以及可能导致延迟响应的总体方向。 。 

 

安装服务端

本片文档使用helm安装部署skywalking。

下载最新版chart 3.1

下载地址: https://mirror.bit.edu.cn/apache/skywalking/kubernetes/3.1.0/skywalking-3.1.0.tgz


  1. $ tar xf skywalking-3.1.0.tgz
    $ cd skywalking

 编辑value.yaml文件(如果不是生产环境,可适当缩小资源)

# 注: 修改完pod资源大小,别忘了调整-Xmx和-Xms参数,大小可以给到2/3 左右

“`

  1. ...
  2. elasticsearch:
  3. ...
  4. resources:
  5. requests:
  6. cpu: 4
  7. memory: 8
  8. limits:
  9. cpu: 4
  10. memory: 8
  11. ...

 

“`

配置ES数据持久化

创建storageclass

注:不同云厂商提供的配置参数可能不同,按需而定,以阿里云为例:

  1. $ cat ./storage-class.yaml
    kind: StorageClass
  2. apiVersion: storage.k8s.io/v1
  3. metadata:
  4. name: skywalking-disk-ssd
  5. provisioner: alicloud/disk
  6. reclaimPolicy: Retain
  7. parameters:
  8. type: cloud_ssd
  9. regionid: cn-beijing
  10. zoneid: cn-beijing-d,cn-beijing-c,cn-beijing-e
  11. fstype: "ext4"
  12. readonly: "false"
  13. allowVolumeExpansion: true

    $ kubectl create -f
    ./storage-class.yaml
  1.  

编辑value.yaml文件

  1. vim skywalking/values.yaml
    ...
  1. elasticsearch:
  2. ...

  volumeClaimTemplate:
    accessModes: [ “ReadWriteOnce” ]
    storageClassName: skywalking-disk-ssd
    resources:
      requests:
        storage: 500Gi

  persistence:
    enabled: true    # 持久化开关
    annotations: {volume.beta.kubernetes.io/storage-class: “skywalking-disk-ssd”}

  1. ...
  1. 安装命令
    $ helm install skywalking skywalking -n skywalking

安装Java-agent

  1. 关于skywalkingagent端我们可以在http://skywalking.apache.org/downloads/ 这里找到他们。
    注:java-agent端的配置文件我们可以在JAVA_OPTS中进行修改,也可以通过comfigmap传入变量的方式进行修改,所以我们暂时先不动它
    详细参数可查看skywalking官网的Agent Configuration Propertieshttps://github.com/apache/skywalking/blob/v8.0.1/docs/en/setup/service-agent/java-agent/README.md
  1. 配置skywalking的追踪忽略
  1. 在实际的生产环境中由于某些请求是不需要被追踪的,我们需要
  1. skywalking的可选插件:apm-trace-ignore-plugin-8.0.1.jar来帮我们过滤追踪。
    因为skywalking的功能组件都是可插拔的,所以我们只需要将optional-plugins/apm-trace-ignore-plugin-8.0.1.jar 移动到plugins/
  1. apm-trace-ignore-plugin-8.0.1.jar

    配置方法
    JAVA_OPTS参数中加入:-Dskywalking.trace.ignore_path=/heartbeat,/api/v2/spans,/metrics ....
  1. agent端打入base镜像
  1. $ cat Dockerfile

  2. ...
  3. #添加skywalking插件
  4. ADD skywalking-agent.tar.gz /opt/ole-resources/
    ...

 在JAVA_OPTS参数最后加入skywalking的相关配置。

  1. JAVA_OPTS: ... -javaagent:/opt/ole-resources/skywalking-agent/skywalking-agent.jar -Dskywalking.trace.ignore_path=/heartbeat,/api/v2/spans,/metrics
  2. -Dskywalking.agent.namespace=$(POD_NAMESPACE) -Dskywalking.agent.service_name=$(POD_APP_NAME)
  3. -Dskywalking.agent.instance_name=$(POD_NAME) -Dskywalking.collector.backend_service=skywalking-oap.skywalking.svc.cluster.local:11800

注: 

  1. 若想将这些变量注入到容器中$(POD_NAMESPACE),$(POD_APP_NAME),$(POD_NAME)需要修改deployment文件,如下配置
  1. 要想讲
    - env:
  2. - name: POD_NAMESPACE
  3. valueFrom:
  4. fieldRef:
  5. apiVersion: v1
  6. fieldPath: metadata.namespace
  7. - name: POD_NAME
  8. valueFrom:
  9. fieldRef:
  10. apiVersion: v1
  11. fieldPath: metadata.name
  12. - name: POD_APP_NAME
  13. valueFrom:
  14. fieldRef:
  15. apiVersion: v1
  16. fieldPath: metadata.labels['app']

 

到这里skywalking的OAP、UI、以及Agent端基本部署完成,让我们来看一下效果

 

 

 

 

 

 

 

 


  1. 后续持续更新中。。。

 

版权声明:本文为gengmengong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gengmengong/p/skywalking.html