zoukankan      html  css  js  c++  java
  • Logstash之二:原理

    一、Logstash 介绍

    Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

     

    二、工作流程

    Logstash 工作的三个阶段:

    input 数据输入端,可以接收来自任何地方的源数据。

    • file:从文件中读取

    • syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。

    • redis:从redis-server list 中获取

    • beat:接收来自Filebeat的事件

    Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。

    • grok: 通过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。

    • mutate: 在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。

    • drop: 完全丢弃事件,如debug事件。

    • clone: 复制事件,可能添加或者删除字段。

    • geoip: 添加有关IP地址地理位置信息。

    output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:

    • elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

    • file: 将事件数据写入到磁盘文件上。

    • mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

    • redis:将数据发送至redis-server,常用于中间层暂时缓存。

    • graphite: 发送事件数据到graphite。http://graphite.wikidot.com/

    • statsd: 发送事件数据到 statsd。

    三、 Logstash部署架构

    Logstash的理念很简单,它只做3件事情:

    1. Collect:数据输入
    2. Enrich:数据加工,如过滤,改写等
    3. Transport:数据输出

    别看它只做3件事,但通过组合输入和输出,可以变幻出多种架构实现多种需求。这里只抛出用以解决日志汇总需求的部署架构图:

    解释术语:

    • Shipper:日志收集者。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存。
    • Indexer:日志存储者。负责从Redis接收日志,写入到本地文件。
    • Broker:日志Hub,用来连接多个Shipper和多个Indexer。

    无论是Shipper还是Indexer,Logstash始终只做前面提到的3件事:

    • Shipper从日志文件读取最新的行文本,经过处理(这里我们会改写部分元数据),输出到Redis,
    • Indexer从Redis读取文本,经过处理(这里我们会format文本),输出到文件。

    一个Logstash进程可以有多个输入源,所以一个Logstash进程可以同时读取一台服务器上的多个日志文件。Redis是Logstash官方推荐的Broker角色“人选”,支持订阅发布和队列两种数据传输模式,推荐使用。输入输出支持过滤,改写。Logstash支持多种输出源,可以配置多个输出实现数据的多份复制,也可以输出到Email,File,Tcp,或者作为其它程序的输入,又或者安装插件实现和其他系统的对接,比如搜索引擎Elasticsearch。

    总结:Logstash概念简单,通过组合可以满足多种需求。

  • 相关阅读:
    构建之法阅读笔记05
    四元数(Quaternion)
    httpclient
    两种unity双击事件
    WWW网络请求
    Unity混合天空盒
    unity message
    unity射线检测
    unity 初始化数据存储问题
    Awake,start,update,OnEnable,OnDisable
  • 原文地址:https://www.cnblogs.com/duanxz/p/6527410.html
Copyright © 2011-2022 走看看