10 分钟在K8s 中部署轻量级日志系统 Loki
转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南
Loki 是什么?
Loki是由Grafana Labs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中,处理海量日志的问题。Loki采用了分布式的架构,并且与Prometheus、Grafana密切集成,可以快速地处理大规模的日志数据。该项目受 Prometheus 启发

- Promtail是代理,负责收集日志并将其发送给 Loki 。
- Loki 是主服务器,负责存储日志和处理查询。
- Grafana则 用于 UI 展示。
与ELK相比优势在哪里?
ELK是大规模日志解决方案中的佼佼者说到Loki,免不了要拿来跟ELK做个对比
- 架构简单:Loki 则采用分布式架构、可以将日志存储在多个节点上,也可以存储在一个节点上,其中Promtail进行日志收集、Loki 负责存储查询、Grafana用于展现
- 存储更小:Loki使用了紧凑的索引和压缩算法,相比ES 可以减少不少存储空间
- 没有采集日志格式要求:提供了更大的灵活性以及在查询时格式化的选项
- 与 Prometheus、Grafana 和 K8s 原生集成:可以在单个用户界面中无缝切换查询指标、日志等数据
- 轻量级:相比ELK,Loki更加轻量级,因为它不需要一个单独的Elasticsearch集群来存储和索引日志数据
如何采集数据?
k8s 集群不提供日志收集的解决方案,一般来说有3 种方案来做日志收集:
- 在Node节点上运行一个 agent 来收集日志(DaemonSet 采集方式)
- 在 Pod 中包含一个 sidecar 容器来收集应用日志(sidecar 采集方式)
- 由应用程序将日志信息推送到采集后端(主动采集方式)
节点采集方式

日志系统会以DaemonSet 方式是在每个node 节点上部署一个agent,来采集这个节点上所有的日志,默认会收集k8s 下/var/log/pod 、/var/lib/docker/containers下的日志,对应用程序的要求就是开启控制台打印,否则会收集不到日志,比较适用于功能单一或业务不是很多的集群;
Sidecar采集方式

Sidecar 方式会在每一个Pod中部署一个 sidecar 容器,来进行当前容器的日志采集,有多少个 pod,就会有多少个Sidecar容器,因此Sidecar相对资源占用较多,但灵活性以及多租户隔离性较强,适合大型的 K8s 集群使用,因为除了占用资源多点,采集性能不会有影响
Loki的Pormtail同时支持以上两种方式,默认为节点采集方式,下面我们演示如何在k8s 中快速部署一个Loki日志分析系统
Loki 部署
添加仓库
helm repo add grafana https://grafana.github.io/helm-charts
下载仓库
helm pull grafana/loki-stack
解压包
解压完成以后,可以查看相关参数的使用
tar -xvf loki-stack-2.10.0.tgz
配置概览

此Chart不止包含了Loki 、promtail、grafana,还包括其他组件,但是默认未开启,只开启了Loki 、promtail,这里为了演示,也开启grafana配置,通过grafana.enabled=true指定,同时如果要指定相关子 chart 参数,根据子 chart 名称.参数进行指定,比如要指定的grafana 的admin 密码,可以用grafana.adminPassword=admin指定

启动
注意:启动示例没有对日志数据进行持久化处理,正式部署要进行持久化配置
loki-stack中Grafana 的密码获取比较复杂,所以直接通过参数指定
helm install loki ./loki-stack -n loki-stack \
--set grafana.enabled=true \
--set grafana.adminPassword=admin \
--create-namespace

以上启动完成以后,会收集/var/log/pod 、/var/lib/docker/containers日志信息,
查看启动pod,由于本人k8s 集群有 6 个node节点,所以部署了6 个promtail

Grafana访问
修改 Grafana 为 nodeport 访问方式
kubectl edit svc loki-grafana -n loki-stack

登录成功以后,访问Explore 功能,并点击Log browser按钮,会看到已经采集相关数据,并自动创建
app、component、container、namepsace、pod等多个维度的 labels

比如要查看 ingress 的日志,选择命名空间为ingress-nginx并点击 show logs


同时查询结果可以支持换行、日期排序等功能

以上默认的查询界面,使用起来可能没那么顺手,那么可以根据需求去定制不同的查询界面,在https://grafana.com/grafana/dashboards中输入 loki,可以下载感兴趣的Dashboard

loki卸载
helm uninstall loki -n loki-stack
总结
以上我们快速演示了如何在 k8s 中部署一个Loki,可以看到非常简单,由于Loki 对k8s友好支持,默认就可以采集到pod、namespace 等标签数据,不需要额外配置,但是要达到生产级可用,还需要对 Loki的数据进行持久化配置、同时要根据采集日志数据的大小做好采集速率调整、以及日志过期策略设置
又到过年了,龙年红包封面是必备的,大家不要花钱购买了,我制作一款封面红包,数量4千个,效果如下

