热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微服务链路追踪——skywalking

前言skywalking是分布式系统的应用程序性能监视、分布式链路追踪工具,跟听云、博瑞等一系列服务器监控组件服务类似,开源的相关类似组件有zipkin
前言

        skywalking是分布式系统的应用程序性能监视、分布式链路追踪工具,跟听云、博瑞等一系列服务器监控组件服务类似,开源的相关类似组件有zipkin、pinpoint等,由于笔者所在项目组准备升级springcloud,缺少相关链路监控组件,而zipkin属于springcloud1.0相关,因此暂时选择调研skywalking并对其进行搭建。
        当前skywalking最新版本为6.4,本博客示例中使用nacos作为注册中心,springcloudgateway作为网关进行服务请求转发。

正文

skywalking架构

        如下图所示,整体主要分为三个部分:

  1. skywalking-agent:在被监控的服务启动时添加的探针,用来收集和推送数据到归集器,将数据通过gRPC方式发送给collector组件;
  2. skywalking-collector:链路数据归集器,接收agent发送的数据并做处理,数据可以保存在H2、ElasticSearch、mysql等;
  3. skywalking-web:web的可视化管理后台,对已经持久化的数据做回显,显示收集后的数据;
    在这里插入图片描述

搭建skywalking

        搭建使用的各种服务版本如下:

nacoselasticsearchskywalkingspringcloudgateway
1.1.36.4.26.4.0Greenwich.SR1

        搭建之前下载各个对应版本的包,并且需要保证对应端口不被占用,8848(nacos)、9200(es)、8080(skywalking-web)、11800、12800。

搭建共分为以下几步:1.nacos配置启动;2.es配置启动;3.skywalking-collector及skywalking-web配置启动;4.skywalking-agent与服务启动。

        1. 首先启动nacos,详见 https://nacos.io/zh-cn/docs/quick-start.html ,本地访问 http://localhost:8848/nacos 可以看到管理页面。

        2. 其次配置和启动es,首先修改es配置,在下载的es目录 config/elasticsearch.yml,配置相应的节点名称及host地址、端口,如下:

cluster.name: CollectorDBCluster
node.name: CollectorDBCluster
network.host: 127.0.0.1
http.port: 9200

        ./elasticsearch -d 后台运行,本地访问 http://localhost:9200/ 出现下述数据表明es服务基本正常。

{
name: "CollectorDBCluster",
cluster_name: "CollectorDBCluster",
cluster_uuid: "NuJtMyOnShun26UWoXCQXw",
version: {
number: "6.4.2",
build_flavor: "default",
build_type: "tar",
build_hash: "04711c2",
build_date: "2018-09-26T13:34:09.098244Z",
build_snapshot: false,
lucene_version: "7.4.0",
minimum_wire_compatibility_version: "5.6.0",
minimum_index_compatibility_version: "5.0.0"
},
tagline: "You Know, for Search"
}

        3.接着准备启动skywalking,首先修改skywalking配置,config/application.yml 如下:

#注册到nacos配置
cluster:nacos:serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}# Nacos cluster nodes, example: 10.0.0.1:8848,10.0.0.2:8848,10.0.0.3:8848hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}#存储选择es,注意nameSpace配置要一致,注释掉h2;如果选择使用h2,则不需要修改
storage:elasticsearch:nameSpace: CollectorDBClusterclusterNodes: 127.0.0.1:9200indexShardsNumber: 2

        如果需要修改skywalking-web的端口号,需要修改webapp/webapp.yml。

        接着启动skywalking,linux在skywalking bin目录下执行./startup.sh,windows则执行startup.bat。此时我们应该能看到nacos控制台(http://localhost:8848/nacos) 的服务列表中有skywalking注册如列表中SkyWalking_OAP_Cluster,且能访问skywalking控制台(http://localhost:8080/) 。
image
image
        如果未能正常注册、或者skywalking后台无法正常访问,就去skywalking/log/目录下看一下日志是否有异常。

        4.将skywalking目录下agent附带到相应的项目服务中启动,如 java -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800 demo.jar 如果是在idea或eclipse中启动项目,则在项目启动的VM OPTIONS中增加参数 -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800

        上面的-Dskywalking.agent.service_name是指注册到skywalking的服务名称,而-Dskywalking.collector.backend_service指的是skywalking接收agent发送采集数据的服务及端口。
在启动了两个服务后,可以在后台、拓扑图中看到注册的两个服务及调用链,如下图所示。
image

结语

        以上就是skywalking+nacos+elasticsearch+demo-service的搭建整个过程,我在这其中也遇到不少问题,如版本契合问题、skywalking现有bug问题、粗心配置写错问题等,一开始没怎么注意官方文档,后续对照官方文档改过之后才完成,希望与大家多多交流。

参考文档:
https://www.cnblogs.com/jackion5/p/10604189.html
https://blog.csdn.net/dpnice/article/details/95499394
https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/


推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
author-avatar
外星人源码商城
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有