首页 > 其他分享 >skywalking

skywalking

时间:2023-02-10 17:25:13浏览次数:56  
标签:bin 启动 jar agent elasticsearch skywalking

1.链路追踪介绍

2.skywalking是什么

3. skywalking搭建

4. skywalking 服务启动

5. skywalking 接入微服务

6. skywalking持久化跟踪数据

1.链路追踪介绍

对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一些问题:
1.如何串联整个调用链路,快速定位问题!
2.如何滤清各个微服务之间的依赖关系!
3.如何跟踪整个业务流程的调用处理顺序!
4.如何进行各个微服务接口的性能分析!

2.skywalking是什么

Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
官网:https://skywalking.apache.org/
下载:https://skywalking.apache.org/downloads/
中文文档:https://skyapm.github.io/document-cn-translation-of-skywalking/

2.1 链路追踪框架对比
目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的
功能和技术方案对比:
Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。
Pinpoint是一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。

2.2 性能对比
模拟了三种并发用户: 500 750 1000. 使用jmeter测试,每个线程发送30个请求,设置思考实践为10ms。使用的采样率为1,即100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1.组合起来一共有12种。线面汇总表:

从上表可以看出,在三种链路监控组件中,skywalking探针对吞吐量影响最小,zipkin对吞吐量影响适中,pinpoint的探针对吞吐量影响最大,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。对于内存和cpu的使用,都差不多,相差在10%之内。

2.3 skywalking主要功能特性
1.多种监控手段,可以通过语言谭政和service mesh获得监控数据;
2.支持多种语言自动探针,包括java,.net core和node.js;
3.轻量高效,无需大数据平台和大量的服务器资源;
4.模块化,UI、存储,集群管理都有多种机制可选;
5.支持告警;
6.优秀的可视化解决方案;

3.skywalking搭建


Skywalking agent和业务端绑定在一起,负责收集各种监控数据
Skywalking oapservice是负责处理监控数据,接受agent的数据并存储在数据库中,接受来自UI的请求,查询监控数据。
Skywalking UI提供给用户,展现各种监控数据和告警。

3.1 安装elasticsearch7.13.1

3.1.1 下载

 wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.13.1/elasticsearch-7.13.1-x86_64.rpm

3.1.2 安装

yum localinstall -y elasticsearch-7.13.1-x86_64.rpm

3.1.3 配置elasticsearch

[root@local-skywalking apache-skywalking-apm-bin]# cat /etc/elasticsearch/elasticsearch.yml|grep -v '^#'
cluster.name: skywalkinges
node.name: node-1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.1.231"]
cluster.initial_master_nodes: ["node-1"]

cluster.name: skywalkinges # 这个名字随便取,但是后面要和skywalking中的名字一致
node.name: node-1 # 节点名称也可以随便取
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1"] # 一定要配置,不然找不到主节点
cluster.initial_master_nodes: ["node-1"] # 一定要配置,不然找不到主节点,这个名字与上面的node.name一致

3.1.4 目录授权

chown elasticsearch.elasticsearch /data/elasticsearch

3.1.5 启动

systemctl start elasticsearch
systemctl enable elasticsearch

3.2 skywalking下载


3.3 skywalking目录结构

webapp: Ui前端(web监控页面)的jar包和配置文件;
oap-lib: 后台应用的jar包,以及它的依赖jar包,里边有一个server-starter-*.jar就是启动程序;
config: 启动后台应用的配置文件;
bin: 各种启动脚本,一般使用脚本startup.* 来启动web页面和对应的后台应用;

    1. oapService.*: 默认使用的后台程序的启动脚本;(使用的是默认模式启动,还支持其他模式,各模式区别见启动模式)
    1. oapServiceInit.*: 使用no init模式启动;在此模式下,OAP服务器不进行初始化
    1. oapServiceNoInit.*: 使用no init模式启动;在此模式下,OAP服务器不进行初始化
    1. webappService.*: UI前端的启动脚本
    1. startup.: 组合脚本,同时启动oapService. webappService.*脚本

3.4 skywalking-agnet 目录详解

skywalking-agent.jar: 代理服务jar包
config: 代理服务启动使用的配置文件
plugins: 包含多个插件,代理服务启动时会加载目录下的所有插件(各种jar包)
optional-plugins: 可选插件,当需要支持某种功能时,比如springcloud gateway,则需要把对应的jar包拷贝到plugins目录下

4. skywalking 服务启动

4.1 skywalking oap服务启动

启动脚本bin/startup.sh

日志信息存储在logs目录

启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui
skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml

systemd服务

[root@local-skywalking apache-skywalking-apm-bin]# systemctl cat skywalking
# /usr/lib/systemd/system/skywalking.service
[Unit]
Description=skywalking-oap
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/apps/apache-skywalking-apm-bin/bin/startup.sh
Restart=always
PrivateTmp=true
LimitNOFILE=65536
WorkingDirectory=/apps/apache-skywalking-apm-bin/bin/
[Install]
WantedBy=multi-user.target

4.2 skywalking-ui

启动 bin/webappService.sh
skywalking-web-ui服务会占用 8080 端口, 修改端口可以修改webapp/webapp.yml

server.port:SkyWalking UI服务端口,默认是8080;
collector.ribbon.listOfServers:SkyWalking OAP服务地址数组,SkyWalking UI界面的数据是通过请求SkyWalking OAP服务来获得;
访问

systemd服务

