SpringCloud下skywalking的快速入门
SkyWalking 是观察性分析平台和应用性能管理系统(APM, Application Performance Management) , 由个人开发者 吴晟 于2015年开源 , 2017年加入Apache孵化器 。
它提供分布式跟踪、服务网格遥测分析、度量聚合和可视化的功能 , 支持Java、.Net、PHP、NodeJs、Golang、LUA语言探针 , 以及Envoy+Istio构建的Service Mesh , 支持 OpenTracing 规范 。
SkyWalking设计原则
- 保持可监控性
- 拓扑、指标和跟踪于一体
- 轻量级
- 可插拔
- 便于部署
- 与其他系统的可交互性
文章插图
SkyWalking 在逻辑上可以分为四个组件:
- Probes收集数据并转换为SkyWalking要求的格式 , 发送给后台 。 宏观的看 , Probe包含三种形式:语言级的原生Agent这种 Agent 跟随目标系统一起运行 , 就像其代码的一部分 , 例如SkyWalking的Java Agent , 用 -javaagent 命令行参数去操纵(修改和注入)执行时的代码 。 其他方式的 Agent, 使用目标语言库所提供的hook或拦截等机制 。 Service Mesh probeService Mesh probe从 sidecar 、 service mesh 中 servie 的 control panel 或 proxy 获取数据 。 第三方工具库直接接收外部数据 , 用第三方库所提供的工具 , 将该数据转化为SKyWalking的格式发送到后端
- Platform backendSkyWalking的后台 , 又称为 OAP(Observability Analysis Platform), 将数据进行聚合、分析以及UI的页面流程控制
- StorageSkyWalking的数据持久层 , 目前已支持像 ElasticSearch 、 MySql 、 TiDB 、 H2 等常见的各种持久化库
- UI用于展示数据
SpringCloud中SkyWalking的使用1. 配置数据库SkyWalking默认启用了H2的数据库 , 在生产级 , 更适合的显然是ElasticSearch(当然 ,H2 下我也遇到了入库时报 Agent 生成的 traceId 长度超过200的错误) 。
方便起见 , 直接用 ES的 Docker 镜像启用ES集群 , 本文选用7.9.2的镜像文件 。
$sudo docker pull elasticsearch:7.9.2# 此处为方便后续容器使用ES , 为其创建一个网络$sudo docker network create esnw# 仅启动一个单节点做演示$sudo docker run -d --name elasticsearch --net esnw -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.2
注:Docker启动的ES , 默认 cluster_name 是 docker-cluster , 如有需要 , 可以提前改好 , 后续需指定
2. 配置并启用OAP后台及UI2.1 下载包SkyWalking在下载页面提供了最新版本的整合包 , 包含了 Agent 、 OAP 和 UI 三个组件 , 但是 , 在Dockerhub上是将 OAP ( ) 和UI( )是拆分开来了的 。
注:
由于ES6和7 API的变动 ,OAP 的分别为6和7单独打了一个包 , x.y.z-es6是支持ES6的 , x.y.z-es7是支持ES7的 , 由于我们的数据库选用的是ES7 , 所以要下的是es7最新的包
$sudo docker pull apache/skywalking-oap-server:8.1.0-es7$sudo docker pull apache/skywalking-ui:8.1.0
2.2 配置OAP 的配置集中在 config/application.yml 中 , 比较重要的配置有如下几个cluster:# 配置SkyWalking的集群方式 , 默认是单节点 , 支持zk、k8s、consul、etcd和nacosselector: ${SW_CLUSTER:standalone}core:selector: ${SW_CORE:default}default:# 对外暴露Http接口的地址以及端口12800restHost: ${SW_CORE_REST_HOST:0.0.0.0}restPort: ${SW_CORE_REST_PORT:12800}# 对外暴露gRPC接口的地址及端口11800gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}gRPCPort: ${SW_CORE_GRPC_PORT:11800}storage:# 默认的数据库是H2selector: ${SW_STORAGE:H2}elasticsearch7:# 对应ES的cluser_name , 即前面提到的docker-clusternameSpace: ${SW_NAMESPACE:"docker-cluster"}clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
- “千店同开”引质量担忧,小米回应
- 企业|技术快速迭代倒逼知识产权“贴身”服务,上海首家AI商标品牌指导站入驻徐汇西岸
- 三星Galaxy A52 5G通过3C认证 支持最高15W快速充电
- 大健康速递丨腾讯上线疫苗接种服务区;华大基因研发出快速鉴定盒
- 小米联合京东及爱回收推全新换机服务 帮你快速换新机
- 西安奕斯伟硅产业基地项目建设刷新我国建设大硅片制造项目的最快速度
- 网络|万物互联,更离不开网络文明
- 微软统一Edge工具栏体验:方便用户快速访问收藏夹、历史和集锦
- 电脑常识新手快速入门的基础操作电脑新手快速入门的基础
- 组图 | 海口复兴城西海岸互联网总部基地项目快速推进