Loki日志系统

1、Loki是什么?

Loki是一个开源的日志聚合系统,由Grafana Labs开发和维护。它旨在帮助用户收集、存储和查询大规模的日志数据,帮助用户更好地理解和监控他们的应用程序和系统。

Loki的设计灵感来自于Prometheus,它采用了类似的标签和度量方式来组织和查询日志数据。与传统的日志聚合系统相比,Loki具有以下特点:

  • 分布式架构:Loki使用分布式架构,可以水平扩展以处理大量的日志数据。
  • 索引-free:Loki不使用传统的索引结构来存储日志数据,而是使用标签和度量方式来组织数据,从而减少了存储和查询的复杂性。
  • 高效存储:Loki使用压缩和切片技术来存储日志数据,以减少存储空间的占用。
  • 实时查询:Loki支持实时查询,可以快速检索和过滤日志数据。
  • 简化部署:Loki可以与Prometheus和Grafana无缝集成,使得部署和管理变得更加简单。

2、Loki架构及概念

Loki 由以下3个部分组成:
loki是主服务器,负责存储日志和处理查询。
promtail是代理,负责收集日志并将其发送给 loki 。
Grafana用于 UI 展示。
在这里插入图片描述

3、安装部署

方式一: 官网安装指导
方式二:基于官网配置文件改动
核心配置文件:loki-config.yaml/promtail-config.yaml/docker-compose.yaml

# 目录结构-config/|-loki-config.yaml|-promtail-local-config.yaml
|-docker-compose.yaml
|-loki/|-index/|-chunks/
|-grafana/

3.1 promtail安装配置

1)安装

$ curl -O -L "https://github.com/grafana/loki/releases/download/v2.8.4/promtail-linux-arm64.zip"
# extract the binary
$ unzip "promtail-linux-arm64.zip"
# make sure it is executable
$ chmod a+x "promtail-linux-arm64"
# 启动 promtail
cd /data/promtail
nohup ./promtail-linux-amd64 --config.file=promtail-local-config.yaml &

2)配置文件:promtail-local-config.yaml

# Promtail 配置文件
server:http_listen_port: 9080  # 监听端口
positions:filename: /tmp/positions.yaml  # 位置文件路径
clients:- url: http://loki:3100/loki/api/v1/push  # Loki 服务器的地址
scrape_configs:- job_name: app-log  # 作业名称static_configs:- targets:- localhost  # 目标地址,可以是主机名或IP地址labels:job: {application}-logs  # 标签,用于过滤和标识日志来源project: oahost: xxx.xx.xx.xx__path__: /data/app/{application}/logs/*.log  # 日志文件路径,支持通配符- job_name: {job-task}  # 作业名称static_configs:- targets:- localhost  # 目标地址,可以是主机名或IP地址labels:job: {application}-logs  # 标签,用于过滤和标识日志来源host: xxx.xx.xx.xx__path__: /data/{job-task}/*.log  # 日志文件路径,支持通配符

3.2 Docker-compose安装Loki&Grafana

1)docker-compose.yaml

# 适用于loki + grafana部署,排除掉promtail
version: "3"
networks:loki:services:loki:image: grafana/loki:2.8.3container_name: loki# no,默认策略,在容器退出时不重启容器# always,在容器退出时总是重启容器# unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器# restart: unless-stoppedports:- "3100:3100"volumes:- ./loki-config.yaml:/etc/loki/local-config.yaml # 将主机上的loki-config.yaml文件挂载到容器的/etc/loki/local-config.yaml文件- ./loki/index:/opt/loki/index # 将主机上的index目录挂载到容器的/opt/loki/index目录,用于存储Loki的数据- ./loki/chunks:/opt/loki/chunks # 将主机上的chunks目录挂载到容器的/opt/loki/chunks目录,用于存储Loki的数据command: -config.file=/etc/loki/local-config.yamlnetworks:- lokigrafana:environment:- GF_PATHS_PROVISIONING=/etc/grafana/provisioning- GF_SECURITY_ADMIN_PASSWORD=xxxx- GF_USERS_ALLOW_SIGN_UP=false#     - GF_AUTH_ANONYMOUS_ENABLED=true#     - GF_AUTH_ANONYMOUS_ORG_ROLE=Adminentrypoint:- sh- -euc- |mkdir -p /etc/grafana/provisioning/datasourcescat <<EOF > /etc/grafana/provisioning/datasources/ds.yamlapiVersion: 1datasources:- name: Lokitype: lokiaccess: proxy orgId: 1url: http://loki:3100basicAuth: falseisDefault: trueversion: 1editable: falseEOF/run.shimage: grafana/grafana:latestcontainer_name: grafanarestart: unless-stoppedports:- "3000:3000"volumes:- ./grafana:/var/lib/grafana networks:- loki

2)loki-config.yaml