[root@local-skywalking apache-skywalking-apm-bin]# systemctl cat skywalking-ui.service 
# /usr/lib/systemd/system/skywalking-ui.service
[Unit]
Description=skywalking-webapp
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/apps/apache-skywalking-apm-bin/bin/webappService.sh
Restart=always
PrivateTmp=true
LimitNOFILE=65536
WorkingDirectory=/apps/apache-skywalking-apm-bin/bin
[Install]
WantedBy=multi-user.target

4.3 skywalking三个概念

服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字;
服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;
端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;

5. skywalking 接入微服务

5.1 linux环境通过jar包方式接入

准备一个springboot程序,打成可执行jar包,写一个shell脚本,在启动项目的Shell脚本上,通过 -javaagent 参数进行
配置SkyWalking Agent来跟踪微服务;
startup.sh脚本:

#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=springboot‐skywalking‐demo #Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300。
export JAVA_AGENT=‐javaagent:/usr/local/soft/apache‐skywalking‐apm‐bin‐es7/agent/skywalking‐agent.jar
java $JAVA_AGENT ‐jar springboot‐skywalking‐demo‐0.0.1‐SNAPSHOT.jar #jar启动

启动日志

等同于

java ‐javaagent:/usr/local/soft/apache‐skywalking‐apm‐bin‐es7/agent/skywalking‐agent.jar ‐DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 ‐DSW_AGENT_NAME=springboot‐skywalking‐demo ‐jar springboot‐skywalking‐demo‐0.0.1‐SNAPSHOT.jar

参数名对应agent/config/agent.config配置文件中的属性。
属性对应的源码:org.apache.skywalking.apm.agent.core.conf.Config.java

# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

我们也可以使用skywalking.+配置文件中的配置名作为系统配置项来进行覆盖。 javaagent参数配置方式优先级更高

5.2 docker容器接入agent

下载agent解压 并打成tar包

[root@yzfs-jenkins skywalking_agent-jdk8]# ls
Dockerfile  skywalking-agent  skywalking-agent.tar

agent打入容器

[root@yzfs-jenkins skywalking_agent-jdk8]# cat Dockerfile 
FROM jdk8:212
WORKDIR /usr/local
ADD  skywalking-agent.tar /usr/local/

[root@yzfs-jenkins skywalking_agent-jdk8]# docker build -t skywaling_agent:jdk8 .

制作镜像

cat Dockerfile
FROM skywaling_agent:jdk8
WORKDIR /usr/local
ENV SW_AGENT_NAME=app-name
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES=skywalking.faone.cn:11800
ENV SW_AGENT_SPAN_LIMIT=2000
ADD  jar_package.jar /usr/local/
CMD ["java","-javaagent:/usr/local/skywalking-agent/skywalking-agent.jar","-jar","-Xms512m","-Xmx512m","-Xmn512m","jar_package.jar"]

6. 持久化跟踪数据

编辑config下面的application.yml文件
将默认的H2数据源注释掉,将elasticsearch7配置放开,配置如下

storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    namespace: ${SW_NAMESPACE:"skywalkinges"}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.1.221:9200}

标签:bin,启动,jar,agent,elasticsearch,skywalking
From: https://www.cnblogs.com/yangtao416/p/17091447.html

相关文章

  • skywalking Tomcat
    废话不多。一下载skywalkingDownloads|ApacheSkyWalking最新版APM和Agent分开了。所以我们要下载2个APM: Agent:下载后解压, 二修改skywalking配置1apa......
  • 【转载】APM——SkyWalking 是什么
    原文地址:1、https://zhuanlan.zhihu.com/p/3615792942、https://www.cnblogs.com/itxiaoshen/p/16513711.htmlgithub:  https://skywalking.apache.org/一、SkyWalki......
  • 【分布式链路追踪】Skywalking分布式链路追踪基于Docker安装与使用
    1.服务监控三要素[1]服务监控需要满足的三要素分别如下:日志监控指标监控请求链路追踪服务监控只要能满足这三个要素,基本就能实现我们想要的监控效果。1.1.主流APM......
  • 分布式链路追踪-skywalking入门体验
    背景旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉。然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了。或者公司内部有链路......
  • netcore添加skywalking链式追踪
    简介  在分布式系统当中,想要监控服务与服务之间调用耗时,或者是查问题的时候,不能像向单机那种形式去查询.查找了一段时间发现目前市场上用的是skywalking,由华为大佬......
  • 微服务链路追踪-skywalking搭建
    下载并解压skywalkingwgethttps://archive.apache.org/dist/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gztar-zxvf apache-skywalking-apm-es7-8.5.0.t......
  • Skywalking
    链路追踪组件应用性能监视工具调用链路组件选型:springCloudsleuth,结合Zipkin使用,拦截HTTP请求,将数据发送至Zipkin服务Pinpoint,基于字节码增强。性能比较低。SkyWalking,......
  • Skywalking控制台浅使用记录
    搭建并启动好skywalkingOAT及WEBAPP服务后,对项目进行集成,以某一服务为例,启动参数中添加如下内容:-javaagent:D:\Server\apache-skywalking-java-agent-8.13.0\skywalkin......
  • SkyWalking(第八章)
    skywalking简介:特点(1)实现从请求跟踪、指标收集和日志记录的完整信息记录。 (2)多语言自动探针,支持Java、GO、Python、PHP、NodeJS、LUA、Rust等客户端。 (3)内置服务......
  • 六阶段:第35周 应用监控与调优-工具篇 skywalking
        插件识别api           ......