docker限制容器日志大小

news2024/12/28 3:37:24

文章目录

    • 业务场景
    • 问题排查
    • 彻底解决

业务场景

  • 我们公司做交通相关业务,我们部门主要负责信控服务,卖信号机的硬件产品和配套的信控平台

  • 由于有部分小项目,可能只有几十个路口,客户预算有限,只给我们老旧的Windows server服务器,我们平台需要Linux环境,就在里面部署虚拟机

  • 我们使用CentOS7虚拟机部署信控平台,我们建立的虚拟机,系统目录root默认分配了50G内存,一般情况下是够用的

  • 为了保持环境统一,我们使用docker部署平台服务,使用docker-compose管理配置文件

  • docker服务,默认目录在/var/lib/docker,属于/dev/mapper/centos-root文件系统,docker服务的镜像、容器、卷等都在这个目录下
    在这里插入图片描述

  • 早上九点部署测试环境服务时,顺手使用df -hl检查磁盘占用情况,发现centos-root目录已使用93%(46.5G),磁盘空间即将不足

  • 正常情况下,我们的centos-root目录一般空间占用在17-20G左右,肯定是有哪个服务有问题

问题排查

  • 磁盘使用问题,出现异常占用,首先就要看看有没有大文件
  • 使用find命令,查找大文件
find / -type f -size +500M -exec ls -lh {} \; | awk '{ print $9 ":" $5 }';
  • 结果发现一个服务的日志/var/lib/docker/containers/25f900b388614288704640a1fe2e556a95c5440b4dcc1b8bf227926400c006f4/25f900b388614288704640a1fe2e556a95c5440b4dcc1b8bf227926400c006f4-json.log大小为28G(刚好是多出来的部分,46.5-28=18.5)
  • 通过路径/var/lib/docker/containers,就可以知道,这个一个docker容器,后面的容器id
  • 使用命令docker ps -a,查看所有的服务和容器id
  • 根据容器id,找到对应的服务为data-collection,我们的雷达采集服务
    在这里插入图片描述
  • 我们的docker服务日志,会使用脚本每天凌晨0点压缩存储,循环存储最近七天日志。有兴趣的可以参考这篇博客:定时压缩存储和清理docker容器的日志
  • 由于我们每天定时处理,按理说不会有这么大的日志文件
  • 查看了这个日志内容,全是数据库连接报错,看了下,测试环境ck数据库未启动,而这个服务一直接收雷达数据进行写库操作
  • 数据写入很频繁,写入就会抛出报错堆栈,日志累计很快,9个小时就累计了28G
  • 先将服务暂停,日志清空。将ck数据库启动后,重新启动data-collection服务,没有报错了
  • 临时解决很简单,清空容器日志,再将clickhouse正常启动起来,重启容器服务就行,但这是治标不治本的做法
  • 虽然做了定时任务每天凌晨处理容器日志,但是当某个日志在一天内就能撑爆服务器磁盘时,就起不到作用了

彻底解决

  • 这次报错场景,在生产环境几乎不会遇到,但也不排除clickhouse异常宕机
  • 如异常断电,断电恢复后,服务器重启,其他服务正常,clickhouse无法启动,有兴趣的参考
    • 服务器异常断电导致文件损坏,clickhouse启动报错:filesystem error Structure needs cleaning
    • 服务器强制关闭、异常断电等导致clickhouse数据损坏Suspiciously many broken parts to remove
  • 要通过修改配置,在容器配置里,通过设置参数log-opt限制最大日志大小,彻底解决这个问题
