Docker上部署LPG(loki+promtail+grafana)踩坑复盘

Docker上部署LPG(loki+promtail+grafana)踩坑复盘

  • 声明
  • 网上配置
  • 部署踩坑

声明

参考掘金文章:https://juejin.cn/post/7008424451704356872
版本高的用docker compose命令,版本低的用docker-compose

按照文章描述,主要准备loki、promtail、docker-compose文件,修改其中部分配置,得到如下文件:

在这里插入图片描述

网上配置

  1. loki.yml不用修改:

    auth_enabled: falseserver:http_listen_port: 3100ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 1h    # 此时没有接收到新日志的任何块都将被刷新max_chunk_age: 1h      # 所有的块将刷新时,他们达到这个年龄,默认是1hchunk_target_size: 1048576 # Loki将尝试构建最大为1.5MB的块,如果先达到chunk_idle_period或max_chunk_age,则首先刷新chunk_retain_period: 30s  # 如果使用索引缓存,必须大于索引读缓存TTL(默认索引读缓存TTL为5m)max_transfer_retries: 0   # 块传输禁用schema_config:configs:- from: 2021-9-8store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24hstorage_config:boltdb_shipper:active_index_directory: /loki/boltdb-shipper-activecache_location: /loki/boltdb-shipper-cachecache_ttl: 24h     # 可以在更长的查询周期内提高更快的性能,使用更多的磁盘空间shared_store: filesystemfilesystem:directory: /loki/chunkscompactor:working_directory: /loki/boltdb-shipper-compactorshared_store: filesystemlimits_config:reject_old_samples: truereject_old_samples_max_age: 168hchunk_store_config:max_look_back_period: 0stable_manager:retention_deletes_enabled: falseretention_period: 0sruler:storage:type: locallocal:directory: /loki/rulesrule_path: /loki/rules-tempalertmanager_url: http://localhost:9093ring:kvstore:store: inmemoryenable_api: true
    
  2. promtail.yml不用修改:

    server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://loki:3100/loki/api/v1/pushscrape_configs:- job_name: systemstatic_configs:- targets:- localhostlabels:job: varlogs__path__: /var/log/*log
    
  3. docker-compose.yml修改service挂载部分:

    version: "3"services:# 日志存储和解析loki:image: grafana/lokicontainer_name: lpg-lokivolumes:- /opt/docker/loki/:/etc/loki/# 修改loki默认配置文件路径command: -config.file=/etc/loki/loki.ymlports:- 3100:3100# 日志收集器promtail:image: grafana/promtailcontainer_name: lpg-promtailvolumes:# 将需要收集的日志所在目录挂载到promtail容器中- /opt/logs/health-center/:/var/log/- /opt/docker/promtail:/etc/promtail/# 修改promtail默认配置文件路径command: -config.file=/etc/promtail/promtail.yml# 日志可视化grafana:image: grafana/grafanacontainer_name: lpg-grafanaports:- 3000:3000
    
  4. 我的目录结构
    在这里插入图片描述

部署踩坑

  1. cd到docker-compose.yml目录下,后台运行docker compose up -d,第一次拉取镜像较久

    踩坑过程中我注意到直接后台运行然后用logs命令来看日志会更好一些

  2. 完事之后先来几个命令校验:

    docker compose ps,发现只有promtail是运行的

    在这里插入图片描述

    docker compose logs loki,看一下loki日志,提到日期解析异常的问题:

    在这里插入图片描述

    经过一顿gpt,发现是loki配置中的日期没有按照yyyy-MM-dd的格式,于是修改loki配置

    schema_config:configs:- from: 2021-09-08store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24h
    

    完事后先docker compose stop停下来,再重跑一次,然后查看进程,发现,还是loki起不来
    查看日志,这次是这样:

    在这里插入图片描述

    一顿gpt后他说可能是什么目录权限问题,不过网上找到更简便的方式,只需要在loki中添加一句(wal)

    ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 1h    # 此时没有接收到新日志的任何块都将被刷新max_chunk_age: 1h      # 所有的块将刷新时,他们达到这个年龄,默认是1hchunk_target_size: 1048576 # Loki将尝试构建最大为1.5MB的块,如果先达到chunk_idle_period或max_chunk_age,则首先刷新chunk_retain_period: 30s  # 如果使用索引缓存,必须大于索引读缓存TTL(默认索引读缓存TTL为5m)max_transfer_retries: 0   # 块传输禁用wal:dir: /loki/.cache/loki/wal/
    

    还是重来一次,暂停,启动,检查进程,这次可以了。
    在这里插入图片描述

  3. 后续就是上grafana配置loki了。

    配置的时候也遇到一个大坑了,就是保存测试的时候提示:Data source connected, but no labels received. Verify that Loki and Promtail is configured properly.

    在这里插入图片描述

    之后一顿搜索,看了github一篇又一篇,检查日志没有问题,检查挂载路径没有问题,3100端口也正常访问。最后在网上看到说加点日志就解决了,果然,在promtail放日志的目录下添加新的日志,再test,就检测到了。

    在这里插入图片描述

  4. 后续继续研究多目录收集以及多机器日志收集,踩了坑再继续复盘。

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

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

相关文章

Windows下PostgreSQL安装教程

一、下载 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

计网(复习)黑书

