Docker笔记(十三):容器日志采集实践

2023-10-28

日志是服务运行过程中的一个关键环节,借助日志,我们可以排查定位问题,也可以借助集中化的日志管理平台(如ELK)来做一些必要的数据统计分析。在Docker环境中,日志的采集比传统环境更为复杂,因此了解Docker日志的管理机制,及基于此熟悉日志采集的最佳实践对于开发运维人员来说也是避不开的一个知识点。那就开始吧。

Docker容器的日志管理机制

1. Docker Daemon日志

Docker Daemon在Linux中本身作为systemd service启动,因此可以通过 sudo journalctl -u docker 命令来查看Daemon本身的日志。

2. Docker容器日志

通过 docker logs container_id|container_name 可以查看Docker容器的输出日志,但这里的日志只包含容器的标准输出(STDOUT)与标准错误输出(STDERR),适用于一些将日志输出到STDOUT的容器,比如Nginx,查看nginx的dockerfile可发现其是将日志文件链接到了STDOUT与STDERR来实现的,

    RUN ln -sf /dev/stdout /var/log/nginx/access.log
    && ln -sf /dev/stderr /var/log/nginx/error.log

但如果容器内部应用日志是输出到日志文件(比如Spring Boot项目或Tomcat容器,一般将日志输出到日志文件中),则无法通过 docker logs 命令查看。

docker logs 会显示历史日志,日志太多的话要等半天才能看到最新日志,同时也对Docker Daemon造成一定的压力,可使用 docker logs --tail 200 container_id来查看最新的N条或使用docker logs -f container_id(类似于tail -f)

3. Docker日志处理机制

当我们启动一个容器时,其实是作为Docker Daemon的一个子进程运行,Docker Daemon可以拿到容器里进程的标准输出与标准错误输出,然后通过Docker的Log Driver模块来处理。如下图所示

docker-log-driver.png

目前支持的Log Drvier包括:

  • none:容器没有日志,docker logs不输出任何内容
  • local:日志以自定义格式存储
  • json-file:日志以json格式存储,默认的Log Driver
  • syslog:将日志写入syslog。syslog守护程序必须在主机上运行
  • journald:将日志写入journald。journald守护程序必须在主机上运行
  • gelf:将日志写入Graylog Extended Log Format端点,如Graylog或Logstash
  • fluentd:将日志写入fluentd。fluentd守护程序必须在主机上运行
  • awslogs:将日志写入Amazon CloudWatch Logs
  • splunk:通过HTTP Event Collector将日志写入splunk
  • etwlogs:将日志作为ETW(Event Tracing for Windows)事件写入。只在Windows平台可用
  • gcplogs:将日志写入Google Cloud Platform Logging
  • logentries:将日志写入Rapid7 Logentries

使用Docker-CE版本时,docker logs命令仅适用于 local, json-file, journald 三种Log Driver

可通过docker info来查看Docker Daemon(针对所有容器)或docker inspect来查看单个容器所使用的Log Driver

# Docker Daemon
[devuser@test-server-1 ~]$ docker  info |grep  "Logging Driver"
Logging Driver: json-file
# 单个Docker 容器
[devuser@test-server-1 ~]$ docker inspect  -f '{{.HostConfig.LogConfig.Type}}'  76f82aa32468
json-file

修改Docker Daemon使用的Log Driver可通过修改配置文件 /etc/docker/daemon.json 进行,重启Docker后该配置对该Docker Daemon管理的所有容器生效, 如

{
    "log-driver": "local",
    "log-opts": {
        "max-size": "10m",
        "max-file": 3
    }
}

设置单个容器的Log Driver则可以在容器运行时通过参数指定,如

[root@tool-server ~]# docker run -d --name nginx -p 80:80 --log-driver local  --log-opt max-size=10m  --log-opt max-file=3  --restart=always nginx
63155291e724276d6154a26958b0e523a003958b1cdf7df9f1f0903bfc989b99

