promtail组件是采用docker方式运行的,配置文件也是在docker容器中,宿主机中没有挂载点,这就有问题了。

宿主机中没有挂载配置文件,也就没法修改,登录promtail的docker容器中后,没法使用nano,vi或vim修改这个配置文件



在进一步延伸就是监控的是promtail的docker容器中/var/log/*log的文件,没法监控容器中的其他文件或者宿主机中的文件。

不过倒是可以通过修改docker-compose.yaml文件把宿主机的存放日志的目录给挂载到容器中的/var/log/路径下,从而实现监控宿主机日志文件的办法

但是这种办法也是只能监控宿主机/var/log/目录下文件是log的文件,根据容器中配置文件来决定的:/var/log/*log

不通过挂载的方式有没有办法能监控宿主机中的其他文件?

或者有啥办法能修改容器中的/etc/promtail/config.yml配置文件?

暂时想到两种办法:

  1. docker-compose.yaml文件中设置挂载容器使用的config.yml配置文件

    延伸一下,除了挂载容器使用的配置文件外,还需要挂载宿主机中的日志路径

promtail使用的配置文件,在宿主机中:/tmp/config.yml

注意:这个文件内容,只修改scrape_configs中labels.job和__path__,其他部分跟promtail容器中原来使用的保持一致。

当然scrape_configs可以添加多个,这里就添加一个作为示例

server:
http_listen_port: 9080
grpc_listen_port: 0 positions:
filename: /tmp/positions.yaml clients:
- url: http://loki:3100/loki/api/v1/push scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: message
__path__: /var/log/messages

docker-compose.yaml 文件内容:

version: "3"

networks:
loki: services:
loki:
image: grafana/loki:2.0.0
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki promtail:
image: grafana/promtail:2.0.0
volumes:
- /tmp/config.yml:/etc/promtail/config.yml # 挂载宿主机中的指定文件作为promtail容器的配置文件
- /var/log/messages:/var/log/messages # 挂载宿主机中的日志文件,这个要跟/tmp/config.yml文件中的__path__中的这个保持一致,否则无法吧宿主机日志挂载到promtail容器中,当然也就检测不到这个文件,虽然配置文件中有配置
command: -config.file=/etc/promtail/config.yml
networks:
- loki grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki

启动后查看效果,正好跟/tmp/config.yml文件中配置的一样

采用这种办法可以解决上述问题

  1. 不采用docker容器方式部署了,采用二进制方式,启动的时候指定使用的配置文件

参考地址:https://www.cnblogs.com/sanduzxcvbnm/p/14234953.html

采用这种办法也能解决上述问题

关于Loki中promtail组件收集日志的几点思考的更多相关文章

  1. centos7搭建安装loki、promtail、Grafana日志系统

    loki.promtail.Grafana安装包 链接:https://pan.baidu.com/s/1vkSa_KYrXM0UEI8i42KdaA 提取码:4d4q 如果安装失败或者下载速度慢可以 ...

  2. linux中hadoop组件启动日志存放问题

    如果是nohup xxxx &的话会在当前目录下生成一个nohup文件存放当前出现所有的日志,&表示后台启动: 当然你也可以将日志存放在>/dev/null表示当前日志存放的位置 ...

  3. 搭建Loki、Promtail、Grafana轻量级日志系统(centos7)

    搭建Loki.Promtail.Grafana轻量级日志系统(centos7)--简称PLG 需求 公司项目采用微服务的架构,服务很多,每个服务都有自己的日志,分别存放在不同的服务器上.当查找日志时需 ...

  4. docker容器使用loki收集日志

    docker-compose安装loki套件(loki+promtail+grafana) loki进行日志聚合处理  类似elk中的es promtail是日志收集,类似elk中的logstash ...

  5. 在.NET Core中使用Exceptionless分布式日志收集框架

    一.Exceptionless简介 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF, ...

  6. filebeat收集日志到elsticsearch中并使用ingest node的pipeline处理

    filebeat收集日志到elsticsearch中 一.需求 二.实现 1.filebeat.yml 配置文件的编写 2.创建自定义的索引模板 3.加密连接到es用户的密码 1.创建keystore ...

  7. 开源组件ELK日志系统配置与管理

    ELK日志系统介绍 开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.官方网站:https://www.el ...

  8. 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制

    本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ...

  9. nginx日志切割并使用flume-ng收集日志

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件.第一步就是重命名日志文件,不用担心重命名后nginx找不到日 ...

随机推荐

  1. e.printStackTrace() 原理的分析

    e.printStackTrace(); 先查看下源码 如图片中1所示,使用的是 PrintStreamOrWriter public void printStackTrace() { printSt ...

  2. GitLab:Your account has been blocked.

    使用git pull 出现"GitLab:Your account has been blocked."错误 背景 多人使用服务器同一用户,在~/.ssh 目录下的公私钥是之前一个 ...

  3. SP96 SHOP-Shopping 题解

    \(To\) \(SP96\) 这是一道比较简单的 \(bfs\) ,初学者可以锻炼一下自己理解题意和改代码的能力. 题目中有几个细节: \(n\) 和 \(m\) 的输入顺序,应该先输入 \(m\) ...

  4. 以三元组表为存储结构实现矩阵相加(耿5.7)----------西工大 noj

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  5. 毫秒值的概念和作用与Date类的构造方法和成员方法

    日期时间类 Date类 java.Util.Date:表示日期和实践类 类Date表示特定的瞬间,精确到毫秒 毫秒:千分之疫苗 1000毫秒 =1秒 特定的瞬间:一个时间点,一刹那使劲啊 2088-0 ...

  6. 2501-Logback的使用与配置范例xml

    在项目中logback一般配合slf4j使用,slf4j是面上的框架,logback才是真正记录处理日志的框架. 参考文献: Java日志框架:logback详解 http://www.importn ...

  7. Rust 从入门到精通03-helloworld

    安装完成 Rust 之后,我们可以编写 Rust 的 Hello Word.这里介绍两种方式,一种是rust原生方式,一种是利用 cargo 工具(重要) 1.rustc 方式 1.1 创建项目目录 ...

  8. C#任务并行库TPL--Task应用

    一.概念 TPL的核心就是任务,一个任务代表一个异步操作,该操作可以通过多种方式运行,一个任务也可以由多个任务组成. 二.应用 1.创建任务有三种方法: var t1 = new Task(() =& ...

  9. webSocket的基本使用与socket.io库使用

    前言: 传统的客户端与服务器进行通信,都是客户端向服务端发送请求,服务端进行响应,否则一般不会自动进行响应.单向,如果要持续获取服务端资源,则需要持续发送请求 初解决方案:轮询:客户端让http请求保 ...

  10. linux centos 系统盘文件系统损坏-已解决

    当我们使用的Linux虚拟机(云服务器/vps)磁盘出现xfs文件系统损坏时,该如何进行修复? xfs格式文件系统损坏,是运维常见的一个场景,经常发生在强制重启.异常关机.软件冲突.误删文件等事件后, ...