1.整体概述 1.1 什么是Internet 从构成角度: 节点:主机端系统,及其运行的应用程序;路由器、交换机等网络交换设备 边:通信链路(同轴电缆、光纤、无线电、卫星;传输速度带宽(bps&am…

操作系统:进程优先级

目录 1.进程优先级 1.1.基本概念 1.2.其他概念 1.3.进程切换 2.解读Linux2.6内核进程的调度队列 1.进程优先级 1.1.基本概念 我们在日常生活中的经验,排队的本质就是确认优先级,排队的原因就是资源不足,需要进行分配。那么在内存资源有…

【论文速读】 | DeGPT:通过大语言模型优化反编译器输出

本次分享论文为:DeGPT: Optimizing Decompiler Output with LLM 基本信息 原文作者:Peiwei Hu, Ruigang Liang, Kai Chen 作者单位:中国科学院信息工程研究所;中国科学院大学网络空间安全学院 关键词:反向工程&…

Linux——进程信号(一)

目录 1、信号入门 1.1、技术应用角度的信号 1.2、注意 1.3、信号概念 1.4、用kill -l命令可以查看系统定义的信号列表 1.5、信号处理常见方式概览 2、产生信号 2.1通过终端按键产生信号 Core Dump 2.2、调用系统函数向进程发信号 2.3、由软条件产生信号 3、总结思考…

尚硅谷JavaScript高级学习笔记

01 准备 JavaScript中函数是对象。我们后续描述构造函数的内存模型时,会将构造函数称为构造函数对象。 02 数据类型 typeof 运算符来查看值的类型,它返回的是类型的字符串值 会做数据转换 03 相关问题 04数据_变量_内存 05相关问题1 06相关问题2 …

Typescript 哲学 morn on funtion

函数重载 overload 有一些编程语言(eg:java)允许不同的函数参数,对应不同的函数实现。但是,JavaScript 函数只能有一个实现,必须在这个实现当中,处理不同的参数。因此,函数体内部就…

2024蓝桥杯每日一题(前缀和)

一、第一题:壁画 解题思路:前缀和贪心枚举 仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和 【Python程序代码】 import math T int(input()) for _ in range(1,1T):n int(input())s input()l math.ceil(len(s)/…

人工智能在日常生活中的应用

在我们的日常生活中,人工智能已经成为一种无处不在的力量,从智能家居到在线助手,再到高度个性化的服务和推荐,它无声地改变着我们的生活方式和习惯。随着技术的不断进步和普及,人工智能正以前所未有的速度和规模渗透到…

JVM-垃圾收集器G1

G1垃圾回收器 概述: 是一款面向服务器的垃圾收集器,主要针对配备多个处理器及大容量内存的机器. 以极高效率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1保留了年轻代和老年代的概念,但不再是物理隔阂了,它们都是(可以不连…

在别的地方下载的二次封装Windows镜像怎么安装?GHO镜像详细安装教程

前言 在系统之家或者其他地方下载的镜像文件怎么装到电脑上? 首先要知道系统之家下载的Windows镜像文件基本上都是.iso结尾的,要进入到对应镜像包才能看出系统镜像是什么格式。 如何分辨镜像的格式 选择对应的.iso镜像,点击【鼠标右键】-【装…

《UE5_C++多人TPS完整教程》学习笔记26 ——《P27 在线会话测试(Testing An Online Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P27 在线会话测试(Testing An Online Session)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&#xff0…

【OJ比赛日历】快周末了,不来一场比赛吗? #03.09-03.15 #13场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2024-03-09(周六) #6场比赛2024-03-10…

Python笔记|基础算数运算+数字类型(1)

重新整理记录一下python的基础知识 基础运算符 、-、*、/ ;括号 ()用来分组。 >>>2 2 4 >>>50 - 5*6 20 >>>(50 - 5*6) / 4 5.0 >>>8 / 5 1.6向下取整除法:向下舍入到最接近的整数的数学除法。运算符是 //。比如1…

【趣味项目】2048 简单实现

【趣味项目】2048 简单实现 算法原理 假设用一个二维矩阵表示 2048 页面,操作是左滑 const matrix [[2, 2, 4, 0],[0, 2, 4, 0],[0, 2, 2, 0],[2, 4, 4, 8] ];将所有非空的数字向左移动 matrix [[2, 2, 4, 0],[2, 4, 0, 0],[2, 2, 0, 0],[2, 4, 4, 8] ]将相邻的…

自动化工程师涨薪难,原因出在这里

大家好,今天说说真实的工控行业,摒弃虚无的鸡汤,聊点实在的。 举个例子,某工做销售,卖电控器件,眼见PLC收入可观,开始感到压力。于是,他下定决心学PLC,报了培训班。毕业后…

手写简易操作系统(一)--环境配置

本专栏是我新开设的一个学术专栏,旨在全面介绍手写操作系统的相关内容。其中包括实模式向保护模式的过渡、锁机制、信号量操作、内存分配、硬盘驱动、文件系统、简单shell和管道等操作系统核心知识。该专栏旨在为有意开发自己操作系统的研究人员提供指导与帮助。作为…

昏暗场景增强-低照度增强-弱光增强(附代码)

引言 随着现代科技的发展,图像采集设备已经渗透到生活的方方面面,然而在昏暗场景、低照度或弱光条件下,图像的质量往往受到严重影响,表现为亮度不足、对比度低下、色彩失真以及细节丢失等问题。这类图像对于人眼识别和计算机视觉…

【NR技术】 3GPP支持无人机的关键技术以及场景

1 背景 人们对使用蜂窝连接来支持无人机系统(UAS)的兴趣浓厚,3GPP生态系统为UAS的运行提供了极好的好处。无处不在的覆盖范围、高可靠性和QoS、强大的安全性和无缝移动性是支持UAS指挥和控制功能的关键因素。与此同时,监管机构正在调查安全和性能标准以及…

C++进阶之路---继承(二)

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、继承与友元 友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员。 class Student; class Per…