Loki 日志收集系统

news2024/11/25 22:30:37

一.系统架构

二.组成部分

 Loki 的日志堆栈由 3 个组件组成:
  • promtail:用于采集日志、并给每条日志流打标签,每个节点部署,k8s部署模式下使用daemonset管理。 
  • loki:用于存储采集的日志, 并根据标签查询日志流。单节点部署,一般和监控组件部署在同一节点。 
  • Grafana:提供界面,实现日志的可视化查询。安装监控组件会默认部署grafana,与监控组件共用grafana。

源码地址:https://github.com/grafana/loki

三.promtail日志收集原理

  默认情况下,容器日志会存储在 /var/log/pods 路径下

$ ls /var/log/pods

kube-system_kube-flannel-ds-amd64-9x66j_28e71490-d614-4cd8-9ea7-af23cc7b9bff           
lab_job-employee-cronjob-1615078800-n2rxh_134ce637-c2a7-47b8-896f-348931125acb
kube-system_kube-proxy-lfzmx_90605182-ae56-4085-801e-fc4a83531945
...

  每个文件夹对应一个 Pod,Pod 下级目录为容器名,再下级即为容器日志。

$ tree kube-system_kube-flannel-ds-amd64-9x66j_28e71490-d614-4cd8-9ea7-af23cc7b9bff/

kube-system_kube-flannel-ds-amd64-9x66j_28e71490-d614-4cd8-9ea7-af23cc7b9bff/
├── install-cni
│   └── 3.log -> /data/docker/containers/6accaa2d6890df8ca05d1f40aaa9b8da69ea0a00a8e4b07a0949cdc067843e37/6accaa2d6890df8ca05d1f40aaa9b8da69ea0a00a8e4b07a0949cdc067843e37-json.log
└── kube-flannel
    ├── 2.log -> /data/docker/containers/9e8eea717cc3efd0804900a53244a32286d9e04767f76d9c8a8cc3701c83ece5/9e8eea717cc3efd0804900a53244a32286d9e04767f76d9c8a8cc3701c83ece5-json.log
    └── 3.log -> /data/docker/containers/06389981d26cbe60328cd5a46af7b003c8d687d1c411704784aa12d4d82672b8/06389981d26cbe60328cd5a46af7b003c8d687d1c411704784aa12d4d82672b8-json.log

  日志文件 kube-flannel/3.log 只是对 /data/docker/containers/***/***.log 文件的软链接,本质上还是 Docker 维护日志, k8s 对其引用而已。
  日志是 JSON 格式的,每一行包含如下三个信息:
  • log:日志内容
  • stream:stderr(异常输出)、stdout(正常输出)
  • time:时间

   注意:/data/docker/containers 并非 docker 默认的数据存储路径,是通过 /etc/docker/daemon.json 配置的。

   注意:上述提到 /var/log/pods 下的日志只是对 /data/docker/containers 下日志的软链接,所以 Promtail 部署时需要同时挂载这两个目录。

 四.Loki

   Loki是一个水平可扩展,高可用,多租户的日志聚合系统。Loki只会对日志元数据标签进行索引,而不会对原始的日志数据进行全文检索,收集的日志数据本身会被压缩,并以chunks(块)的形式存放在存储中。

4.1.组件

1.Distributor(分配器)

   日志写入第一站,一旦分配器接收到日志数据,他就会把日志分成若干批次,并将它们并行的传送到采集器。

  分配器采用gRPC与采集器进行通信,它们是无状态的,所以我们需要根据实际状况进行扩缩容。

2.Ingester(采集器)

  采集器负责将日志数据写入存储。

3.Querier(查询器)

  查询服务器,负载处理LOGQL查询语句。

4.Chunk(块)存储

  块存储是Loki的长期数据存储,旨在支持交互式查询和持续写入,无需后台维护任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 10搭建SFTP服务器【公网远程访问】

相较比高效率的FTP协议而言,SFTP默认只占用一个TCP端口 22端口,采用的是SSH加密隧道,理论上会比FTP更安全,更稳定些。 搭建SFTP服务器,这里我们用freesshd来实现;而在服务器搭建成功后,要实现公…

mysql详细优化建议(谈谈你的SQL优化经验)

sql语句规范 MySQL在Linux系统下数据库名,表名,存储过程名,函数名称,触发器名称等区分大小写,列名不区分大小写,原因是这些操作系统下文件名称区分大小写。 MySQL在Windows系统下全部不区分大小写&#x…

Jenkins使用Maven构建Java应用程序

本教程将向你展示如何使用Jenkins编排并构建一个使用Maven管理的简单Java应用程序。 如果你是使用Maven的Java开发人员,并且对CI/CD概念不熟悉,或者你可能熟悉这些概念,但不知道如何使用Jenkins实现构建应用程序,那么本教程适合你…

C语言数据存储 — 整型篇

C语言数据存储 — 整型篇 前言1. 数据类型介绍1.1 类型的基本分类 2. 整型在内存中的存储2.1 原码、反码、补码2.1.1 为什么数据存放在内存中存放的是补码 2.2 大小端介绍2.2.1 什么是大小端?2.2.2 为什么有大端和小端?2.2.3 一道百度系统工程师笔试题 3…

Linux之环境变量

文章目录 前言一、环境变量1.概念2.运行程序3.windows下的环境变量4.常见的环境变量 二、系统调用获取环境变量1.getenv2.演示1.标识当前的Linux用户2. 判断当前用户是否为root 三、设置环境变量1.关于变量的命令1.echo2.export3.env4.unset5.set 2.子进程继承3.PWD1. 概念2.实…

手摸手教你用AI生成PPT(本文不卖课)

今天再和大家分享一个AI实践: 如何借力AI帮我制作PPT? 上篇和大家安利了目前不用魔法上网,且不用翻墙的最强AI工具,假设我今天要给大家做一个分享,来介绍Claude,如何搞定PPT呢? 当然是直接问Cla…

如何在华为OD机试中获得满分?Java实现【放苹果】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

SpringBoot——原理(自动配置+原理分析-源码跟踪)

源码跟踪 从Springboot的启动类进入,进行分析. 源码跟踪技巧 在以后接触各种框架的时候,如果需要查看源码,需要找到关键点和核心流程,先在宏观对整个原理和流程有一个认识,之后再去了解其中的细节。 按住Ctrl左键进…

[机缘参悟-98] :层次不同、维度不同、视角不同、结论不同

目录 全局VS具备, 总体V部分 认知的六个认知层次: 认知的六个立体化维度: 0、维空间,点思维 1、一维空间,直线思维 2、二维空间,平面思维 3、三维空间:立体思维。 4、四维空间&#xff…

(0)调优

文章目录 前言 1 调优过程说明 2 设置飞机进行调优 3 任务规划器助手 4 初始调优飞行 5 评估飞机的调优 6 手动调优 7 自动调优 8 输入整形 9 基于发射器的调优 10 配置Notch滤波器 11 配置飞行中的FFT 前言 在默认的 PID 设置下,ArduPilot 可以在开箱…

Windows PyCharm 2022/2023 使用Centos7 的虚拟环境 venv 实现文件实时同步 代码代码Git自动识别 解决 Samba Cannot Save File 的问题

前期准备 git报错 fatal: unsafe repository 解决方法 因为是远程文件夹,老版本时没这个问题,新版本git或者pycharm有这个限制,不能自动识别更改的代码,报unsafe.directory的问题,直接暴力解决,加* git c…

美债死期推迟

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《链上投票是社会契约的一种存证》,探讨未来组织和DAO的治理问题,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币略有回升,从26.5k下方来到了26.5k…

风辞远的科技茶屋:可怖的AI

大家好,我是脑极体的风辞远。一直以来我们都在写大块文章,很少有机会跟大家聊天。时间长了,总觉得这种方式有一点冷漠感,不够轻松,加上往往每篇文章只聚焦一个话题,而我们产能有限,就会有很多值…

[创业之路-71] :创业思维与打工思维的区别

其实打工思维和创业思维最核心的本质区别是你是否愿意去尝试。 很多时候我打工的时候老板没发现我的潜质,所以我去创业了,这个没有,你打工的时候一定有一项极其长的长项,只不过当时你可能也没意识到,老板没意识到。 …

ChatGPT在App Store累计下载量已突破50万次;Anthropic已成功完成4.5亿美元C轮融资

🚀 OpenAI的ChatGPT应用在苹果App Store上线6天时间内,累计下载量已突破50万次。 OpenAI的ChatGPT应用在苹果App Store上线6天时间内,累计下载量已突破50万次。 与微软必应等聊天机器人相比,其热度远超过且持续上升。 &#x1…

redis未授权访问漏洞

1、什么是redis未授权访问漏洞 Redis安装后,如果绑定在 0.0.0.0:6379,并且没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证或使用…

如何顺序处理设备上报的数据

1. 引言 随着智能技术的发展,市场上出现了很多的智能设备,其具有连接网络的能力。用户可以实现远程控制,并且设备也可上报自己的状态,实现云端对设备的运行情况分析。在某些情况下需要保证设备上报状态的有序性,例如传…

简单介绍二叉树

前言 学习数据结构,二叉树是一大难点,也是一大重点,小伙伴们和我一起看看二叉树的知识吧! 本文代码是Java。 目录 前言 一、什么是二叉树 二、二叉树的遍历 (一)前序遍历 (二)中…

C++ 入门导引(这是一篇由GPT4写的文章)

C 应用场景 C 是一种广泛应用的编程语言,拥有多种使用场景。以下是 C 的一些主要应用场景: ​1. 游戏开发:C 常用于游戏开发,尤其是大型 3D 游戏。它可以轻松地与图形 API(如 OpenGL 和 DirectX)集成&…

element-ui树形控件el-tree详解

概述 这里我利用element-ui开发一个vue的树形组件 引入element-ui 安装element-plus cnpm install element-plus --save 安装按需导入 cnpm install -D unplugin-vue-components unplugin-auto-import 修改vite.config.js配置按需加载 import AutoImport from unplugin-a…