promtail

mylabtools/promtail Docker 镜像

预配置的Promtail工具,用于从Docker容器收集、处理日志并发送至Grafana Loki,支持多种日志格式解析,简化容器日志集中管理流程。

下载次数: 0状态:社区镜像维护者:mylabtools仓库类型:镜像最近更新:
下载命令
点击查看

MyLab.Promtail

镜像概述和主要用途

MyLab.Promtail 是基于 https://grafana.com/docs/loki/latest/clients/promtail/ 开发的日志收集服务,用于从Docker容器中收集、处理日志并发送至 https://grafana.com/oss/loki/ 日志收集系统。该镜像以Docker容器形式部署在目标容器所在服务器,通过解析容器日志文件,添加元数据标签,并将处理后的日志数据转发至Loki,实现容器日志的集中管理。

核心功能和特性

  • 容器日志收集:自动监控Docker容器日志文件,实时收集日志数据
  • 多格式支持:解析nginx日志和MyLab.Log库生成的YAML格式日志
  • 元数据增强:自动添加容器名、环境、主机名等标签,便于日志筛选和分析
  • 状态持久化:通过持久化卷存储日志读取状态,确保日志不重复、不丢失
  • 简化配置:通过环境变量快速配置Loki地址、环境标识等核心参数

使用场景和适用范围

适用于需要集中管理Docker容器日志的场景,特别是:

  • 基于Grafana Loki构建日志监控系统的环境
  • 运行nginx服务的Docker容器日志收集
  • 使用 https://github.com/mylab-log/log 库生成日志的应用
  • 开发、测试或生产环境中的Docker容器集群日志管理

详细使用方法和配置说明

主机配置

需在主机上配置Docker日志驱动,确保容器日志以JSON格式存储并包含必要元数据。修改 /etc/docker/daemon.json 文件:

json
{
    "log-driver": "json-file",
    "log-opts": {
        "labels": "log_format",
        "tag": "{{.Name}}"
    }
}

配置说明:

  • log-driver: "json-file":指定日志驱动为JSON文件格式
  • labels: "log_format":启用容器标签log_format记录
  • tag: "{{.Name}}":使用容器名称作为日志标签

MyLab.Promtail容器配置

部署参数说明

参数说明示例
卷挂载/var/lib/docker/containers:主机容器日志目录
/var/lib/promtail:持久化存储日志读取状态
-v /var/lib/docker/containers:/var/lib/docker/containers
-v promtail_data:/var/lib/promtail
环境变量PROMTAIL_LOKI:Loki服务地址(无末尾斜杠)
PROMTAIL_ENV:环境名称标识
PROMTAIL_HOST:主机名称标识
PROMTAIL_LOKI=http://192.168.0.1/loki
PROMTAIL_ENV=dev
PROMTAIL_HOST=primary.mycompany.host

Docker Compose部署示例

yaml
version: '3.2'

services:
  promtail:
    container_name: promtail
    image: docker.xuanyuan.run/mylabtools/promtail:0.0.3
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers
      - promtail_data:/var/lib/promtail
    environment:
      PROMTAIL_LOKI: http://192.168.0.1/loki
      PROMTAIL_ENV: dev
      PROMTAIL_HOST: dev-infonot
  
volumes:
  promtail_data: {}

目标容器配置

需为目标容器设置 log_format 标签,指定日志格式:

标签值说明
nginx解析nginx访问日志
mylab-yaml解析MyLab.Log库生成的YAML格式日志
未指定按默认单行文日志处理,不进行额外解析

配置示例(Docker Compose):

yaml
services:
  nginx:
    image: docker.xuanyuan.run/nginx:alpine
    labels:
      - "log_format=nginx"  # 指定日志格式为nginx

日志记录处理

通用日志标签

所有日志会自动添加以下标签:

  • container:容器名称(由Docker日志tag配置决定)
  • env:环境标识(由PROMTAIL_ENV环境变量指定)
  • host:主机名称(由PROMTAIL_HOST环境变量指定)
  • format:日志格式(由容器log_format标签指定,如nginx、mylab-yaml)

Nginx日志解析

Nginx日志会被解析为以下额外标签:

标签说明
level日志级别:
- error(含error/fail/failed等关键词)
- warning(含warn关键词)
- info(其他情况)
http_methodHTTP请求方法(如GET、POST)
http_statusHTTP响应状态码(如200、404)
request_type请求类型:
- api(请求路径以/api/开头)
- metrics(请求路径为/metrics)
- other(其他请求)
request_url请求URL

Nginx日志在Grafana中的展示示例:

MyLab.Log日志解析

MyLab.Log(YAML格式)日志会被解析为以下标签:

标签说明
level日志级别,取自日志中的log_level字段,支持debug、warning、error

MyLab.Log日志在Grafana中的展示示例:

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 promtail 镜像标签

docker pull docker.xuanyuan.run/mylabtools/promtail:<标签>

DockerHub 原生拉取命令

docker pull mylabtools/promtail:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告