Docker专题-03 Log-Driver日志转存

2024-03-20 07:36

本文主要是介绍Docker专题-03 Log-Driver日志转存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker专题教程

`注`:
  • 本教程由羞涩梦整理同步发布,本人技术分享站点:blog.hukanfa.com

  • 转发本文请备注原文链接,本文内容整理日期:2024-03-19

  • csdn 博客名称:五维空间-影子,欢迎关注

  • 说明

    • 容器运行后,可以通过docker logs -f imageId 命令方式实时查看容器运行日志
    • 如果容器内的主应用是java程序,可以通过tee命令将日志转存到文件同时不影响控制台日志输出
    java -jar xxx.jar  | tee /logs/app.log
    
    • 如果容器内应用程序已经自定义日志生成路径,此时只要挂载出来即可
    • 除了以上方式存储日志外,还可以通过下面的方法将容器日志集中保存,方便集中管理、限制日志大小及后续告警

1.3.1 log-driver 介绍

  • 说明

    • json-file是docker默认使用的日志驱动插件,默认情况下运行中的容器日志存放在如下目录
    # 默认的日志路径
    /var/lib/docker/containers/容器ID/容器ID-json.log
    

    image-20240319111611017

    • 当然docker-log-driver也提供了多套现成的日志驱动插件
    # 常用的日志驱动插件如下
    local  json-file  syslog  gelf  fluentd  loki
    
  • 提示

    • 日志的销毁是随着容器而销毁,stop容器不会导致日志销毁,rm容器后日志才跟随其一并移除
    • 只有重启容器或启动构建新的容器才会走新的日志驱动
    • 配置生效后不会在目录/var/lib/docker/containers/容器ID/生成新的日志文件,日志会走日志驱动插件的存储流程
    • 使用命令docker logs还是会将容器日志打印出来

1.3.2 log-driver 配置

  • 操作如下

    • 全局配置
    # 可以通过修改配置,限制单个日志文件大小及保留的日志份数
    vim /etc/docker/daemon.json
    ..."log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "3"},
    ...
    
    • 单容器运行设置
    docker run --log-driver json-file --log-opt max-size=10m alpine echo hello world
    
    • docker-compose 方式运行设置
    # 将控制台标准及错误输出上传到远程机集中保存,当然可以对rsyslog配置更细致的分类存储规则,这里不细讲
    version: '3'
    services:superset:image: superset:diy-v1.8container_name: supersethostname: supersetrestart: alwaysports:- 8080:8088environment:- TZ=Asia/Shanghai- SUPERSET_SECRET_KEY=oCghysSLvk2BSa9bPEOz6avKzjLHYkedO6ztCZ/sv5j3pwuIg63wVLeYvolumes:- ./logs:/app/superset_homelogging:driver: "syslog"options:syslog-address: "tcp://192.168.26.22:514"tag: "superset"  # 给日志打上标识,这样在远程机上查看日志时就知道是哪个服务的日志了
    

    image-20240319134307538

    • 附上rsyslog 配置/etc/rsyslog.conf,进供参考
    ### 打开一下注释,允许通过 tcp 和 udp 协议进行传输
    module(load="imudp") # needs to be done just once
    input(type="imudp" port="514")
    module(load="imtcp") # needs to be done just once
    input(type="imtcp" port="514")
    ### 新增以下两项
    # 定义远程日志存储的模板,这里按照远程主机ip地址进行日志分类存储
    # /data/nfsShare/192.168.26.21/192.168.26.21_2024-03-18.log
    $template Remote,"/data/nfsShare/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
    # 这是一条匹配规则,只有符合规则的远程IP或主机名称才会应用上面定义的模板。否则存到默认路径 /var/log/message
    :fromhost-ip, isequal, "192.168.26.21" ?Remote
    :fromhost-ip, isequal, "vpc-hukanfa-01" ?Remote
    
    • 配置完需重启 rsyslog 服务
    # 一般linux操作系统都默认安装了这个服务
    systemctl restart rsyslog
    

这篇关于Docker专题-03 Log-Driver日志转存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828732

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

Java 日志中 Marker 的使用示例详解

《Java日志中Marker的使用示例详解》Marker是SLF4J(以及Logback、Log4j2)提供的一个接口,它本质上是一个命名对象,你可以把它想象成一个可以附加到日志语句上的标签或戳... 目录什么是Marker?为什么使用Markejavascriptr?1. 精细化的过滤2. 触发特定操作3

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”