简介:
Loki: like Prometheus, but for logs.
与其他日志记录系统不同,Loki的构想是仅对日志建立索引标签,而使原始日志消息保持未索引状态。这意味着Loki的运营成本更低,并且效率更高。
Loki是主服务器,负责日志的存储和处理查询,支持多种方式部署,二进制文件、docker、Helm等,此次部署使用tar包方式进行部署。
Promtail是代理,收集各服务节点上的日志文件,发送给Loki server,同样支持多种方式部署。
下面非常简单的说明一下,无需必须修改的,只提一下,只是为了让新手快速上手和使用。
一、安装Loki Serve端
上传介质包到指定目录,/data/loki 解压tar包 tar -xvf loki-server-agent.tar 该loki包中,包含loki提供的全部组件, 如loki(server端)、Promtail(日志采集)、logcli
配置文件:
/data/loki/cmd/loki/loki-local-config.yaml
配置文件实际上可以不用修改。默认端口是3100
启动Loki nohup ./loki -config.file=./cmd/loki/loki-local-config.yaml &
注意:如果修改的话,注意yaml格式,冒号后面必须有空格。
二、配置Promtail
在各客户端节点,配置并启动Promtail。上传promtail.tar.gz到data盘,然后解压 tar -zxvf promtail.tar.gz
# promtailserver:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yaml# loki serverclients:- url: http://localhost:3100/loki/api/v1/pushscrape_configs:- job_name: app_namestatic_configs:## targets- targets:- localhostlabels:# labeljobhostIPname# __path__job: nginx__path__: /data/log/*host: ip- targets:- localhostlabels:job: tomcat__path__: /data/tomcat/*host: ip
启动
Promtail nohup ./promtail -config.file=promtail-local-config.yaml
三、配置grafana
添加Loki数据源到Grafana的页面中

添加成功后,则可以在Loki数据页面查看到所配置的日志信息,会在一级菜单显示Label汇总所自定义的配置信息。

四、日志查询
loki支持对日志文件的简单查询,使用官方提供的Log Query Language
日志文件查询(不是日志中的line)有四种格式
= :严格等于
!= :不等于
=~ :正则匹配
~ :正则不匹配
同时也支持管道符,对每个日志的line进行查询
|= :日志文件包含该字符串
!= :日志中的行不包含该字符串
|~ :日志中的行包含该正则表达式
!~ :日志中的行不包含该正则表达式
举例:
{filename="log日志路径",host="ip"}|="error"
对于多个微服务的,如果取得ip,则看到的是所有对于服务的日志的组合,按时间倒序展示。
参考:
https://zhuanlan.zhihu.com/p/153415749?from_voters_page=true
简单介绍loki的架构,比较清晰。
https://grafana.com/docs/loki/latest/configuration/
官方文档,非常详细。深入研究者看过来。





