SkyWalking安装和使用

SkyWalking安装和使用_第1张图片
image

Skywalking中OAP的概念:OAP(Observability Analysis Platform)可观测性分析平台是一个新的概念,始于skywalking6.X。OAP可以从多种数据源接收数据,分为两组:Tracing和Metrics。从6.2.0开始因为登录认证的安全漏洞问题,移除了登录认证。

1、下载

目前最新为6.5.0,下载地址http://skywalking.apache.org/downloads/

2、安装和配置

    下载完成以后,解压后进入/ apache-skywalking-apm-bin文件夹,得到如下图所示文件夹列表:
SkyWalking安装和使用_第2张图片
image
    进入config文件夹修改application.yml文件,core.default模块为默认配置,一般不需要修改,如果要修改IP或者端口,则直接修改对应的IP地址和端口即可,修改restHost和restPort后也需要同步修改/webapp文件夹下webapp.yml文件中collector.ribbon.listOfServers的配置。后端接收数据监听端口有restHost:restPort用于http rest APIs,gRPCHost:gRPCPort用于gRPC APIs。UI监听端口8080(默认)和请求restHost:restPort用于GraphQL查询。

储存数据库注释H2,放开ElasticSearch配置,如下图所示:

SkyWalking安装和使用_第3张图片
image

其中,nameSpace为elasticsearch的集群名称cluster.name,clusterNodes处添加elasticsearch的【ip:端口】,多个es集群节点以逗号分隔。ElasticSearch需要6.3.2或更高版本,官方文档写的不高于7.0.0,未验证(Required ElasticSearch 6.3.2 or higher, excepted 7.0.0 or higher)。官方文档建议ES增加如下配置:

thread_pool.index.queue_size: 1000 # Only suitable for ElasticSearch 6
thread_pool.write.queue_size: 1000 # Suitable for ElasticSearch 6 and 7
index.max_result_window: 1000000

agent配置:进入/agent/config文件夹打开agent.config文件,设置agent.service_name,设置collector.backend_service ,默认连接到 127.0.0.1:11800;

UI界面访问端口设置:修改/webapp/webapp.yml文件中的server.port端口即可。

SkyWalking支持对以下内容进行动态配置:

SkyWalking安装和使用_第4张图片
image

默认动态配置是关闭的,在/config/application.yml中configuration处配置。已有的实现有Apollo、Nacos、Zookeeper、Consul。其中nacos配置如下,此处的config key为nacos中的dataId,namespace即命名空间对应的id,覆盖yml配置则属性文件后缀名选yaml,对于receiver-trace.default.slowDBAccessThreshold,文件后缀选text:

configuration:
  nacos:
    # Nacos Server Host
    serverAddr: 127.0.0.1
    # Nacos Server Port
    port: 8848
    # Nacos Configuration Group
    group: 'skywalking'
    # Nacos Configuration namespace
    namespace: ''
    # Unit seconds, sync period. Default fetch every 60 seconds.
    period : 60
    # the name of current cluster, set the name if you want to upstream system known.
    clusterName: "default"

3、应用中探针接入

agent支持的服务清单列表查看如下链接:https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Supported-list.md

>>基于tomcat的服务

在tomcat的bin目录下,查看是否存在setenv.bat文件(linux为setenv.sh),不存在创建,并添加一行命令,set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar",linux下添加以下命令CATALINA_OPTS="$CATALINA_OPTS-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; exportCATALINA_OPTS

>>基于jar file的服务

在启动应用程序的命令行添加-javaagent参数,并确保在-jar参数之前添加它。命令如下:java -javaagent: /path/to/skywalking-agent/skywalking-agent.jar-jar yourApp.jar

idea中配置:打开run->Edit Configurations面板,在VM options处输入-javaagent:/path/to/skywalking-agent/skywalking-agent.jar命令,如下图:

SkyWalking安装和使用_第5张图片
image

以上三种配置,如果需要指定服务名称,则增加

-Dskywalking.agent.service_name=application_name命令。

SkyWalking安装和使用_第6张图片
image
SkyWalking安装和使用_第7张图片
image

4、skywalking初始化及启动

当集群部署SkyWalking的时候多实例同时启动会存在并发初始化问题,所以在启动之前运行一个单实例执行初始化动作,通过执行oapServiceInit.sh/oapServiceInit.bat进行初始化,可初始化ES索引,MYSQL,TIDB以及一些初始化数据,执行成功看到如下日志:

2018-11-09 23:04:39,465 -org.apache.skywalking.oap.server.starter.OAPServerStartUp -2214 [main] INFO []- OAP starts up in init mode successfully, exit now...。

/bin/oapService.bat:如果未进行初始化会进行初始化操作,然后开启监听提供服务。
/bin/oapServiceInit.bat:进行初始化操作,然后会退出。
/bin/oapServiceNoInit.bat:不进行初始化启动,会等待es索引、或者mysql、TIDB表存在,然后开始监听并提供服务。意味着oap服务器等待其他oap服务器进行初始化。
/bin/webappService.bat:启动UI服务。
/bin/startup.bat:同时启动oapService.bat和webappService.bat。

5、界面访问

启动ElasticSearch,进入/bin文件夹运行startup.bat文件启动skywalking,没问题的话访问http://localhost:8080即可看到skywalking控制台,如下图所示即启动成功:

SkyWalking安装和使用_第8张图片
image

6、日志中traceId输出

关于trace相关概念看中文翻译https://wu-sheng.gitbooks.io/opentracing-io/content/或者:https://github.com/opentracing-contrib/opentracing-specification-zh/blob/master/specification.md
traceId格式:{service_instance_id}.{thread_id}.({时间戳} * 10000 + 线程自增序列([0, 9999]))
日志为log4j2如果要在监控的应用中输出traceId,首先引入如下依赖:


      org.apache.skywalking      
     apm-toolkit-log4j-2.x      
     {project.release.version}

