前言
当系统变大时,它被划分为多个独立的进程,如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组或参阅本文开头提供的文档链接。
道恩。