#loki-config.yaml
auth_enabled: false # 是否启用身份验证
server:http_listen_port: 3100 # 监听端口common:path_prefix: /lokistorage:filesystem:chunks_directory: /loki/chunksrules_directory: /loki/rulesreplication_factor: 1 # 复制因子ring:kvstore:store: inmemory # 键值存储方式schema_config:configs:- from: 2020-10-24store: boltdb-shipper # 存储方式object_store: filesystemschema: v11index:prefix: index_ # 索引前缀period: 24h    # 索引周期
table_manager:retention_deletes_enabled: false #日志保留周期开关,默认为falseretention_period: 0s  #日志保留周期ruler:alertmanager_url: http://localhost:9093

3)使用docker-compose启动

$ docker-compose up -d

官网地址:https://grafana.com/docs/loki/v2.8.x/installation/local/

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

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

相关文章

肖sir__linux详解__003(vim命令)

linux 文本编辑命令 作用&#xff1a;用于编辑一个文件 用法&#xff1a;vim 文件名称 或者vi &#xff08;1&#xff09;编辑一个存在的文档 例子&#xff1a;编辑一个file1文件 vim aa &#xff08;2&#xff09;编辑一个文件不存在&#xff0c;会先创建文件&#xff0c;再…

lv3 嵌入式开发-3 linux shell命令(权限、输入输出)

1 Shell概述 随着各式Linux系统的图形化程度的不断提高&#xff0c;用户在桌面环境下&#xff0c;通过点击、拖拽等操作就可以完成大部分的工作。 然而&#xff0c;许多Ubuntu Linux功能使用shell命令来实现&#xff0c;要比使用图形界面交互&#xff0c;完成的更快、更直接。…

小兔鲜商02

npm i vueuse/core -fvue插件使用&#xff1a; 许多公用的全局组件&#xff0c;&#xff0c;可以通过插件注册进去&#xff0c;就不用一个一个导入组件&#xff0c;&#xff0c; import XtxSkeleton from /components/library/xtx-skeletonexport default {install (app) {// …

安装配置mariadb

记录下安装配置mariadb的经历。 环境&#xff1a;ubuntu22 一、apt在线安装 apt代理配置 APT是Ubuntu系统中用于安装和升级软件包的工具&#xff0c;如果本地没有可用的软件包&#xff0c;APT将会连接到远程软件包服务器下载软件包。在某些情况下&#xff0c;用户需要将APT的…

已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件报错

本文摘要&#xff1a;本文已解决‘jupyter‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的相关报错问题&#xff0c;并系统性地总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲…

图:有向无环图(DAG)

1.有向无环图的定义 有向无环图:若一个有向图中不存在环&#xff0c;则称为有向无环图。 简称DAG图(Directed Acyclic Graph) 顶点中不可能出现重复的操作数。 2.有向无环图的应用 1.描述算数表达式 用有向无环图描述算术表达式。 解题步骤&#xff1a; 把各个操作数不重…

Linux查看目录下文件及其大小

ls -lh在Linux下&#xff0c;"ls -lh"是一个用于显示文件和目录详细信息的命令。它会列出当前目录中的文件和目录&#xff0c;并显示它们的文件大小和权限等详细信息。 其中&#xff0c;参数"-l"是用来显示详细信息的选项&#xff0c;"h"表示以…

【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )

文章目录 一、NavigationUI 类简介二、NavigationUI 类使用流程1、创建 Fragment2、创建 NavigationGraph3、Activity 导入 NavHostFragment4、创建菜单5、Activity 界面开发 NavigationUI 的主要逻辑 ( 重点 )a、添加 Fragment 布局b、处理 Navigation 导航逻辑 ( 重点 )c、启…

视频汇聚/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

【C51 GPIO的原理和内部结构】

51单片机项目基础篇 中篇&#xff1a;介绍GPIO1、认识GPIO2、GPIO 结构框图与工作原理2.1、P0端口结构框图与工作原理2.1.1、剖析组成 P0 口的每个单元的作用2.1.2、 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程 2.2、P1 端口结构框图与工作原理2.3、P2 端口结构框图…

多应用模式下,忽略项目的入口文件,重写Apache规则

多应用模式下&#xff0c;忽略项目的入口文件&#xff0c;重写Apache规则 首先&#xff0c;我的项目是具有两个应用&#xff0c;admin和index,同时给它们绑定了域名&#xff0c;但是每次访问时都需要加入项目的入口文件地址 index.php ,为了忽略这个入口文件&#xff0c;只能通…

spring多个aop切面之间的顺序

概述 业务中通常会定义多个注解来进行切面&#xff0c;那么当一个方法有多个注解的时候&#xff0c;此时这些切面是以什么顺序来执行的呢。 spring的aop切面有点像鸡蛋的层次 最外面的切面包裹着里面的切面 捞个网图 排序实现 既然是属于spring的&#xff0c;那用的肯定是…