一切福田,不離方寸,從心而覓,感無不通。

运维监控系列(17)-Prometheus接入Loki日志采集系统及可视化使用详解

Loki

GitHub地址
官方文档地址

简介

对于生产环境以及一个有追求的运维人员来说,哪怕是毫秒级别的宕机也是不能容忍的。对基础设施及应用进行适当的日志记录和监控非常有助于解决问题,还可以帮助优化成本和资源,以及帮助检测以后可能会发生的一些问题。

Loki 是受Prometheus启发的水平可扩展、高可用、多租户日志聚合系统。它的设计非常具有成本效益且易于操作。它不索引日志的内容,而是索引每个日志流的一组标签。

系统架构

在这里插入图片描述

  1. Promtail收集并将日志发送给Loki的 Distributor 组件
  2. Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester
  3. Ingester 接受日志流并构建数据块,压缩后存放到所连接的存储后端
  4. Querier 收到HTTP查询请求,并将请求发送至Ingester 用以获取内存数据 ,Ingester 收到请求后返回符合条件的数据 ;
  5. 如果 Ingester 没有返回数据,Querier 会从后端存储加载数据并遍历去重执行查询 ,通过HTTP返回查询结果。

特点

用于索引日志的高效内存使用

 

多租户

 

LogQL,Loki 的查询语言

 

可扩展性

 

灵活性

 

Grafana 集成

 

对比其他日志系统

与其他日志聚合系统相比,Loki:

  • 不对日志进行全文索引。通过存储压缩的非结构化日志和仅索引元数据,Loki 更易于操作且运行成本更低。
  • 使用您已经在 Prometheus 中使用的相同标签对日志流进行索引和分组,使您能够使用您已经在 Prometheus 中使用的相同标签在指标和日志之间无缝切换。
  • 尤其适合存储Kubernetes Pod 日志。Pod 标签等元数据会被自动抓取和索引。
  • 在 Grafana 中有本机支持(需要 Grafana v6.0)。

组件

基于 Loki 的日志系统由 3 个组件组成:

  • promtail 是代理,负责收集日志并发送给 Loki。
  • loki 是主服务器,负责存储日志和处理查询。
  • Grafana用于查询和显示日志。

Loki 就像 Prometheus,但对于日志:我们更喜欢基于多维标签的索引方法,并且想要一个单二进制、易于操作且没有依赖关系的系统。Loki 与 Prometheus 的不同之处在于专注于日志而不是指标,并且通过推送而不是拉来交付日志。

安装Loki

使用Loki流程

为了运行 Loki,您必须:

  • 下载并安装 Loki 和 Promtail。
  • 下载两个程序的配置文件。
  • 启动Loki。
  • 更新 Promtail 配置文件以将您的日志输入 Loki。
  • 启动Promtail。

安装方法

安装 Loki 和 Promtail 的不同方法的说明。

  • 使用 Tanka 安装(推荐)
  • 通过 Helm 安装
  • 通过 Docker 或 Docker Compose 安装
  • 在本地安装并运行
  • 从源安装

方式1 使用 Docker 安装

  1. 首先需要下载配置文件

 

在这里插入图片描述
完成后,loki-config.yaml并promtail-config.yaml配置文件下载到当前目录中。Docker 容器使用这些配置文件运行 Loki 和 Promtail。

  1. 启动Promtail和loki

 

访问 http://localhost:3100/metrics 以查看指标和 http://localhost:3100/ready 准备就绪。

从 v1.6.0 开始,图像被配置为默认以用户 loki 运行,具有 UID10001和 GID 10001。您可以使用不同的用户,特别是在您使用绑定安装时,通过docker run使用命令指定 UID并使用–user=UID适合您需要的数字 UID。

方式2 使用Docker Compose 安装

  1. 首先需要下载compose文件

 

可以看到compose文件安装了loki、promtail、grafana三个组件。
在这里插入图片描述
因为这里之前已经安装过grafana,而且这里没有添加配置文件映射,所以稍微改动下,首先下载方式1中使用到的配置文件。
在这里插入图片描述
修改为下面这样:

 

  1. 启动Promtail和loki

 

在这里插入图片描述

  1. 访问http://localhost:3100/metrics,查看很多监控数据说明安装成功了
    在这里插入图片描述

3. 添加Grafana数据源

登录Grafana,找到添加数据源页面。
在这里插入图片描述
找到Loki
在这里插入图片描述
填写Loki地址,然后保存。
在这里插入图片描述

采集Spring boot项目日志

1. 修改promtail配置

日志采集是由promtail组件来完成的,所以需要在promtail中添加采集任务。

  1. 首先需要搭建Spring boot项目,采用logback打印日志到文件夹,一般都会,也有现成的项目,这里就不浪费时间再整了。
    在这里插入图片描述
  2. 因为promtail用的docker安装,所以需要将日志目录隐射到容器内部,才能采集到。

 

  1. 修改 promtail-config.yaml,添加采集日志的任务,然后重新启动promtail。

 

2. Grafana查询日志

  1. 登录Grafana,点击Explore,选择Loki数据源。
    在这里插入图片描述
  2. 直接在输入框中输入表达式,开始查询,也可以点击Log browser,根据标签选择过滤条件。
    在这里插入图片描述
  3. 当选择标签后,自动生成了查询语句,可以看到出现了一个统计图,展示各个级别日志的统计数量,在下方展示了集体的日志信息。
    在这里插入图片描述

 

from:https://blog.csdn.net/qq_43437874/article/details/120428338