领取方法,关注公众号架构成长指南,回复「封面」领取
相关文章:
10 分钟在K8s 中部署轻量级日志系统 Loki
转载至我的博客 https://www.infrastack.cn ,公众号:架构成长指南 Loki 是什么? Loki是由Grafana Labs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中&#x…...
图像处理python基础
array 读取图片 tensor 模型预测 一般过程:读取数据np->tensor->model->result->np->画图 shape确保图像输入输出尺寸正确 读取图片 将在GPU上运行的tensor类型转变成在CPU上运行的np类型 三类计算机视觉任务的输入: 分类࿱…...
基于WordPress开发微信小程序2:决定开发一个wordpress主题
上一篇:基于WordPress开发微信小程序1:搭建Wordpress-CSDN博客 很快发现一个问题,如果使用别人的主题模板,多多少少存在麻烦,所以一咬牙,决定自己开发一个主题模板,并且开源在gitee上ÿ…...
[Python] 什么是网格搜索以及scikit-learn中GridSearch类的介绍和使用案例?
什么是网格搜索? 网格搜索是一种参数调优的方法,它可以帮助找到最佳的模型参数。在网格搜索中,我们先指定参数的候选值范围,然后枚举所有可能的参数组合,计算每个模型的性能指标(比如准确率、精确率等&…...
Linux-正则表达式
1.正则表达式的定义: 正则表达式通常用于判断语句中,使用字符串描述、匹配一系列符合某个规则的字符串。 正则表达式是由普通字符与元字符组成。 普通字符包括小写字母、数字、标点符号及一些其他符号。元字符是指在正则表达式中具有特殊意义的专用字符&…...
Java基础学习:System类和Static方法的实际使用
一、System类 1.在程序开发中,我们需要对这个运行的结果进行检验跟我们预判的结果是否一致,就会用到打印结果在控制台中显示出来使用到了System类。System类定义了一些和系统相关的属性和方法,它的属性和方法都是属于静态的,想使用…...
线性代数------矩阵的运算和逆矩阵
矩阵VS行列式 矩阵是一个数表,而行列式是一个具体的数; 矩阵是使用大写字母表示,行列式是使用类似绝对值的两个竖杠; 矩阵的行数可以不等于列数,但是行列式的行数等于列数; 1.矩阵的数乘就是矩阵的每个…...
Flutter 开发3:创建第一个Flutter应用
Step 1: 安装Flutter 1.1 下载Flutter SDK 首先,你需要访问Flutter官方网站下载最新的Flutter SDK。选择适合你操作系统的安装包。 $ cd ~/development $ unzip ~/Downloads/flutter_macos_2.2.3-stable.zip1.2 更新环境变量 接下来,你需要将Flutter…...
Linux中断下半部分:软中断,tasklet和工作队列
为什么要有下半部分 中断会打断其他程序,为了打断其他程序时间短,就需要中断处理程序快。执行中断处理程序后,相同中断不会触发,甚至所有中断都不能触发(设置IRQF_DISABLED,其他硬件与操作系统无法通信)中…...
Flink CEP实现10秒内连续登录失败用户分析
1、什么是CEP? Flink CEP即 Flink Complex Event Processing,是基于DataStream流式数据提供的一套复杂事件处理编程模型。你可以把他理解为基于无界流的一套正则匹配模型,即对于无界流中的各种数据(称为事件),提供一种组合匹配的…...
QSqlRelationalTableModel 关系表格模型
一、 1.1 QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如,“studInfo”表中的departID字段对应的是“departments…...
JS和CSS实现的原生轮播图
JSCSS实现滑动轮播图 使用JS加CSS来实现的幻灯片,主要使用的是CSS的transform属性中的translate来实现,适合与用户交互的轮播图,展现轮播图的数量,用户可自由进行选择。 <!DOCTYPE html> <html lang"en">&…...
【微服务】skywalking自定义链路追踪与日志采集
目录 一、前言 二、自定义链路追踪简介 2.1 自定义链路追踪应用场景 2.2 链路追踪几个关键概念 三、skywalking 自定义链路追踪实现 3.1 环境准备 3.2 集成过程 3.2.1 导入核心依赖 3.2.2 几个常用注解 3.2.3 方法集成 3.2.4 上报追踪信息 四、skywalking 自定义日志…...
MYSQL基础问题
一.DBMS 是什么 DBMS(Database Management System),数据库管理系统,是一种操纵和管理 数据库的大型软件,用于建立、使用和维护数据库。对数据库进行统一的管理和 控制,以保证数据库的安全性和完整性。 二…...
SpringBoot使用Guava实现日志脱敏(含源码)
点击下载《SpringBoot使用Guava实现日志脱敏(含源码)》 1. 摘要 本文将介绍如何使用Google Guava库进行日志脱敏,保护敏感数据的安全。我们将详细解释脱敏的必要性,然后介绍如何使用Guava中的Strings、Maps和CharMatcher类来进行…...
数据结构—动态查找
动态查找介绍 1. 动态查找的引入:当查找表以线性表的形式组织时,若对查找表进行插入、删除或排序操作,就必须移动大量的记录,当记录数很多时,这种移动的代价很大。 2. 动态查找表的设计思想:表结构本身是…...
Tarjan算法学习笔记
目录 无向图的割点与桥 时间戳: 搜索树: 追溯值: 割边判定法则: 割点判定法则: 无向图的双连通分量 定理: 边双连通分量(e-DCC)的求法: e-DCC的缩点: 有向图的连通性 追…...
vue 项目涉及的焦点聚焦、格式化日期、判断是否为对象或数组、判断是否为空、深拷贝、节流、防抖
焦点聚焦 import Vue from vue // 插件对象(必须有 install 方法, 才可以注入到 Vue.use 中) export default {install () {Vue.directive(fofo, {inserted (el) {el el.querySelector(input)el.focus()}})} }格式化日期格式 export const formatDate (time) > {// 将xx…...
软件工程知识梳理6-运行和维护
软件维护需要的工作量很大,大型软件的维护成本高达开发成本的4倍左右。所以,软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 定义:软件已经交付使用之后,…...
docker- php7.4
安装 gd拓展 anzhuanga在Dockerfile里面安装php7.4的GD库 - 知乎 apt update apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-devdocker-php-source extractdocker-php-ext-configure gd \ --with-jpeg/usr/include \ --with-freetype/usr/include/docker-…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
