轻量级日志管理平台:Grafana Loki搭建及应用(详细篇)

前言

Grafana Loki是Grafana Lab团队提供的一个水平可扩展、高可用性、多租户的日志聚合系统,与其他日志系统不同的是,Loki最初设计的理念是为了为日志建立标签索引,而非将原日志内容进行索引。

现在目前成熟的方案基本上都是:Logstash + Elasticsearch + Kibana (LEK),但是LEK对资源要求比较高,少了8H8G用起来都是一卡一卡的,所以我们可以转向比较轻量的方案 Promtail + Loki + Grafana (PLG),本文就介绍PLG这种方案,可以对接各种云存储,比如Minio、S3、COS、OSS等等。

介绍

Grafana Loki

官方:Grafana Loki OSS | Log aggregation system

开源地址:GitHub - grafana/loki: Like Prometheus, but for logs.

Loki 是一个日志聚合系统,旨在存储和查询来自所有应用程序和基础设施的日志。

Grafana

官方:Grafana | Query, visualize, alerting observability platform

开源地址:GitHub - grafana/grafana: The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

一个监控面板,查询、可视化、警报和理解您的数据,无论数据存储在何处。借助 Grafana,您可以通过美观、灵活的仪表板创建、探索和共享所有数据。

Promtail

Promtail 是一个代理,它将本地日志的内容发送到私有 Grafana Loki 。它通常部署到运行需要监视的应用程序的每台计算机。

开始部署

推荐配置2H4G比较丝滑。

参考官方部署手册:Quickstart to run Loki locally | Grafana Loki documentation

官方docker-compose快速部署架构图有下面这些组件:使用的最新版本3.1.x

轻量级日志管理平台Grafana Loki搭建及应用

flog :生成日志行。 flog是常见日志格式的日志生成器。

Grafana Alloy :从 flog 中刮取原木线,并通过网关将它们推送给 Loki。

网关(nginx),接收请求并根据请求的 URL 将它们重定向到适当的容器。

Loki 读取组件:运行查询前端和查询器。

Loki 写入组件:运行分发器和接收器。

Loki 后端组件:运行 Index Gateway、Compactor、Ruler、Bloom Compactor(实验性)和 Bloom Gateway(实验性)。

Minio :Loki 用它来存储索引和块。

Grafana :提供 Loki 中捕获的日志行的可视化。

上面官方采用的是读写分离以及minio存储后端,启动的组件比较多,本人调整了成单节点部署测试,想初步体验的可以使用我下面的 docker-compose.yaml 快速部署。

version: "3"networks:loki:services:
# minio对象存储minio:image: minio/minioentrypoint:- sh- -euc- |mkdir -p /data/loki-data && \mkdir -p /data/loki-ruler && \minio server --console-address ':9001' /dataenvironment:- MINIO_ROOT_USER=lcry- MINIO_ROOT_PASSWORD=www.51it.wang- MINIO_PROMETHEUS_AUTH_TYPE=public- MINIO_UPDATE=offports:- 19000:9000- 19001:9001volumes:- ./minio-data:/datahealthcheck:test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]interval: 15stimeout: 20sretries: 5networks:- loki
# grafana面板grafana:image: grafana:latestenvironment:- GF_SECURITY_ADMIN_PASSWORD=www.51it.wangentrypoint:- sh- -euc- |mkdir -p /etc/grafana/provisioning/datasourcescat <<EOF > /etc/grafana/provisioning/datasources/ds.yamlapiVersion: 1datasources:- name: Lokitype: lokiaccess: proxyurl: http://backend:3100jsonData:httpHeaderName1: "X-Scope-OrgID"secureJsonData:httpHeaderValue1: "tenant-lcry"EOF/run.shports:- "3000:3000"healthcheck:test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1" ]interval: 10stimeout: 5sretries: 5networks:- loki# loki后端服务backend:image: grafana/loki:3.1.1depends_on:- miniovolumes:- ./loki-config.yaml:/etc/loki/config.yamlports:- "3100:3100"- "7946"- "9095"command: "-config.file=/etc/loki/config.yaml -target=all"healthcheck:test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]interval: 10stimeout: 5sretries: 5networks:- loki# 采集promtail:image:promtail:3.1.1depends_on:- backendvolumes:- ./log:/var/log- ./promtail-config.yaml:/etc/promtail/config.yamlcommand: -config.file=/etc/promtail/config.yamlnetworks:- loki

loki-config.yaml 配置文件:

