Spring Cloud -Hoxton.RELEASE(八):监控中心-Elasticsearch+Zipkin

上一章虽然收集到了日志信息,但是在Zipkin重启之后收集到的日志会直接消失。
所以我们需要将日志信息进行持久化,这样Zipkin会从持久化仓库里面去取日志。可选的组件是Mysql或者Elasticsearch等。因为Mysql持久化太常见了,所以在这里我们选择Elasticsearch(然而同样很常见)。

Elasticsearch

Elasticsearch官网对Elasticsearch描述如下:

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。
通过 Elasticsearch,您能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标),搜索方式随心而变。先从一个简单的问题出发,试试看能够从中发现些什么。找到与查询最匹配的 10 个文档是一回事。但如果面对的是十亿行日志,又该如何解读呢?Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和模式。

简单来讲可以当作一个分布式的数据库来使用。

下载并启动Elasticsearch

访问https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.zip下载6.4.3版的Elasticsearch并解压(Zipkin不支持7及以上版本的ElasticSearch,所以这里选用我们熟悉的6.4.3版)。

在bin目录下双击elasticsearch.bat启动ElasticSearch,然后使用Chrome的ElasticSearch Head扩展查看ElasticSearch索引
01.jpg
可以看到并没有索引存在。

重启Zipkin

依旧使用之前的zipkin.jar包,运行启动命令java -jar zipkin.jar --zipkin.collector.rabbitmq.uri=amqp://guest:guest@localhost:5672 --STORAGE_TYPE=elasticsearch --ES_HOSTS=http://localhost:9200
其中STORAGE_TYPE=elasticsearch表明持久化组件是ElasticSearch,ES_HOSTS是ElasticSearch的通讯地址。
然后像之前一样用Postman请求http://localhost:8030/feign/port/🐕,然后访问http://localhost:9411/zipkin/,点击主页的查看按钮会显示已经统计到的日志列表:
02.jpg
可以看到请求的链路日志已经统计在Zipkin里面了。
再查看ElasticSearch索引
04.jpg
可以看到ElasticSearch的Zipkin索引已经建立,查看数据浏览
05.jpg
可以看到数据浏览里面存的就是日志数据。
重启Zipkin服务可以看到请求的链路日志也并未丢失,也就是说日志持久化也ok了。
至于日志的分类和检索,请自行完成。