精华内容
下载资源
问答
  • dlog分布式日志系统
  • 分布式日志系统

    千次阅读 2016-01-29 10:31:48
    为什么需要分布式日志系统 分布式日志系统架构 我们的分布式日志系统设计--埋点部分

    为什么需要分布式日志系统

    目前大部分互联网系统,都会涉及到分层,分离,分布式,以及集群。再加上负载均衡和反向代理,这样就会导致一个请求过来,我们根本不知道他走了那台应用服务器,路过了哪些服务,访问了哪些缓存服务和应用数据库;导致我们无法跟踪请求,分析系统,以及给解决问题带来了很大的难度。

    所以分布式日志,此时应运而生。分布式日志是基于每个请求,以该请求的线程为依据,跟踪请求经过的每个节点并留下足迹;并记录该请求访问的每一个服务及各个应用数据库。分布式日志洗头具有以下特点或功能:
    要能做到追踪每个请求的完整调用链路,
    收集调用链路上每个服务的性能数据,
    计算性能数据和比对性能指标(SLA),
    甚至在更远的未来能够再反馈到服务治理中,

    当然我们也可以根据自己的需求在此基础上附加以些功能。 下图是一个案例,先睹为快:


    分布式日志系统架构

    上图就是分布式日志系统的典型架构。
    1. 埋点:各应用系统和服务都需要进行日志的埋点,记录下每个线程执行留下的痕迹
    2. 日志收集处理系统
    3.  日志处理系统
    4. 日志分析系统
    5. 日志分析结果输出与展现

    埋点部分

    各个应用系统的埋点部分是关键,对日志分析结果有着至关重要的作用。当然这里也要结合具体的分析需求和具体的业务进行埋点。

    埋点原理如下图:


    简单说在系统的入口(http的api),生成一个 requestId,并初始化rpcNum为0 ;
    在整个请求执行过程中,入口应用A初始化为0 ,当A调用B 和C 以及消息服务时,分别分配 0.1,0.2,0.3;B调用FG时,分配0.1.1;0.1.2;C调用G时分配0.2.1;以此类推。然后经过处理即可得到上图的树形日志结构。

    我们的日志系统:

    先整体看一下
    我们的分布式日志系统,分为4部分:
    数据采集--》数据分析--》数据存储--》平台接口
    数据采集:RPC, http,平台内部接口,Response接口

    数据分析:用spark/ELK(tail -f ...| scp ...)
    数据存储:Hbase/hive
    平台接口:Rest,分析结果的一个试图展现。

    本次分享重点是  : 数据采集 部分


    http 对应的是 API(Controller)拦截器               LogAspect的实现
    Rpc 对应的是remote(rpc接口)拦截器               LogAspect的实现

    原理是:
    1.拦截如上入口,在进入应用逻辑前,埋下埋点(在ThreadLocal中记录下RequestId和sequence),在处理应用逻辑处理完后,记录日志。
    2.在访问资源的地方,DB,Redis,MC拦截打印对应的日志。
    BaseResourceLog下
    memcache的 MemCacheDataSource
    redis的 ShardedJedisClient
    DB对应 mybatis的 插件MybatisLogPlugin

    本版本不足:
    还不能把日志穿起来,形成链路。无法很好的完成链路分析。

    下版的计划或者目的:(注:此处是军哥的剧透加上我的理解,以及网上相关文章的总结)
    1. 统一入口,入口进行埋点,API为唯一入口
    2. 后续调用均使用埋点中requestId 和正确的维护 sequence。
    3. RPC调用时携带RequestId和sequence
    4. 如果需要分析 Service相关信息,可再定义一个Service拦截器。

    sequence的维护如下:




























    展开全文
  • 为您提供Plumelog分布式日志组件下载,Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,...
  • 为您提供Plumelog分布式日志组件下载,Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,...
  • 为您提供Plumelog分布式日志组件下载,Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,...
  • Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,在分布式系统中也可以查询关联日志,...
  • ELK分布式日志收集系统的搭建

    万次阅读 2020-03-30 14:44:48
    ELK分布式日志收集系统的搭建 filebeat+logstash+elasticsearch+kibana搭建一个分布式的日志收集系统

    ELK分布式日志收集系统的搭建

    filebeat+logstash+elasticsearch+kibana搭建一个分布式的日志收集系统

    1.linux下filebeat下载安装

    • deb:安装
     curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-amd64.deb
    
    sudo dpkg -i filebeat-7.6.1-amd64.deb
    
    • 启动filebeat
     sudo service filebeat start
    
    • filebeat配置文件在/etc/filebeat/filebeat.yml中
    #=========================== Filebeat inputs =============================
    
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/folio/okapi/okapi.log
      tag: ["okapi"]
      fields:
        index: 'filebeat-7.6-okapi'
    - type: log
      enabled: true
      paths:
        - /var/lib/okapi/mod-circulation/info.log
      tag: ["circulation"]
      fields:
        index: 'filebeat-7.6-circulation'
    
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    #============================= Filebeat modules ===============================
    
    filebeat.config.modules: 
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    #==================== Elasticsearch template setting ==========================
    
    setup.template.settings:
      index.number_of_shards: 1
    
    #============================== Kibana =====================================
    
    setup.kibana:
    
    #----------------------------- Logstash output --------------------------------
    output.logstash:
      hosts: ["172.168.13.208:5044"]
    
    #================================ Processors=====================================
    
    processors:
      - add_host_metadata: ~
      - add_cloud_metadata: ~
      - add_docker_metadata: ~
      - add_kubernetes_metadata: ~
    
    
    

    3.linux下logstash下载安装

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
    sudo apt-get install apt-transport-https
    
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
    
    sudo apt-get update && sudo apt-get install logstash
    
    • logstash启动
     sudo systemctl start logstash.service
    
    • logstash配置文件在/etc/logstash目录下conf.d 中以config为结尾的配置文件
    
    input {
    
      beats {
               port => 5044
            }
    }
    filter {
      grok {
        match => { "message" => "(?<timestamp>%{TIMESTAMP_ISO8601})" }
      }
    }
    
    output {
    
      if [fields][index] == "filebeat-7.6-okapi" {
        elasticsearch {
          hosts => ["172.168.13.208:9200"]
          ## index 默认值是"logstash-%{+YYYY.MM.dd}",不允许包含大写字母
          index => "filebeat-okapi"
          }
       }else if [fields][index] == "filebeat-7.6-circulation" {
        elasticsearch {
          hosts => ["172.168.13.208:9200"]
          index => "filebeat-circulation"
          }
        }
    }
    
    

    3.linux下elasticsearch下载安装

     wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
    sudo apt-get install apt-transport-https
    
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
    
    sudo apt-get update && sudo apt-get install elasticsearch
    
    • 要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:
    sudo /bin/systemctl daemon-reload
    sudo /bin/systemctl enable elasticsearch.service
    
    • Elasticsearch启动停止
    sudo systemctl start elasticsearch.service
    sudo systemctl stop elasticsearch.service
    
    • elasticsearch配置文件在/etc/elasticsearch/elasticsearch.yml
    
    # ------------------------------------ Node ------------------------------------
    
    node.name: master
    
    # ----------------------------------- Paths ------------------------------------
    
    path.data: /var/lib/elasticsearch
    
    path.logs: /var/log/elasticsearch
    
    # ---------------------------------- Network -----------------------------------
    
    network.host: 0.0.0.0
    
    # --------------------------------- Discovery ----------------------------------
    
    cluster.initial_master_nodes: ["master"]
    
    # ---------------------------------- Various -----------------------------------
    
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    

    3.linux下kibana下载安装

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    
    sudo apt-get install apt-transport-https
    
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
    
    sudo apt-get update && sudo apt-get install kibana
    
    • 要将Kibana配置为在系统启动时自动启动,请运行以下命令:
    sudo /bin/systemctl daemon-reload
    
    sudo /bin/systemctl enable kibana.service
    
    • Kibana启动停止
    sudo systemctl start kibana.service
    
    sudo systemctl stop kibana.service
    
    • logstash配置文件在/etc/kibana/kibana.yml
    
    server.basePath: "/kibana"
    #i18n.locale: "en"
    i18n.locale: "zh-CN"
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://127.0.0.1:9200/"]
    kibana.index: ".kibana"
    
    
    展开全文
  • dubbo分布式日志追踪

    2019-02-18 16:46:57
    dubbo+MDC实现的分布式日志追踪

    请参考笔者另一篇文章 spring boot 2.1学习笔记【十二】SpringBoot 2 集成 dubbo 2.6.5 最后一节。文章中有dubbo+MDC实现的分布式日志追踪,并且有原理介绍。

    展开全文
  • 微服务之分布式日志 ELK 分布式事务 什么是分布式事务 在分布式应用中,日志被分布在不同的设备上,为了方便集中管理日志并且得到相应的预期结果,这就是分布式日志. 为什么使用分布式日志 化繁为简,提高日志处理...

    微服务之分布式日志 ELK

    分布式事务

    1. 什么是分布式事务
      1. 在分布式应用中,日志被分布在不同的设备上,为了方便集中管理日志并且得到相应的预期结果,这就是分布式日志.
    2. 为什么使用分布式日志
      1. 化繁为简,提高日志处理速度

    ELK

    1. ELK其实是Elasticsearch, Logstash, Kibana的首字母,通过它们的整合使用,将所有节点上的日志统一收集,管理,访问。其工作流程如下:
      在这里插入图片描述

    2. Elasticsearch: 是个开源分布式搜索引擎

      1. 下载地址

      2. 解压并进入config目录, elasticsearch.yml

        node.name: node-1
        path.data: /usr/local/elasticsearch/elasticsearch-7.1.1/data
        path.logs: /usr/local/elasticsearch/elasticsearch-7.1.1/logs
        network.host: 127.0.0.1
        http.host: 0.0.0.0
        http.port: 9200
        discovery.seed_hosts: ["127.0.0.1"]
        cluster.initial_master_nodes: ["node-1"]
        
      3. 创建一个用户

        1. useradd es
        2. chown -R es:es /usr/local/elasticsearch/elasticsearch-7.1.1
        3. su es
        4. /usr/local/elasticsearch/elasticsearch-7.1.1/bin/elasticsearch -d
        5. curl http://localhost:9200
    3. Logstash: 是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据

      1. 文件下载地址

      2. 解压并进入bin目录, vim logstash-elasticsearch.conf

        input {
        	stdin {}
        }
        output {
        	elasticsearch {
        		hosts => '192.168.88.166:9200'
        	}
        	stdout {
        		codec => rubydebug
        	}
        }
        

      3.启动 ./logstash -f logstash-elasticsearch.conf

    4. Kinaba: 使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作

      1. 文件下载地址

      2. 解压并进入config目录

      3. vim kibana.yml

        server.port: 5601 
        server.host: "0.0.0.0" 
        elasticsearch.hosts: ["http://192.168.88.166:9200"] 
        kibana.index: ".kibana"
        
      4. 授权es用户: chown -R es:es /usr/local/kibana

      5. 切回es用户并启动 su - es

        /usr/local/kibana/kibana-7.9.1-linux-x86_64/bin/kibana &
        
      6. 访问: http://192.168.88.166:5601/

      7. 切换为中文, 在config/kibana.yml添加

        i18n.locale: "zh-CN"
        
    5. 日志收集:
      1. 对应服务器安装logstash,配置规则,例如新建logstash-apache.conf

      input {
        file {
          path => "/home/project/logs/sys-*.log"
      	start_position => beginning
      	sincedb_path => "/dev/null"
      	codec => multiline {
            pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"
            negate => true
            auto_flush_interval => 3
            what => previous
          }
        }
      }
      
      filter {
        if [path] =~ "info" {
          mutate { replace => { type => "sys-info" } }
          grok {
            match => { "message" => "%{COMBINEDAPACHELOG}" }
          }
          date {
            match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
          }
        } else if [path] =~ "error" {
          mutate { replace => { type => "sys-error" } }
        } else {
          mutate { replace => { type => "random_logs" } }
        }
      }
      
      output {
        elasticsearch {
          hosts => '192.168.88.166:9200'
        }
        stdout { codec => rubydebug }
      }
      
      1. 启动logstash: ./logstash -f logstash-apache.conf
      2. 通过kibana即可看到各个服务日志情况
        在这里插入图片描述

    总结

    1. 阅读微服务相关的姊妹篇可以更好的理解本文哦
    2. 文章列表
      1. 微服务之网关篇 Spring Cloud Gateway
      2. 微服务之注册中心篇 Nacos
      3. 微服务之配置中心篇 Naocs
      4. 微服务之远程调用篇 OpenFeign
      5. 微服务之服务监控篇 Actuator&Admin
      6. 微服务之链路追踪篇 Skywalking
      7. 微服务之分布式事务篇 Seata
      8. 微服务思想介绍
      9. 微服务之熔断与降级篇 Sentinel
    展开全文
  • dlog分布式日志系统 ##支持以下特性1.动态修改日志等级[网络或远程登录] 2.日志远程实时输出3.日志集中搜集4.支持全文检索,以及基于日志的用户行为分析5.对java应用不侵入,只需6.支持收集常用服务的日志
  • 分布式日志调用链追踪
  • 一、ELK应用背景: 二、ELK平台概述: 三、ELK核心组件: 四、案例:部署ELK分布式日志分析平台: 五、案例:应用ELK日志分析平台进行分析nginx日志:
  • Flume分布式日志采集

    2021-01-20 20:59:06
    一、Flume分布式日志采集1.1 Flume 简介1.2 常用架构 一、Flume分布式日志采集 1.1 Flume 简介 Flume是一种分布式,可靠且可用的服务,用于收集,聚合和移动大量日志数据。 Flume构建在日志流之上一个简单灵活的...
  • 在本文中,我们将了解在记录微服务时需要遵循的最佳实践以及在微服务领域中处理分布式日志记录的体系结构。 众所周知,微服务可以在多个主机上运行。 为了满足单个业务需求,我们可能需要与在不同计算机上运行的多...
  • 主要介绍了详解spring cloud分布式日志链路跟踪,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,在分布式系统中也可以查询关联日志,...
  • 分布式日志追踪的最佳实践1

    热门讨论 2021-05-28 16:07:16
    分布式日志追踪 分布式环境中无可避免的需要做微服务之间的调用,这导致追踪到整个的业务流程变得麻烦。分布式日志追踪解决了那些问题: 分布式的性能优化。通过日志追踪可以看出各个环境,各个服务消耗的时间,为...
  • 分布式日志处理系统调研报告,主要针对ELk的使用现状进行分析,对技术的成熟度和现有使用厂家的使用情况进行总结。
  • 架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Redis做消息队列罢了。下面通过本文给大家分享JavaWeb项目架构之Redis分布式日志队列,感兴趣的朋友一起看看吧
  • 分布式日志系统Scribe scribe 是facebook 开源的分布式日志系统。其使用了thrift传输log,由于使用thrift,所以不论是什么语言的项目都可以实现日志收集,可达到远程或者是本地同步远程的分布式日志收集效果,在其...
  • 分布式日志分析系统的设计与实现
  • ELK 分布式日志实战

    2017-10-16 16:51:00
    ELK 分布式日志实战介绍  此实战方案以 Elk 5.5.2 版本为准,分布式日志将以下图分布进行安装部署以及配置。  当Elk需监控应用日志时,需在应用部署所在的服务器中,安装Filebeat日志采集工具,日志采集工具...
  • ELK分布式日志系统搭建 1.ELK流程介绍 ELK分布式日志系统工作流程如下图所示: 2.Elasticsearch 7.0 集群搭建 参考skyWalking一文中ES集群搭建 3.kinaba 搭建 3.1 下载及上传kinaba安装包 下载 版本目录地址:...
  • TANK:一个高性能的分布式日志服务
  • spring-cloud 分布式日志采集

    万次阅读 多人点赞 2018-02-01 15:47:34
    由于微服务架构中每个服务可能分散在不同的服务器上,因此需要一套分布式日志的解决方案。spring-cloud提供了一个 用来trace服务的组件sleuth。它可以通过日志获得服务的依赖关系。基于sleuth,可以通过现有的日志...
  • TANK是一种非常高性能的分布式日志,部分受Kafka以及其他类似服务和技术的启发。 这是第二个主要的发行版本,TANK2。在此处了解此新发行版本。 简介您的TANK是一种非常高性能的分布式日志,部分受到Kafka以及其他...
  • 目录概述Zipkin的使用搭建zipkin serverzipkin dependencies在服务中添加zipkin的相关配置SkyWalking的使用部署skywalking web部署服务应用日志中输出trace_id分布式日志系统ELKlogstash的安装部署kibana查看链路...
  • 搭建Elk分布式日志 文章目录搭建Elk分布式日志一、什么是ELK?1.1 检测环境二、安装ElasticSearch2.1、解压ElasticSearch安装包2.2、创建elsearch组2.3、修改ElasticSearch配置2.4、修改linux配置2.5、启动Elastic...
  • 分布式 搜索 日志收集分布式 搜索 日志收集分布式 搜索 日志收集
  • dubbo分布式日志跟踪

    千次阅读 2018-09-09 14:08:12
    dubbo分布式日志追踪: 需要修改两个地方,一个是consumer端的 InvokerInvocationHandler.java,红色是修改的地方 public class InvokerInvocationHandler implements InvocationHandler { private final ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,245
精华内容 6,098
关键字:

分布式日志