Skywalking快速入门

一 概述

SkyWalking 是什么?

FROM http://skywalking.apache.org/
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
SkyWalking 有哪些功能?
FROM http://skywalking.apache.org/
多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
轻量高效。无需大数据平台,和大量的服务器资源。
模块化。UI、存储、集群管理都有多种机制可选。
支持告警。
优秀的可视化解决方案。

二 整体架构

在这里插入图片描述
整个架构,分成上、下、左、右四部分:

考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

官方文档

  • 英文文档 :https://github.com/apache/skywalking/tree/master/docs
  • 中文文档 : https://github.com/SkyAPM/document-cn-translation-of-skywalking
    考虑大家使用 SkyWalking 的目的,是实现分布式链路追踪的功能,所以最好去了解下相关的知识。这里推荐阅读文章
  • 《OpenTracing 官方标准 —— 中文版》

三 环境准备

3.1 搭建Elasticsearch(如果存储源需要用ES的话,则需要安装)

参考我的另一篇博文Mac搭建ES

3.2 下载 SkyWalking 软件包

于 SkyWalking 的软件包,有两种方式获取:

手动编译
官方包
一般情况下,我们建议使用官方包。手动编译,更多是尝鲜或者等着急修复的 BUG 的版本。

3.2.1 官方包

在 http://skywalking.apache.org/downloads/ 下,我们下载操作系统对应的发布版。

这里,我们选择 Binary Distribution for ElasticSearch 7 (Linux) 版本,因为艿艿是 Mac 环境,再加上想使用 Elasticsearch 7.X 版本作为存储。如果你想用 Elasticsearch 6.X 版本作为存储,记得下载 Binary Distribution 版本。

下载:

官网下载地址:http://skywalking.apache.org/downloads/
在这里插入图片描述
然后
在这里插入图片描述
或者直接:

# 创建目录:
$ mkdir -p /Users/admin/tool/trace
$ cd/Users/admin/tool/trace
$ wget https://mirror.bit.edu.cn/apache/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz

解压:

# 解压
$ tar -zxvf apache-skywalking-apm-6.6.0.tar.gz
$ cd apache-skywalking-apm-bin
$ ls -ls
total 136
64 -rwxr-xr-x    1 admin  staff  29138 Dec 24 14:10 LICENSE
64 -rwxr-xr-x    1 admin  staff  31850 Dec 24 14:10 NOTICE
 8 -rw-r--r--    1 admin  staff   1978 Dec 24 14:10 README.txt
 0 drwxr-xr-x    9 admin  staff    288 Dec 24 14:21 agent
 0 drwxr-xr-x   12 admin  staff    384 Apr 14 14:04 bin
 0 drwxr-xr-x   11 admin  staff    352 Apr 14 14:07 config
 0 drwxr-xr-x   36 admin  staff   1152 Dec 24 14:10 licenses
 0 drwxr-xr-x    6 admin  staff    192 Apr 14 14:09 logs
 0 drwxr-xr-x    5 admin  staff    160 Apr 15 08:05 mesh-buffer
 0 drwxr-xr-x  207 admin  staff   6624 Dec 24 14:28 oap-libs
 0 drwxr-xr-x    6 admin  staff    192 Apr 15 08:05 trace-buffer
 0 drwxr-xr-x    4 admin  staff    128 Apr 14 14:04 webapp

3.3 SkyWalking OAP 搭建

  • 修改OAP配置文件 (我使用的是默认存储器h2)
$ vi config/application.yml
storage:
 # elasticsearch:
 #   nameSpace: ${SW_NAMESPACE:"elasticsearch"}
 #   clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
 #   protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
 #   # trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
 #   # trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
 #   user: ${SW_ES_USER:""}
 #   password: ${SW_ES_PASSWORD:""}
 #   indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
 #   indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
 #   # Those data TTL settings will override the same settings in core module.
 #   recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
 #   otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
 #   monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
 #   # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
 #   bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
 #   flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
 #   concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
 #   resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
 #   metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
 #   segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
#  elasticsearch7:
#    nameSpace: ${SW_NAMESPACE:""}
#    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
#    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
#    trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
#    trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
#    user: ${SW_ES_USER:""}
#    password: ${SW_ES_PASSWORD:""}
#    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
#    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
#    # Those data TTL settings will override the same settings in core module.
#    recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
#    otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
#    monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
#    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
#    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
#    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
#    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
#    resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
#    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
#    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
  h2:
    driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
    url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
    user: ${SW_STORAGE_H2_USER:sa}
    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
  • 修改agent配置文件
$ vi agent/agent.config
# The service name in UI
agent.service_name=${SW_AGENT_NAME:demo-application}

  • 启动oap service
☁  apache-skywalking-apm-bin  :     bin/startup.sh
  • 验证
http://127.0.0.1:8080/

四应用接入

4.1 编写简单的springboot demo,并打一个jar包

启动应用采用如下命令:

java -javaagent:/Users/admin/tool/trace/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo-application -jar demo-application.jar

4.2 效果

在这里插入图片描述
调用链
在这里插入图片描述

SkyWalking是一款用于监控和分析分布式系统的开源监控平台。本文将介绍SkyWalking入门实践。 首先,我们需要下载和安装SkyWalking。可以在官方网站或者GitHub上找到SkyWalking的最新版本。根据系统平台选择适当的安装方式,例如Docker镜像、二进制文件或者源代码编译。 安装完成后,我们需要配置SkyWalking以监控我们的系统。首先,修改agent.config文件,指定服务端的地址和端口。接下来,根据具体需求调整其他配置参数,如采样率、日志文件路径等。 在系统的启动脚本中添加SkyWalking的启动参数,并启动我们的系统。系统启动后,SkyWalking的Agent将会自动收集系统的性能指标和调用链数据。 打开浏览器,输入SkyWalking的访问地址,可以看到SkyWalking的控制面板。在控制面板上可以查看各个系统的拓扑图、指标图表和报表等。 此外,我们还可以通过SkyWalking的告警功能监控系统的异常情况。配置告警规则,当系统的某些指标超过阈值时,将会触发告警通知。 除了系统监控,SkyWalking还支持应用性能监控和链路追踪。我们可以在应用程序中添加SkyWalking的SDK,以便更详细地监控和分析应用程序的性能。 在使用SkyWalking进行入门实践的过程中,我们需要深入了解SkyWalking的各种配置和功能,以便根据实际需求进行定制和优化。 总而言之,SkyWalking是一款功能强大的分布式系统监控平台。通过简单的配置和使用,我们可以方便地监控和分析系统的性能,并及时发现和解决问题,提升系统的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值