Docker 部署loki日志 用于微服务

因为每次去查看日志都去登录服务器去查询相关日志文件,还有不同的微服务,不同日期的文件夹,超级麻烦,因为之前用过ELK,原本打算用ELK,在做技术调研的时候发现了一个轻量级的日志系统Loki,果断采用Loki部署。也算是踩了不少坑。这里做一篇博客记录一下。

我这里是单个服务器系统部署,如果是多个服务器的话,修改链接配置即可。

主要是分为三个部分:

1、loki,主服务器,存储日志和处理查询

2、promtail,代理,收集日志并发给Loki

3、Grafana,查询和显示日志

我的服务器是 linux ubuntu系统。这是我部署的目录结构

Linux常用的文件命令一定要记住,下面是创建目录

//切换到你想部署的目录
cd /usr/local/docker//创建需要的文件
mkdir lokis
cd lokis
mkdir grafana
mkdir loki
mkdir promtail
cd grafana
mkdir confcd ..
cd promtail
mkdir conf// 给文件付权限  否则挂载目录生成会失败
sudo chmod -R 777 /usr/local/docker/lokis
第一步  编辑loki的配置文件  :我放到了 /usr/local/docker/lokis/loki/conf  目录下

vim config.yaml

文件内容如下:

auth_enabled: falseserver:http_listen_port: 3100grpc_listen_port: 9095grpc_server_max_recv_msg_size: 1572864000 #grpc最大接收消息值,默认4mgrpc_server_max_send_msg_size: 1572864000 #grpc最大发送消息值,默认4mingester:lifecycler:address: 127.0.0.1 #绑定本机 ipring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30swal:dir: /loki/walcompactor:working_directory: /loki/persistent      # 压缩目录,一般也作为持久化目录compaction_interval: 10m                 # 压缩间隔retention_enabled: true                  # 持久化开启retention_delete_delay: 5m               # 过期后多久删除retention_delete_worker_count: 150       # 过期删除协程数目
schema_config:configs:- from: "2023-10-23"index:period: 24hprefix: loki_index_object_store: filesystem          # 持久化方式:本地文件schema: v11store: boltdb-shipperstorage_config:boltdb_shipper:active_index_directory: /loki/boltdb-index    # index 目录cache_location: /loki/boltdb-cache            # cache 目录filesystem:directory: /loki/chunks                       # chunks 目录
limits_config:retention_period: 240h                              # 多久过期

第二步:编辑promtail 配置文件:

vim promtail-config.yaml

文件内容如下:

server:http_listen_port: 9080 #云服务器需开放9080端口grpc_listen_port: 0positions:filename: /tmp/positions.yaml#loki地址
clients:- url: http://loki:3100/loki/api/v1/push
#我名词定义是 ”环境-服务-文件/容器“
scrape_configs:
- job_name: test-systemserver-filestatic_configs:- targets:- localhostlabels:client: test                          #自定义变量 定义环境job: system-file                     #变量定义类型__path__: /data/server/system/logs/**/*.log  #收集程序输出的日志 ,日志目录和dokcer-compose挂载相关  /**/- job_name: test-geteway-filestatic_configs:- targets:- localhostlabels:client: devjob: geteway-file__path__: /data/server/gateway/logs/**/*.log    # 日志目录和dokcer-compose挂载相关  /**/

这里有两个需要注意的地方:

  - url: http://loki:3100/loki/api/v1/push

这个地址是你采集日志后发送给loki的网络地址, 如果不同的服务器则采用Ip地址访问,如果同一台服务器可以用127.0.0.1 发送。如果是docker 部署并且在同一个网关内,可以采用容器名通信。如果不理解的可以查一下docker 部署容器直接通信

第二个需要注意的地方是

__path__: /data/server/system/logs/**/*.log

这个日志目录是你部署promtail的时候挂载出来的目录。因为我的微服务日志目录还有日期文件夹所以结尾是__path__: /data/server/system/logs/**/*.log

如果里面没有日期文件夹,直接对应的是日志文件:

__path__: /data/server/system/logs/*.log

其实就是文件的匹配规则。

第三步:获取Grafana的配置文件 defaults.ini

这里不同的版本配置文件不同。有的配置文件是:grafana.ini 有的配置文件是:defaults.ini

你可以先用docker 安装Grafana

然后通过docker命令:

docker exec -it <container_id_or_name> /bin/bash (修改自己的容器名)

查看一下grafana配置文件都有啥,然後通过docker复制文件到宿主机

docker cp abc123:/app/data.txt /home/user/data/ (修改目录和文件路径)

我的目录是这样的。

其他的文件是启动后自动生成的。

第四步:编辑docker-compose.yml文件

创建文件命令:

vim docker-compose.yml

文件内容如下:

version: '3'
services: #数据库loki:image: grafana/loki:latestcontainer_name: lokiports:- "3100:3100"- "9095:9095"command: -config.file=/etc/loki/config.yamlvolumes:- ./loki/conf:/etc/loki- ./loki/data/loki:/loki#收集promtail:image: grafana/promtailcontainer_name: promtailrestart: alwaysports:- 9080:9080volumes:- ./promtail/promtail-config.yaml:/opt/promtail-config.yaml- /usr/local/docker/javaapp/fxt-system/logs/fxt-sys-server_10201/:/data/server/system/logs/     - /usr/local/docker/javaapp/fxt-gateway/logs/fxt-gateway-center_10001/:/data/server/gateway/logs/   - /etc/localtime:/etc/localtime:roprivileged: true           #不开报错deploy:resources:limits:memory: 2Greservations:memory: 200Mlogging:driver: json-fileoptions:max-size: "200m"max-file: "4"command: ["-config.file=/opt/promtail-config.yaml"]#web界面。 有的就不需要再部署了,都一样grafana:image: grafana/grafanacontainer_name: grafanarestart: "always"ports:- 3000:3000environment:- TZ=Asia/Shanghaivolumes:- ./grafana/conf/defaults.ini:/usr/share/grafana/conf/defaults.ini- ./grafana/grafana-storage:/var/lib/grafana- /etc/localtime:/etc/localtime:ro
networks:default:external:name: mynetwork

这里的networks 是自己创建的docker 网关路由。

所有的配置文件做好以后就可以启动了

//安装部署命令
docker-compose up -d//查询日志
docker-compose logs -f 

启动成功以后可以通过http://192.168.1.48:3000/ 访问Grafana  (换成自己服务器的ip地址)

第五步:数据源选项 选择loki选项

配置loki的地址:http://loki:3100   我这里是docker内部的连接 所以是这样的。如果是其他的地址就配置自己的ip地址。

选择自己的服务:

运行查询:出来日志

一种是实时刷新 一种是每次查询一次。

具体看情况。至于怎么使用查询可以学习相关的语句。有什么问题欢迎交流

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

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

相关文章

如何一键删除iPhone相册所有照片

拍照已成为我们记录日常生活的常态。但是&#xff0c;大量照片便会积累在设备上&#xff0c;这不仅占用了大量存储空间&#xff0c;而且随着时间的推移&#xff0c;管理这些照片也变得越来越困难。如果你决定清理旧照片&#xff0c;或者出于隐私考虑需要删除所有照片&#xff0…

【数据结构】链式结构实现:二叉树

二叉树 一.快速创建一颗二叉树二.二叉树的遍历1.前序、中序、后序遍历&#xff08;深度优先遍历DFS&#xff09;2.层序遍历&#xff08;广度优先遍历BFS&#xff09; 三.二叉树节点的个数四.二叉树叶子节点的个数五.二叉树的高度六.二叉树第k层节点个数七.二叉树查找值为x的节点…

什么是机器人快换盘?

机器人快换盘&#xff0c;行业内也称作工具快换盘、换枪盘、快换工具盘、快速更换器、快换器、 快换夹具、治具快换等。是末端执行器快速更换装置&#xff08;End-Of-Arm Tooling&#xff0c;简称EOAT&#xff09;&#xff0c;是工业自动化领域中用于机器人手臂上的一种重要设备…

MiniCPM-V: A GPT-4V Level MLLM on Your Phone论文阅读

大模型的趋势&#xff1a;模型性能越来越好&#xff0c;模型参数变小&#xff0c;端边设备计算能力变强。 MiniCPM-V优点 结果好、OCR能力突出、多分辨率、多语言、易于部署 模型结构 图片encoder适用vit。输入整体以及切片。切片使用自适应算法&#xff0c;通过计算分数&am…

人机环境系统智能已经超越了传统的空间智能和物理世界的概念

人机环境系统智能已经超越了传统的空间智能和物理世界的概念&#xff0c;进入了更为复杂的层次。在人机环境系统中&#xff0c;智能不仅涉及对物理世界的感知和理解&#xff0c;还包括对人类语言、情感、意图等的理解和生成。人工智能技术的应用&#xff0c;如自然语言处理、机…

C++静态数组的用法

每日诗词&#xff1a; 疏影横斜水清浅&#xff0c;暗香浮动月黄昏。 ——《山园小梅其一》林逋 目录 数组的基础操作&#xff1a; 数组元素的增加&#xff1a; 演示&#xff1a; 数组元素的删除&#xff1a; 演示&#xff1a; 数组元素的访问和修改&#xff1a; 演示&am…

WLAN射频调优

射频调优的基本原则 信道优化的基本原则 2.4G射频在非高密部署场景中推荐采用1、6、11这种3个不重叠的信道进行规划&#xff0c;同理也可以选用2、7、12或3、8、13的组合方式&#xff1b;在高密部署场景中则推荐采用1、5、9、13共4个信道组合进行规划。5G射频推荐采用36、40、…

HQChart使用教程101-创建内置键盘精灵

HQChart使用教程101-创建内置键盘精灵 键盘精灵步骤1. 创建键盘精灵实例2. 设置事件回调3. 初始化键盘精灵4. 设置码表数据5. 监听"keydown","mousedown" 交流QQ群HQChart代码地址键盘精灵源码 完整实例 键盘精灵 键盘精灵是一种便捷操作软件的功能工具&a…

【人工智能】Python融合机器学习、深度学习和微服务的创新之路

1. &#x1f680; 引言1.1 &#x1f680; 人工智能的现状与发展趋势1.2 &#x1f4dc; 机器学习、深度学习和神经网络的基本概念1.3 &#x1f3c6; 微服务架构在人工智能中的作用 2. &#x1f50d; 机器学习的演变与创新2.1 &#x1f31f; 机器学习的历史回顾2.2 &#x1f9e0;…

UE----IPA 安装 在手机上后 显示 不受信任的开发者

进入设置 ----》 点击 通用 ----》点击 VPN与设备管理 点击信任 然后 再打开开发者模式即可 在隐私与安全性里 下滑 最底部 即可看到开发者模式

JavaScript学习笔记(十二):JS Web API

1、Web API - 简介 Web API 是开发人员的梦想。 它可以扩展浏览器的功能它可以极大简化复杂的功能它可以为复杂的代码提供简单的语法 1.1 什么是 Web API&#xff1f; API 指的是应用程序编程接口&#xff08;Application Programming Interface&#xff09;。 Web API 是 …

机器学习第十四章-概率图模型

目录 14.1 隐马尔可夫模型 14.2马尔科夫随机场 14.3条件随机场 14.4学习与推断 14.4.1变量消去 14.4.2信念传播 14.5近似推断 14.5.1 MCMC采样 14.5.2 变分推断 14.6 话题模型 14.1 隐马尔可夫模型 概率围棋型是一类用图来表达变量相关关系的概率模型.它以图为表示工具…

Python入门级[ 基础语法 函数... ] 笔记 例题较多

本文是刚学习Python的笔记&#xff0c;当时使用的编辑器是交互式编程&#xff0c;所以很多代码可能在你们的编译器上面不能运行&#xff0c;我用快引用引起来了&#xff0c;还需要大家自己动手试一试。 内容涉及的比较简单&#xff0c;主要还是Python的语法部分&#xff1a;三…

短链接系统设计方案

背景 需要设计一个短链接系统&#xff0c;主要功能主要有如下几点&#xff1a; ToB&#xff1a; 输入一个长链接&#xff0c;转换成短链接。这个短链接有时效性&#xff0c;可以设定指定过期时间。这个系统的每天会生成千万级别的短链接。数据具备可分析功能。 ToC&#xf…

借助Vercel 十分钟搭建属于自己的AI应用站点

轻松依托 Vercel,快速构建 Nexior AI 平台 Nexior 是一个令人惊叹的开源项目&#xff0c;托管于 GitHub。通过它&#xff0c;您能够一键便捷地部署专属的 AI 应用站点&#xff0c;包括 AI 问答、Midjourney 绘画、知识库问答、艺术二维码等&#xff0c;完全不需要自己去开发 A…

springBoot+ druid配置多数据源

springBoot druid配置多数据源 1.在yml加&#xff1a; spring:#1.JDBC数据源datasource:druid:first:username: PYpassword: ral2024url: jdbc:mysql://localhost:3306/mysql?serverTimezoneUTC&characterEncodingutf8&useUnicodetrue&useSSLfalsedriver-class-n…

前端进行分页Vue3+Setup写法

当后端不方便提供数据分页查询接口时&#xff0c;就需要前端来自己分割进行分页操作 在有可能的情况下还是建议用分页查询接口&#xff0c;减少网络数据传输 首先el-table绑定数组 分页组件&#xff0c;变量自己定义防止报错 <el-paginationlayout"->, total, siz…

HTML中的<fieldset>标签元素框的使用

HTML 提供的 <fieldset> 标签用于在表单中分组相关元素。 <fieldset> 标签会在相关元素周围绘制一个框。 <legend> 标签为 fieldset 元素定义标题。 语法如下&#xff1a; <fieldset><legend>标题</legend><!-- 元素内容... -->…

qt-17不规则窗体

不规则窗体 知识点shape.hshape.cppmain.cpp运行图 知识点 感觉这个就是在图片背景 贴了白色 shape.h #ifndef SHAPE_H #define SHAPE_H#include <QWidget>class Shape : public QWidget {Q_OBJECTpublic:Shape(QWidget *parent nullptr);~Shape(); protected:void m…

最新图像修复论文汇总(2024年以来)(三)

汇总了自2024年以来新提出的高质量图像修复工作&#xff0c;包含扩散模型、transformer、mamba、sam等最前沿的技术&#xff0c;其中一些是ICLR、ICML、CVPR、ECCV、ACM MM 2024年的新作。 这里是第三部分&#xff0c;还有两部分请参阅。 最新图像修复论文汇总&#xff08;20…