SkyWalking安装和使用

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文件夹,得到如下图所示文件夹列表:
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配置,如下图所示:

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支持对以下内容进行动态配置:

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命令,如下图:

image

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

-Dskywalking.agent.service_name=application_name命令。

image
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控制台,如下图所示即启动成功:

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,首先引入如下依赖:

<dependency>
      <groupId>org.apache.skywalking</groupId>      
     <artifactId>apm-toolkit-log4j-2.x</artifactId>      
     <version>{project.release.version}</version>
</dependency>

然后修改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的话,引入如下依赖:

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>{project.release.version}</version>
</dependency>

修改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,首先引入如下依赖:

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>${skywalking.version}</version>
</dependency>

然后在想要追踪的方法上增加@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启动的服务实例,如下图:


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<org.apache.skywalking.oap.server.core.alarm.AlarmMessage, 包含以下信息:
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。

image
image
image
image
image
image
image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容