然后修改log4j2.xml的日志输出格式增加[%traceId]即可。更多信息查看官方文档
https://github.com/apache/skywalking/blob/v6.5.0/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
日志为logback的话,引入如下依赖:


    org.apache.skywalking
    apm-toolkit-logback-1.x
    {project.release.version}

修改logback.xml的日志输出格式,增加%tid即可。更多信息查看官方文档https://github.com/apache/skywalking/blob/v6.5.0/docs/en/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md

手动追踪traceId,首先引入如下依赖:


    org.apache.skywalking
    apm-toolkit-trace
    ${skywalking.version}

然后在想要追踪的方法上增加@Trace注解,该方法内部即可通过TraceContext.traceId()方法获取traceId,亦可通过ActiveSpan.tag("my_tag","my_value");增加标签标记。

7、集群配置

/config/application.yml文件下cluster处配置,默认为cluster.standalone单机模式。可配置集群有zookeeper、kubernetes、consul、nacos。配置集群模式时注释掉standalone模式。集群模式下,各个实例的采样率建议设置一致,否则可能会导致数据丢失风险。采样率配置在/config/application.yml中,receiver-trace.Default.sampleRate。agent配置:/agent/config/agent.config文件中的collector.backend_service多个节点以英文逗号分隔。示例如下:collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800,127.0.0.1:11801}
webapp配置:/webapp/webapp.yml文件中collector.ribbon.listOfServers多个逗号分隔,示例:127.0.0.1:12800,127.0.0.1:12801
以nacos集群为例:
启动nacos以后,SkyWalking的webapp服务启动一个即可,collector服务分别执行每个节点的/bin/oapService.bat启动。成功启动以后就会在nacos服务列表看到collector启动的服务实例,如下图:


SkyWalking安装和使用_第9张图片
image

8、告警配置

Alarm模块由两部分组成:
Alarm rules: 定义了如何触发度量警告,应该考虑什么条件。
Webhooks:警告被触发以后web服务的端点列表中哪一个端点应该被调用。
Alarm rule由以下key组成:
Rule name: 在告警信息中显示的唯一名称。必须以_rule结尾。
Metrics name: 是oal脚本中的度量名。只支持long,double和int类型。
Include names:以下实体名称包含在此规则中,如服务名、端点名。
Exclude names:以下实体名称不包含在此规则中,如服务名、端点名。
Threshold:阈值。
OP: 操作符支持 >, <, =。
Period: 多久告警规则需要被核实一下。这是一个时间窗口,与后端部署环境时间相匹配。
Count: 在一个Period窗口中,如果超过Threshold值(按op)的次数等于Count值,需要发送警报。
Slience period:静默时间。在某个时间点出发告警以后,在接下来period的时间段内将会保持静默。默认值与period相同,意味着在一段时间内,相同的告警(相同的度量名称相同的id)只会触发一次。
Webhook要求对等方是一个 Web 容器. 告警的消息会通过 HTTP请求进行发送, 请求方法为 POST, Content-Type 为 application/json, JSON 格式基于List scopeId,scope:所有scope定义在org.apache.skywalking.oap.server.core.source.DefaultScopeDefine类中。
name:目标scope实体名称。
id0:scope
实体的ID。
id1:暂未用。
ruleName: 配置在alarm-settings.yml中的规则名称。
alarmMessage: 告警文本信息
startTime: 当前时间到UTC 1970年1月1日半夜12点毫秒值。
示例:
[{
"scopeId": 1,
"scope": "SERVICE",
"name": "serviceA",
"id0": 12,
"id1": 0,
"ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage xxxx",
"startTime": 1560524171000
}, {
"scopeId": 1,
"scope": "SERVICE",
"name": "serviceB",
"id0": 23,
"id1": 0,
"ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage yyy",
"startTime": 1560524171000
}]

9、参考链接

https://cloud.tencent.com/developer/article/1536086 skywalking与pinpoint对比以及它的概念、使用。

https://www.youtube.com/watch?v=JC-Anlshqx8 skywalking的UI界面使用视频

https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md 本地编译调试。

https://blog.csdn.net/weixin_41618475/article/details/90263316

需要安装npm环境和awk软件。

https://gitee.com/OpenSkywalking/sky-walking 码云skywalking地址

http://122.112.182.72:8080 skywalkingUI界面体验

10、UI界面介绍

CPM:每分钟请求调用次数(平均吞吐量)。

SLA: 服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。即服务可用性,如99.9,99.99,99.999

CLR:(公共语言运行库,Common Language Runtime)和 Java 虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境。CLR 的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向 CLR 的所有语言使用。并保证应用和底层操作系统之间必要的分离。

百分位数:skywalking中有P50,P75,P90,P95,P99这种统计口径,就是百分位数的概念。

图例:如下图,表示12月16日,14:53分这个时间点探针反馈的统计结果来看,有50%的请求响应时间低于1020ms,有75%的请求响应时间低于1200ms,有90%的请求响应时间低于2150ms,有95%的请求响应时间低于3140ms,有99%的请求响应时间低于3220ms。

SkyWalking安装和使用_第10张图片
image
SkyWalking安装和使用_第11张图片
image
SkyWalking安装和使用_第12张图片
image
SkyWalking安装和使用_第13张图片
image
SkyWalking安装和使用_第14张图片
image
SkyWalking安装和使用_第15张图片
image
SkyWalking安装和使用_第16张图片
image

你可能感兴趣的:(SkyWalking安装和使用)