评测Loki日志工具
本文仅对Loki进行简单评测,不涉及原理和细节。
部署Loki
Loki是grafana团队开发一个日志采集工具。推荐使用helm方式安装loki,官方推荐的tanka需要使用aws的s3服务。安装helm后直接运行如下命令即可在loki
命名空间中部署最简单的loki套件。
# helm repo add loki https://grafana.github.io/loki/charts
# helm upgrade --install loki loki/loki-stack
使用如下命令可以查看loki
支持的charts
# helm search repo loki
NAME CHART VERSION APP VERSION DESCRIPTION
loki/loki 0.30.1 v1.5.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.38.1 v1.5.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.1.4 v1.5.0 Uses fluent-bit Loki go plugin for gathering lo...
loki/promtail 0.23.2 v1.5.0 Responsible for gathering logs and sending them...
如果使用openshift平台,则需要进行scc授权
# oc adm policy add-scc-to-user privileged -z loki
# oc adm policy add-scc-to-user privileged -z loki-promtail
如果promtail
pod因为权限问题无法读取hostpath
挂载的目录,直接给promtail daemonset
使用的serviceaccount loki-promtail
授权privileged
权限即可。
如果grafana是集群外部的,需要配置ingress,以访问Loki。openshift直接创建router即可。
配置grafana
参考官方配置文档。
部署好Loki之后,在grafana中配置Loki的datasource
在exporter中就可以通过Loki自动生成的标签查看日志信息。
目前grafana仅有Logs
dashboard支持Loki,如果要使用图表的话只能通过explore,相对不那么方便,且exolore的图表无法保存。另外grafana的Logs
dashboard可以支持简单的检索过滤,实现方式参考该文。
总结:
优势:
Loki日志系统相比传统的ELK要轻便很多,其使用了类似Prometheus的方式进行日志的匹配过滤等,日志采集查看的思路很新颖。
劣势:
受制于该工具比较新,很多地方还待完善。如dashboard对Loki的支持力度远远不够,基于Loki日志的告警目前也很不方便。
相信在后续的版本解决和完善这些不便之处后,Loki会成为一个非常好用的工具。此外,在官方的explore介绍中可以看到,grafana还对Tracing进行了集成,由此看到,grafana最终的目标可能是实现log,metric和tracing的大统一。
- 在ASP.NET 5应用程序中的跨域请求功能详解什么是“同域”添加CORS包在应用程序中配置CORSCORS策略选项跨域请求中的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求
- 有趣的算法(八) ——红黑树插入算法
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面何时使用Donut CachingDonut Caching 的Nuget 包Donut Ho
- 有趣的算法(九) ——蛇形数组
- 有趣的算法(十一) ——分治法:快速求最值
- ASP.NET AJAX(3)__UpdatePanel
- 正则表达式学习笔记
- PHP10个实用函数
- ASP.NET AJAX(2)__ASP.NET 2.0 AJAX Extensions
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- 在Scala项目中使用Spring Cloud
- Scala的面向对象与函数编程
- ASP.NET AJAX(1)__Microsoft AJAX LibraryASP.NET AJAX(1)__Microsoft AJAX Library
- 大数据流处理平台的技术选型参考
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C# 使用OpenCV在一张图片里寻找人脸
- 【DB笔试面试858】在Oracle中,ipcs和ipcrm命令的作用有哪些?
- Qt音视频开发13-mpv录像存储
- Oracle参数解析(spfile)
- ROS2机器人笔记20-08-18
- C sharp实例:华盾武器门数据接收和解析
- JsonPath实践(三)
- 有序链表转换二叉搜索树
- 128. 最长连续序列
- 【DB笔试面试859】在Oracle中,内核参数kernel.shmall、kernel.shmall等分别代表什么含义?
- Nginx配置SSL证书
- java_Object类、日期时间类、System类、包装类
- [周末往期回顾]UNDO_TABLESPACE参数
- WordPress固定链接后404解决方法
- [Oracle故障处理]记一次INST_DRTLD_MISMATCH导致的version count过多的问题