zoukankan      html  css  js  c++  java
  • 关于Loki中promtail组件收集日志的几点思考

    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

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

  • 相关阅读:
    Struts2框架
    读者写者问题
    哲学家就餐问题
    理解中断
    理解处理机调度
    理解死锁
    理解进程
    Linux CentOS 6.7 挂载U盘
    家庭-养老院模型理解IOC和DI
    Bash基础
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14234620.html
Copyright © 2011-2022 走看看