架构设计 - 常用日志收集方案选型对比与推荐

news2024/12/23 4:22:55

目录

  • 1. 常用组合
    • 1.1 ELK Stack -> Elastic Stack
    • 1.2 EFK Stack
    • 1.3 Graylog
    • 1.4 PLG 日志系统
    • 1.5 Splunk
    • 1.6 Filebeat + ELK
    • 1.7 AWS CloudWatch Logs
    • 1.8 阿里云日志服务
    • 1.9 腾讯云 CLS(日志服务)
  • 2. 推荐

日志收集是系统监控和调试中的关键环节。常见的日志收集方案有多个,每种方案各有优劣,选择时应根据实际业务需求进行评估。以下是几种常用的日志收集方案及其特点,这里只是进行概括阐述,具体的细节还需要自己深入了解。

1. 常用组合

1.1 ELK Stack -> Elastic Stack

之前常说的 ELK = Elasticsearch、Logstash、Kibana;而现在 ELK Stack 已经演变为更广泛的 Elastic Stack,包含的核心组件除了传统的 Elasticsearch、Logstash 和 Kibana 外,还包括一些扩展工具来增强日志收集、监控和数据可视化的功能。

比如现在常用的 Elasticsearch + Logstash + Kibana + Beats 的组合,其中,Beats 负责日志的采集, Logstash 负责做日志的聚合和处理,Elasticsearch 作为日志的存储和搜索系统,Kibana 作为可视化前端展示。
例如 1.6 Filebeat + ELK/EFK 就是 Elastic Stack 中的。

在这里插入图片描述

  • 优点

    • 功能强大,可以处理大量的日志。
    • 提供强大的可视化和分析功能,通过 Kibana 展现日志的趋势、查询和告警。
    • Elasticsearch 支持强大的搜索和数据存储。
  • 缺点

    • 资源消耗较大,维护成本高,尤其是在大规模数据情况下。
    • Logstash 配置复杂,且性能相较其他方案较慢。
    • 当日志量非常大时,Elasticsearch 的性能可能会成为瓶颈。
  • 适用场景:适合日志量大、需要实时分析和搜索日志的场景,特别是在 DevOps 监控、生产环境中。

1.2 EFK Stack

EFK = Elasticsearch、Fluentd、Kibana

Fluentd 是 Kubernetes 最常用的日志收集工具之一,可以从容器中直接收集日志,推送到 Elasticsearch。

在这里插入图片描述
在这里插入图片描述

  • 优点

    • Fluentd 相对于 Logstash 更轻量级,性能更好。
    • 支持丰富的插件,可以方便地与各种系统集成。
    • 同样提供 Elasticsearch 的强大搜索能力和 Kibana 的可视化能力。
  • 缺点

    • Fluentd 配置复杂度仍然较高,调试需要一定经验。
    • 对于超大规模的日志数据,Elasticsearch 仍然存在性能瓶颈。
    • 在高并发日志数据处理上,可能需要一些优化。
  • 适用场景:适合需要高性能日志收集和轻量级日志处理的场景。

1.3 Graylog

专注于安全性和审计的日志系统,支持对用户行为和交易记录的追踪。

在这里插入图片描述

  • 优点

    • 专注于日志管理,使用 Elasticsearch 作为存储引擎,支持集中化日志管理和处理。
    • 拥有内置的日志解析和报警功能,支持插件扩展。
    • 界面友好,易于配置和管理。
  • 缺点

    • 与 ELK 类似,Elasticsearch 的性能瓶颈仍然存在。
    • 插件丰富度不如 Fluentd。
  • 适用场景:适合中小型团队或项目,特别是需要轻量化日志管理的环境。

1.4 PLG 日志系统

PLG = Promtail+ Loki + Grafana

