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

SpringCloudAlibaba微服务运维(一):集成SkyWalking

大家都知道在微服务架构下的一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会







大家都知道在微服务架构下的一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,如果没有及时处理很有可能会造成整个系统崩溃。


面对以上情况,我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。


本章内容我们来给我们的微服务集成SkyWalking监控,毕竟都2021年了,生产环境应该很少人使用zipkin来作为调用链监控吧。




手动狗头



原来在 "运维监控" 系列文章中已经写过SkyWalking的系列文章,感兴趣的同学可以访问以下链接查看。


http://javadaily.cn/category/devops


这次在微服务系列文章中再写一遍主要是基于两个原因:




  • 原来的版本采用的是SkyWalking6.x,新版本已经到了8.3,版本差异较大。




  • 保持这个系列文章的完整性





版本说明:ElasticSearch7.10.1 + Skywalking8.3


前提条件:准备好一台安装JDK8的虚拟机



ElasticSearch 安装部署




  • 下载




官网的下载链接很慢,这里推荐一个国内下载地址:https://www.newbe.pro/Mirrors/Mirrors-Elasticsearch/




  • 解压缩




将文件上传至服务器目录 /app/elasticsearch并解压


cd /app/elasticsearch
tar -zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz



  • 修改系统内存配置





/etc/sysctl.conf
增加如下配置



vm.max_map_count = 655360



/etc/security/limits.conf
后面增加如下配置


# End of file
* soft memlock unlimited
* hard memlock unlimited
* hard nofile 65536
* soft nofile 65536


修改完成后需要使用命令 sysctl -p
重新加载配置




  • 创建ElasticSearch启动用户




ElasticSearch不允许使用root用户启动,所以我们需要创建一个elastic用户用于启动ElasticSearch,并授予用户对应权限。


useradd elastic
chown -R elastic:elastic /app/elasticsearch/elasticsearch-7.10.1




  • 修改es配置 /app/elasticsearch/elasticsearch-7.10.1/config/elasticsearch.yml



cluster.name: sw-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]




  • 修改es的JVM参数 /app/elasticsearch/elasticsearch-7.10.1/config/jvm.options



-Xms4g
-Xmx4g



  • 切换elastic用户并启动elastic




su elastic # 切换用户
cd /app/elasticsearch/elasticsearch-7.10.1/bin
# 启动
./elasticsearch
# 后台启动
./elasticsearch -d

这时候会看到如下提示



future versions of Elasticsearch will require Java 11; your Java version from [/app/java/jdk1.8.0_18
1/jre] does not meet this requirement


ElasticSearch7以上版本需要JDK11支持,但是我们系统安装的是JDK8并且环境变量设置的JAVA_HOME也是JDK8。


[root@tymonitor bin]# which java
/app/java/jdk1.8.0_181/bin/java

[root@tymonitor bin]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

「这里需要修改成使用ES自带的JDK,当然如果你装的就是JDK11+的版本下个步骤可以忽略。」




  • 配置elsaticsearch jdk





打开文件 /app/elasticsearch/elasticsearch-7.10.1/bin/elasticsearch-env
,修改如下配置


if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi

修改为:


if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"



  • 重新启动,观察es启动日志





  • 浏览器查看ElasticSearch运行状态 http://xx.xx.xx.xx:9200/



{
"name" : "node-1",
"cluster_name" : "sw-application",
"cluster_uuid" : "AOvOVaqWQ6uWDGQRx1l4nA",
"version" : {
"number" : "7.10.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
"build_date" : "2020-12-05T01:00:33.671820Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}


SkyWalking 搭建



下载安装




  • 下载




从官网下载SkyWalking最新版本8.3,由于我们需要使用ES7.x版本所以需要下载ES7的版本。


下载地址:https://skywalking.apache.org/downloads/



版本: apache-skywalking-apm-es7-8.3.0.tar.gz




  • 上传并解压





将下载下来的文件上传至服务器 /app/skywalking/


使用命令解压并重命名文件夹:


tar -zxvf apache-skywalking-apm-es7-8.3.0.tar.gz
mv apache-skywalking-apm-bin-es7/ apache-skywalking-apm



  • 修改UI页面访问端口




修改/app/skywalking/apache-skywalking-apm/webapp/webapp.yml,将默认端口8080修改成其他端口8768


server:
port: 8768



  • 修改storage模式




SkyWalking默认使用h2作为存储数据库,我们需要替换为elasticsearch7;


storage:
selector: ${SW_STORAGE:elasticsearch7}



  • 修改elasticsearch7相关配置




修改nameSpace为当前es集群的名称,nameSpace需要与前面ES的配置保持一致;clusterNodes为节点名称


storage:
elasticsearch7:
nameSpace: ${SW_NAMESPACE:"sw-application"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}



  • 启动Skywalking




cd /app/skywalking/apache-skywalking-apm/bin
sh startup.sh
...
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!


启动完成后我们可以通过命令 netstat -aptn
查看端口占用情况




端口占用情况





  • 访问SkyWalking地址 http://xx.xx.xx.xx:8768/







服务配置



将SkyWalking解压后的 agent
文件夹复制到应用服务器,如 /app/service/ltc/skywalking-agent/agent
,修改应用服务器的启动命令,在 java -jar
之间增加 -javaagent
指令。


如:


java -Xms4g -Xmx4g -javaagent:/app/service/skywalking-agent/agent/skywalking-agent.jar=agent.service_name=auth-service,agent.instance_name=auth-service-01,collector.backend_service=xx.xx.xx.xx:11800

主要配置三个参数




  • agent.service_name=auth-service





「必填」,用于指定服务名称




  • collector.backend_service=xx.xx.xx.xx:11800





「必填」,用于指定后端oap的地址




  • agent.instance_name=auth-service-01





「选填」,用于指定实例名称,如果不指定则在UI图上会显示 UUID@IP
的格式



「注意:SpringCloud Gateway接入SkyWalking需要将 /agent/optional-plugins/apm-spring-cloud-gateway-2.x.x-plugin-8.3.0.jar
复制到/agent/plugins/目录下。」


将所有服务都加上SkyWalking的探针并启动后,再次访问SKyWalking的UI地址,效果如下:










链路跟踪




以上,希望对你有所帮助!



End




干货分享




这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取!


001:《程序员必读书籍》


002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》


003:《互联网企业高并发解决方案》


004:《互联网架构教学视频》


006:《SpringBoot实现点餐系统》


007:《SpringSecurity实战视频》


008:《Hadoop实战教学视频》


009:《腾讯2019Techo开发者大会PPT》


010: 微信交流群




近期热文top




1、 关于JWT Token 自动续期的解决方案



2、SpringBoot开发秘籍-事件异步处理



3、架构师之路-服务器硬件扫盲



4、基于Prometheus和Grafana的监控平台 - 环境搭建




5、
RocketMQ进阶 - 事务消息






我就知道你“在看”








推荐阅读
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
author-avatar
yaoyinghua2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有