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

2024-03-09 01:28

本文主要是介绍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. 后续继续研究多目录收集以及多机器日志收集,踩了坑再继续复盘。

这篇关于Docker上部署LPG(loki+promtail+grafana)踩坑复盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789095

相关文章

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署

deepseek本地部署使用步骤详解

《deepseek本地部署使用步骤详解》DeepSeek是一个开源的深度学习模型,支持自然语言处理和推荐系统,本地部署步骤包括克隆仓库、创建虚拟环境、安装依赖、配置模型和数据、启动服务、调试与优化以及... 目录环境要求部署步骤1. 克隆 DeepSeek 仓库2. 创建虚拟环境3. 安装依赖4. 配置模型

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像