0. 技术选型参考

1. Collector

Keywords: Collector, Processor

名称 Beats Fluentd-bit
Introduction Beats are a collector and processor of lightweight (resource efficient, no dependencies, small) and open source log shippers that act as agents installed on the different servers in your infrastructure for collecting logs or metrics. Fluent Bit was born to address the need for a high performance and optimized tool that can collect and process data from any input source, unify that data and deliver it to multiple destinations.
Owner Elastic Treasure Data
Open Source True True
Github Stars 5742 608
License Apache License v2.0 Apache License v2.0
Scope Containers / Servers / K8S Containers / Servers / K8S
Language Go C
Memory ~10MB ~500KB
Performance High High
Dependencies Zero dependencies, unless some special plugin requires them. Zero dependencies, unless some special plugin requires them.
Category Auditbeat,Filebeat,Heartbeat,Metricbeat,Packetbeat,Winlogbeat NaN
Configuration File(.yml)/Cmd File(custom file extension and syntax)/Cmd
Essence Collector & Processor Collector & Processor
Input/Module File, Docker, Syslog, Nginx, Mysql, Postgresql, etc File,CPU, Disk, Docker, Syslog, etc
Output Elasticsearch, Logstash, Kafka, Redis, File, Console ES, File, Kafka, etc

1.1 Filebeat 架构图

  1. Ingest Node - A es plugin which pre-process documents before the actual document indexing happen and replace for Logstash. The ingest node intercepts bulk and index requests, it applies transformations, and it then passes the documents back to the index or bulk APIs. Define a pipeline(Processors) that specifies a series of processors, then register the pipeline id in Filebeat configuration file.
  2. Kafka - Prevent loss of data and manage logging output speed.

1.2 Fluent bit 架构图

Name Description Samples
Input Entry point of data. Implemented through Input Plugins, this interface allows to gather or receive data. Samples
Parser Parsers allow to convert unstructured data gathered from the Input interface into a structured one. Parsers are optional and depends on Input plugins. Prospector and processors in Filebeat
Filter The filtering mechanism allows to alter the data ingested by the Input plugins. Filters are implemented as plugins. Prospector and processors in Filebeat
Buffer By default, the data ingested by the Input plugins, resides in memory until is routed and delivered to an Output interface.
Routing Data ingested by an Input interface is tagged, that means that a Tag is assigned and this one is used to determinate where the data should be routed based on a match rule.
Output An output defines a destination for the data. Destinations are handled by output plugins. Note that thanks to the Routing interface, the data can be delivered to multiple destinations. Samples

2. Log Transporter

Keywords: Collector, Processor, Aggregator

名称 Logstah Fluentd
Introduction Logstash is an open source, server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your stash. Fluentd is an open source data collector, which lets you unify the data.
Owner Elastic Treasure Data
Open Source True True
Github Stars 9105 6489
License Apache License v2.0 Apache License v2.0
Scope Containers / Servers / K8S Containers / Servers / K8S
Language JRuby(JVM) Ruby & C
Memory 200MB+ ~40MB
Performance Middle High
Dependencies JVM Ruby Gem
Configuration File(custom file extension and syntax)/Cmd File(custom file extension and syntax)/Cmd
Essence Collector, Processor, Aggregator CCollector, Processor, Aggregator
Input/Module Limited only by your imagination(Serilog) Limited only by your imagination(Nlog)
Output Limited only by your imagination Limited only by your imagination

Further Reading: Fluentd vs. Logstash: A Comparison of Log Collectors

3. 初步总结

比较 Beats + Logstash Fluentd bit + Fluentd 说明
功能实现 基本一致
安装与配置简易性
内存占用 JVM 特性使然
可靠性 前者使用 registry file + redis 实现可靠性,后者使用内置 buffering 实现可靠性
可扩展性 插件生态和可扩展性基本一致。后者为分布型插件管理
趋势 ELK -> EFK
其他 前者更倾向于使用 go & java 技术栈,后者有 docker, k8s 官方 log driver 类型和案例支持

Tips: 任一层级都可以自由替换.

4. Visualizer

Keywords: Query, Analyze, Monitor

名称 Kibana Grafana
Introduction Kibana is an open source data visualization plugin for Elasticsearch. Data visualization & Monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases.The leading open source software for time series analytics.
Owner Elastic Grafana
Open Source True True
Github Stars 9k+ 22k+
License Apache License v2.0 Apache License v2.0
Scope ElasticSearch only ElasticSearch, InfluxDB, PostgreSQL etc
Language Javascript Go & Typescript
Configuration File(.yml)/Cmd File(custom file extension and syntax)/Cmd
Simple Query Lucene syntax and filter components filter components.Different from each other data source
Full-Text Query Yes No
Security Plugins or libraries Integration
Notification Plugins or libraries Integration
Advantages Log, ES Multiple data source, APM, Timeseries

Working together.

5. Log Storage and Analyzer

Keywords:Storage, ES, Postgresql, Zombodb, Arangodb

