SkyWalking简介

SkyWalking是一款高效的分布式链路追踪框架,对于处理分布式的调用链路的问题定位上有很大帮助

有以下特点:

  • 性能好

    针对单实例5000tps的应用,在全量采集的情况下,只增加 10% 的CPU开销。

  • 支持多语言探针

  • 支持自动及手动探针

    自动探针:Java支持的中间件、框架与类库列表

    手动探针:OpenTrackingApi、@Trace注解、trackId集成到日志中。

本文基于Skywalking 6.2版本,使用自动探针演示效果,Elasticsearch作存储,由低版本升级到此版本需要删除ES的全部索引

Docker启动的环境变量可以设置很多参数,这里只演示最基本的参数,其实Docker版本只是把服务部署在容器的操作系统中,通过查看镜像的启动入口脚本,发现只是将配置文件换传入的参数是否存在输出配置文件,与一行一行echo类似。。所以想对Docker版本的SkyWalking进行调整,只需要传入对应的参数名kv对,这里把参数配置地址贴出https://github.com/apache/skywalking-docker/blob/master/6/6.2/oap/docker-entrypoint.sh

目录结构

.
├── docker-compose.yml
└── .env

文件说明

  • docker-compose.yml Docker-compose配置文件
  • .env 环境变量配置文件

配置文件

docker-compose.yml

version: '3.3'
services:
oap:
image: apache/skywalking-oap-server:6.2.0
container_name: skywalking-oap
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
- SW_STORAGE=elasticsearch #Es的存储
- SW_STORAGE_ES_CLUSTER_NODES=${ES_NODE} # Es的节点地址,从.env文件中取
- TZ=Asia/Shanghai #设定东八区的城市,防止Oap记录数据时用0时区
ui:
image: apache/skywalking-ui:6.2.0
container_name: skywalking-ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 18080:8080 #默认8080端口,这里设置18080映射到宿主机,可修改
environment:
collector.ribbon.listOfServers: oap:12800

.env

# set default props for docker-compose.yml
# set ES_Cluster or standalone Elasticsearch node. format is "ip:port"
ES_NODE=10.2.7.70:9204

准备工作

  • 进入与docker-compose.yml同级目录
  • 查看118001280018080这三个端口不能被占用,如果已占用,请自行修改docker-compose.yml的端口号
  • 修改.env
ES_NODE=10.2.7.70:9204 #这里的ip:port应指向Elasticsearch的协调节点,请尽量不要指向主节点和数据节点

启动服务端

执行docker-compose up -d

查看前端

浏览器访问宿主机ip:18080,效果如下图

此图为已经使用探针后的表现

Agent自动探针采集数据设置

这里的Agent要与OAP的版本保持一致,这里使用6.2版本

Java只需要在VM options中追加格式为

-javaagent:/path/to/path/skywalking-agent.jar
-Dskywalking.agent.service_name=YOUR_APP_NAME
-Dskywalking.collector.backend_service=OAP_SEVER_HOST:gRPC_PORT

举例如下:

-javaagent:D:/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=eureka-peer2
-Dskywalking.collector.backend_service=10.2.7.70:11800
  • 这里仅举例agent gRPC方式,Restful请求方式默认使用12800端口,请自行对应
  • /path/to/path为agent的jar包位置,启动进程中会读取config/agent.conf,我们通过-D添加了参数会覆盖这些配置,所以一个agent包是可以支持多个服务启动的

效果图

问题发现与解决

Q1:

graphql.execution.SimpleDataFetcherExceptionHandler -1061995 [qtp1609086753-159] WARN [] - Exception while fetching data (/latencyS) : IDs can't be null java.lang.RuntimeException: IDs can't be null

A1:

此问题为ui端的问题,无需解决,对SkyWalking后端无影响

包括其它IDs can't be null的问题,均为UI端的问题,影响不大,可以忽略


Q2:

探针已经连接成功了,UI端已经显示终端/端点有连接数,但是无论怎么请求都没有调用链和请求展示

A2:

