《Storm实时数据处理》一2.2 创建日志代理

本节书摘来华章计算机《Storm实时数据处理》一书中的第2章 ,第2.2节,(澳)Quinton Anderson 著 卢誉声 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 创建日志代理

现代企业架构由大量的解决方案组成,而每个方案都包含许多节点。有些MapReduce集群可以包含几百个节点。在操作系统和应用层上,每个节点又包含一组应用和服务。这些服务和应用又会产生大量不同类型的日志数据。如今人们已经越来越认识到日志数据在企业团体中的重要性,原因如下:

  • 对于IT运营团队维护系统运行来说,它是一种关键的信息来源。
  • 它对于在生产和系统测试阶段中发现问题和解决问题至关重要。
  • 它越来越成为一种商业价值来源,有价值的业务数据都包含在这种半结构化数据中,包括:
  • 风险和合规性数据
  • 业务运营数据
  • 网站分析数据
  • 安全信息
  • 财务预测数据

为了利用这些具有价值的日志数据,我们必须先从这些节点中获取数据,然后再把数据安全简单地传送到中央日志服务器中进行存储、索引和分析。本节将通过名为logstash的开源日志代理阐述实现这一过程的方法。
可以找到很多好的商业和开源的日志解决方案。本章只涉及logstash的一部分。欲了解更多logstash技巧,可以访问http://cookbook.logstash.net/http://logstash.net/docs/1.1.13/tutorials/getting-started-centralized。另外还有一个与logstash类似的商业版本叫做Splunk(http://www.splunk.com/)。

2.2.1 实战

Step01 首先,将本地节点上的日志导入Topology。按照下面的链接下载和配置logstash:
《Storm实时数据处理》一2.2 创建日志代理

Step02 然后,使用文本编辑器创建一个名为shipper.conf的文件,文件内容如下:
《Storm实时数据处理》一2.2 创建日志代理
《Storm实时数据处理》一2.2 创建日志代理

Step03 启动Redis本地实例后,执行以下命令启动日志代理:
java –jar logstash-1.1.7-monolithic.jar agent–f shipper.conf

2.2.2 解析

logstash使用可扩展插件列表实现了一个非常简单的“输入-过滤器-输出”(input-filter-output)模型,并基于该模型的三种元素不断进行扩展。配置文件(shipper.conf)至少配置了一组输入值和输出值。
文件输入插件根据指定路径中的文件名或通配符来跟踪(tail)文件的修改。你可以配置很多不同类型的文件输入。日志类型在后期处理和分类时尤为重要。由于我们没有在配置文件中配置任何过滤器,因此原始日志将直接被传输到输出插件。基于Redis的输出插件将日志输出到本地Redis实例中,然后存储到名为rawLogs的列表里。
你可以轻松地在设备节点中安装和配置logstash,包括密匙交换,这样你就可以通过任意传输机制安全地传输日志了。