在这里插入图片描述

  • 优点

    • Loki 是一种针对日志的轻量化存储方案,直接与 Promtail 和 Grafana 集成,易于安装和管理。
    • Loki 仅存储日志的索引,而非全文,因此性能较好,存储需求较低。
    • 与 Kubernetes 集成友好。
  • 缺点

    • Loki 的日志查询不如 Elasticsearch 灵活,只支持基于标签的查询。
      主要原因是 Promtail 收集日志时与 Prometheus 一样,使用是标签(如 app=webserver)来区分数据,这些标签会被存储在 Loki 中。
    • 不适合需要复杂全文搜索的场景。
  • 适用场景:适合容器化环境(如 Kubernetes),注重日志存储和监控的统一管理。

1.5 Splunk

Splunk 是金融行业的标杆日志管理工具,提供高度定制的安全合规性解决方案。

  • 优点

    • 企业级解决方案,功能非常强大,支持复杂查询和实时分析。
    • 内置机器学习分析工具,支持异常检测和高级数据分析。
    • 用户界面非常友好,支持自定义仪表板和报告。
  • 缺点

    • 成本非常高,通常只适用于大型企业。
    • 部署和维护复杂,需要专业运维人员。
  • 适用场景:适合大企业,尤其是有高性能需求且愿意支付较高费用的场景。

1.6 Filebeat + ELK

其实是 Elastic Stack 中的常用类型。Elastic Stack,包含的核心组件除了传统的 Elasticsearch、Logstash 和 Kibana 外,还包括一些扩展工具来增强日志收集、监控和数据可视化的功能。

比如现在常用的 Elasticsearch + Logstash + Kibana + Beats 的组合,其中,Beats 负责日志的采集, Logstash 负责做日志的聚合和处理,Elasticsearch 作为日志的存储和搜索系统,Kibana 作为可视化前端展示。


Filebeat 就是 Beats 中的常见的组件,主要用于收集和传输日志文件;此外常见的 Beats 还有:

  • Metricbeat:用于收集系统和服务的性能指标(如 CPU、内存、网络等)。
  • Packetbeat:用于网络数据流量的监控,分析 TCP、HTTP、DNS 等协议的性能。
  • Auditbeat:用于收集系统审计数据,包括用户登录、文件更改等活动。
  • Heartbeat:用于监控服务的可用性,通过 Ping 方式检查服务是否运行。
  • 更多…

在这里插入图片描述

  • 优点

    • Filebeat 是轻量级的日志收集器,适合边缘设备和微服务架构。
    • 配合 ELK 或 EFK,能够实现强大的日志存储和可视化功能。
    • 资源占用极低,易于配置和扩展。
  • 缺点

    • Filebeat 仅负责日志的收集,后续分析和存储仍需借助其他工具。
  • 适用场景:适合微服务架构和需要低资源占用的场景,尤其是边缘计算。

1.7 AWS CloudWatch Logs

  • 优点
    • 作为 AWS 的原生解决方案,易于与 AWS 其他服务集成,支持无缝扩展。
    • 支持自动化日志告警和可视化。
    • 提供按使用量付费的灵活收费模式,且免维护。
  • 缺点
    • 仅适用于 AWS 环境,难以在其他云或本地环境中使用。
    • 对日志分析和搜索功能有限,不如专用解决方案强大。
  • 适用场景:适合基于 AWS 云环境的应用程序,特别是需要快速集成和部署的场景。

1.8 阿里云日志服务

简介:阿里云日志服务是一种云原生的日志收集和分析解决方案,能够轻松收集、存储和查询日志数据。

  • 优点

    • 完全托管,适合无需复杂运维的公司。
    • 集成阿里云其他服务(如安全产品、监控产品)。
    • 支持弹性扩展,适应大规模日志收集。
  • 缺点

    • 云平台依赖,数据安全和合规需要关注。
    • 需要付费使用。
  • 适用场景:适合已经在 阿里云 生态环境的公司。

1.9 腾讯云 CLS(日志服务)

腾讯云提供的日志服务也是一种全托管的日志解决方案,适合中国企业,支持自动化日志收集、分析和警报。

  • 优点

    • 集成腾讯云的监控和告警系统,适合已有腾讯云用户。
    • 提供完善的权限管理和审计功能。
  • 缺点

    • 云平台锁定,适合已经在 腾讯云 生态系统中的公司。
    • 需要付费使用。
  • 适用场景:适合已经在 腾讯云 生态环境的公司。


2. 推荐

【注】虽然是常用的固定搭配,但是在实际使用过程中可以根据自身需求进行自由的组合,为系统提供更好的日志服务。

  • 小型或轻量级项目

    • Filebeat + ELK 是较好的选择,具有更好的性能和可扩展性。
    • 如果是容器化环境,且日志设计符合标签化规范,选择 PLG 或许是一个比较好的选择;如果日志设计并不是很规范的话,使用 EFK 技术栈或许更好(支持全文检索)。
  • 大中型企业

    • ELK Stack 或 Graylog 能够处理大量日志,并提供强大的搜索和可视化功能;
    • 根据开源组件自研也是一个很好的方案,更加贴合自身的业务。
  • 云环境

    • 国内的话可以使用阿里云与腾讯云提供的托管服务。
    • 如果使用了 AWS,那么可以使用 AWS 提供的日志服务。
  • 容器化环境

    • PLG 是专为容器化设计的高效日志方案,特别适合 Kubernetes。
    • EFK (Elasticsearch + Fluentd + Kibana)也是常用的工具组合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2135799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心觉:以终为始,帮你精准实现目标

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作169/1000天 假设你的目标是 一年内赚到150万。我们可以通过“以终为始”和“以始为终”的结合来帮助你实现这个目标 以下是完整的…

VuePress搭建文档网站/个人博客(简单配置、易上手)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

sourcetree配置ssh连接gitee

使用PuttyGen.exe生成的公钥私钥格式和git文档方法生成的不一样, SSH 公钥设置 | Gitee 帮助中心 gitee方法生成的公钥类似: ssh-ed25519 AAAA***5B Gitee SSH Key PuttyGen.exe生成的: 公钥 ---- BEGIN SSH2 PUBLIC KEY ---- Comment:…

15个顶级ChatGPT学术提示词指令,让学术研究与撰写论文,轻松上手,效率翻倍

大家好,我将通过这篇文章详细介绍如何有效利用ChatGPT来增强学术写作的各个环节。从论文陈述的精炼到数据的深入分析,从研究主题的探索到论文各部分的撰写,为大家一步一步展示如何通过这些工具来提升研究工作的质量和效率。 1.完善论文陈述: 输入你的初步论文陈述,ChatG…

【YashanDB知识库】数据库获取时间和服务器时间不一致

本文转自YashanDB官网,具体内容可见数据库获取时间和服务器时间不一致 【问题分类】功能使用 【关键字】服务器时间、数据库时间 【问题描述】数据库获取的时间和服务器时间不一致。 【问题原因分析】YashanDB并没有时区的概念,数据库的时间以数据库启…

红黑树的删除

文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…

Redis实现发布/订阅功能(实战篇)

前言 博主在学习 Redis 实现发布订阅功能的时候,踩了太多的坑。 不是讲解不详细,看的一知半解;就是代码有问题,实际压根跑不起来! 于是博主萌生了自己写一个最新版且全程无错的博客供各位参考。希望各位不要把我才过…

C语言浮点型数据在内存中的存储(23)

文章目录 前言一、浮点数在内存中的存储练习引入浮点数的存储浮点数存的过程 二、浮点数取的过程E不全为0或不全为1E全为0E全为1 三、再回顾练习总结 前言 哎,之前写了一篇,可是中途退出没保存,只能再写一遍了~   浮点数在内存中的存储跟整…

智汇创想pytest接口自动化测试框架

