關於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

采用這種辦法也能解決上述問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM