你居然还去服务器上捞日志,搭个日志收集系统难道不香么!

1 ELK日志系统

经典的ELK架构或现被称为Elastic Stack。Elastic Stack架构为Elasticsearch + Logstash + Kibana + Beats的组合:

  • Beats负责日志的采集
  • Logstash负责做日志的聚合和处理
  • ES作为日志的存储和搜索系统
  • Kibana作为可视化前端展示

整体架构图:

2 EFK日志系统

容器化场景中,尤其k8s环境,用户经常使用EFK架构。F代表Fluent Bit,一个开源多平台的日志处理器和转发器。Fluent Bit可以:

  • 让用户从不同来源收集数据/日志
  • 统一并发到多个目的地
  • 完全兼容Docker和k8s环境

3 PLG日志系统

3.1 Prometheus+k8s日志系统

PLG

Grafana Labs提供的另一个日志解决方案PLG逐渐流行。PLG架构即Promtail + Loki + Grafana的组合:

Grafana,开源的可视化和分析软件,允许用户查询、可视化、警告和探索监控指标。Grafana主要提供时间序列数据的仪表板解决方案,支持超过数十种数据源。

Grafana Loki是一组可以组成一个功能齐全的日志堆栈组件,与其它日志系统不同,Loki只建立日志标签的索引而不索引原始日志消息,而是为日志数据设置一组标签,即Loki运营成本更低,效率还提高几个数量级。

Loki设计理念

Prometheus启发,可实现可水平扩展、高可用的多租户日志系统。Loki整体架构由不同组件协同完成日志收集、索引、存储等。

各组件如下,Loki's Architecture深入了解。Loki就是like Prometheus, but for logs。

Promtail是一个日志收集的代理,会将本地日志内容发到一个Loki实例,它通常部署到需要监视应用程序的每台机器/容器上。Promtail主要是用来发现目标、将标签附加到日志流以及将日志推送到Loki。截止到目前,Promtail可以跟踪两个来源的日志:本地日志文件和systemd日志(仅支持AMD64架构)。

4 PLG V.S ELK

4.1 ES V.S Loki

ELK/EFK架构确实强,经多年实际环境验证。存储在ES中的日志通常以非结构化JSON对象形式存储在磁盘,且ES为每个对象都建索引,以便全文搜索,然后用户可特定查询语言搜索这些日志数据。

而Loki数据存储解耦:

  • 既可在磁盘存储
  • 也可用如Amazon S3云存储系统

Loki日志带有一组标签名和值,只有标签对被索引,这种权衡使它比完整索引操作成本更低,但针对基于内容的查询,需通过LogQL再单独查询。

4.2 Fluentd V.S Promtail

相比Fluentd,Promtail专为Loki定制,它可为运行在同一节点的k8s Pods做服务发现,从指定文件夹读取日志。Loki类似Prometheus的标签方式。因此,当与Prometheus部署在同一环境,因为相同的服务发现机制,来自Promtail的日志通常具有与应用程序指标相同的标签,统一标签管理。

4.3 Grafana V.S Kibana

Kibana提供许多可视化工具来进行数据分析,高级功能如异常检测等机器学习功能。Grafana针对Prometheus和Loki等时间序列数据打造,可在同一仪表板上查看日志指标。

参考

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
叶总没有会5 小时前
3.2 构建AI智能体项目扩展知识
java·数据库·人工智能·spring·ai
Lakers-245 小时前
1987年6月10日晚上23-24点出生性格、运势和命运
java
唐青枫5 小时前
Java Jetty 实战详解:从嵌入式 HTTP 服务到 Spring Boot 容器替换
java
腻害兔13 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社14 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖15 小时前
JDK 26 新特性详解
java·开发语言
马优晨16 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
维天说18 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane199419 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了20 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel