loki-日志

在这里插入图片描述

一、loki

Github

  • ELK虽然功能丰富,但规模复杂,资源占用高,操作苦难,很多功能往往用不上,lokiprometheus 启发的水平可扩展、高可用、多租户日志聚合系统,它的设计非常经济高效且易于操作,不对日志进行全文索引。而是为每个日志流建立一组标签,并通过存储压缩非结构化日志和索引元数据
  • 特别适合存储 Kubernetes Pod 日志。Pod 标签等元数据会自动抓取并建立索引

1. 配置文件

参考一

  • 配置文件说明
auth_enabled: false				# 通过 X-Scope-OrgID 标头启用身份验证,如果为 true,则必须存在。 如果为 false,则 OrgID 将始终设置为“ fake”,默认值:trueserver:							# 用于配置 loki 提供 http 和 gRPC 这两种服务的行为http_listen_port: 3100		# Loki http 监听端口号为3100grpc_listen_port: 9096		# Loki grpc 监听端口号为3100# 通用配置,从 2.4 版本开始,common 字段将会逐步代替其他描述不清晰的字段,比如 common.storage 将会代替 storage_cofig 字段
common:							# 通用配置,用于配置一些其他配置部分可以共享的配置,比如存储、优先级低,若其他部分指定了相同的配置,则该配置在对应的其他部分的配置将被忽略instance_addr: 127.0.0.1		# Loki 实例地址path_prefix: /tmp/loki		# Loki 路径前缀storage:						# 存储配置filesystem:chunks_directory: /tmp/loki/chunksrules_directory: /tmp/loki/rulesreplication_factor: 1ring:kvstore:store: inmemoryquery_range:results_cache:cache:embedded_cache:enabled: true			# 启用结果缓存max_size_mb: 100		# 缓存的最大大小(以MB为单位)storage_config:boltdb_shipper:active_index_directory: /tmp/loki/boltdb-shipper-active		# 配置活动索引文件的存储目录为/tmp/loki/boltdb-shipper-activecache_location: /tmp/loki/boltdb-shipper-cache				# 配置BoltDB缓存文件的存储目录为/tmp/loki/boltdb-shipper-cachecache_ttl: 24				# 配置BoltDB缓存的TTLshared_store: s3			# 使用 s3 作为数据存储aws:s3: s3://admin:minio@0304@minio.yeemiao.net.cn/buckets/lokis3forcepathstyle: trueschema_config:configs:- from: 2020-10-24store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24hruler:alertmanager_url: http://localhost:9093	 # Alertmanager的URLtable_manager:					# 日志保存时长retention_deletes_enabled: trueretention_period: 24h  		# 必须是24小时的倍数

案例配置文件

auth_enabled: falseserver:http_listen_port: 3100     #如是云服务需打开3100端口grpc_listen_port: 9096grpc_server_max_recv_msg_size: 8388608grpc_server_max_send_msg_size: 8388608ingester:lifecycler:address: 0.0.0.0      #监听地址,可不做修改。ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0ingester_client:remote_timeout: 2mschema_config:configs:- from: 2023-01-29store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 168hstorage_config:boltdb:directory: /data/tools/Loki/data/index   #自定义boltdb目录(在loki目录下新建data文件来存放)filesystem:directory: /data/tools/Loki/data/chunks        #自定义filesystem目录(在loki目录下新建data文件来存放)#positions:
#  filename: /data/tools/Loki/logs/loki-3100.log
#  rimestamp: utp
#  rotation:
#    max_age: 7d
#    max_size: 100MiBlimits_config:enforce_metric_name: falsereject_old_samples: truereject_old_samples_max_age: 168h#ngestion_rate_strategy: localingestion_rate_mb: 30ingestion_burst_size_mb: 60per_stream_rate_limit: 10MBper_stream_rate_limit_burst: 20MBmax_query_length: 0hchunk_store_config:max_look_back_period: 0stable_manager:retention_deletes_enabled: falseretention_period: 180h

2. 启动

Githup loki

3. 性能和原理

1). 组件介绍

参考一

  • Loki实现由众多的组件组成, 每个组件都会拉起一个gRPC的服务来实现内部互通, 同时也对外暴露了一个HTTP/1的服务用来提供外部服务以应答API请求. 不同的组件会根据角色的差异提供不同的API, 目前loki主要由以下几个组件构成
    • Distributor
      • 主要负责分发从客户端上报的日志, 在进行完日志的校验之后便会分发给ingester处理. Distributor使用了一致性哈希以及一个可以配置的副本数来决定不同的日志流的后端ingester. 哈希环信息的存储使用了Consul. Ingester会根据自身的状态注册在哈希环上来标识自身可提供服务的状态. Distributor会使用注册租户id和标签集时作为哈希的输入, 计算出对应的哈希环位置, 并找到对应的ingester
    • Ingester
      • Ingester是loki中比较核心的服务, 该服务将从Distributor发送来的日志进行转储到后端存储, 并给Querier提供仍在内存中未写盘的数据查询功能. Ingester注册在哈希环上的状态有PENDING, JOINING, ACTIVE, LEAVING, UNHEALTHY, 除了ACTIVE状态外, 其余状态都只会提供部分服务 在存储到真正的存储前, 日志流只有按顺序收到才会被处理, Ingester会按照标签的组合set构建若干压缩过的chunks, 间隔一段时间将chunks作为整体刷写到后端存储. 刷进后端存储的chunks被标记为只读
    • Query frontend(Optional)
      • Querier frontend 的部署可以为查询提供加速, 他提供了排队, 切分大请求, 缓存等机制
    • Querier
      • Querier则是用来提供查询服务, 他使用了LogQL, 一种类似于PromQL的语言作为用户界面. Querier会查询已经写入后端存储的chunks以及仍在ingester内存中的数据, 根据label查找数据后, 再遍历数据查找到满足条件的日志
    • Chunk Store
      • Chunk Store是Loki的后端存储框架, 可以支持多种存储方式, 存储分为两部分:索引的存储和真正的日志数据存储
      • 索引存储目前可以使用 Amazon DynamoDB, Google Bigtable, Apsache Cassandra服务提供 日志存储使用了KV存储,目前可以使用Amazon DynamoDB, Google Bigtable, Apsache Cassandra, Amazon S3, Google Cloud Store来实现

2). 特点

参考一

  • lokiES 最大的不同是 loki 只对标签进行索引而不对内容索引, ES 无论你查不查,巨大的索引开销必须时刻承担
  • loki 只对标签进行索引,那么性能上就有局限,为了弥补没有全文索引带来的查询降速使用,Loki 将把查询分解成较小的分片,可以理解为并发的grep,同时支持 index、chunk 和 result缓存提速
  • Loki使用的是自己的查询语言LokiQL,这需要一定的学习曲线

4. 集群

  • loki核心服务distributor、ingester、querier没有分离,而是启动在一个实例当中
  • 抛弃了consul和etcd外部的kv存储,而是直接用 memberlist 在内存中维护集群状态,Loki的memberlist使用的是 gossip协议来让集群内的所有节点达到最终一致性的
  • 使用boltdb-shipper替代其他日志索引方案

Loki2.0版本之后,对于使用boltdb存储索引部分做了较大的重构,采用新的boltdb-shipper模式,可以让Loki的索引存储在S3上,而彻底摆脱Cassandra或者谷歌的BigTable。此后服务的横向扩展将变得更加容易。关于bolt-shipper的更多细节,可以参考:https://grafana.com/docs/loki/latest/operations/storage/boltdb-shipper/

二、prometail

  • prometail是一个跟踪日志文件并将其推送给 Loki 的代理
server:http_listen_port: 9080grpc_listen_port: 0grpc_server_max_recv_msg_size: 15728640grpc_server_max_send_msg_size: 15728640positions:filename: /opt/loki/promtail/positions.yamlclients:- url: http://192.168.66.178:3100/loki/api/v1/pushscrape_configs:
- job_name: app_logstatic_configs:- targets:- localhostlabels:job: varlogs_178__path__: /var/log/*log#__path__: /ceph_root/{dev,test}/apps_data/*/log/*log

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

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

相关文章

使用【OpenI启智平台】进行模型训练

前言 启智平台OpenI是一个人工智能开源开放平台,提供免费GPU算力可以进行模型训练。模式是git进行项目管理,可以创建调试任务调试代码以及保存镜像,创建训练任务训练模型,也提供推理和评测,我没用过就不讲述了。后来我…

Sketch软件免费中文版在线使用教程及下载安装指南

什么是Sketch? Sketch是一款专为设计量身定制的矢量绘图软件,广泛应用于UI/UX设计和原型制作。 Sketch由荷兰Bohemiancoding公司开发,并于2010年首次发布。当时,AdobePhotoshop、AdobeIlustrator等主流设计工具虽然功能强大&…

MySQL-1

1 数据库基础概念 Data数据 对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。2. DB数据库数据库(Database,简称DB)的定义:“按照数据结构来组织、存储和管理数据的仓库” 3. DBMS数据库管理系统概念&#xff…

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly(简称Wasm)是一种能够在虚拟机中执行的…

FFmpeg 简单文档

一、播放器框架 常用音视频术语 容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、…

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升 9787111724834 9787121376955 9787302556275 ISBN编号:9787111724834 书名:CTF实战:从入门到提升 定:99.00元 开本:184mm260&#xff…

Stable-diffusion-webui本地部署和简要介绍

Stable Diffusion 是一款基于人工智能技术开发的绘画软件,它可以帮助艺术家和设计师快速创建高品质的数字艺术作品。是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,同时也可以应用于其他任务,如内补绘制、…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是找不到某个动态链接库文件,比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

【Amazon 实验①】Amazon WAF功能增强之实验环境准备

文章目录 1. 实验介绍2. 实验环境准备 1. 实验介绍 在真实的网络空间中,攻击者会使用大量广泛分布的僵尸网络、肉机等发起对目标的攻击。 其来源分布一般比较分散,因此难以简单防范。 本实验联合使用有多种AWS服务:Cloudfront、 Lambdaedge…

VPN理论入门及GRE、L2TP、IPsec(HCIP)

一、VPN概述 IPsec-VPN: 1、应用范围:用于分公司和总部之间。 2、作用:机密性、证书(身份认证) VPN概述 VPN概述:VPN(Virtual Private Network)是指依靠Internet服务提供商ISP&a…

一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!

代理模式概念 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代…

01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换

基于GEC6818实现屏幕颜色的切换 本文使用开发板GEC6818,实现屏幕显示特定颜色并且进行自动切换的功能。 文章目录 基于GEC6818实现屏幕颜色的切换一、 初始化开发板--(开发板是新的则可以省略很多步骤)1.1 **删除文件和文件夹**1.2 **查看磁盘…

【送书福利-第三十一期】《区块链安全理论与实践(安全技术经典译丛)》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文…

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好,我是潇潇雨声。我发现在使用 GPT 时,尽管它能够生成一些小红书文案和日志,但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法,那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…

Python---搭建Python自带静态Web服务器

1. 静态Web服务器是什么? 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候,每天的新闻数据都会发生变化,那访问的这个页面就是动态的,而我们开发的是静态的,页面的数据不会发生变化。 …

Floyd求最短路(Floyd算法)

参考:约会怎么走到目的地最近呢?一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路,公路上的数字表示这条公路的长短,并且路是单向的,现在要求我们求出任意两个城市之间的最短路程,也就是求任意两个点之…

蓝桥杯2019年10月青少组Python程序设计省赛真题

1:有n个人围成一个圈,按顺序排好号然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号输人描迹:输人一个正整数n 输出描迹:输出最后留下的是原来的第几号 [样例输人] [样例输出] 2: 3、 […

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM,跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM,无需打断程序运行 • 120MHz M33内核,处理性能佳 • 集成2路CAN接口,适合工控等需要CAN接口的场景 • QS…

[JS设计模式]Flyweight Pattern

Flyweight pattern 享元模式是一种结构化的设计模式,主要用于产生大量类似对象而内存又有限的场景。享元模式能节省内存。 假设一个国际化特大城市SZ;它有5个区,分别为nanshan、futian、luohu、baoan、longgang;每个区都有多个图…

代码随想录刷题题Day20

刷题的第二十天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day20 任务 ● 理论基础 ● 77. 组合 1 回溯算法理论基础 1.1 回溯法 回溯法是一种搜索的方式,是递归的副产品&#x…