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


$ tar xf skywalking-3.1.0.tgz
$ cd skywalking

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

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

```

...
elasticsearch:
...
resources:
requests:
cpu: 4
memory: 8
limits:
cpu: 4
memory: 8
...

```

配置ES数据持久化

创建storageclass

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

$ cat ./storage-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: skywalking-disk-ssd
provisioner: alicloud/disk
reclaimPolicy: Retain
parameters:
type: cloud_ssd
regionid: cn-beijing
zoneid: cn-beijing-d,cn-beijing-c,cn-beijing-e
fstype: "ext4"
readonly: "false"
allowVolumeExpansion: true

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

编辑value.yaml文件

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

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

...

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

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

安装Java-agent

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

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

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

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

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

注:

若想将这些变量注入到容器中$(POD_NAMESPACE),$(POD_APP_NAME),$(POD_NAME)需要修改deployment文件,如下配置
要想讲
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: POD_APP_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['app']

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


后续持续更新中。。。

skywalking8.1.0(一) 安装与部署的更多相关文章

  1. Flume1.9.0的安装、部署、简单应用(含分布式、与Hadoop3.1.2、Hbase1.4.9的案例)

    目录 目录 前言 什么是Flume? Flume的特点 Flume的可靠性 Flume的可恢复性 Flume的一些核心概念 Flume的官方网站在哪里? Flume在哪里下载以及如何安装? 设置环境变 ...

  2. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

    目录: 一.什么是Flume? 1)flume的特点 2)flume的可靠性 3)flume的可恢复性 4)flume 的 一些核心概念 二.flume的官方网站在哪里? 三.在哪里下载? 四.如何安 ...

  3. linux下redis4.0.2安装与部署

    一.redis的介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更 ...

  4. Roller5.0.3安装配置部署 step by step

    一.下载roller 下载地址:http://roller.apache.org/downloads/downloads.html下载下来之后,解压包含两部份doc.webapps 二.准备环境 1. ...

  5. Linux中(Ubuntu18.04.x/CentOS)mysql8.0.x安装/配置/部署/启动

    The MySQL Connectors and APIs are the drivers and libraries that you use to connect applications in ...

  6. Storm-0.9.0.1安装部署 指导

    可以带着下面问题来阅读本文章: 1.Storm只支持什么传输 2.通过什么配置,可以更改Zookeeper默认端口 3.Storm UI必须和Storm Nimbus部署在同一台机器上,UI无法正常工 ...

  7. kafka_2.11-2.0.0_安装部署

    参考博文:kafka 配置文件参数详解 参考博文:Kafka[第一篇]Kafka集群搭建 参考博文:如何为Kafka集群选择合适的Partitions数量 参考博文:Kafka Server.prop ...

  8. Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点

    Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...

  9. CentOS7安装CDH 第五章:CDH的安装和部署-CDH5.7.0

    相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...

  10. 大数据篇:DolphinScheduler-1.2.0.release安装部署

    大数据篇:DolphinScheduler-1.2.0.release安装部署 1 配置jdk #查看命令 rpm -qa | grep java #删除命令 rpm -e --nodeps xxx ...

随机推荐

  1. 秋招进大厂其实也就那么回事,你会这样卡进大厂的BUG吗?

    在BAT这种大厂里,只要肯吃苦,技术和工资进步的速度会超出你想象,我在上海,按当前价格算,一般在大厂里干个三四年,好歹房子的首付应该能有,而且这种房子还不是太偏远太小的. 进大厂确实需要一定的实力,但 ...

  2. Java Web学习(十二)Tomcat核心

    一.引言 其实按道理来说,学习Java web应该在前面的篇幅就写有关tomcat相关的知识点,不过近期看了一些资料,觉得以前仅仅只是知道用tomcat去发布我的项目,一些细节的东西也没有好好总结,这 ...

  3. Vue mustache语法

    mustache语法 Vue中的插值语法mustache本意为胡子,可能是{{}}长得像胡子吧. 下面是对mustache插值语法一个最简单的使用. 被管理元素会通过data属性拿到其中的数据对象. ...

  4. 交互平台 - Processing - 开发模板(仿Openframeworks)

    之前在CSDN上发表过: https://blog.csdn.net/fddxsyf123/article/details/62425251

  5. mybatis基础使用

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

  6. Python练习题 031:Project Euler 003:最大质因数

    本题来自 Project Euler 第3题:https://projecteuler.net/problem=3 # Project Euler: Problem 3: Largest prime ...

  7. shiro入门学习--使用MD5和salt进行加密|练气后期

    写在前面 在上一篇文章<Shiro入门学习---使用自定义Realm完成认证|练气中期>当中,我们学会了使用自定义Realm实现shiro数据源的切换,我们可以切换成从关系数据库如MySQ ...

  8. <stdbool.h>的使用

    转载: 1.https://www.cnblogs.com/jediael/archive/2013/02/03/4304259.html 2.https://zhidao.baidu.com/que ...

  9. JavaFX FileChooser文件选择器、DirectoryChooser目录选择器

    参考:https://www.yiibai.com/javafx/javafx_filechooser.html 参考:https://blog.csdn.net/dorma_bin/article/ ...

  10. java的string方法使用

    1.将list转换为","隔开的字符串 //videoIdList值转换成 1,2,3 String videoIds = StringUtils.join(videoIdList ...