配置promtail 2.0读取文件.log

问题描述

自从我更新到 promtail 2.0 后,我无法在 loki 中读取日志文件内容

config-promtail.yml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:
  - job_name: manuallog
    static_configs:
      - targets:
          - 192.168.1.103
        labels:
          job: tomcat
          host: 192.168.1.103
          path: /opt/error.log

我也尝试在抓取配置中使用不同的配置,但没有成功:

  - job_name: varlog
journal:
  max_age: 12h
  labels:
    filename: /opt/error.log
    path: /opt/error.log

error.log 不为空:

    # cat /opt/error.log
disconnected from localhost

Promtail 版本 - 2.0

    ./promtail-linux-amd64 --version
promtail,version 2.0.0 (branch: HEAD,revision: 6978ee5d)
  build user:       root@2645337e4e98
  build date:       2020-10-26T15:54:56Z
  go version:       go1.14.2
  platform:         linux/amd64

有什么线索吗?我做错了什么吗?

非常感谢,

解决方法

尝试替换:

path: /opt/error.log

致:

__path__: /opt/error.log
,

您似乎只指定了:

journal.lables.path: /opt/error.log

这只会为抓取的日志条目添加标签。

您忘记指定:

journal.path: /opt/error.log

这将告诉 Promtail 在哪里可以找到这些日志。

================================================ ============

这是我的 Promtail 2.1 日志抓取配置。

    scrape_configs:
      - job_name: journal
        pipeline_stages:
          - drop:
              expression: ".*something-redudant.*"
        journal:
          path: /var/log/journal
          max_age: 12h
          labels:
            job: systemd-journal
        relabel_configs:
          - source_labels: ['__journal__systemd_unit']
            target_label: 'unit'
          - source_labels: ['__journal__hostname']
            target_label: 'hostname'