简述
这里引用skywalking官方网站上简介:分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
环境准备
skywalking有多种安装方式,这里我通过docker-compose进行安装,因为skywalking官方提供了自己的docker镜像,通过docker-compose进行安装省时又省力。skywalking官方地址:http://skywalking.apache.org/zh/
1、下载sky安装包,这里我使用的是skywalking6.4.0版本
https://www.apache.org/dyn/closer.cgi/skywalking/6.4.0/apache-skywalking-apm-6.4.0.tar.gz
2、解压安装包,解压后安装包中提供了skywalking的所有版本
进入到6.4这个目录后,你会发现有多个目录,包含“base”基础镜像目录、“compose”docker-compose安装目录、oap和ui分别为skywalking的后台服务安装镜像和前端服务安装镜像,这里我选用通过compose来进行skywalking的容器化部署。
3、通过docker-compose.yml进行容器化部署
进入compose目录,打开docker-compose.yml文件
docker-compose.yml中的内容如下所示, 文件中部署了elasticsearch、oap、ui三个容器化服务,elasticsearch作为oap的数据源头(当然skywalking也提供其他类型的数据源如:h2、mysql),oap为后台服务主要提供收据收集日志搜索等服务具体详见官网,ui为前端服务包含UI界面,如果不需要其他特殊配置可以直接该compose文件进行容器化部署,比如有自己的elasticsearch服务就可以从该文件中将elasticsearch容器相关的内容去掉。
version: '3.3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.1
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:6.4.0
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: apache/skywalking-ui:6.4.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
4、部署容器的相关命令,前提是本地已经安装好了docker相关的环境
在compose目录下执行以下命令
docker-compose -f docker-compose.yml up -d
下图说明docker已经开始部署,因为我本地并非第一次部署所以如下图所示显示的过程比较简单,如果是第一次部署会进行docker镜像的下载时间会长些
执行“docker ps”命令,查看docker 是否部署成功(我这里使用我本地自己安装的elasticsearch,所以我没有进行elasticearch的容器部署)
在本地浏览器中访问:localhost:8080,打开skywalking的管理界面
5、这里我为了修改方便将oap的配置文件挂载到了宿主机的相关目录下
该步骤需要在docker-compose.yml文件中做如下修改
volumes:
- /home/skywalking/config:/skywalking/config
skywalking的相关配置文件如下,其中application.yml可配置数据源、skywalking的系统参数等(具体请参考官方文档说明),alarm-setting.yml可以配置一些告警规则:
6、将服务的相关数据接入到skywalking中,因为我们的服务都是通过java语言开发的spring boot微服务,所有需要将skywalking提供的agent包整个拷贝到项目目录下
进入agent目录进行相关配置,具体如:找到agent/config/目录下的agent.config
# The agent namespace
# agent.namespace=${SW_AGENT_NAMESPACE:default-namespace}
# The service name in UI,这里是在skywalking界面上显示的服务名称,我的服务叫“TEST”
agent.service_name=${SW_AGENT_NAME:TEST}
# The number of sampled traces per 3 seconds
# Negative number means sample traces as many as possible, most likely 100%
# agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}
# Authentication active is based on backend setting, see application.yml for more details.
# agent.authentication = ${SW_AGENT_AUTHENTICATION:xxxx}
# The max amount of spans in a single segment.
# Through this config item, skywalking keep your application memory cost estimated.
# agent.span_limit_per_segment=${SW_AGENT_SPAN_LIMIT:300}
# Ignore the segments if their operation names end with these suffix.
# agent.ignore_suffix=${SW_AGENT_IGNORE_SUFFIX:.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg}
# If true, skywalking agent will save all instrumented classes files in `/debugging` folder.
# Skywalking team may ask for these files in order to resolve compatible problem.
# agent.is_open_debugging_class = ${SW_AGENT_OPEN_DEBUG:true}
# The operationName max length
# agent.operation_name_threshold=${SW_AGENT_OPERATION_NAME_THRESHOLD:500}
# Backend service addresses.这里是oap服务所在的服务器地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
# Logging file_name
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
# Logging level
logging.level=${SW_LOGGING_LEVEL:DEBUG}
# Logging dir
# logging.dir=${SW_LOGGING_DIR:""}
# Logging max_file_size, default: 300 * 1024 * 1024 = 314572800
# logging.max_file_size=${SW_LOGGING_MAX_FILE_SIZE:314572800}
# mysql plugin configuration
# plugin.mysql.trace_sql_parameters=${SW_MYSQL_TRACE_SQL_PARAMETERS:false}
配置完成后通过以下命令启动项目,在启动命令中加“-javaagent:/home/agent/skywalking-agent.jar”参数:
java -jar -javaagent:/home/agent/skywalking-agent.jar test.jar
这里整个skywalking已经搭建完成。