当前位置: 代码迷 >> 综合 >> Kubernetes使用loki+prometheus+grafana实现日志收集与分析
  详细解决方案

Kubernetes使用loki+prometheus+grafana实现日志收集与分析

热度:76   发布时间:2023-11-26 21:27:02.0

日志收集系统Loki

grafana loki 是可以组成功能齐全的日志记录堆栈的一组组件
与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的: 标签。
日志数据本身被压缩并存储在对象存储(例如s3或GCS)中的块中,甚至存储在文件系统本地。
小索引和高度压缩的块简化了操作,并大大降低了Loki的成本。

基于Loki的日志收集系统

在这里插入图片描述

Loki- stack子系统

  • Promtail

    • 将容器日志发送到loki或者grafana服务上的日志收集工具
    • 发现采集目标以及给日志流添加上label,然后发送给Loki
    • promtail的服务发现是基于prometheus的服务发现机制实现的,可以查看configmap loki-promtail了解细节。
  • Loki

    • Loki是可以水平扩展、高可用以及支持多租户的日志聚合系统。
    • 使用和prometheus相同的服务发现机制,将标签添加到日志流中而不是构建全文索引。
    • promtail接收到的日志和应用的metrics指标具有相同的标签集。
  • grafana

    • grafana是一个用户监控可可视化观测的开源平台,支持非常丰富的数据源。
    • 在Loki技术栈中它专门用来展示来自prometheus和Loki等数据源的时间序列数据。
    • 允许进行查询、可视化、报警等操作,可以用于创建、探索和共享数据dashboard。

Loki架构

在这里插入图片描述

Loki组件

  • Distributor(分配器)
    • 分配器服务负责处理客户端写入的日志。
    • 一旦分配器接收到日志数据,它就会把它们分成若干批次,并将它们并行地发送到多个采集器去。
    • 分配器通过grpc和采集器进行通信。
    • 它们是无状态的,基于一致性哈希,我们可以根据实际需要对它们进行扩缩容。
  • Ingester(采集器)
    • 采集器服务负责将日志数据写入长期存储的后段(dynameodb、s3、cassanbdra等等)。
    • 采集器会校验采集的日志是否乱序。
    • 采集器验证接收到的日志行是按照时间戳递增的顺序接收的,否则日志行将被拒绝并返回错误。
  • Querier(查询器)
    • 查询器服务负责处理LogQL查询语句来评估存储在长期存储中的日志数据。

一、使用helm安装Loki

1、添加repo

helm repo add grafana https://grafana.github.io/helm-charts
helm pull grafana/loki-stack

2、安装

tar -xvf loki-stack-*.tgz
helm upgrade --install loki ./loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

在这里插入图片描述
在这里插入图片描述

二、简单使用Loki

1、修改grafann访问方式为nodeport

kubectl edit svc loki-grafana 

在这里插入图片描述
在这里插入图片描述

2、查看登陆密码

kubectl get secret loki-grafana -oyaml -n default

在这里插入图片描述

#Base64解码
echo "UkVTZ0VEVDY0cXI3YjRXNjhmYjRreVB4Q1Jrc2hyQzJZWDJoUjBXYg==" | base64 -d
#解析密码为
RESgEDT64qr7b4W68fb4kyPxCRkshrC2YX2hR0Wb

3、登陆grafana

http://192.168.0.61:31778/login
在这里插入图片描述

4、使用grafana展示Loki数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  相关解决方案