• 认识和使用日志工具Loki


    Loki是一个受Prometheus启发的水平可伸缩、高可用性、多租户日志聚合系统。它的设计是非常有效的成本和易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。日志数据被压缩存储在对象存储(例如S3或者GCS)中的块中。

    对于传统的日志管理工具,Loki有如下特点

    • 不对日志进行全文索引,通过存储压缩的非结构化日志和仅索引元数据,Loki操作更简单,运行成本更低。
    • 使用已经在Prometheus中使用的相同标签对日志流进行索引和分组,使您能够使用已经在Prometheus中使用的相同标签在指标和日志之间无缝切换。
    • Loki是一个特别适合存储Kubernetes Pod日志,元数据(如Pod标签)会自动抓取并建立索引。
    • 原生支持Grafana

    Loki通过三个模块来完成日志的管理,三个模块是Promtail,Loki,Grafana

    Promtail
    1.将容器日志发送到Loki或者Grafana服务上的日志收集工具。
    2.发现采集目标以及给日志流添加上Label,然后发送给Loki。
    3.Promtail的服务发现基于Prometheus的服务发现机制实现的,可以查看configmap loki-promtail了解细节

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

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

    Loki本身又可以划分为3个组件,分配器、采集器、查询器。

    Distributor(分配器)
    分配器负责处理客户端写入的日志,一旦分配器接收到日志数据,就会分成若干批次,并将他们并行的发送到多个采集器上去。
    分配器通过gRPC和采集器进行通信。分配器是无状态的,可以根据实际需要对分配器进行扩所容。
    Ingester(采集器)
    采集器负责将日志写入长期存储的后端(S3,SynamoDB等),采集器会校验采集的日志是否乱序。另外,采集器验证接收到的日志行是按时间戳递增的顺序接收的,如果时间戳不正确,日志行将被拒绝且返回错误。
    Querier(查询器)
    查询器服务负责处理LogQL查询语句来评估存储在长期存储中的日志数据。

    前面介绍了Loki的理论知识,接下来通过实际例子看看Loki如何工作。首先是在k8s集群上安装Loki

    在安装Loki的时候,同时安装了grafana和prometheus(安装prometheus时persistentVolume=false,否则还需要配置存储)

    1. helm repo add grafana https://grafana.github.io/helm-charts
    2. helm upgrade --install loki grafana/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

    安装完成后,查看pod,可以看到loki的pod已经处于running状态。

    将Loki grafana service的类型修改成NodePort,方便后面在外网访问Grafana

    查看secret,获取Grafana的登录密码,注意需要通过base64 -d解密才能登录。

    kubectl get secret loki-grafana -oyaml

    登录后,数据源可以选择Loki或者Promethues,这里选择Loki,如下查看了在集群上的nginx pod的日志信息。

    通过标签选择需要查看的pod信息非常方面,如下所示:Loki自动显示了所有安装在集群上的pod,可以选择任意需要查看的pod,进行日志查看。

    以上就是对Loki的理解和使用。

  • 相关阅读:
    rabbitMQ:绑定Exchange发送和接收消息(direct)
    怎么办理水污染防治资质,水污染防治工程设计专项乙级办理条件有哪些
    浅谈红黑树
    为什么价格监测要精确到款式
    Elasticsearch-04-Elasticsearch组件head和kibana详解
    uniapp 微信小程序端使用百度地图API
    Android充电驱动bq24375源码分析
    JAVA线程和线程池
    万字带你熟悉静态分析工具的评估测试
    软考-软件设计师 - 第12章 软件系统分析与设计【附补充常考知识点】
  • 原文地址:https://blog.csdn.net/qiaotl/article/details/125891345