windows下springCloud整合zipkin持久化数据到ES后没有生成依赖关系dependencies问题
前言
在之前的文章中,我们通过将数据持久化到mysql得到了trace链路信息和依赖信息;当我们将zipkin数据持久化到elasticSearch,在zipkin UI页面却只看到了trace链路信息,没有生成依赖关系dependencies,这是什么原因呢,今天我们就一起一探究竟,把zipkin数据持久化到elasticSearch后的依赖关系图也弄出来。
通过查阅资料得知,zipkin会在es中创建以zipkin开头日期结尾的index,并且默认以天为单位分割,使用该存储模式时,zipkin中的依赖信息会无法显示,需要通过zipkin-dependencies工具包计算得出。找到了解决方案,我们就开干。
一、安装启动zipkin-dependencies服务
1.jar包下载地址:
https://github.com/openzipkin/zipkin-dependencies
拉到Versions,找到latest released job,下载最新jar包:
下载得到最新稳定版本的jar包zipkin-dependencies-2.6.4.jar。
2.启动zipkin-dependencies服务
windows下命令:
java -jar zipkin-dependencies-2.6.4.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200
不出意外的出现报错,说参数未设置,具体如下:
查阅猿友的博文得知windows下需要配置环境变量才行,不能直接在命令上加参数。
3.设置环境变量
因为zip-dependencies源码中获取参数的方式是获取环境变量中的参数值:System.getenv(“STORAGE_TYPE”),因此需要将参数设置在环境变量中。windows下无法直接启动jar包,需要设置环境变量:
STORAGE_TYPE:elasticsearch
ES_HOSTS:localhost:9200
保存后,再次启动服务,启动命令:
java -Dserver.port=8181 -Dspark.testing.memory=1024000000 -jar zipkin-dependencies-2.6.4.jar
参数说明:
-Dserver.port:设置端口号;
-Dspark.testing.memory:设置spark分析使用内存,最小不能少于512M=51210241024=536870912;
然后再次启动,然后就发现又报错了,应该是生成依赖关系用到hadoop服务,而本地没有hadoop的环境,具体如下:
缺少hadoop环境,需要下载安装hadoop,没办法,没有就安装呗,硬着头皮往下走。
二、hadoop下载安装
1.下载hadoop安装包
选择Hadoop3.1.0版本
安装包下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
Windows环境安装所需的bin文件包(我们这里选择3.1.0):
1、可以打开地址:https://gitee.com/nkuhyx/winutils ,里面选 3.1.0。
2、或者直接下载:https://gitee.com/tttzzzqqq/apache-hadoop-3.1.0-winutils。
2.配置hadoop环境变量
控制面板\所有控制面板项\系统\高级系统设置
HADOOP_HOME:D:\hadoop-3.1.0
path里面追加上: %HADOOP_HOME%\bin
3.检查环境变量是否配置成功
命令:hadoop version
可以看到hadoop版本号信息,说明安装配置成功。
4.修改Hadoop的配置文件
(1)配置 core-site.xml 文件
先在 D:/hadoop-3.1.0/data/ 目录下建 tmp 文件夹,
修改 core-site.xml 文件,文件路径:\hadoop-3.1.0\etc\hadoop\core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/D:/hadoop-3.1.0/data/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
(2)修改mapred-site.xml 文件
文件路径:\hadoop-3.1.0\etc\hadoop\mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
</property>
</configuration>
(3)修改yarn-site.xml 文件
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hahoop.mapred.ShuffleHandler</value>
</property>
</configuration>
(4)修改hdfs-site.xml 文件
在D:\hadoop-3.1.0\目录下创建data文件夹;
在data文件夹中(D:\hadoop-3.1.0\data)创建datanode和namenode文件夹还有tmp文件夹。
hdfs-site.xml 文件路径:\hadoop-3.1.0\etc\hadoop\hdfs-site.xml
<configuration>
<!-- 这个参数设置为1,因为是单机版hadoop -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/D:/hadoop-3.1.0/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/D:/hadoop-3.1.0/data/datanode</value>
</property>
</configuration>
(5)修改hadoop-env.cmd 文件
文件路径:\hadoop-3.1.0\etc\hadoop\hadoop-env.cmd,打开后快捷键(ctrl+f),输入@rem The java implementation to use查找到,在set JAVA_HOME那一行将自己的JAVA_HOME路径配置上去:
set JAVA_HOME=D:\Java\jdk-8u202
(6)修改hadoop-env.sh文件
文件路径:\hadoop-3.1.0\etc\hadoop\hadoop-env.sh
使用快捷键(ctrl+f)查找export JAVA_HOME,找到相应的位置,替换配置自己jdk安装路径:
export JAVA_HOME=D:\Java\jdk-8u202
三.启动Hadoop服务
1.格式化namenode
在cmd中进入到D:\hadoop-3.1.0\bin路径
命令:hdfs namenode -format
2.开启hdfs服务
然后再进入到D:\hadoop-3.1.0\sbin路径
命令:start-dfs.cmd
会跳出两个窗口,不要关闭!
3.开启yarn服务
命令:start-yarn.cmd
当然也可以用命令:start-all.cmd ,一次性启动所有hadoop相关服务。
4.检查服务是否正常
发现ResourceManager启动报错,具体信息如下:
查资料发现,hadoop启动报错:“org/apache/hadoop/yarn/server/timelineservice/collector/TimelineCollectorManager”,主要是缺少timelineCollectorManager的jar包。
解决方案:
将hadoop3.1.0 版本将share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.0.jar放到share\hadoop\yarn\lib 下,照做后重新启动服务。
5.查看Hadoop运行的进程
命令:jps
发现成功启动所有服务。
6.查看Hadoop服务页面
访问namenode和HDFS的页面以及resourcemanager的页面来观察集群是否正常,可以通过访问namenode和HDFS的Web UI界面:http://localhost:9870,以及resourcemanager的页面:http://localhost:8088
四.再次启动zipkin-dependencies服务
启动命令:
java -Dserver.port=8181 -Dspark.testing.memory=1024000000 -jar zipkin-dependencies-2.6.4.jar
这里要注意的是程序只会根据当日的zipkin数据实时计算一次依赖关系,并以索引zipkin:dependency-2023-12-07方式存入es中,然后就退出了,因此要做到实时更新依赖的话需要自己想办法实现周期性执行zipkin-dependencies服务。
再次查看kibana上的es索引信息,发现多了一个:zipkin-dependency-2023-12-07的索引:
五.访问zipkin UI页查看依赖关系
重新进行微服务接口调用,然后刷新zipkin的页面,查看依赖菜单,终于出现了依赖关系:
总结
虽然说我们实际用到项目中时,大多数都是在linux环境上安装zipkin服务,但是windows环境下实验也很有意义,毕竟本地操作会方便很多。因为这个问题困扰了我很久,并且在Linux环境使用时也遇到了持久化到es依赖关系无法显示的这个问题,所以特此验证,并记录分享出来,希望对有同样困惑的同学有所帮助!也感谢以下博主的分享。文章来源:https://www.toymoban.com/news/detail-758817.html
参考文章:
https://blog.csdn.net/xia296/article/details/108864084
https://blog.csdn.net/LSY_CSDN_/article/details/105126095
https://blog.csdn.net/tttzzzqqq2018/article/details/131928028文章来源地址https://www.toymoban.com/news/detail-758817.html
到了这里,关于【微服务链路追踪】windows下zipkin持久化数据到ES后没有生成依赖关系dependencies问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!