当前位置: 首页 > news >正文

快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台

快速构建spring-cloud + sleuth + rabbit + zipkin + es + kibana + grafana日志跟踪平台

简介

Spring-Cloud-Sleuth

Spring-Cloud-Sleuth是Spring Cloud的组成部分之一,为SpringCloud应用实现了一种分布式追踪解决方案,其兼容了Zipkin, HTrace和log-based追踪

  • 术语(Terminology)

Span: 基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)

span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

Trace: 一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace。

Annotation: 用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束

cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间

将Span和Trace在一个系统中使用Zipkin注解的过程图形化:

https://gitee.com/toopoo/Spri...
clipboard.png

Rabbitmq:

消息队列,主要用于传输日志

Zipkin:

服务调用链路追踪系统,聚合各业务系统调用延迟数据,达到链路调用监控与跟踪。

服务调用链路
https://gitee.com/toopoo/Spri...
clipboard.png

服务调用链路详情
https://gitee.com/toopoo/Spri...
clipboard.png

服务间的调用关系
https://gitee.com/toopoo/Spri...
clipboard.png

ES + Kibana:

提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。

https://gitee.com/toopoo/Spri...
clipboard.png

Grafana:

可视化图表监控工具

https://gitee.com/toopoo/Spri...
clipboard.png

zipkin-server搭建与使用

version: '3'
services:
  rabbitmq:
    image: rabbitmq:alpine
    container_name: sc-rabbitmq
    restart: always
    volumes:
      - ./data/rabbitmq:/var/lib/rabbitmq
    networks:
      - sc-net
    ports:
      - 5672:5672
      
  zipkin-server:
    image: openzipkin/zipkin
    container_name: sc-zipkin-server
    restart: always
    volumes:
      - ./data/logs/zipkin-server:/logs
    networks:
      - sc-net
    ports:
      - 9411:9411
    environment:
      - RABBIT_ADDRESSES=rabbitmq:5672
      - RABBIT_MQ_PORT=5672
      - RABBIT_PASSWORD=guest
      - RABBIT_USER=guest
    depends_on:
      - rabbitmq
networks:
  sc-net:
    external: false

搭建ES + Grafana

version: '3'
services:
  elasticsearch:
    image: elasticsearch:alpine
    container_name: sc-elasticsearch
    restart: always
    volumes:
      - ./data/elasticsearch/logs:/var/logs/elasticsearch
    networks:
      - sc-net
    ports:
      - 9200:9200

  kibana:
    image: kibana
    container_name: sc-kibana
    restart: always
    volumes:
      - ./data/kibana/logs:/var/logs/kibana
    networks:
      - sc-net
    ports:
      - 5601:5601
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
    depends_on:
      - elasticsearch

  grafana:
    image: grafana/grafana
    container_name: sc-grafana
    restart: always
    volumes:
      - ./data/grafana/logs:/var/logs/grafana
    networks:
      - sc-net
    ports:
      - 3000:3000

测试

启动服务

将以上docker-compose脚本保存为docker-compose.yml,并在当时目录下执行docker-compose up -d

spring-cloud集成

请参考:https://github.com/zhoutaoo/S... 例子

应用集成开发好后,请求应用的接口

查看日志

zipkin访问地址:http://localhost:9411,可以看到请求的耗时与路径

kibana访问地址:http://localhost:5601,可以看到请求打印的日志

grafana访问地址:http://localhost:3000,可以新增es数据源,出可视化的图表和监控

相关文章:

  • Anaconda3启动ipython的几种方式
  • QueryParser
  • SqlService 索引原理
  • 第五次实验
  • Sherpa | Complete Navigation System 介绍与教材
  • 「postgres」导出数据以及分割数据
  • C#和asp.net执行外部EXE程序
  • 2018.10.23-dtoj-1608新三国争霸(fight)
  • 玩转html5(三)---智能表单(form),使排版更加方便
  • 推荐C++程序员阅读《CLR via C#》
  • 高级 Vue 组件模式 (7)
  • 第一天在某品牌电脑店工作
  • 项目启动时出错的处理
  • 蟠桃记
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • egg(89)--egg之redis的发布和订阅
  • Java的Interrupt与线程中断
  • Material Design
  • PV统计优化设计
  • vue的全局变量和全局拦截请求器
  • 百度小程序遇到的问题
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 我的zsh配置, 2019最新方案
  • 用element的upload组件实现多图片上传和压缩
  • 自动记录MySQL慢查询快照脚本
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​什么是bug?bug的源头在哪里?
  • ‌JavaScript 数据类型转换
  • #{}和${}的区别是什么 -- java面试
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2)STL算法之元素计数
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (solr系列:一)使用tomcat部署solr服务
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (黑马点评)二、短信登录功能实现
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (算法)N皇后问题
  • (转)socket Aio demo
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .NET中分布式服务
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @AliasFor 使用
  • @SuppressWarnings注解
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [BSidesCF 2019]Kookie1
  • [BZOJ1008][HNOI2008]越狱
  • [C++初阶]vector的初步理解