auth_enabled: false
server:http_listen_address: 0.0.0.0http_listen_port: 3100memberlist:join_members: ["backend"]dead_node_reclaim_time: 30sgossip_to_dead_nodes_time: 15sleft_ingesters_timeout: 30sbind_addr: ['0.0.0.0']bind_port: 7946gossip_interval: 2sschema_config:configs:- from: 2021-08-01store: tsdbobject_store: s3schema: v13index:prefix: index_period: 24h
common:path_prefix: /lokireplication_factor: 1compactor_address: http://backend:3100storage:s3:endpoint: minio:9000insecure: truebucketnames: loki-dataaccess_key_id: lcrysecret_access_key: www.51it.wangs3forcepathstyle: truering:kvstore:store: memberlist
ruler:storage:s3:bucketnames: loki-rulercompactor:working_directory: /tmp/compactor

promtail-config.yaml 配置文件:

server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://backend:3100/loki/api/v1/pushscrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels:job: varlogs__path__: /var/log/*log

然后执行命令:docker-compose up -d 运行

随后访问Grafana UI :http://服务器地址:3000/,账号:admin,密码:admin

Loki作为一个活跃的开源项目,持续地接受着来自全球开发者社区的贡献和维护,确保了它能够适应不断变化的云原生环境需求。对于那些寻求高效、经济的日志管理解决方案的开发团队和企业来说,Loki是一个值得深入探索的强大工具。

默认已经在配置文件中加入了loki数据源,直接点击测试是否可用:

轻量级日志管理平台Grafana Loki搭建及应用

直接预览日志,搜索自己手动添加的测试日志,没问题搭建完成。

轻量级日志管理平台Grafana Loki搭建及应用

物理部署protmail

若你需要采集其他机器上的日志,那么你只需要安装采集组件protmail,docker版本在上面已经演示过了,下面演示使用物理部署。

首先到loki发布版本这里下载对应操作系统的安装包:Releases · grafana/loki · GitHub

新建配置文件promtail-config.yaml

server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://服务端IP:3100/loki/api/v1/pushscrape_configs:- job_name: service-logstatic_configs:- targets:- xxx.xxx.xxx.xxxlabels:job: varlogs__path__: /var/log/*log

编写启停脚本:ubuntu为例

start.sh

#!/bin/bash
nohup ./promtail-linux-amd64 -config.file=./promtail-config.yaml > ./server.log 2>&1 &
echo "$!" > pid

stop.sh

#!/bin/bash
kill -9 `cat pid`
echo "关闭成功!"

执行启动 ./start.sh

查看日志 tail -300f server.log ,无报错,观察Grafana UI日志已经能看到了则成功

更多protmail配置可参考链接:Promtail agent | Grafana Loki documentation

资源占用

最后我们来看下轻量级的Promtail + Loki + Grafana + Minio 整个容器占用的内存大小。

轻量级日志管理平台Grafana Loki搭建及应用

总共加起来300MB不到,相当的丝滑,若你只是需要收集一些自己折腾玩的服务日志太合适不过了。

总结

本文通过对比不同的日志平台,最终实战搭建了Promtail + Loki + Grafana + Minio,实打实的可以用于生产,但是要注意生产环境的HA部署以及参考官方文档进行优化,比如不同租户的请求速度频率的限制大小,日志的保留时长,最大上传的日志大小等等配置,希望本文对大家有所帮助。

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

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

相关文章

el-table行合并及合并后序号处理

效果图 <el-tableclass"ncky-detail-table"v-loading"tableLoading"border:data"tableDataVo":span-method"objectSpanMethod"row-key"uniqueFlag":row-class-name"tablerowclassname"><el-table-column…

vue-echarts高度缩小时autoresize失效

背景 项目中采用动态给x-vue-echarts style赋值width&#xff0c;height的方式实现echarts图表尺寸的改变 <v-chart...autoresize></v-chart>给v-chart添加autoresize后&#xff0c;在图表宽度变化&#xff0c;高度增加时无异常&#xff0c;高度减小时图表并未缩…

厦门凯酷全科技有限公司正规吗靠谱吗?

随着短视频和直播电商的迅猛发展&#xff0c;越来越多的企业开始将目光投向抖音这一平台。作为国内领先的短视频社交平台&#xff0c;抖音凭借其庞大的用户基础和强大的算法推荐系统&#xff0c;成为众多品牌拓展市场、提升销售的重要渠道。厦门凯酷全科技有限公司&#xff08;…

WireShark 下载、安装和使用

1、下载 官网下载太慢&#xff0c;本人另外提供下载地址【下载WireShark】 2、安装 全部默认下一步即可&#xff0c;但如下图所示的这一步值得拿出来说一下。这一步是要你安装Npcap&#xff0c;但是你的电脑如果已经安装了WinPcap&#xff0c;那么可以选择不再安装Npcap。Npca…

电子应用设计方案-50:智能牙刷系统方案设计

智能牙刷系统方案设计 一、引言 随着人们对口腔健康的重视程度不断提高&#xff0c;智能牙刷作为一种创新的口腔护理工具&#xff0c;能够更有效地帮助用户改善刷牙习惯和清洁效果。本方案旨在设计一款功能丰富、智能化程度高的智能牙刷系统。 二、系统概述 1. 系统目标 - 准…