docker run --log-driver=json-file --log-opt max-size=<max_size> --log-opt max-file=<max_file_count> <image_name>
  • 如果是使用docker-compose,在yml配置文件里,对需要配置的容器配置即可
  data-collection-app:
    image: data-collection
    container_name: data-collection
    volumes:
      - /etc/localtime:/etc/localtime
    ports:
      - 7854:7854
    depends_on:
      - postgresql
      - kafka
      - redis
	  - clickhouse
    environment:
      - _JAVA_OPTIONS=-Xmx512m -Xms256m
      - SERVER_PORT=8484
      - SPRING_PROFILES_ACTIVE=prod,api-docs,no-liquibase
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/core
      - SPRING_DATASOURCE_USERNAME=xx
      - SPRING_DATASOURCE_PASSWORD=xxxx
      - radar_clickhouse_url=jdbc:clickhouse://clickhouse:8123/radar
      - radar_clickhouse_username=xxxx
      - radar_clickhouse_password=xxxxxx
      - spring_kafka_bootstrapServers=kafka:9092
      - SPRING_REDIS_HOST=redis
      - SPRING_REDIS_PASSWORD=xxxxxxx
      - SOCKETIO_PORT=7854
    logging:
        driver: "json-file"   #默认的文件日志驱动
        options:
         max-size: "500m" # 单个日志文件大小限制
         max-file: "3"  # 保留的日志数量
  • 其实docker支持全局配置,设置下就可以了,所有容器都生效,文件为:/etc/docker/daemon.json,没有创建一个即可
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "500m",
    "max-file": "3"
  }
}
  • 当然,如果单个服务业配置了,会以单个服务的私有配置为准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/890546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google浏览器点击链接打开新标签页

由于新安装的谷歌浏览器点击链接时默认在当前窗口打开非常不方便&#xff0c;这里提供一下解决思路 1、打开浏览器输入任意内容&#xff0c;点击右上角的设置 2、在弹出的选项栏中点击See all Search settings 3、点击Other settings&#xff0c;将指定选项打开即可

数据结构——二叉搜索树

本章代码:二叉搜索树 文章目录 &#x1f332;1.二叉搜索树概念&#x1f333;2. 二叉搜索树操作&#x1f33f;2.1 结构定义&#x1f33f;2.2 插入操作&#x1f33f;2.3 查找操作&#x1f33f;2.4 删除操作&#x1f33f;2.5 遍历 &#x1f334;3. 二叉搜索树应用场景&#x1f340…

[JavaWeb]【五】web后端开发-Tomcat SpringBoot解析

目录 一 介绍Tomcat 二 基本使用 2.1 解压绿色版 2.2 启动TOMCAT 2.3 关闭TOMCAT 2.4 常见问题 2.5 修改端口号 2.6 部署应用程序 三 SpringBootWeb入门程序解析 前言&#xff1a;tomcat与SpringBoot解析 一 介绍Tomcat 二 基本使用 2.1 解压绿色版 2.2 启动TOMCAT 2…

作业day4

1.通过字符设备驱动分步注册方式编写LED灯的驱动&#xff0c;应用程序使用ioctl函数编写硬件控制逻辑 head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct {unsigned int MODER; unsigned int OTYPER; unsigned int OSPEEDR; unsigned int PUPDR; unsigned int …

主机防护的重要性和方式

01 主机防护的重要性 主机防护是网络安全的重要组成部分。在互联网时代&#xff0c;网络攻击成为了一种常见的威胁&#xff0c;而主机防护则是保护计算机系统免受网络攻击的重要手段。 主机防护可以防范各种网络攻击&#xff0c;如病毒、木马、黑客攻击等&#xff0c;从而保…

如何做好会员管理,有哪些好用的会员管理系统?

会员管理对于企业或中小商户来说非常重要&#xff0c;会员管理可以建立和维护与顾客之间的紧密关系&#xff0c;通过会员管理系统记录和分析会员的购买历史、偏好和行为&#xff0c;可以更好地了解他们的需求和兴趣&#xff0c;增加销售机会和满意度。 那么我们应该如何做好会员…

【深度学习 | 感知器 MLP(BP神经网络)】掌握感知的艺术: 感知器和MLP-BP如何革新神经网络

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

使用教程|CloudQuery: 数据库操作管控云平台初体验

&#x1f600;前言 前言&#xff1a;就在刚刚&#xff0c;在一个技术交流群里了解到了一场活动&#xff1a;CloudQuery 社区的有奖征文活动。除了有丰厚的礼物&#xff0c;使用过程中还有技术同学的支持。但是 CloudQuery 这个产品我也没有过多的了解&#xff0c;抱着对产品的好…

AndroidStudio升级Gradle之坑

最近在做旧工程的升级&#xff0c;原来的Gradle版本是4.6的&#xff0c;需要升级到7.6&#xff0c;JDK从8升级到17&#xff0c;一路淌了很多坑&#xff0c;逐个记录下吧 1、Maven仓库需要升级到https 你会遇到这个报错 Using insecure protocols with repositories, without …