5.1 ElasticSearch

  1. 同时支持单文档的对象搜索+模糊搜索+全文搜索
  2. Skywalking 官方支持存储媒介
  3. 作为流行 Output 支持绝大部分 Log 相关系统
  4. 天生分布式
  5. 一键设置过期窗口,索引重建
  6. ……

  1. 占用资源较多,对存储介质要求高
  2. 运维成本更高
  3. 持久化
  4. 安全性 - Search Guard
  5. ……

6. 总结

  1. Sinks(Log sinks, Beats, Fluentd-bit) -> Storages(ElasticSearch, Postgresql,Zombodb etc).
  2. Collctors(Beats, Fluentd-bit) -> Kafka -> Fluentd -> Storages(ElasticSearch, Postgresql,Zombodb etc).

7. 扩展


Log system architecture的更多相关文章

  1. Heterogeneous System Architecture

    https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture Steps performed when offloading calc ...

  2. WikiMedia system architecture

    w 前端  服务端 后端

  3. Crazyflie 2.0 System Architecture

    Crazyflie 2.0架构包含两个微控制器: A NRF51, Cortex-M0, 用于实现无线通信和电源管理: (1)按键开关逻辑(ON/OFF logic) (2)控制给其它系统供电(STM ...

  4. Linux System Log Collection、Log Integration、Log Analysis System Building Learning

    目录 . 为什么要构建日志系统 . 通用日志系统的总体架构 . 日志系统的元数据来源:data source . 日志系统的子安全域日志收集系统:client Agent . 日志系统的中心日志整合系 ...

  5. 学习:Log中'main', 'system', 'radio', 'events'

    在Android中不同的log写到不同的设备中,共有/dev/log/system, /dev/log/main, /dev/log/radion, /dev/log/events四中类型.其中默认L ...

  6. 分布式学习材料Distributed System Prerequisite List

    接下的内容按几个大类来列:1. 文件系统a. GFS – The Google File Systemb. HDFS1) The Hadoop Distributed File System2) Th ...

  7. 100 open source Big Data architecture papers for data professionals

    zhuan :https://www.linkedin.com/pulse/100-open-source-big-data-architecture-papers-anil-madan Big Da ...

  8. Sharing The Application Tier File System in Oracle E-Business Suite Release 12.2

    The most current version of this document can be obtained in My Oracle Support Knowledge Document 13 ...

  9. Game Engine Architecture 9

    [Game Engine Architecture 9] 1.Formatted Output with OutputDebugString() int VDebugPrintF(const char ...

随机推荐

  1. 正则表达式re.sub替换不完整的问题现象及其根本原因

    title: 正则表达式re.sub替换不完整的问题现象及其根本原因 toc: true comment: true date: 2018-08-27 21:48:22 tags: ["Py ...

  2. python print格式化输出。

    python print格式化输出. 1. 打印字符串 print ("His name is %s"%("Aviad")) 效果: 2.打印整数 print ...

  3. 配置yum源

    本文转载:https://www.cnblogs.com/yangp/p/8506264.html (一)yum源概述 yum需要一个yum库,也就是yum源.默认情况下,CentOS就有一个yum源 ...

  4. python 字符串和字节数互转

    在 python  中字符 是 str 类型, 字节是 bytes 类型 b = b'hello' # bytes 字节 s= 'hello' # str 字符串 可通过 type() 检查是什么类型 ...

  5. <thinkphp51>如何安装cpmposer和tp51

    进入网站之后点击 进入入门指南后点击 进入安装阶段: 1.直接next 2.选择自己的PHP文件路径 3.然后下一步下一步即可. 第二部分: 下载thinkphp51 点击安装包列表 搜索:think ...

  6. T-SQL中的APPLY用法

    原文出处:http://www.sqlservercentral.com/articles/Stairway+Series/121318/ 从SQL Server 2005开始,微软添加了一个新的运算 ...

  7. IDEA使用SpringBoot 、maven创建微服务的简单过程

    使用IDEA新建一个简单的微服务 1. 打开IDEA,File -> New  -> project 打开如下图1-1所示的对话框 图 1-1 2.点击"Next"按钮 ...

  8. AOP方法增强自身内部方法调用无效 SpringCache 例子

    开启注解@EnableCaChing,配置CacheManager,结合注解@Cacheable,@CacheEvit,@CachePut对数据进行缓存操作 缺点:内部调用,非Public方法上使用注 ...

  9. CSS 盒子投影

    box-shadow 属性可以设置盒子的投影效果.它的原理同文本投影一样.字体风格一节有介绍. 它有4个值,同时使用,也可以有选择地使用: 第一个值 设置阴影左右延伸长度,负值向左,正值向右 第二个值 ...

  10. 微探eventlet.monkey_patch

    e ventlet.monkey_patch在运行时动态修改已有的代码,而不需要修改原始代码 在eventlet.monkey_patch中支持以下几种python原生库修改 eventlet.mon ...