请检查操作系统时区设置,SkyWalking默认会读取当前操作系统的时区设置,如果使用0时区,基于时间戳方式查询自然不会查询到结果,所以设置时区为东八区即可,如果是Docker方式,可以使用 -e TZ=Asia/Shanghai

本文系搭建笔记,拒绝转载

Docker-Compose搭建单体SkyWalking 6.2的更多相关文章

  1. Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh

    本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...

  2. 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)

    0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...

  3. 使用Docker Compose搭建Service Mesh

    使用Docker Compose搭建Service Mesh 本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于 ...

  4. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  5. Docker Compose搭建Redis一主二从三哨兵高可用集群

    一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...

  6. docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  7. Docker Compose搭建ELK

    Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...

  8. Docker-Compose搭建单体SkyWalking

    SkyWalking简介 SkyWalking是一款高效的分布式链路追踪框架,对于处理分布式的调用链路的问题定位上有很大帮助 有以下特点: 性能好 针对单实例5000tps的应用,在全量采集的情况下, ...

  9. 基于Docker Compose搭建mysql主从复制(1主2从)

    系统环境 * 3 Ubuntu 16.04 mysql 8.0.12 docker 18.06.1-ce docker-compose 1.23.0-rc3 *3 ==> PS  ###我用的是 ...

随机推荐

  1. 英语AmbraGrisea龙涎香

    龙涎香AmbraGrisea是抹香鲸科动物抹香鲸的肠内分泌物的干燥品.取自宰杀的抹香鲸肠内分泌物(即鲸鱼的粪便,它是抹香鲸吞食墨鱼后,胃肠道分泌出来的灰黑色的蜡状排泄物).其味甘.气腥.性涩,具有行气 ...

  2. bokeh 中 ValueError: Unrecognized range input: 解决方法

    bokeh_data.index =bokeh_data.index.astype(np.str) 将其转换为字符型

  3. python打印带颜色字体

    设置颜色开始 :\033[显示方式;前景色;背景色m 前景色 背景色 颜色 30 40 黑色 31 41 红色 32 42 绿色 33 43 黃色 34 44 蓝色 35 45 紫红色 36 46 青 ...

  4. Python程序 #!/usr/bin/python 的解释

    关于脚本第一行的 #!/usr/bin/python 的解释,相信很多不熟悉 Linux 系统的同学需要普及这个知识,脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定本脚本用什么解释器 ...

  5. python平台下实现xgboost算法及输出的解释

    python平台下实现xgboost算法及输出的解释 1. 问题描述 ​ 近来, 在python环境下使用xgboost算法作若干的机器学习任务, 在这个过程中也使用了其内置的函数来可视化树的结果, ...

  6. java.sql.SQLException: Access denied for user 'root'@'10.1.0.2' (using password: YES)

    java.sql.SQLException: Access denied for user 'root'@'10.1.0.2' (using password: YES) at com.mysql.c ...

  7. vmware-vmx.exe进程应该怎么杀掉

    如何解决VMware-vmx.exe无法彻底删除的问题 遇见的问题就是 虚拟机一直黑屏,强制关机之后,无法再次打开的问题. 显示:无法创建新虚拟机: 无法打开配置文件 以独占方式锁定此配置文件失败.另 ...

  8. 搭建自己的docker镜像

    手动构建 1.关键字查找镜像 sudo docker search centos 2.下载基本镜像 sudo docker pull centos 3.启动容器 sudo docker run -d ...

  9. 网络编程 UDP协议 TCP局域网客户端与服务端上传下载电影示例

    UDP协议 (了解) 称之为数据包协议,又称不可靠协议. 特点: 1) 不需要建立链接. 2) 不需要知道对方是否收到. 3) 数据不安全 4) 传输速度快 5)能支持并发 6) 不会粘包 7) 无需 ...

  10. linux服务器NAT后无法在内网通过外部IP访问内部服务的问题

    场景一: 将外网访问192.168.100.10的80端口转发到192.168.75.5:8000端口. # iptables -t nat -A PREROUTING -d 192.168.100. ...