【APM】在Kubernetes中,使用Helm安装loki-distributed 2.9.6

2024-05-13 15:20

本文主要是介绍【APM】在Kubernetes中,使用Helm安装loki-distributed 2.9.6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Loki简介

Grafana Loki 是一个开源的云原生日志聚合和分析系统,由 Grafana Labs 开发并维护。Loki 专注于为大规模的日志处理提供经济高效且易于管理的解决方案,尤其适用于微服务架构以及容器化和分布式环境。

以下是 Loki 的核心特性与设计原则:

  1. 标签驱动存储

    • Loki 不对完整的日志内容进行索引,而是仅对每个日志流(log stream)定义的一组标签(tags)进行索引,类似于 Prometheus 对时间序列数据的处理方式。这种方式显著减少了存储开销,特别是对于包含大量相似或重复文本的日志数据。
  2. 水平扩展

    • Loki 被设计成可以水平扩展以处理海量日志数据,通过多个工作节点共同分担存储和查询压力。
  3. 组件结构

    • Promtail:是 Loki 生态系统的一部分,它是一个用于从服务器收集日志并将它们发送到 Loki 的日志代理。
    • Distributor:接收来自客户端(如 Promtail 或其他日志推送器)的日志数据,验证、分批,并将它们转发给 Ingester 进行进一步处理。
    • Ingester:负责接收经过 Distributor 分发来的日志块,将其持久化存储在对象存储中,并在日志被索引后删除临时数据。
    • Querier:响应用户发起的日志查询请求,从存储中检索相关日志数据。
    • Grafana UI集成:Loki 可以无缝集成到 Grafana 中,为用户提供可视化界面来搜索、过滤、分析和展示日志信息。
  4. 经济高效

    • 由于其独特的索引策略和使用低成本的对象存储(例如 Amazon S3、MinIO 等),Loki 可以大幅减少存储成本。
  5. 多租户支持

    • Loki 提供了多租户功能,允许不同团队或者项目在同一集群上独立管理和查看各自日志。

综上所述,Grafana Loki 旨在简化日志管理,并通过其创新的设计,为企业提供了在现代云环境中处理日志的一种高效且经济的方式。

2、Github

https://github.com/grafana/loki

3、Helm安装

Helm是一个用于Kubernetes的应用程序包管理工具,它简化了Kubernetes应用的部署和管理过程。Helm的工作原理类似于Linux中的apt或者yum,但专门针对Kubernetes资源

3.1 添加Helm源

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

3.2 下载chart包

helm pull grafana/loki-distributed --version 0.78.5
tar zxvf loki-distributed-0.78.5.tgz 

vim loki-distributed/values.yaml

global:image:# -- Overrides the Docker registry globally for all imagesregistry: null# -- Overrides the priorityClassName for all podspriorityClassName: null# -- configures cluster domain ("cluster.local" by default)clusterDomain: "cluster.local"# -- configures DNS service namednsService: "coredns"       #注意下这个位置,要修改成自己集群的dns值,默认值是kube-dns# -- configures DNS service namespacednsNamespace: "kube-system".........

3.3 安装

helm upgrade --install  loki-distributed  loki-distributed/  -n logs

我把 sts/ingester服务和sts/querier服务持久化到了一个pvc,容器内挂载位置都是/var/loki,主要是解决 Failed to load chunks 问题https://github.com/grafana/helm-charts/issues/1111

3.4 修改配置

configmap/loki-distributed

auth_enabled: false
chunk_store_config:max_look_back_period: 0s
common:compactor_address: http://loki-distributed-compactor:3100
compactor:shared_store: filesystem
distributor:ring:kvstore:store: memberlist
frontend:compress_responses: truelog_queries_longer_than: 5stail_proxy_url: http://loki-distributed-querier:3100
frontend_worker:frontend_address: loki-distributed-query-frontend-headless:9095
ingester:chunk_block_size: 262144chunk_encoding: snappychunk_idle_period: 30mchunk_retain_period: 1mlifecycler:ring:kvstore:store: memberlistreplication_factor: 1max_transfer_retries: 0wal:dir: /var/loki/wal
ingester_client:grpc_client_config:grpc_compression: gzip
limits_config:enforce_metric_name: falsemax_cache_freshness_per_query: 10mreject_old_samples: truereject_old_samples_max_age: 168hsplit_queries_by_interval: 15m
memberlist:join_members:- loki-distributed-memberlist
query_range:align_queries_with_step: truecache_results: truemax_retries: 5results_cache:cache:embedded_cache:enabled: truettl: 24h
ruler:alertmanager_url: https://alertmanager.xxexternal_url: https://alertmanager.xxring:kvstore:store: memberlistrule_path: /tmp/loki/scratchstorage:local:directory: /etc/loki/rulestype: local
runtime_config:file: /var/loki-distributed-runtime/runtime.yaml
schema_config:configs:- from: "2020-09-07"index:period: 24hprefix: loki_index_object_store: filesystemschema: v11store: boltdb-shipper
server:http_listen_port: 3100grpc_server_max_recv_msg_size: 1048576000grpc_server_max_send_msg_size: 1048576000
storage_config:boltdb_shipper:active_index_directory: /var/loki/indexcache_location: /var/loki/cachecache_ttl: 168hshared_store: filesystemfilesystem:directory: /var/loki/chunks
table_manager:retention_deletes_enabled: falseretention_period: 0s

最后重启loki,现在我们就有了一个分布式的Loki服务

这篇关于【APM】在Kubernetes中,使用Helm安装loki-distributed 2.9.6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986081

相关文章

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

C# 预处理指令(# 指令)的具体使用

《C#预处理指令(#指令)的具体使用》本文主要介绍了C#预处理指令(#指令)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1、预处理指令的本质2、条件编译指令2.1 #define 和 #undef2.2 #if, #el

C#中Trace.Assert的使用小结

《C#中Trace.Assert的使用小结》Trace.Assert是.NET中的运行时断言检查工具,用于验证代码中的关键条件,下面就来详细的介绍一下Trace.Assert的使用,具有一定的参考价值... 目录1、 什么是 Trace.Assert?1.1 最简单的比喻1.2 基本语法2、⚡ 工作原理3

C# IPAddress 和 IPEndPoint 类的使用小结

《C#IPAddress和IPEndPoint类的使用小结》本文主要介绍了C#IPAddress和IPEndPoint类的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录一、核心作用网络编程基础类二、IPAddress 类详解三种初始化方式1. byte 数组初始化2. l

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达