SpringCloud Alibaba微服务运维一 - 集成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
4、基于Prometheus和Grafana的监控平台 - 环境搭建
我就知道你“在看”