初探Loki,我决定把ELK替掉!
哈喽哈喽大家好,初探Loki之后,我决定把ELK下掉!
Loki开源日志解决方案已经开源有一段时间了,对标EFK/ELK,由于其轻量的设计,备受欢迎
Loki相比EFK/ELK,它不对原始日志进行索引,只对日志的标签进行索引,而日志通过压缩进行存储,通常是文件系统存储,所以其操作成本更低,数量级效率更高
由于Loki的存储都是基于文件系统的,所以它的日志搜索时基于内容即日志行中的文本,所以它的查询支持LogQL,在搜索窗口中通过过滤标签的方式进行搜索和查询
Loki分两部分,Loki是日志引擎部分,Promtail是收集日志端,然后通过Grafana进行展示
Loki的官方文档很全
从官方文档看,Loki支持源码安装、Docker、Helm、Local、Tanka
我选择local,就是编译好的二进制可执行文件
curl -O -L
"https://github.com/grafana/loki/releases/download/v2.2.1/loki-linux-amd64.zip"
通过unzip解压得到可执行文件
下载配置文件
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
Loki的配置文件是loki-local-config.yaml,支持YAML语法
loki提供http和grpc两种接口,在配置文件中可以看到对应端口,分别是3100和9096,启动后,就可以通过http接口看到数据
配置完成后,就可以启动loki了,二进制可执行文件,通过--config.file指定配置文件启动即可
Promtail安装也很简单
下载可执行文件
curl -O -L https://github.com/grafana/loki/releases/download/v2.2.1/promtail-linux-amd64.zip
通过unzip解压得到可执行文件即可
同样下载配置文件
wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
之后,就可以直接可执行文件指定配置文件启动了
promtail也是YAML语法,配置很简单
前面三部分很简单,server部分定义监听端口,positions定义读取的文件偏移量存储位置,clients定义loki接口地址,最后一部分scrape_configs是重点部分
promtail通过scrape_configs部分配置收集日志的相关信息,以测试配置文件为例:
job_name 用来区分日志组
static_configs 收集日志的静态配置
targets 收集日志的节点,这个参数其实是在自动发现的时候使用的
labels 定义一个要收集的日志文件和一组可选的附加标签
job 标签名称,在grafana索引的时候用到的标签名称
__path__ 定义日志收集的文件或路径,支持正则
配置文件修改完成后,就可以启动promtail了,和loki启动方法一样,通过--config.file指定配置文件启动
好了,promtail和Loki都配置好了,需要展示,6.0以上版本的grafana就支持loki的展示了,我这边直接用docker启动grafana
日志界面很清爽,保留了日志原有的样子,通过颜色区分日志级别,这里info是绿色,error是红色,可以很直观的看到日志的类别,也可以通过点击日志级别,只展示该级别的日志
总结:
相对于EFK/ELK,专为日志而生的Loki,结合Grafana生态,对于中小企业,或者说只是作为日志系统而言,我更倾向于选择Loki代替EFK/ELK
对于EFK/ELK和Loki,你更倾向于哪个?
运维技术交流群
「运维研习社」建立了运维技术交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起进群交流学习。
扫描添加好友邀您进运维交流群
●连历史消息都不会弄,还做什么新媒体!
●没事就别发朋友圈了,除非有钱!
●3年后你还甘心当新媒体小编吗?
●你单位中秋节发啥了?