0

我对 promtail 和 Loki 有疑问,在我的服务器中,我几乎有 10 个 docker 容器在 Prod 和 Dev Environments 上运行。因为我是 Grafana 的新手,所以我想抓取这 10 个 docker 容器日志,并使用 Loki Datasource 在 Grafana 中查看它。

到目前为止我做了什么?

场景 1:使用 loki 和 Promtail 配置文件 Step1:登录 Grafana 云并使用新的 API 密钥创建 Loki 配置

Step2:将以下配置文件粘贴到 /etc/promtail/config.yaml

'server:
  # port for the healthcheck
  http_listen_port: 0
  grpc_listen_port: 0
positions:
  filename: /tmp/positions.yaml
client:
  url: https://<user>:<password>@logs-prod-us-central1.grafana.net/api/prom/push
scrape_configs:
- job_name: local
  static_configs:
  - targets:
      - localhost
    labels:
      job: mrp
      __path__: /var/lib/docker/containers/*/*log'

Step3:运行 docker run promtail 命令

docker run --name promtail --volume "$PWD/promtail:/etc/promtail" --volume "/var/lib/docker/containers:/var/lib/docker/containers/" grafana/promtail:master -config.file=/etc/promtail/config.yaml -log.level=debug

第 4 步:我可以查看日志,但在该文件中找不到容器名称、图像名称或任何内容 - 似乎是纯文本。--> 你能帮我解决这个问题吗

场景 2:尝试使用日志驱动程序

第 1 步:在我的服务器中安装日志驱动程序第 2 步:将 docker 粘贴到 /etc/docker/daemon.json 中的命令下方

{
    "debug" : true,
    "log-driver": "loki",
    "log-opts": {
        "loki-url": "https://<user_id>:<password>@logs-us-west1.grafana.net/loki/api/v1/push",
        "loki-batch-size": "400"
    }
}

第 3 步:我需要重新启动 docker 以使守护进程生效,如果这样做,我可能会丢失正在运行的容器,它们将进入兴奋状态 --> 这是一种阻止程序

请帮我解决这个问题提前谢谢

4

1 回答 1

1

我认为您正在寻找的是 Docker 提供的实时恢复选项。理想情况下,您不应该在同一台机器上同时运行 dev 和 prod 环境,但如果您有正当理由这样做,那么您需要在 docker daemon 配置中添加以下设置,并尝试systemctl reload docker而不是重新启动。

{
  "live-restore": true
}

更多详细信息记录在此处:https ://docs.docker.com/config/containers/live-restore/

于 2021-12-26T21:01:04.047 回答