网站首页 > 博客文章 正文
Loki 是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流配置一组标签。项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs,类似于 Prometheus 的日志系统。
一、Loki 是什么
Loki官方是这么介绍自己的: Loki 是一个 可水平扩展, 高可用, 多租户 的日志聚合收集系统, 并且追求高性能和易于部署.
对比一下它和别的日志收集系统:
- 由于它不创建全文索引, 而且只存储压缩后的非结构化日志和元信息索引, 所以很轻量级易于部署
- 索引和分组与 Prometheus 使用相同的 label
- 非常适合收集 k8s pod 日志信息, 类似 pod labels 这些元信息都是自动收集并添加索引的
- 直接可以对接 Grafana 作为日志查询界面
相对于 ELK 需要的资源更少, 并且更易于部署.
loki 组件也基本分为三个:
- promtail 日志收集 agent, 收集日志并发送给 loki
- loki 核心服务, 存储日志和索引, 并提供查询服务
- Grafana 日志查询界面
可以看到, 组件和 ELK 基本一样, 并且符合 k8s 的日志收集架构.
二、Loki 快速安装使用
根据Loki的组件架构, 可以看出 promtail 需要运行在所有运行应用容器的节点, 所以会是 DaemonSet, loki 作为核心服务, 带有持久化存储而且支持横向扩展, 所以应该是StatefulSet, Grafana 是比较基本的独立应用, 可以复用已部署的.
从官方的文档中看,提供了5中安装方法
- 使用Tanka进行安装(推荐)
- 通过helm安装
- 通过Docker或Docker Compose安装
- 在本地安装并运行
- 从源码编译安装
官方推荐用Tanka来安装,是官方提供的一个安装工具,不过相信大部分人都不知道这个工具。所以,对于kubernetes来说,最简单的方式还是使用 helm, loki 官方已经提供了生产可用的 chart.
添加Loki的源到Helm,并更新源
helm repo add loki https://grafana.github.io/loki/charts
helm repo update
# 默认配置
helm upgrade --install loki loki/loki-stack
# 自定义namespace
helm upgrade --install loki --namespace=loki loki/loki
部署Loki 套件包括 (Loki, Promtail, Grafana, Prometheus)
helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false
获取grafana的登陆密码
kubectl get secret --namespace <YOUR-NAMESPACE> loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
映射grafana的登陆端口到3000
kubectl port-forward --namespace <YOUR-NAMESPACE> service/loki-grafana 3000:80
用浏览器打开 http://localhost:3000 并用上面得到的密码登陆,用户名为 admin。
在grafana中增加Loki Data Source, 对应URL: http://loki:3100/ for Loki.
点击 Explore 并且选择 label 就可以查看日志了
三、部署nginx测试日志收集
笔者用springboot简单写了个程序,一秒钟打印一条日志处理
apiVersion: apps/v1
kind: Deployment
metadata:
name: loki-springboot-test
labels:
app: log-test
spec:
replicas: 1
selector:
matchLabels:
app: log-test
template:
metadata:
labels:
app: log-test
spec:
containers:
- name: log-test
image: log-test:0.0.1
ports:
- containerPort: 80
部署好看能正常收集到日志
四、总结
提起日志收集,相信大家首先想到的是EFK(Elasticsearch、Fluentd、Kibana),能搜索到也是EFK的解决方案,但是Elasticsearch 中的数据以非结构化 JSON 对象的形式存储在磁盘上。每个对象的键和每个键的内容都有索引。然后可以使用 JSON 对象来定义查询(称为 Query DSL)或通过 Lucene 查询语言来查询数据。功能强大,但是部署维护比较难,学习成本也比较高,并且系统资源占用非常高,没有3台服务器很难搭建起来,但是其实对应日志我们只需要能正确并快速的收集到,并存储起来,需要查询的时候能简单的查询到需要的日志。
相比之下,Loki受 Prometheus 启发的可以水平扩展、高可用以及支持多租户的日志聚合系统,主要体现在以下几点:
- 使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引
- 从 Promtail 接收到的日志和应用的 metrics 指标就具有相同的标签集
- 不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引。
因此,当笔者看到Loki的日志方案后,毫不犹豫的在公司内部进行了试用,非常轻量,非常丝滑,这才是我们需要的云原生日志解决方案。
推荐给大家。
猜你喜欢
- 2024-10-24 持久层框架JPA与Mybatis该如何选型
- 2024-10-24 hibatis--mybatis,自动生成SQL, 通用Mapper, 通用Dao
- 2024-10-24 Elasticsearch 6.0.0官方参考指南翻译
- 2024-10-24 推荐一个高效美观易用的服务器运维工具
- 2024-10-24 Java 操作之RestHighLevelClient查询详解
- 2024-10-24 如何在 Elasticsearch 上应用机器学习排序插件
- 2024-10-24 「开源资讯」Apache Solr 8.6.0 发布,Java 全文搜索服务器
- 2024-10-24 ElasticSearch学习系列 - (3) Python操作es
- 2024-10-24 全功能orm工具sorms 1.0.10 发布,合使用Spring,Spring boot用户
- 2024-10-24 ES6.0.0官方参考指南翻译~入门指南~探索数据
你 发表评论:
欢迎- 05-30springboot 集成redisson 以及分布式锁的使用
- 05-30去哪儿技术面:10亿数据如何最快速插入MySQL?
- 05-30redis介绍
- 05-30redission YYDS
- 05-30手把手教你springboot集成mybatis
- 05-30mybatis根据表逆向自动化生成代码:自动生成实体类、mapper文件
- 05-30越来越大的微信小程序
- 05-30SpringBoot之数据访问——访问SQL数据库!
- 403℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 401℃用AI Agent治理微服务的复杂性问题|QCon
- 386℃初次使用IntelliJ IDEA新建Maven项目
- 382℃IT全明星|IntelliJ IDEA学习笔记(四、idea中怎么创建maven项目)
- 378℃Maven技术方案最全手册(mavena)
- 377℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 374℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 371℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)