mylabtools/promtail Docker 镜像
mylabtools查看 Docker Hub 原文页
预配置的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/lokiPROMTAIL_ENV=devPROMTAIL_HOST=primary.mycompany.host |
Docker Compose部署示例
yamlversion: '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):
yamlservices: 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_method | HTTP请求方法(如GET、POST) |
http_status | HTTP响应状态码(如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:<标签>
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务