当前位置: 首页 > news >正文

【Kubernetes】日志平台EFK+Logstash+Kafka【理论】

一,日志处理方案

方案一,【EFK】:Elasticsearch + Fluentd(或Filebeat) + Kibana

Elasticsearch(简称:ES):实时,分布式存储,可扩展,日志分析工具。

Fluentd/Filebeat:日志数据收集。Filebeat更轻量级。

Kibana:数据可视化(UI界面)

方案二,【ELK】:Elasticsearch + Logstash + Kibana

Logstash:日志收集,聚合,处理。损耗性能,但可处理多种格式的日志。

流程:app应用程序 –> Logstash –> ElasticSearch–> Kibana –> 浏览器

考虑到聚合端(日志处理、清洗等)负载问题和采集端传输效率,一般在日志量比较大的时候在采集端和聚合端增加队列,以用来实现日志消峰。

方案三,【ELK】 + Filebeat

流程:**Filebeat (采集) —> Logstash(聚合、处理) —> ElasticSearch (存储) —>Kibana (展示) **

方案四,Filebeat + ElasticSearch +Kibana

**Filebeat (采集、处理) —> ElasticSearch(存储) —>Kibana (展示) **

方案五,加入缓存机制(推荐)

**Filebeat (采集) —> Kafka/Redis(消峰) —> Logstash (聚合、处理) —> ElasticSearch (存储) —>Kibana (展示) **

日志处理有延迟,产生阻塞,添加 Kafka/Redis 缓存。


二,重点组件介绍

(1)Filebeat组件

1,Filebeat家族

Filebeat是Beats中的一员。
Beats包含六种工具:
1、Packetbeat:网络数据(收集网络流量数据)
2、Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)
3、Filebeat:日志文件(收集文件数据)
4、Winlogbeat:windows事件日志(收集Windows事件日志数据)
5、Auditbeat:审计数据(收集审计日志)
6、Heartbeat:运行时间监控(收集系统运行时的数据)

2,Filebeat传输方案

2-1 output.elasticsearch

output.elasticsearch:
  hosts: ["192.168.40.180:9200"]

2-2 output.logstash

output.logstash:
  hosts: ["192.168.40.180:5044"]

2-3 output.kafka

output.kafka:  # 引入kafka缓存
  enabled: true
  hosts: ["192.168.40.180:9092"]
  topic: elfk8stest

(2)Logstash组件

1,介绍

Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。它可以对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。

Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:
1、利用 Grok 从非结构化数据中派生出结构
2、从 IP 地址破译出地理坐标
3、将 PII 数据匿名化,完全排除敏感字段
4、整体处理不受数据源、格式或架构的影响

Logstash 事件处理的三个阶段:输入 > 过滤器 > 输出

2,组件
  • 输入(Input):采集各种样式、大小和来源的数据(必要元素)
  • 过滤器(filter):实时解析和转换数据(可选元素)
  • 输出(output):选择你的存储,导出你的数据(必要元素)

常用的Input模块:Logstash ,file,syslog,redis,beats
常用的Filter模块:grok(非结构转结构数据),mutate,drop,clone,geoip(添加IP地址地理信息)
常用的Output模块:elasticsearch,file,graphite,statsd

3,常用code插件

json:以JSON格式对数据进行编码或解码。
multiline:将多行文本事件(如java异常和堆栈跟踪消息)合并为单个事件。

input {
      kafka {
        bootstrap_servers => "192.168.40.180:9092"
        auto_offset_reset => "latest"
        consumer_threads => 5
        decorate_events => true
        topics => ["elktest"]
      }
}
          
output { 
    elasticsearch { 
        hosts => ["192.168.40.180:9200"]
        index => "elkk8stest-%{+YYYY.MM.dd}"
        }
}   

(3)Fluentd组件

1,介绍

Fluentd是一个针对日志的收集、处理、转发系统。通过丰富的插件系统,可以收集来自于各种系统或应用的日志,转化为用户指定的格式后,转发到用户所指定的日志存储系统之中。

(4)Logagent组件

Logagent 是 Sematext 提供的传输工具,它用来将日志传输到 Logsene(一个基于 SaaS 平台的 Elasticsearch API),因为 Logsene 会暴露 Elasticsearch API,所以 Logagent 可以很容易将数据推送到 Elasticsearch 。


三,各日志采集工具对比

名称优点缺点
Filebeat无依赖,占用资源少,5.x 版本具备过滤能力应用范围有限
Logstash灵活,插件多资源消耗(默认的堆大小是1GB),不支持缓存
Fluentd插件多数据结构化强,不灵活
Logagent轻量又快速,有本地缓冲,可掩盖敏感数据信息没有 Logstash 灵活
Logtail阿里云开发使用,占用机器cpu、内存资源最少类型解析弱
Rsyslog传输快,最轻的解析器配置难,相关资料少,会有bug

重点:Filebeat、Fluentd、Logstash

【相关阅读】

【kubernetes】集群日志管理 - ELK

相关文章:

  • 【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)
  • MySQL进阶:深入理解数据约束与优化查询
  • 从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之三:在目标服务器上恢复数据
  • BFS 解决最短路问题详解
  • 探索基因奥秘:汇智生物如何利用DNA亲和纯化测序技术革新生物医学研究?
  • 使用rust实现rtsp码流截图
  • Python
  • c语言中的杨氏矩阵的介绍以及元素查找的方法
  • Zookeeper
  • MP4 格式:前世今生与技术解析
  • Avalonia开发
  • 微信小程序如何使用自定义的字体
  • CS50
  • 【C++ 11多线程加速计算实操教程】
  • 灰度图像重心(质心)求取算法
  • Facebook公共主页bug问题解决措施清单
  • 掌握MATLAB仪器控制工具箱:自动化测试与数据采集的利器
  • Redis篇(数据类型)
  • Excel求和为什么是0?结果不对的来跟着步骤排查
  • AFSim仿真系统 --- 系统简解_01(任务模块)
  • 优秀“博主”在上海杨浦购房最高补贴200万元,有何条件?
  • 近4小时会谈、3项联合声明、20多份双边合作文本,中俄元首今年首次面对面会晤成果颇丰
  • 股价两天涨超30%,中航成飞:不存在应披露而未披露的重大事项
  • 上海推动AI+文旅深度融合,MaaS平台和产业基地落地徐汇
  • 上海乐高乐园明天正式开售年卡,下月开启试运营
  • 老人刷老年卡乘车被要求站着?公交公司致歉:涉事司机停职