Loki 初体验
Loki 是什么
Loki 是 Grafana Lab开发的一套日志系统,使用Go语言实现。根据官方的介绍, Loki,高可用性,多租户的日志聚合系统,受到Prometheus的启发。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。如果用一句话介绍的话,就是 Like Prometheus, but for logs
Loki 能做什么
- 日志采集。loki-stack中提供promtail,专为loki定制的日志采集组件
- 日志压缩存储
- 使用和prometheus相同的标签。根据日志元数据和标签对日志进行分组和索引。
- 使用Grafana展示Loki中的日志,也可以使用API和CLI来查询日志。
Loki 和 ELK 对比
- 轻量。 loki 使用go实现,并且除存储(也是可选的)外不依赖其他的中间件
- 存储成本低。 由于loki只对元数据和标签进行索引,对日志文本进行压缩存储,存储成本是远低于ES
- 检索能力低于ES。 loki 不会对文本日志进行分词和倒排索引,所以只能使用标签去匹配查询日志块,然后可以对搜索的日志块在内存进行grep
- 日志分析能力。loki 可以提供兼容promethues的范围向量查询,如对查询的日志进行计数,kibana 则可以对任意文本进行查询分析。
Loki 架构


Loki 三个核心的组件
- Distributor 是日志接收器,负责接收promtail的日志并转发到Ingester,在Distributor还会对日志进行校验,并且使用一致性Hash来保证chuck在Ingester上面的一致性。
- Ingester接受日志流并构建数据块,其操作通常是压缩和追加日志。每个Ingester 的生命周期有
PENDING,JOINING,ACTIVE,LEAVING和UNHEALTHY五种状态。处于JOINING和ACTIVE状态的Ingester可以接受写请求,处于ACTIVE和LEAVING状态时可以接受读请求。Ingester 将收到的日志流在内存中打包成 chunks ,并定期同步到存储后端。由于存储的数据类型不同,Loki 的数据块和索引可以使用不同的存储。 - Querier 用来查询日志,可以直接从 Ingester 和后端存储中查询数据。当客户端给定时间区间和标签选择器之后,Querier 就会查找索引来确定所有匹配 chunk ,然后对选中的日志进行 grep并返回查询结果。查询时,Querier先访问所有Ingester用于获取其内存数据,只有当内存中没有符合条件的数据时,才会向存储后端发起同样的查询请求。对于每个查询,单个 Querier 会 grep 所有相关的日志。目前 Cortex 中已经实现了并行查询,该功能可以扩展到 Loki,通过分布式的 grep 加速查询。此外,由于副本因子的存在,Querier可能会接收到重复的数据,所以其内置了去重的功能,对拥有同样时间戳、标签组和消息内容的日志进行去重处理。
Loki的索引存储可以是cassandra/bigtable/dynamodb,而chuncks可以是各种对象存储,Querier和Distributor都是无状态的组件。对于Ingester他虽然是有状态的但是,当新的节点加入或者减少,整节点间的chunk会重新分配,已适应新的散列环。
在生产环境中,Distributor、Ingester、Querier需要部署为不同的进程,同时Loki也提供了单进程模式来让用户可以快速尝试。
Loki 是否适合我们的场景
- 个人认为Loki是一个Pod日志索引而不是日志分析系统,更多的场景应该是面向kubernetes的运维团队,而不是业务团队。
- Loki 和 我们当前提供容器日志场景比较相似,但我们今天没有提供把日志分块压缩到OSS等廉价存储的能力,对于日志备份来说是我们缺失的。同时我们也没有提供分布式查询和grep日志流的能力。
- 当前Loki架构中没有MQ等日志缓冲组件(loki使用的是hash环和多副本来保证日志一致性),对于大规模生产使用还需要进行更多的测试。
Loki 功能截图
Loki 日志检索

Loki 日志Grep

参考:
https://blog.csdn.net/linkthaha/article/details/100575651
https://github.com/grafana/loki
https://grafana.com/docs/loki/latest/
写在最后
我的个人公众号”竹韵悠扬“开通也有一段时间了,因为自己的”懒惰“一直没有写过文章,今年开始决定把我在技术道路中的一些感悟和好玩的技术分享给大家,如果你对上面的文字感兴趣,那就订阅一下吧 ~

Loki 初体验的更多相关文章
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- 百度EChart3初体验
由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
随机推荐
- 网络 华为 ensp 命令
VLAN 端口有三种模式:access,hybrid,trunk. Access类型端口:只能属于1个VLAN,且该端口不打tag,一般用于连接计算机端口: Trunk类型端口:可以允许多个VLAN通 ...
- Appium之测试微信小程序
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.往期回顾 二.测试微信小程序 1.准备工作 2.操作步骤 3.注意 4.强制设置安卓的进程 ...
- MySQL慢查询日志(SLOW LOG)
慢查询日志可以帮助DBA或开发人员定位可能存在问题的SQL语句,从而进行优化. 如何开启 默认情况下,MySQL是不开启慢查询日志的.可以通过以下命令查看是否开启: mysql> SHOW VA ...
- Redis数据库简介
最近的项目需要用到Redis数据库和MySQL,恶补学习. Redis的使用手册可以看: https://redis.io/ https://www.runoob.com/redis/redis-tu ...
- 团队作业4-Day4
团队作业4-Day4 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:完成了排位模式与练习模式的界面实现,整合代 ...
- web前端页面常见优化方法
(1)减少http请求,尽量减少向服务器的请求数量 (2)避免重定向 (3)利用缓存:使用外联式引用CSS.JS,在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏 ...
- git clone GitLab 工程报错Repository not found
有时使用git拉取gitlab上的项目时会出现如下的错误信息:Repository not found remote: Repository not found.fatal: repository ' ...
- Android之Activity启动流程详解(基于api28)
前言 Activity作为Android四大组件之一,他的启动绝对没有那么简单.这里涉及到了系统服务进程,启动过程细节很多,这里我只展示主体流程.activity的启动流程随着版本的更替,代码细节一直 ...
- Unity 3D里相机的平滑跟随(转)
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 public class ...
- layui的基本使用
打开官网https://www.layui.com/下载这个框架 官网首页 下载到 layui 的最新版,它经过了自动化构建,更适合用于生产环境.目录结构如下 ├─css //css目录 │ │─mo ...