p11 日志,元数据,进程的查看

直接运行docker run -d centos这个时候回启动容器,但是因为容器里面没有前台进程所以这个时候docker会把没用的进程给停止掉,可以看到docker ps命令没有查看到任何的正在运行的容器
在这里插入图片描述

但是如果说你使用 -it命令进入到了容器里面,这个他就不会把这个centos容器停止掉+
这里还是引用一下老师的笔记
在这里插入图片描述

docker 查看日志

首先还是在后台使用 -it命令启动一个centos容器然后使用ctrl +p +q 退出当前容器,注意这里启动的这个容器不会被停止
在这里插入图片描述

要学习查看日志这个知识点,那么接下来要用到shell 来让我们的容器有日志打印出来 这个时候我们执行docker run -d centos /bin/sh -c "while true;do echo myLog********;sleep 1;done" 这个会每一秒中都打印一下子myLog*****这个日志
在这里插入图片描述

接下来就是执行docker logs -tf --tail 10 8d57ffda7a29 这个是显示指定行数的日志 目前就是10行

在这里插入图片描述
这里还是直接参考老师的笔记
在这里插入图片描述

查看docker容器内部的进程信息

这里执行docker top 8d57ffda7a29 这样子就可以查看docker容器内部的进程信息了 这个将来如果要kill进程的话就根据这个id来杀死
在这里插入图片描述

查看镜像的元数据(很重要!!)

这里需要执行docker inspect 8d57ffda7a29可以看到当前容器的一些基本的信息包括容器id,容器运行状态,给容器的参数等等
在这里插入图片描述

<think>好的,我现在需要解释Fluentd收集日志的原理。用户之前问过K8S常用的日志收集技术栈,现在想深入了解Fluentd的工作原理。首先,我应该回顾一下之前提到的EFK栈中的Fluentd角色,确保信息的一致性。 Fluentd是一个日志收集器,核心功能是采集、处理、转发日志。我需要分解它的工作原理,可能需要从整体架构入手,比如输入、过滤、缓冲、输出这些步骤。用户可能想知道每个组件如何工作,比如插件系统、缓冲机制、可靠性保证等。 需要确保解释清楚Fluentd如何处理不同来源的日志,比如文件、系统日志、应用程序输出等。还要提到它的配置文件结构,比如source、match、filter这些部分。另外,缓冲和重试机制是关键,尤其是在高负载或网络问题时的处理方式。 用户可能关心Fluentd和其他工具(比如Fluent Bit、Logstash)的区别,是否需要简要比较?不过问题只问原理,可能不需要展开。但需要强调Fluentd的可靠性和灵活性,比如插件生态和数据处理能力。 需要注意技术术语的正确性,比如时间戳处理、标签路由、数据格式转换等。同时,应该提到它的优势,比如扩展性、社区支持,以及可能的缺点,比如资源消耗相对较高,或者配置复杂度。 可能还需要举例说明一个典型的日志处理流程,从输入到输出的整个过程,帮助用户形成直观理解。比如,从读取Apache日志,经过正则解析,添加元数据,缓冲后输出到Elasticsearch。 最后,确保结构清晰,分点解释,使用用户容易理解的语言,避免过于专业的术语,或在必要时进行解释。检查是否符合之前系统级指令的格式要求,比如数学表达式是否正确使用$符号,段落结构是否合适。</think>以下是 Fluentd 日志收集的核心原理分步解析: ### 一、架构设计原则 Fluentd 采用 **统一日志层(Unified Logging Layer)** 设计,通过$$ \text{Input} \rightarrow \text{Parser} \rightarrow \text{Filter} \rightarrow \rightarrow \text{Buffer} \rightarrow \text{Output} $$的管道模型处理数据流,核心特点包括: 1. **基于事件驱动**:使用 C + Ruby 混合架构,核心引擎用 C 实现高效I/O 2. **插件化架构**:提供 1500+ 官方/社区插件(输入、解析、过滤、输出) 3. **可靠传输**:通过内存/文件双缓冲实现 At-Least-Once 投递语义 ### 二、数据处理流程 #### 阶段1:输入采集(Input) - **多源接入**: - 文件监控:通过`in_tail`插件跟踪文件变化(类似`tail -F`) - 系统日志:`in_syslog`支持 RFC3164/RFC5424 协议 - HTTP端点:`in_http`接收 JSON/MessagePack 格式数据 - 示例配置: ```xml <source> @type tail path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx-access.pos tag nginx.access format /^(?<remote>[^ ]*) - (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)$/ </source> ``` #### 阶段2:解析处理(Parser + Filter) - **格式转换**: - 正则表达式解析:如解析 Apache 日志为结构化 JSON - 时间处理:通过`time_format`标准化时间戳(支持 Unix 时间/Nginx 格式等) - 示例正则: $$ \text{/(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/} $$ - **字段操作**: - 增删字段:`filter_record_transformer`添加 hostname 等元数据 - 条件过滤:通过`<filter>`块按标签匹配处理规则 #### 阶段3:缓冲队列(Buffer) - **双级缓存机制**: - 内存缓冲:默认使用内存队列,容量由`buffer_chunk_limit`控制(通常 256KB) - 文件备份:当内存达到`buffer_queue_limit`时写入磁盘(防止 OOM) - 配置示例: ```xml <buffer> @type file path /var/log/fluentd/buffer/ flush_mode interval flush_interval 5s retry_max_times 3 </buffer> ``` #### 阶段4:输出路由(Output) - **多目标分发**: - 批量写入:按`flush_interval`(默认 60 秒)批量发送到 Elasticsearch、S3 等 - 负载均衡:支持`roundrobin`、`random`等分发策略 - 失败重试:指数退避算法(参数`retry_wait`控制重试间隔) ### 三、关键技术特性 1. **标签路由系统**: - 使用`tag`字段进行数据路由,如`nginx.**`匹配所有 Nginx 相关日志 - 动态标签重组:通过`rewrite_tag_filter`实现实时路由变更 2. **时间切片存储**: - 自动生成索引名:例如 Elasticsearch 索引按`logstash-%Y.%m.%d`格式创建 - 计算公式:$$ \text{index\_name} = \text{prefix} + \text{strftime}(@time) $$ 3. **流量控制**: - 背压机制:当输出目标不可用时自动降低采集速率 - 限流配置:通过`<secondary>`配置降级写入本地文件 ### 四、性能优化要点 - **资源调优**: - Worker 进程数:通过`-p`参数指定(建议与 CPU 核数对齐) - 内存限制:设置`RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9`控制 Ruby GC - **IO 优化**: - 使用 MessagePack 二进制格式传输(相比 JSON 体积减少 30%) - 开启`flush_thread_count`多线程输出 ### 五、与同类工具对比 | 特性 | Fluentd | Logstash | Fluent Bit | |--------------------|---------------|----------------|----------------| | **内存占用** | ~40MB | ~500MB | <5MB | | **插件生态** | 1500+ | 200+ | 70+ | | **数据处理能力** | 强(Ruby DSL)| 强(JRuby) | 基础过滤 | | **适用场景** | 中心化聚合节点 | 复杂 ETL | 边缘节点 | **典型问题解决方案**:当日志突发流量导致 Fluentd 堆积时,可通过`buffer_chunk_limit 8MB` + `flush_thread_count 4`提升吞吐量,同时设置`retry_max_interval 30`防止雪崩效应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值