item_search-按关键字搜索淘宝商品

一、接口参数说明&#xff1a; item_search-按关键字搜索淘宝商品&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search 名称类型必须描述keyString是调用key&#xff08;点…

边缘计算节点BEC典型实践:如何快速上手PC-Farm服务器?

百度智能云边缘计算节点BEC&#xff08;Baidu Edge Computing&#xff09;基于运营商边缘节点和网络构建&#xff0c;一站式提供靠近终端用户的弹性计算资源。边缘计算节点在海外覆盖五大洲&#xff0c;在国内覆盖全国七大区、三大运营商。BEC通过就近计算和处理&#xff0c;大…

【Linux命令详解 | tar命令】 tar命令用于打包和解压文件,常用于备份和压缩文件

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 打包文件和目录2. 解包归档文件3. 压缩归档文件4. 列出归档文件内容5. 排除特定文件6. 保留文件权限和所有权7. 保留时间戳8. 增量备份9. 使用文件列表10. 压缩级别控制 总结 简介 在Linux中&#xff0c;tar命令…

游戏出海工具都有哪些?

游戏出海是一个复杂的过程&#xff0c;需要运用多种工具来进行市场分析、推广、本地化等工作。以下是一些常用的游戏出海工具&#xff1a; 一、必备工具&#xff1a; 1、游戏平台&#xff1a;要想进行游戏出海运营&#xff0c;游戏平台时必不可少的&#xff0c;选择游戏平台时…

一节网课中有哪些“黑科技”,猿辅导给出了这样的答案

近年来&#xff0c;AI正以润物细无声的方式重塑多个行业的面貌&#xff0c;教育行业也不例外。同时&#xff0c;随着Chat GPT对社会带来的冲击不断加强&#xff0c;AI教育已经成为整个行业不可逆转的趋势。作为最早踏入智能教育领域的企业之一&#xff0c;猿辅导深谙技术革新对…

如何正确使用生成式 AI?

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 在过去几年中&#xff0c;数据的创建速度呈指数级增长&#xff0c;这主要意味着数字世界的日益扩散。 估计吧&#xff1f;仅在过去两年中&#xff0c;世界上90%的数据就产生了。 我们以各种形式与互…

Android 命令行如何运行 JAR 文件

​ 最近有位老哥问了一个问题&#xff0c;说如果将java的jar文件在Android中执行&#xff1f;这个其实很简单的一个问题&#xff0c;直接写个App放里面不就可以了么&#xff1f;但是人家说没有App&#xff0c;直接使用命令行去运行。说明这个需求的时候&#xff0c;把我给整懵了…

人尽其才、数尽其用,Smartbi Eagle智慧数据运营平台全新亮相

数据是企业数字化转型的基石&#xff0c;也是赢得未来的核心资产和竞争力。数字化转型的关键&#xff0c;是在全公司建立一种数据驱动的组织和机制&#xff0c;营造数据文化的氛围&#xff0c;让更多的用户、在更多的场景中&#xff0c;有意愿、有能力使用数据&#xff0c;从而…

COMSOL光电仿真专题第三十五期线上通知

培训背景&#xff1a; COMSOL多物理场仿真软件以高效的计算性能和杰出的多场耦合分析能力实现了精确的数值仿真&#xff0c;已被广泛应用于各个领域的科学研究以及工程计算&#xff0c;为工程界和科学界解决了复杂的多物理场建模问题。光电作为物理类专业课程中极为重要的一部…

Jmeter 快速生成测试报告

我们使用Jmeter工具进行接口测试或性能测试后一般是通过察看结果数、聚合报告等监听器来查看响应结果。如果要跟领导汇报测试结果&#xff0c;无法直接通过监听器的结果来进行展示和汇报&#xff0c;因为太low了&#xff0c;因此测试完成后去整理一个数据齐全且美观的报告是非常…

OSM模型案例:以游戏陪练app为例

OSM模型的概念 O指目标Objective&#xff1a;整个业务、乃至局部的小功能 能解决什么问题&#xff0c;提供什么样的用户价值&#xff0c;满足用户什么需求&#xff1f; S指策略Strategy&#xff1a;如何达成目标&#xff0c;以什么方式达成目标&#xff1f; M指度量Measure&…