本测试框架是基于pytest搭建的接口自动化框架,对象为深圳智汇创想官方网站。深圳智汇创想科技有限责任公司(深圳智汇创想科技有限责任公司),是一家专注于跨境电子商务的集团公司,全球电商平台多品类多品牌的零售商&…

什么是APT攻击,有哪些防御策略

在数字化时代,网络安全已成为国家、企业和个人不可忽视的重要议题。其中,高级持续性威胁(APT)攻击以其隐蔽性强、攻击规模大、持续时间长等特点,成为网络安全领域最为棘手的问题之一。面对APT攻击的严峻挑战&#xff0…

Unity 场景优化(1) game视口的Statistics 内容介绍

Unity的 Statistics (stats) Unity是多线程的。但是控制使用unity的api必须在主线程中,比如控制物体的transform信息。 Audio Level: DSP Load:数字信号处理(Digital Signal Processing)负载&…

空间视频化趋势理解

「视频空间化」这个趋势不是从现在开始,而是潜在发展了很多年了,而且我个人觉得「视频空间化」的背后其实对应的是「空间视频化」的趋势,所以未来我们还是要注重自己的技术栈中对视频相关处理技术的吸收以及整合,下面是我的几个理…

Jenkins生成html报告

下载插件 1.需要下载插件 html Publisher plugins 2.下载Groovy(设置css样式),默认没有css样式 在Job配置页面,增加构建步骤Execute system Groovy script,在Groovy Command中输入上面命令,即可: System.…

清理C盘缓存的垃圾,专业清理C盘缓存垃圾与优化运行内存的策略

专业清理C盘缓存垃圾与优化运行内存的策略 一、清理C盘缓存垃圾 在Windows操作系统中,C盘通常作为系统盘,其健康状况直接影响到系统的整体性能。定期清理C盘中的缓存和垃圾文件是维护系统性能的重要步骤。以下是一些专业建议: 1.使用磁盘清…

二叉树链式结构与简单实现

二叉树链式结构与简单实现 一、二叉树的链式结构二、二叉树的简单实现二叉树的遍历前序、中序以及后序遍历层序遍历 结点个数以及高度等二叉树的创建和销毁判断二叉树是否为完全二叉树 三、源码展示在 BinaryTree.h 中:在 BinaryTree.c 中: 以下代码环境…

建筑机器人通用操作系统设计方案

建筑机器人操作系统通用发行版概述 1. 基础版(Entry Level) 目标用户:小型建筑公司、DIY爱好者或初学者。特点:提供基础的机器人控制和任务管理功能,支持简单的自动化作业流程,如基础的混凝土搅拌、物料搬…

微信批量自动添加好友

现代社交领域中,微信已然成为人们生活中不可或缺的一部分。它不仅是朋友之间保持联系、分享生活点滴的重要沟通工具,更是商务人士拓展人脉、开展业务的得力助手。 在日常生活中,我们每天都会结识许多新朋友,这无疑为我们的社交圈…

两段有趣的代码(C语言函数指针)

目录 part1part2 两段有趣的代码 part1 (*(void (*)())0)();我们知道函数指针: void (*p)()去掉函数指针变量名就是函数指针的类型: void (*)()那这段代码我们就可以理解为将0强制转换为函数指针类型,再进行解引用;进行调用函数&#xff…

python容器四之字典

文章目录 1. 字典介绍2. 使用字典3. 字典的常见操作3.1 添加元素3.2 删除元素3.3 修改元素3.4 查找元素 4. 字典遍历方法4.1 遍历字典元素 5. 公共运算符6. 公共方法 1. 字典介绍 先来看看现实生活中的字典。我们知道,可以应用字典来查找汉字。 在这里插入图片描述…

Hash 专题

一、散列表 根据 key 计算 key 在表中的位置的数据结构;是 key 和其所在 存储地址的映射关系; 注意:散列表的节点中 kv 是存储在一起的; 结构: 二、选择hash的原因 1、需要很强的查找效率 2、强随机分布&#xff…