• Skywalking环境搭建及demo实战


    在微服务应用非常广的今天,面临必要的问题

        一个大型的互联网项目,采用微服务的架构设计,可能保证整个项目的完整运营就需要几十上百个服务的互相协作,那如果某个服务突然宕机或出现死锁等bug,怎么办?这个时候各个服务的维护团组开始互相扯皮了,都一口咬定是XXX的错误,与自己无关,哈哈哈哈哈,这个时候如果通过日志一层一层的去追踪足以把人逼疯了

         1.那怎么快速串联调用的链路,对出现问题的服务进行排查呢?

         2.怎么一目了然的知道各个服务之间的依赖关系?

        3. 一个调用下怎样知道串联的各个服务所消耗性能?

         4.执行顺序谁先谁后?

    分布式调用链就是为了解决以上几个问题而生,它主要的作用如下:

    1、自动采集各项服务的数据数据,并且监控调用各服务所消耗的性能
    2、能分析数据,可以监控完整的调用过程,问题可追踪可复现
    3、数据可视化:每个组件的性能可视化,能帮助我们很好地定位系统的瓶颈,及时找出问题所在

    这里就搭建Skywalking来示例,当然也有很多链路追踪监控工具

          我这里就用 elasticsearch+skywalking来实现

              当然skywalking也支持其 它配置可选项有H2/MYSQL/elasticsearch7/tidb/influxdb

     配置elasticsearch7非结构型数据存储效率更高

         好了现在就开始搭建吧

      部署前准备   

                     linux服务器 一台

                     Elasticsearch 压缩包  下载Download Elasticsearch | Elastic

                     skywalking   压缩包    下载Downloads | Apache SkyWalking

            linux需要先搭建jdk环境哈

                    

    我这边是先下载到本地然后通过shell工具上传到linux服务器,你也可以直接wget 压缩包地址 

     类似 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz

         解压elasticsearch

    tar -zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz 
    

    修改config/elasticsearch.yml文件

    1. cluster.name: my-application
    2. node.name: node-1
    3. path.data: /usr/local/data
    4. path.logs: /usr/local/logs
    5. network.host: 0.0.0.0
    6. http.port: 9200
    7. cluster.initial_master_nodes: ["node-1"]
    8. # 需要开启跨域才能给elasticsearch-head,kibana等连接
    9. http.cors.enabled: true
    10. http.cors.allow-origin: "*"
    11. http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

     创建用户组用户并授权

    1. groupadd elsearch
    2. sudo useradd elsearch -g elsearch
    3. passwd elsearch
    4. chown -R elsearch:elsearch elasticsearch-7.14.0

     vi /etc/sysctl.conf
    

    vm.max_map_count=262144
    

     保存并退出   

    :wq
    

     使之立即生效

     sysctl -p
    

     

    1. su - elsearch //切换用户 需要输入密码的哈,按提示来,就是上面自己设置的

    使用elsearch 用户执行 你存放elasticsearch目录下的bin目录里面的elasticsearch文件

    1. ./elasticsearch -d

     访问你服务器的ip:9200 能出现以下数据就是部署成功了

     好了到skywalking

    再切换回去

    su - root

     解压你的skywalking压缩包

    1. tar -zxvf apache-skywalking-apm-es7-8.5.0.tar.gz
    2. cd apache-skywalking-apm-bin-es7/

     config/application.yml 这个配置文件要改成我们前面设置的elasticsearch

    它默认使用的是H2

        把这个位置修改成这个

    1. storage:
    2. selector: ${SW_STORAGE:elasticsearch7}

    1. $ bin/oapService.sh

     修改 webapp.yml 的端口 默认是8080,很容易被占用冲突

    webapp/webapp.yml

     bin/startup.sh
    

     执行就ok了

    成功之后就可以通过你部署的ip+webapp.yml里面配置的端口访问你的skywalking

    比如我的就是127.0.0.1:7080 就可以了,当然我这里面已经有内容了是因为我已经使用,你刚启动好的话,里面应该是空白没有内容的

     好了,这skywalking环境是已经搭建好了,那怎么开启链路监控呢?

     

    比如我这个demo来说 

     

     我这里idea经过了汉化,不喜欢用汉化的可以找到 VM options: 这个位置把下面内容填充进去

    -javaagent:D:\skywalking-agent\skywalking-agent.jar -DSW_AGENT_NAME=demo-client -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

    nohup java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=你的服务名  -jar demo.jar > demo.log 2>&1 &

     当然你也可以设置大小-Xms512m -Xmx512m 等等等等

     

     我这里是一个比较简单的demo,所以看起来影响不大,哈哈哈哈,等你几十个服务就可以看到密密麻麻的调用了

    哦哦这里必要说一下,

     你用的啥语言就搞啥语言的代理  你执行

     -javaagent:D:\skywalking-agent\skywalking-agent.jar -DSW_AGENT_NAME=demo-client -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

    是需要

     

    对应的 

  • 相关阅读:
    vue 提效的一些技巧
    基于Laravel封装一个强大的请求响应日志记录中间件
    会计学原理完全版
    5.3 快表实验
    大厂密集背后,折叠屏市场“暗战”已起
    我服了!SpringBoot升级后这服务我一个星期都没跑起来!(下)
    文化课2021-2022游记
    2023年天津理工大学中环信息学院专升本机械制图考试大纲
    SpringBoot如何缓存方法返回值?
    TI Sitara系列AM64x开发板(双核ARM Cortex-A53)软硬件规格书
  • 原文地址:https://blog.csdn.net/qq_14926283/article/details/125499550