[root@tool-server ~]# tail -f /var/lib/docker/containers/63155291e724276d6154a26958b0e523a003958b1cdf7df9f1f0903bfc989b99/local-logs/container.log
stdoutҭʡ									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker笔记(十三):容器日志采集实践 的相关文章

  • C#Windows Service程序的创建安装与卸载

    C Windows Service程序的创建安装与卸载 一 开发环境 操作系统 Windows7x64 sp1 专业版 开发环境 Visual studio 2013 编程语言 C NET版本 NET Frmework 4 0 二 创建Wi
  • flink监控1---延时监控

    什么是延时监控 延时监控 简单理解监控算子到算子的延迟时间 记录算子间或者源流入到算子时间 监控系统健康以及调节 流式计算中处理延迟是一个非常重要的监控metric flink中通过开启配置 metrics latency interval
  • IDEA插件系列(111):JUnitGenerator V2.0插件——快速生成单元测试

    1 插件介绍 JUnitGenerator V2 0插件 该插件从右键单击 Generate 菜单生成 JUnit 测试 同时专注于 Java 类 可以使用提供的速度模板自定义单元测试输出代码 以根据原始类格式化代码 如果在已经存在的地方创
  • 504服务器无响应,什么是504网关超时错误(以及如何解决)?

    当试图加载网页的服务器没有及时从另一台服务器获得响应时 就会发生504网关超时错误 几乎总是错误是在网站本身上 您无能为力 但请稍后再试 不过 您可以尝试一些快速操作 504网关超时错误表示尝试为您加载页面的Web服务器没有从其请求信息的其
  • 计算机毕业设计Node.js+Vue基于的企业人事管理系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • ElementUI table表格列动态渲染

    文章目录 一 概述 二 实现 一 概述 一般写table时 列都是固定 现有业务需求 列是不固定的 根据api返回的数据 进行动态渲染 官方table示例 链接如下 https element eleme cn zh CN componen
  • mysql服务重启和关闭

    没有加环境变量 重启MySQL 服务的步骤 1 win R 打开 cmd 确定 2 切换到MySQL的bin目录
  • LeetCode--初级算法--实现strStr()

    实现strStr 实现 strStr 函数 给定一个 haystack 字符串和一个 needle 字符串 在 haystack 字符串中找出 needle 字符串出现的第一个位置 从0开始 如果不存在 则返回 1 示例 1 输入 hays
  • C++ std::vector指定位置插入

    使用vector 必须加上 include
  • postgresql tuple介绍

    文章目录 前言 tuple结构 tupleheader介绍 tuple组装 结尾 前言 本文是基于postgresql 14的代码进行分析解读 演示是在centos8系统上进行 1 tuple结构 HeapTupleHeaderData n
  • Sublime Text 3中文乱码问题

    Sublime Text 3 默认编码格式为UTF 8 GBK会乱码 一 安装Package Control 1 下载Package Control sublime package 2 把下载的Package Control sublime
  • Spring事件监听机制使用和原理解析

    前言 好久没有更新Spring了 今天来分享一下Spring的事件监听机制 之前分享过一篇Spring监听机制的使用 今天从原理上进行解析 Spring的监听机制基于观察者模式 就是就是我们所说的发布订阅模式 这种模式可以在一定程度上实现代
  • Visual Studio 下的常见C++迭代器:for(:) ;for each( in );foreach(,)

    以下内容是摘抄博客 Visual Studio 下的常见C 迭代器 for for each in foreach ClayQ的博客 CSDN博客 std list
  • idea键盘录入3个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出

    分析 1 创建学生类 姓名 语文成绩 数学成绩 英语成绩 总分 2 创建TreeSet集合 用来存储学生对象 3 录入学生信息 4 创建学生对象的比较器 5 把学生对象添加到TreeSet集合中 6 遍历集合 Student 学生类 pac
  • 【论文笔记】BLIP-2: Bootstrapping Language-Image Pretrainingwith Frozen Image Encoders and Large Language

    1 介绍 BLIP 2通过轻量级的查询转换器弥补了模态缺口 该转换器分两个阶段进行预训练 第一阶段从冻结图像编码器中引导视觉语言表示学习 第二阶段从冻结的语言模型中引导视觉到语言生成性学习 1 1 动机 是想要在现成的语言和视觉的单模态模型
  • double使用BigDecimal进行计算出现精确度问题

    1 为什么要用BigDecimal去计算数据 原因在于我们的计算机是二进制的 浮点数 double float 没有办法是用二进制进行精确表示 我们的CPU表示浮点数由两个部分组成 指数和尾数 这样的表示方法一般都会失去一定的精确度 有些浮
  • 谈谈互联网创业未来的发展方向我们如何把握

    版权声明 更多赚钱项目关注大众创业网 https cye yunshangxitong cn 马云如今 除了公务员和职业组织的 铁饭碗 似乎只有创业才是出路 许多人选择自己创业 但对于一个人来说 有哪些创业项目呢 马云秘密分享以下小笔无利可
  • 完全数的性质

    完全数性质 1 古希腊数学家欧几里得是通过 2 n 1 2 n 1 的表达式发现头四个完全数的 2 偶完全数都是以6或8结尾 如果以8结尾 那么就肯定是以28结尾 3 除6以外的偶完全数 把它的各位数字相加 直到变成个位数 那么这个个位数一
  • Learun FrameWork 强大工作流引擎,让OA更智能

    互联网的发展促使企业在信息化的道路上不断探索 而随着企业信息化进程的不断深入 OA协同办公的概念也逐步进入大众的视野 OA的选型关乎企业的生存发展 除了需要重视 OA技术 OA品牌 OA产品 OA服务 四大要素之外 更重要的其实是让OA变得
  • 如何使用VS2015编译运行DX11版本龙书配套源码

    这篇文章是翻译http www d3dcoder net 网站上Frank Luna 龙书作者本人 的解决方案 近来 我收到求助emails emalis询问如何解决本书附带的代码使用Visula Studio 2015编译失败的问题 这篇

