文档章节

[系统架构]分布式日志收集系统

chaun
 chaun
发布于 2016/05/19 14:38
字数 1004
阅读 32
收藏 1
点赞 2
评论 0


前言

系统一大,就会拆分成多个独立的进程,比如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.

本文转载自:http://blog.csdn.net/erlib/article/details/40780715

共有 人打赏支持
chaun
粉丝 85
博文 270
码字总数 96237
作品 0
深圳
高级程序员
分布式实时日志分析解决方案 ELK 部署架构

原文出处:FEINIK 一、概述 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解...

FEINIK
2017/12/30
0
0
分布式跟踪系统-cicada

https://github.com/Yirendai/cicada/blob/master/cicada-docs/cicadadesign.md 背景与目标 面对日趋复杂的分布式系统,如服务框架、消息中间件、缓存、数据层等,我司在业务性能瓶颈定位、故...

tantexian
2016/11/02
547
1
分布式调用跟踪系统调研笔记

分布式调用链跟踪系统通常有几个设计目标 低侵入性 -- 作为非业务组件,应当尽可能少侵入或者无侵入其他业务系统,对于使用方透明,减少开发人员的负担; 灵活的应用策略 -- 可以(最好随时)...

ginobefun
2017/05/25
0
0
日志分析(一)框架选择

概要 日志分析,有两个主要模块日志收集以及分析统计。日志收集主要实现日志数据源的获取。分析统计是对数据源的聚合和统计分析。 日志收集又分为离线收集和热数据收集:离线收集的日志收集服...

venuser
2015/12/11
353
0
【转】dubbo的使用场景

关于dubbo的使用场景,这个要从系统的演变开始将起,既然dubbo的使用很多是在电商系统中,那么就从电商系统的演变开始讲起。 一个简单的电商网站说起,它可能包含如下的几个模块和功能,如首...

枫叶摇曳
2017/07/31
119
1
读书笔记-大型分布式网站架构-设计与实践【陈康贤】

面向服务的体系架构(SOA) HTTP协议的工作方式与HTTP网络协议栈的结构 如何实现基于HTTP协议和TCP协议的RPC调用,它们之间的有何差别,分别适应何种场景 如何实现服务的动态注册和路由,以及软...

p2ng
2016/05/23
214
0
各大厂分布式链路跟踪系统架构对比

随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布...

james8888
04/19
0
0
分布式跟踪调研与设计

背景 公司业务由数以百计的分布式服务沟通,每一个请求路由过来后,会经过多个业务系统并留下足迹,并产生对各种缓存或者DB的访问,但是这些分散的数据对于问题排查,或者流程优化比较有限。...

6776jkjk
2017/10/15
0
0
基于Flume+Log4j+Kafka的日志采集架构方案

http://www.linuxidc.com/Linux/2016-05/131402.htm (一)kafka-jstorm集群实时日志分析 之 ---------kafka实时日志处理 ELK 实现 Java 分布式系统日志分析架构 ELK(ElasticSearch, Logstas...

cccyb
2016/12/12
42
0
如何筹建公司的大数据分析系统(一)

浅谈下,如标题这个问题: 随着大数据被不停的挖掘,每天有态度的人利用用户数据信息,产生巨大的商业价值,以及风险告警,在筹建大数据分析系统时,大家都很热衷新的东西,在做公司架构体系...

凛冬一壶酒
2017/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

数据库事务的四大特性以及事务的隔离级别

本篇讲述数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是...

Java大蜗牛
14分钟前
0
0
Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 1. POM依赖配置 <properties><mapper.starter.version>2.0.3-beta1</mapper.starter.version></properties><!-- 通用Mapper --><dependency><groupId>t......

OSC_fly
22分钟前
0
0
CentOS7 双网卡绑定

环境 操作系统 CentOS7.5,禁用 NetworkManager 服务 网卡 eth0 网卡 eth1 绑定网卡 bond0 网卡 eth0 配置 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=EthernetBOOTPROTO=noneD......

Colben
24分钟前
0
0
zk实战--rpc框架集群化

在看此篇内容时需要浏览下面内容 netty实战--手写rpc框架 前文功能简介以及功能扩充 利用netty来实现一个点对点的rpc调用。客户端和服务端都是靠手写地址进行socket同学的,无法1对多,也无法...

xpbob
40分钟前
11
0
springboot 发送邮件

获取授权码 添加配置 # 账号和密码spring.mail.username=aaa@qq.comspring.mail.password=bbb# 服务器地址spring.mail.host=smtp.qq.comspring.mail.properties.mail.smtp.ssl.en...

阿豪boy
40分钟前
0
0
如何使用GNU Ring?

文章名:如何使用GNU Ring? 作者:冰焰火灵X 1079092922@qq.com 文章许可:CC BY-SA 4.0 ##1. 安装 下载GNU Ring 点击左边选择你的系统版本(这里以 GNU/Linux 为例,我使用的是Mint 18.3)...

ICE冰焰火灵X
43分钟前
4
0
深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
49分钟前
1
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
59分钟前
1
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
今天
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部