【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径

ops/2025/1/31 19:45:51/

在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:极星会首批签约作者

文章目录

    • 摘要
    • 引言
    • 日志采集与管理的核心挑战
    • 分布式日志采集工具选型
    • Fluentd 的分布式日志采集实践
      • 环境准备
      • 配置示例
      • 启动 Fluentd
    • Logstash 的分布式日志处理实践
      • 安装与配置
      • 启动 Logstash
    • 可视化与管理
    • QA 环节
    • 总结
    • 参考资料

摘要

分布式系统中,多个节点同时生成的海量日志需要集中管理与分析,以提高问题定位和系统运维的效率。本文将介绍分布式日志采集与管理的核心概念,深入探讨 Fluentd 和 Logstash 等工具的具体应用实践,并通过示例代码展示如何构建高效的日志平台。

引言

随着分布式系统和微服务架构的普及,日志的管理和分析变得尤为复杂。每个服务、每个节点都会产生大量日志,如何实现日志的实时采集、集中管理与快速查询,成为了现代运维的核心挑战。本文重点介绍如何利用 Fluentd 和 Logstash 两款主流工具解决这一问题,帮助开发者和运维工程师高效搭建日志管理平台。

日志采集与管理的核心挑战

  • 数据分散性分布式系统中各节点生成的日志分布广泛。
  • 日志格式多样性:不同服务可能采用多种日志格式。
  • 高效性需求:需要快速处理和分析海量日志数据。
  • 稳定性:日志采集与管理系统自身需具备高可用性。

分布式日志采集工具选型

  • Fluentd:一个开源的日志采集工具,支持丰富的插件生态。
  • Logstash:Elastic Stack 的核心组件之一,支持复杂的日志处理管道。
  • 两者对比
    • Fluentd 更轻量,适用于资源受限的场景。
    • Logstash 功能更强大,适合与 Elasticsearch 集成的大规模部署。

Fluentd 的分布式日志采集实践

环境准备

  1. 安装 Fluentd:

    curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
    
  2. 配置 Fluentd 插件:

    td-agent-gem install fluent-plugin-elasticsearch
    

配置示例

创建 Fluentd 配置文件 fluentd.conf

<source>@type tailpath /var/log/app/*.logpos_file /var/log/td-agent/app.log.postag app.logsformat json
</source><match app.logs>@type elasticsearchhost 127.0.0.1port 9200logstash_format true
</match>

启动 Fluentd

运行 Fluentd:

td-agent -c fluentd.conf

Logstash 的分布式日志处理实践

安装与配置

  1. 安装 Logstash:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-linux-x86_64.tar.gz
    tar -xzf logstash-8.0.0-linux-x86_64.tar.gz
    cd logstash-8.0.0
    
  2. 创建 Logstash 配置文件 logstash.conf

    input {file {path => "/var/log/app/*.log"start_position => "beginning"}
    }filter {grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }}
    }output {elasticsearch {hosts => ["http://localhost:9200"]}
    }
    

启动 Logstash

运行 Logstash:

bin/logstash -f logstash.conf

可视化与管理

通过 Kibana 配置和可视化仪表板,监控日志数据的流入流出情况。

QA 环节

Q1: Fluentd 和 Logstash 之间如何选择?
A1: Fluentd 适合轻量场景,Logstash 适合高吞吐和复杂处理需求。

Q2: 如何提高日志采集系统的性能?
A2: 优化插件配置、使用多线程和分布式集群部署。

总结

本文详细介绍了分布式日志采集与管理的核心挑战与工具实践,通过 Fluentd 和 Logstash 的配置与代码示例,展示了如何搭建高效的日志平台。无论是轻量级需求还是复杂场景,这些工具都能有效提升日志管理能力。

未来展望

  • 引入 AI 和机器学习进行日志异常检测。
  • 实现更加实时的日志流分析。
  • 支持多云和混合云环境下的统一日志管理。

参考资料

  1. Fluentd 官方文档
  2. Logstash 官方指南
  3. Kibana 使用教程

http://www.ppmy.cn/ops/154562.html

相关文章

【Bug 记录】el-sub-menu 第一次进入默认不高亮

项目场景&#xff1a; 项目场景&#xff1a;el-sub-menu 第一次进入默认不高亮 问题描述 例如&#xff1a;sub-menu 的 index 后端默认传过来是 number&#xff0c;我们需要手动转为 string&#xff0c;否则会有警告&#xff0c;而且第一次进入 sub-menu 默认不高亮。 解决方…

保姆级讲解 python之zip()方法实现矩阵行列转置

目录 引入1.手动交换行列元素2.引入外部库进入正题使用列表推导式和zip()基本用法解压缩实现行列转置 实战演练 引入 给你一个二维数组&#xff08;矩阵&#xff09;&#xff0c;你怎么实现行列转置? 在Python中&#xff0c;实现矩阵行列转置有多种方法。 1.手动交换行列元素 …

【测试】开发模型和测试模型

一、初步认识测试 概念 测试是指使用人工或自动手段来运行或测定某个软件系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。它是对软件规格说明、软件设计和编码的最后复审&#xff0c;是软件质量保证的关键步骤。 软件测试就…

【pytorch 】miniconda python3.11 环境安装pytorch

ubuntu24.04 miniconda python3.11 环境安装pytorch 组件:langgraph本身不需要有一些模型是需要的:python3.11环境:报错ModuleNotFoundError: No module named ‘torchaudio’ ModuleNotFoundError: No module named ‘torchaudio’File "/root/miniconda3/envs/05_ep_…

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现&#xff1b; 三&#xff0e;三、编写应用程序&#xff1b; 此文主要是实现应用的主要编码工作。 1、 分层&#xff1b; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示&#xff1b;Helper主要是链接UI和数据库操作的中间层&#xff1b;DAL为对数据库的操…

SpringBoot源码解析(八):Bean工厂接口体系

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…

从零开始学习安时积分法(STM32实现程序)

在STM32微控制器上实现安时积分法&#xff08;Coulomb Counting&#xff09;来估算电池的SOC&#xff08;State of Charge&#xff09;&#xff0c;需要完成以下几个步骤&#xff1a; 硬件配置&#xff1a; 使用STM32的ADC模块测量电池的电流。使用定时器模块进行时间积分。配置…

笔记本搭配显示器

笔记本&#xff1a;2022款拯救者Y9000P&#xff0c;显卡RTX3060&#xff0c;分辨率2560*1600&#xff0c;刷新率&#xff1a;165Hz&#xff0c;无DP1.4口 显示器&#xff1a;2024款R27Q&#xff0c;27存&#xff0c;分辨率2560*1600&#xff0c;刷新率&#xff1a;165Hz &…