随机推荐

  • 二、机器学习模型评估

    二 机器学习模型评估 2 1 模型评估 基本概念 错误率 Error Rate 预测错误的样本数a占样本总数的比例m E a m E frac a m E ma
  • C语言-字符串-指针-排序

    概述 使用C语言 实现字符串排序算法 冒泡排序 编码环境 Visual Studio 2022 1 code char str0 C char str1 JAVA char str2 C char str3 PHP char str4 HT
  • 【C/C++类库】:uuid 通用唯一识别码

    SourceForge libuuid下载 CSDN libuuid下载安装 1 libuuid 下载安装 tar xzvf libuuid 1 0 3 tar gz cd libuuid 1 0 3 configure make sudo
  • JVM--基础--26.5--工具--jhat

    JVM 基础 26 5 工具 jhat 1 介绍 分析jmap生成的dump jhat内置了一个微型的HTTP HTML服务器 生成dump的分析结果后 可以在浏览器中查看 注意 一般不会直接在服务器上进行分析 因为jhat是一个耗时并且耗
  • Oauth2+jwt+redis+cookie+springsecurity+springboot+springcloud(用户登录认证授权)

    用户认证分析 1 单点登录 一处登录 处处运行 SSO gt Single Sign On 作用 A 解决集群环境下的登录问题 B 解决多套互信的系统之间的登录问题 gt 天猫 淘宝 天猫超市 天猫国际 2 第三方登录 QQ登录 微博登录
  • ChatGPT火爆出圈 人工智能赋能银行迈入新时代

    人智能 AI 技术并非新鲜事物 但ChatGPT和 文心一言 作为人工智能通用大模型横空出世 掀起了人工智能应用的新一轮浪潮 此前 人工智能运用的都是专用人工智能模型 往往只能在具体的领域内产生一定的效果 而ChatGPT代表了人工智能通用
  • VS2013配置使用pthread多线程

    POSIX线程 POSIX threads 简称pthreads 是线程的POSIX标准 该标准定义了创建和操纵线程的一整套API 在类Unix操作系统 Unix Linux Mac OS X等 中 都使用pthreads作为操作系统的线程
  • 关于C++的精度输出中的cout.precision()的正确解释

    关于C 的精度输出中的cout precision 的正确解释 网上绝大多数解释的都是 cout precision 控制浮点数的输出精度 是控制保留几位小数的这样是不对的 这个函数虽然是控制浮点数的输出精度 但是它正确的是用来保留几位有效
  • HTML的form表单

    1 get请求 form表单中get为默认的提交方式 当使用get方式提交表单时 浏览器会将表单中的数据添加到地址后面 作为地址参数
  • SOAPUI SOAP压力测试

    目的 实现指定Soap协议的压力测试 环境 SoapUI Pro 5 1 2 Linux simple 4 1 21 jar 实现Soap协议的接收 处理与响应 wsdl simple 4 1 21框架见网址 点击打开链接 过程 1 安装S
  • sshd无法启动

    sshd 无法开启 1 开启sshd systemctl start sshd 2 查看sshd状态 systemctl status sshd service 显示sshd服务开启失败 解决方法 1 输入 sshd t 进行检查 报错信息
  • 高等数学(工本)计算题、综合题

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • 智慧物流之RFID物流供应链仓库管理系统,智能化的仓库rfid管理-新导智能

    摘要 物流与供应链管理在企业的整个管理流程中起着非常重要的作用 如果不能保证及时准确的入库 出库 物流和库存控制等供应链管理 将会给企业带来巨大损失 这不仅表现为各项管理费用的增加 而且会导致客户服务质量难以得到保证 最终影响企业的市场竞争
  • python关于SSLError的解决方法

    最近在使用http client调用btcd时报错SSLError Btcd Thread
  • 信息收集 —— dmitry

    每天学习一个Kali工具 dmitry 1 是什么 DMitry是黑客渗透流程中进行深度信息收集的利器 它是一个由C语言编写的UNIX GNU Linux命令行工具 无GUI操作界面 需掌握其常用使用参数 2 干什么用 1 端口扫描 可探测
  • 大鹏展翅_ParparVM展翅高飞

    大鹏展翅 我们写了很多关于为iOS构建的新VM的体系结构以及构建它的原因 直到最近 我们一直将其视为一种Codename One专用工具 只会对我们有用的东西 我们之所以使用开放源代码 是因为 这就是我们的方式 此后没有多加考虑 最近 我们
  • Vscode 下pip的换源方式(包括临时换源和永久换源)

    换源方式 这里我们提供两种换源的方式 临时换源 永久换源 临时换源 临时换源只需要在pip安装包时 加上一个 i参数后接源的url即可 1 临时换源 复制代码 清华源 pip3 install markdown i https pypi t
  • 若依绕过登录页访问其他自定义页面,以及自定义公众号页面账号登录后权限获取

    1 添加白名单路由path路径 2 路由路径进行配置 component resolve gt require views wxgzh Login resolve 白名单 3 公众号登录时候需要保存后端返回的token值 自定义公众号登录后
  • Launcher与普通Activity的区别

    Launcher与普通Activity的区别 分类 Android应用 2013 09 05 15 40 692人阅读 评论 0 收藏 举报 activity launcher MONKEY HOME Intent 目录 1 Intent
  • Docker笔记(十三):容器日志采集实践

    日志是服务运行过程中的一个关键环节 借助日志 我们可以排查定位问题 也可以借助集中化的日志管理平台 如ELK 来做一些必要的数据统计分析 在Docker环境中 日志的采集比传统环境更为复杂 因此了解Docker日志的管理机制 及基于此熟悉日
Powered by Hwhale