第九篇:k8s 通过helm发布应用

什么是helm&#xff1f; Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包&#xff0c;类似的&#xff0c;在K8s中我们可以使用helm来管理资源对象&#xff08;Deployment、Service、Ingress…

【CSS in Depth 2 精译_072】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(上):究竟该用 em 还是 px

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 ✔️ 12.1.1 使用 em 还是 px ✔️12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 文章目录 第 12 章 排版与间距…

el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点

一、懒加载的tree已经全部展开&#xff0c;外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…

【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功

项目场景&#xff1a; 使用MAC电脑&#xff0c;以子账号&#xff08;非root&#xff09;的形式登录&#xff0c;连接堡垒机CLB&#xff08;传统型负载均衡&#xff09;&#xff0c;使用FileZilla&#xff08;SFTP&#xff09;进行FTP文件传输。 问题描述&#xff1a; MAC电脑…

狗为啥会咬自己的尾巴

狗啃咬自己的尾巴&#xff0c;这一现象并非简单的好奇或贪玩之举&#xff0c;其背后可能隐藏着诸多复杂的原因&#xff0c;值得我们深入探究与深思。 从生理层面来看&#xff0c;尾巴部位出现皮肤疾病、寄生虫感染或受伤疼痛是常见诱因。例如&#xff0c;湿疹、跳蚤、蜱虫等问…

【数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序实现顺序栈的基本运算。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 初始化栈、销毁栈、判断栈是否为空、进栈、出栈、取…

Codeforces Round 992 (Div. 2)

传送门&#xff1a;Dashboard - Codeforces Round 992 (Div. 2) - Codeforces A. Game of Division 思路&#xff1a;模拟 AC代码&#xff1a;Submission #295676347 - Codeforces B. Paint a Strip 思路&#xff1a;数学 贪心 放置的位置一定是 1 4 10 22 48 ....…

前端(五)css属性

css属性 文章目录 css属性一、字体属性二、文本属性三、背景属性四、盒子模型 一、字体属性 font-weight&#xff1a;文字粗细&#xff0c;在100到900之间&#xff0c;normal(400),bord(700),inherit(继承父类) font-style&#xff1a;文字风格&#xff0c;normal表示正常(默认…

Linux网络之“桥接模式”和“NAT模式”配置

介绍虚拟机的“桥接模式”和“NAT模式”配置。 1、“桥接模式”介绍 “桥接模式”将虚拟机的虚拟网络适配器与主机的“物理网络适配器”进行交接&#xff0c;虚拟机中的“虚拟网络适配器”通过主机中的“物理网络适配器”访问外部网络。物理主机的网卡好比是一个“虚拟的交换机…

shell编程(完结)

shell编程&#xff08;完结&#xff09; 声明&#xff01; 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其…

爬虫自动化之drissionpage+SwitchyOmega实现随时切换代理ip

本文介绍了如何使用DrizzlePage进行爬虫自动化,并重点讲解了首次启动时设置代理IP以及通过SwitchyOmega插件实现随时切换代理IP的方法。 安装一次,后面调用就不会再去安装了 下载地址:https://github.com/FelisCatus/SwitchyOmega/releases 这两个文件随便那个都可以,下载…

Ariba Procurement: Administration_Integration Basics

Ariba Procurement: Administration_Integration Basics SAP Ariba 和SAP ERP 的主数据集成 对于主数据,CIG 仅仅做数据传输,在CIG系统里无任何转换逻辑。在CIG中,不需要给主数据创建项目。SAP中以所需的文件格式或模式提取主数据(MD)。文件格式为CSV。然后,所有文件都…

HDOJ 1735:字数统计 ← 贪心

【题目来源】https://acm.hdu.edu.cn/showproblem.php?pid1735【题目描述】 一天&#xff0c;淘气的 Tom 不小心将水泼到了他哥哥 Jerry 刚完成的作文上。原本崭新的作文纸顿时变得皱巴巴的&#xff0c;更糟糕的是由于水的关系&#xff0c;许多字都看不清了。可怜的 Tom 知道他…

解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题

解决创建laravel项目&#xff0c;使用国外镜像超时&#xff0c;国内镜像缺包的问题 一、前言二、切换镜像三、创建最新版本四、创建指定版本 一、前言 最近想下载 laravel 框架看看&#xff0c;但也遇到了些麻烦&#xff0c;这里做个记录。 二、切换镜像 先查看镜像源&#…

图片添加水印的实验原理,实验代码,实验现象

一、图片添加水印的实验原理 1. 选择水印类型 可见水印&#xff1a;这些水印可以直接被肉眼看到&#xff0c;通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式&#xff0c;并且放置在图像的显著位置。不可见水印&#xff1a;这类水印不容易被察觉&#xff0c;但…