loki 日志管理的安装部署使用

loki介绍

Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。

  • 不对日志进行全文索引。Loki中存储的是压缩后的非结构化日志,并且只对元数据建立索引,因此Loki 具有操作简单、低成本的优势。
  • 使用与 Prometheus 相同的标签。Loki通过标签对日志进行索引和分组,这使得日志的扩展和操作效率更高。
  • 特别适合储存 Kubernetes Pod 日志。诸如 Pod 标签之类的元数据会被自动删除和编入索引。
  • Grafana 原生支持。

架构

Loki 日志系统由以下3个部分组成:

  • loki是主服务器,负责存储日志和处理查询。
  • promtail是专为loki定制的代理,负责收集日志并将其发送给 loki 。
  • Grafana用于 UI展示。
    在这里插入图片描述
    Loki 日志系统由以下3个部分组成:
  • loki是主服务器,负责存储日志和处理查询。
  • promtail是专为loki定制的代理,负责收集日志并将其发送给 loki 。
  • Grafana用于 UI展示。

https://www.yuque.com/yuqueyonghukvyedl/eh0xog/tgdz0i

部署loki

wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml

docker run -d -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:latest -config.file=/mnt/config/loki-config.yaml

wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

docker run -d -v $(pwd):/mnt/config  -v /var/log:/var/log grafana/promtail:latest -config.file=/mnt/config/promtail-config.yaml


docker pull grafana/grafana

docker run -d -p 3000:3000 --name=grafana  grafana/grafana

访问地址

http://10.6.8.227:3100/metrics

http://10.6.8.227:3000
默认账号和密码:     admin

LogQL 查询语句

Log Query Language(日志查询语言,简称LogQL) 受 PromQL 启发,可以看作是分布式的 grep 命令,用来从汇总的日志源筛选日志。LogQL 通过 labels(标签) 和 operators(运算符) 进行过滤。

LogQL 查询有两种类型:

  1. Log Queries(日志查询) # 根据查询语句返回日志条目,每行是一条日志。
    a. 基本的日志查询由两部分组成
    ⅰ. log stream selector # 日志流选择器
    ⅱ. filter expression # 过滤表达式
  2. Metric Queries(指标查询) # 用于扩展日志查询并根据 Log Queries 中的日志计数计算值。通过这种查询语句,可以计算将日志数据量化成指标信息,并且,Promtail 可以通过这种查询语句将指标信息,填充到自己暴露的 Metrics 端点中。

注意:由于 Loki 的设计,所有 LogQL 查询都必须包含一个日志流选择器
在这里插入图片描述

日志流选择器确定将搜索多少日志流(日志内容的唯一来源,例如文件)。然后,更细粒度的日志流选择器将搜索到的流的数量减少到可管理的数量。这意味着传递给日志流选择器的标签将影响查询执行的相对性能。然后使用过滤器表达式对来自匹配日志流的聚合日志进行分布式grep。

Log Queries(日志查询)
基本的日志查询由两部分组成:
● Log Stream Selector(日志流选择器)
● Log Pipeline(日志管道)

注意:由于 Loki 的设计原则,所有的 LogQL 查询必须包含 Log Stream Selector(日志流选择器)

日志流选择器决定了有多少日志流将被搜索到,一个更细粒度的日志流选择器将搜索到流的数量减少到一个可管理的数量。所以传递给日志流选择器的标签将影响查询执行的性能。
而日志流选择器后面的日志管道是可选的,日志管道是一组阶段表达式,它们被串联在一起应用于所过滤的日志流,每个表达式都可以过滤、解析和改变日志行内容以及各自的标签。

1. |= # 匹配包含指定字符串的日志行
2. != # 匹配不包含指定字符串的日志行
3. |~ # 匹配包含正则表达式的日志行
4. !~ # 匹配不包含正则表达式的日志行
{job="varlogs"} |="ERROR" !="level" |="2021-08-23"

在这里插入图片描述

参考文献

https://grafana.com/docs/loki/latest/logql/ip/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyunshengsir

微信:lys20191020

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值