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. SpringBoot:Redis中的zset

    zset被描述为有序集合,但RedisTemplate的OpsForZSet().range方法的返回值是set,那么: 这样直接查询zset返回set的操作会使得元素失去顺序吗? 先明确:Set是什 ...

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

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

  3. day01 File类_Lambda

    File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等 ...

  4. jdbc 04: 配置连接信息

    jdbc连接mysql,将需要的信息配置到文件中 package com.examples.jdbc.o4_配置连接信息; import java.sql.Connection; import jav ...

  5. 一张图进阶 RocketMQ - 消息存储

    前言 三此君看了好几本书,看了很多遍源码整理的 一张图进阶 RocketMQ 图片,关于 RocketMQ 你只需要记住这张图!觉得不错的话,记得点赞关注哦. [重要]视频在 B 站同步更新,欢迎围观 ...

  6. MySQL主从复制之GTID模式介绍

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GTID概述 MySQL5.6 在原有主从复制的基础上增加了一个新的复制方式,即基于GTID的复制方式,它由UUID和事务 ...

  7. 对于Java中的Loop或For-each,哪个更快

    Which is Faster For Loop or For-each in Java 对于Java中的Loop或Foreach,哪个更快 通过本文,您可以了解一些集合遍历技巧. Java遍历集合有 ...

  8. 用HTTP服务的方式集成learned cardinality estimate方法进 Postgresql

    代码地址:postgresql-13.1-ml: Integration of CardEst Methods into PostgreSQL by HTTP Server (github.com) ...

  9. Vue3 Transition 过渡效果之基于 CSS 过渡

    介绍 Transistion 路由组件的切换.动态组件的切换.v-if 条件渲染组件以及 v-show 显示组件原本是没有任何过渡(CSS 动画)效果的.然而,Vue 的内置组件<Transit ...

  10. Python自学教程7:字典类型有什么用

    字典是Python中的一个重要操作,如果字典玩得顺,很多其他的数据类型就可以一通百通. Python字典的定义 字典使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分隔. 键必须是不可变 ...