11 深入kubernetes-----日志和监控-----11-1 常见日志采集问题和解决方案分析
k8s中的日志处理
传统服务
- 固定机器、固定目录
- 不受重启影响
- 不关注stdout、stderr
k8s中的服务
- 节点不固定
- 重启服务会漂移
- 需关注stdout、stderr
k8s的日志
- stdout 标准输出
- stderr 错误输出
# 默认,以json模式保存目录。也可以修改指定日志目录
/var/lib/docker/containers/<cname>/<cname>-json.log
- 日志文件
对于应用直接写日志文件,重启丢失
常见方案-----远程日志
pod----(ES,kafka) # 用的比较多的。应用做改造
常见方案-----sidecar
每个pod中跑一个 sidecar,会跟主容器共享volume,可以访问到所有的日志文件。把日志文件转发后端存储。单独的进程,消耗内存,cpu。社区不推荐这种方式
常见方案-----LogAgent
每个节点上部署一个agent, 相当于sidecar从pod中拿到节点上。通过agent采集所有pod日志发送后端存储。一般一daemonset方式部署。需要容器把日志挂载到宿主机上。
资源消耗小,对pod没有侵入,对应用没有侵入。
约定所有项目挂载一个特定的主机目录,主机名也尽量统一。挂载目录事先定义好的,日志来源不好判断来源于哪个pod。
我们实践的方案。
一个节点部署一个agent。agent采用阿里开源的 LogPilot。
常见的agent:filebeat、logstash、fluentd等,都是静态的。静态日志容器出现瓶颈。
logpilot 能采集docker错误输出,也能采集文件日志。
- 智能的容器日志采集工具
- 自动发现机制
- 2917年初在github开源。
在静态采集上面又包了一层,事先静态之上的动态采集。自动发现。
目前 Log-Pilot 支持两种采集插件:一个是CNCF社区的Fluentd插件,一个是Elastic的Filebeat插件;其同时其支持对接多种存储后端,目前 Fluentd 和 Filebeat 都支持 Elasticsearch、Kafka、File、Console 作为日志存储后端,而 Fluentd 还支持 Graylog、阿里云日志服务 以及 Mongodb 作为存储后端。
图:
end...
本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/14685329.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App