轻量级日志系统Loki原理简介和使用(1)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 轻量级日志系统Loki原理简介和使用(1)

前言


这篇文章应朋友的要求,让写一篇loki日志系统,咱定义不容辞 一定要好好写 开干!


现实中的需求


公司的容器云运行的应用或某一个节点出现了问题,解决的思路


image.png


问题首先被prometheus监控


1、metric是来说明当前或者历史达到了某个值


2、alert设置metric达到某个特定的基数触发了告警


仅仅这些日志是不能够解决问题的 还需要看下应用的日志


k8s的基本单位是pod


pod把日志输出到stdout和stderr


当某个pod的内存变得很大


触发了我们的alert


这个时候管理员


去页面查询确认是哪个pod有问题


然后要确认pod内存变大的原因


我们还需要去查询pod的日志


如果没有日志系统



那么我们就需要到页面或者使用命令进行查询了



image.png


如果这个时候应用挂掉了 那么就没有办法再查询到相关日志了


解决该需求可供选择的方案


ELK


优势:


1、功能丰富,允许复杂的操作


劣势:


1、主流的ELK(全文检索)或者EFK比较重


2、ES复杂的搜索功能很多都用不上 规模复杂,资源占用高,操作苦难


大多数查询只关注一定时间范围和一些简单的参数(如host、service等)


3、Kibana和Grafana之间切换,影响用户体验


4、倒排索引的切分和共享的成本较高


Loki


1、最小化度量和日志的切换成本


有助于减少异常事件的响应时间和提高用户的体验


2、在查询语言的易操作性和复杂性之间可以达到一个权衡


3、更具成本效益



loki组件介绍


Promtail


  • 用来将容器日志发送到 Loki 或者 Grafana 服务上的日志收集工具


  • 该工具主要包括发现采集目标以及给日志流添加上 Label 标签 然后发送给 Loki


  • Promtail 的服务发现是基于 Prometheus 的服务发现机制实现的


Loki


  • 受 Prometheus 启发的可以水平扩展、高可用以及支持多租户的日志聚合系统


  • 使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引


  • 从 Promtail 接收到的日志和应用的 metrics 指标就具有相同的标签集


  • 不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引


Grafana


  • 一个用于监控和可视化观测的开源平台


  • 支持非常丰富的数据源


  • 在 Loki 技术栈中它专门用来展示来自 Prometheus 和 Loki 等数据源的时间序列数据


  • 可进行查询、可视化、报警等操作


  • 可以用于创建、探索和共享数据 Dashboard


  • 鼓励数据驱动


Loki架构


image.png


1、

Loki使用了和prometheus一样的标签来作为索引

通过标签既可以查询日志的内容也可以查询到监控的数据

不但减少了两种查询之间的切换成本

也极大地降低了日志索引的存储


2、

Loki将使用与prometheus相同的服务发现和标签重新标记库编写了pormtail

在k8s中promtail以daemonset方式运行在每个节点中

通过kubernetes api等到日志的正确元数据

并将它们发送到Loki


日志的存储架构


image.png


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
SQL 存储 关系型数据库
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
老架构师尼恩在其读者交流群中分享了关于 MySQL 中 redo log、undo log 和 binlog 的面试题及其答案。这些问题涵盖了事务的 ACID 特性、日志的一致性问题、SQL 语句的执行流程等。尼恩详细解释了这些日志的作用、所在架构层级、日志形式、缓存机制以及写文件方式等内容。他还提供了多个面试题的详细解答,帮助读者系统化地掌握这些知识点,提升面试表现。此外,尼恩还推荐了《尼恩Java面试宝典PDF》和其他技术圣经系列PDF,帮助读者进一步巩固知识,实现“offer自由”。
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
|
19天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
20 2
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1643 14
|
1月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
48 1
|
1月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
46 3
|
1月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
35 4
|
2月前
|
存储 缓存 关系型数据库
redo log 原理解析
redo log 原理解析
40 0
redo log 原理解析
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
49 2
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
58 0
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
41 0
下一篇
无影云桌面