前言

系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统。

要看一个请求怎么从头到尾走的,就有些困难了,要是进行DEBUG、跟踪,就更加麻烦了,困难程度要视进程多少而定,越多越复杂。

分布式日志收集系统就登场了。

今天介绍一款

全开源日志收集、展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+ElasticSearch+RabbitMQ

架构图如下

这张图是拷贝来的

里面虽然是Redis,但是没关系,换成RabbitMQ照样行

这个Broker Redis/RabbitMQ去掉实际上也行,只是去掉会会造成高峰时刻拖垮ElasticSearch,此处出现的目的是消峰

Shipper Logstash图中有3个,意思是可以有多个,可以分布在不同Server上,无论是windows还是linux系统都可以

看完上面三点,实际上已经对这个架构的扩展性很放心了,平心而论,确实很flex,具体可看http://logstash.net/docs/1.4.2/

安装方法

略,baidu一下一堆一堆的,注意的地方就一个:Kibana已经在logstash最新版中自带了,不用再去单独下载kibana代码,直接运行logstash web即可

正文

本文采用的logstash input类型为file的输入,既通过检测文本文件的方式进行日志采集(logstash支持很多input,文本文件只是其中一种,具体请看上面的文档url)

我们假设目前日志文件log.txt中存在一行日志记录,比如:

[192.168.1.1][2014-10-22 23:59:00][ERROR][Page1.Page_Load]Null Exception, bal...bal...

此时logstash shipper会根据它的配置文件找到这个log.txt, 然后检测到有一个新行出现了,内容是上面这些,然后它会:

正则匹配

192.168.1.1==>ServerIP

2014-10-22 23:59:00==>EventTime

ERROR==>LogLevel

Page1.Page_Load==>Method

Null Exception, bal...bal...==>MessageBody

哈哈,当然上述匹配法则是需要在配置文件中配置的

发送到后续节点

本篇中,是发送到RabbitMQ节点

哈哈,当然也是需要配置文件中配置好的

RabbitMQ实际上是起到了缓冲消峰的作用

那么RabbitMQ的消息是要给到谁呢?它是logstash indexer,logstash indexer实际上很简单,只是接收MQ中的消息,然后发送到再后端的ES倒排序引擎

然后就到了最后一个Kibana Web查询控制台,开发人员最终是通过这个Kibana查询界面来查询logstash收集来的日志的,下面来说说Kibana

Kibana的数据来源:

ElasticSearch:支持分布式扩展的倒排序搜索引擎,内核基于Lucene

Kibana的查询界面自定义:

可以灵活变换显示的列

可以鼠标圈时间范围(根据时间段来查看日志列表)

可以自动刷新日志列表

可以自定义所监控日志的版本(如:生产系统、UAT系统、开发DEMO)

可以查看某段时间段内某字段的饼图等统计图

可以灵活排序

可以定义列的显示前后位置

可以定义列是否显示

上一张图看看样子吧

整个收集系统的搭建,除了logstash这一套组件的搭建外,还需要关注的地方是日志文件保存的格式,就是上面包含有中括号的那种一行一行的记录是以什么格式保存,因为这个格式会对应logstash参数的解析,而logstash参数的名称会映射到kibana的查询界面中。

在程序这边,需要关注的是用统一的日志记录函数来记录,这样文本文件内容的格式就保证了,整个闭环就形成了。

具体的配置方式,大家可以加入一些logstash的qq群,或者看本文开头提供的文档链接。

DONE.

java 分布式日志_打造分布式日志收集系统相关推荐

  1. java 可视化系统操作日志_技术文 | 日志框架使用技巧分享

    原标题:技术文 | 日志框架使用技巧分享 日志的意义 对于一个应用程序来说日志记录是具有重要意义的. 日志通常用于线上问题追踪,协助定位业务问题或程序问题,以及基于日志的业务逻辑统计分析等. java ...

  2. 实现打印异常日志_老生常谈SpringAop日志收集与处理做的工具包

    场景 : 使用Spring Aop拦截参数日志目前大部分做法都基本上大同小异,不想日后每个项目工程都写一份这样的Aop拦截处理日志的代码,甚至代码侵入. 我想知道一些相对重要的请求方法的请求参数,响应 ...

  3. mysql 分布式锁_【分布式锁的演化】分布式锁居然还能用MySQL?

    前言 之前的文章中通过电商场景中秒杀的例子和大家分享了单体架构中锁的使用方式,但是现在很多应用系统都是相当庞大的,很多应用系统都是微服务的架构体系,那么在这种跨jvm的场景下,我们又该如何去解决并发. ...

  4. 分布式事务_实施分布式锁概述

    分布式事务 众所周知,锁通常用于监视和控制多个线程同时访问共享资源. 它们基本上保护并发应用程序中的数据完整性和原子性,即,一次只能有一个线程可以获取共享资源上的锁,否则将无法访问该锁. 但是在分布式 ...

  5. potainer 日志_实时Web日志分析神器

    GoAccess 是什么? GoAccess 是一个开源的实时Web日志分析器和交互式查看器,可在*nix系统上的终端或通过浏览器运行.它为系统管理员提供了实时而有价值的HTTP统计信息. GoAcc ...

  6. 清空数据库事务日志_通过事务日志增长加快数据库恢复和长期运行的事务

    清空数据库事务日志 In my previous article in this series Accelerated Database Recovery; Instant Rollback and ...

  7. mysqlbinlog查看日志_一个分布式 MySQL Binlog 存储系统的架构设计

    1. kingbus简介 1.1 kingbus是什么? kingbus是一个基于raft强一致协议实现的分布式MySQL binlog 存储系统.它能够充当一个MySQL Slave从真正的Mast ...

  8. 纯java分布式内存数据库_高性能分布式内存数据库VoltDB介绍

    VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库.使用JAVA 写的存储过程来定义事务.使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数 ...

  9. 分布式文件系统_新一代分布式文件系统XGFS揭秘——元数据服务

    新一代分布式文件存储系统XGFS,基于最新一代NVMe/SCM存储介质设计,利用高性能LSM存储引擎,结合XSKY独有专利技术的键值设计,构建出完全自主的元数据服务-本文系揭秘XGFS系列之首篇内容. ...

  10. python分布式框架_高性能分布式执行框架——Ray

    Ray是UC Berkeley RISELab新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室 ...

最新文章

  1. 到「黄埔学院」去:打造AI首席架构师,第二期限量招募!
  2. 为什么在把多维数组传递给函数时必须要指定除第一维之外的其他维
  3. 面试官:说说一条查询SQL的执行过程?
  4. C#多线程 我的第一个多线程程序
  5. 二叉树的四种遍历方式
  6. 参数调优为什么要采样_3年Java外包,内推阿里过关斩将,最后却倒在调优经验上! - Java架构师追风...
  7. redis系列:通过队列案例学习list命令 1
  8. NGINX配置邮件代理服务器
  9. 软件需求模式阅读笔记三
  10. wpf之代码设置背景图片
  11. C++ std::vector 一维 二维数组 初始化 为0
  12. 抖音下载小助手GUI版
  13. 高中学生最有效的高中数学学习方法分享
  14. 我不是九爷 带你了解 docker实战命令
  15. Markdown部分语法使用
  16. Android自定义View--Flyme6的Viewpager指示器
  17. APP android 测试用例手册
  18. 寻找AR中的Big Difference - v3.0 | AR指南
  19. 一个计算机爱好者的不完整回忆(四十)做过的一些“外挂”
  20. 苹果cmsV10仿B站风格视频影视电影网站源码

热门文章

  1. JavaScript判断当前浏览器类型(包括判断移动端浏览器类型)
  2. (FPGA学习)环境及入门-------基于黑金FPGA cyclone IV EP4CE15F17开发板
  3. 【ENVI】shp文件裁剪需要注意的问题
  4. 文献阅读-一种基于机器学习方法的海事监视雷达海杂波抑制方法
  5. Android studio打开机智云APP(自动生成)
  6. 宝峰c1对讲机写频软件_宝峰对讲机写频软件下载7.01 官方正式版-宝峰BF480,BF520,F25,F26对讲机写频软件西西软件下载...
  7. 智慧交通信号控制系统梗概
  8. 三菱PLC、西门子PLC、欧姆龙PLC、松下PLC自定义协议RS485接线篇
  9. zipEntry.getSize()=-1
  10. WindRiver workbench 建立工程步骤