首页 > 编程知识 正文

java 日志收集系统,java分布式架构

时间:2023-05-06 15:10:55 阅读:40847 作者:2106

前言

当系统变大时,它被划分为多个独立的进程,如web wcf/web api,成为分布式系统。

要看到请求是如何从头到尾进行的,有点困难。 如果进行调试或跟踪,会更加麻烦。 困难因过程而异,越多越复杂。

分布式日志收集系统问世。

今天介绍一个

开源日志收集展示系统logstash (基于Java ) kibana (基于JRuby,随logstash提供) ElasticSearch RabbitMQ

体系结构图如下

这张照片是复印的

里面是Redis,没关系。 换成RabbitMQ也一样

这个Broker Redis/RabbitMQ可以去掉,但是去掉的话,在高峰期会折断ElasticSearch。 出现在这里的目的是消除高峰

Shipper Logstash图有三个。 意思是可以有多个,也可以分布在不同的服务器上,可以是windows,也可以是linux系统

看完以上三点,我实际上对这种体系结构的可扩展性感到放心。 平心而论,确实是flex。 具体为http://logstash.net/docs/1.4.2/

安装方法

缩写,百度有很多。 注意点是一个。 Kibana已经随附在logstash的最新版中。 不需要单独下载Kibana代码。 直接运行logstash web即可

正文

本文采用的logstash input类型为文件输入,通过检测文本文件进行日志收集。 (logstash支持许多输入,文本文件只是其中之一。 具体请参阅上面的文档url。 ) ) ) ) ) ) ) )。

假设当前日志文件log.txt包含一行日志记录。 以下是一个示例:

[ 192.168.1.1 ] [ 2014-10-222336059336000 ] [ error ] [ page1. page _ load ]空执行,bal.bal .

此时,logstash shipper根据其配置文件找到此log.txt,并检测到出现了新行。 内容如上,如下所示。

正规一致

192.168.1.1==服务器IP

2014-10-222336059336000==事件时间

ERROR==LogLevel

Page1.Page_Load==Method

Null Exception,bal . bal .==消息主体

哈哈,当然,上述匹配规则必须放在配置文件中

发送到后续节点

在本篇中,发送到RabbitMQ节点

哈哈,当然也需要配置文件

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

那么RabbitMQ的消息给谁呢? 这是日志统计索引器。 虽然logstash indexer实际上很简单,但它从MQ接收消息并将其发送到后端ES反向排序引擎

然后成为了最后一个kiba na网络查询控制台。 开发人员最终通过此Kibana查询接口查询了logstash收集的日志。 下面介绍一下Kibana

Kibana数据源:

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

自定义Kibana查询接口:

可以灵活地转换要显示的列

可以用鼠标包围时间范围。 按时间段显示日志列表

可以自动更新日志列表

可以自定义正在监视的日志版本。 例如,生产系统、UAT系统、开发DEMO )

可以显示统计图表,如期间内字段的饼图

可灵活排序

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

可以定义是否显示列

用上图看看情况吧

整个收集系统的构建除了需要关注一组名为logstash的组件的构建外,还需要关注日志文件存储的格式,即单行记录(包括大括号)以什么格式存储。 这是因为该格式对应于logstash参数的分析,logstash参数的名称被映射到kibana的查询接口。

程序方面值得注意的是,用统一的日志记录函数进行记录,保证了文本文件内容的格式,形成了整个闭环。

有关具体部署方式,请加入logstash的qq组或参阅本文开头提供的文档链接。

道恩。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。