当前位置: 首页 > news >正文

如何在 Ubuntu 22.04 上配置 Logrotate 高级教程

简介

本教程将教你如何在 Ubuntu 22.04 上进行 Logrotate 的高级配置。

日志管理对于维护系统性能和确保你的日志不会占用太多磁盘空间至关重要。在 Ubuntu 上,logrotate 是一个强大的工具,它可以通过轮转、压缩和删除旧日志来自动管理日志文件。在本教程中,我们将介绍在 Ubuntu 系统上配置 logrotate 以实现高效日志管理的步骤。

对于那些需要对日志轮转进行更精细控制的人来说,Logrotate 提供了高级配置选项。这些选项对于管理大规模环境、确保最佳性能和处理特定的应用程序需求尤其有用。下面,我们将深入研究 Logrotate 的一些高级功能和配置。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

1. 理解 Logrotate 指令

在深入研究高级配置之前,了解 Logrotate 提供的一些关键指令非常重要:

  • maxsize [size]: 如果日志增长到大于指定的大小,则轮转日志 (例如,maxsize 100M)。
  • minsize [size]: 仅当日志达到最小大小时才轮转日志 (例如,minsize 1M)。
  • dateext: 在轮转时将当前日期附加到文件名,使其更容易识别日志。
  • olddir [directory]: 将旧日志移动到轮转后指定的目录。
  • prerotate/postrotate: 在日志轮转之前或之后运行脚本,允许自定义操作,例如通知服务。

2. 配置基于日期的 Logrotate 日志命名

使用 dateext 选项,Logrotate 可以将日期附加到轮转后的日志文件,从而更容易跟踪一段时间内的日志。

编辑特定应用程序的配置文件,例如 Nginx:

sudo nano /etc/logrotate.d/nginx

添加 dateext 选项:

/var/log/nginx/*.log {dailydateextdateformat -%Y-%m-%drotate 7compressdelaycompressmissingoknotifemptycreate 0640 www-data admsharedscriptspostrotate[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`endscript
}
  • dateext: 将日期添加到轮转后的日志文件 (例如,access.log-2024-08-13)。
  • dateformat: 自定义日期格式;此处设置为 YYYY-MM-DD。

3. 使用基于大小的日志轮转

对于生成大量日志的应用程序,基于文件大小进行轮转可能比基于时间的轮转更有效。

编辑应用程序的配置文件:

sudo nano /etc/logrotate.d/app

实施基于大小的轮转:

/var/log/app/*.log {size 100Mrotate 10compressdelaycompressmissingoknotifemptycreate 0640 appuser appgroupsharedscriptspostrotatesystemctl restart appendscript
}
  • size 100M: 当日志超过 100MB 时轮转日志。
  • rotate 10: 保留最近 10 个轮转的日志。

4. 处理跨多个服务器的日志轮转

在分布式环境中,日志可能分布在多个服务器上。使用 copytruncate 选项可以帮助管理日志而不会中断服务。

使用 copytruncate 配置 Logrotate:

sudo nano /etc/logrotate.d/multi-server-app

添加 copytruncate 选项:

/var/log/multi-server-app/*.log {dailysize 200Mrotate 5compresscopytruncatemissingoknotifemptycreate 0640 appuser appgroupsharedscriptspostrotatessh user@other-server 'sudo systemctl restart app'endscript
}
  • copytruncate: 复制日志文件,然后截断原始文件。当应用程序在轮转期间无法关闭日志文件时,此选项非常有用。
  • 使用 SSH 的 postrotate: 在轮转后重新启动另一台服务器上的服务。

5. Logrotate 中的自定义脚本

可以在日志轮转之前或之后执行自定义脚本,以执行诸如通知管理员或将日志备份到远程服务器之类的操作。

编辑配置文件:

sudo nano /etc/logrotate.d/custom-scripts

添加自定义脚本:

/var/log/custom-app/*.log {weeklyrotate 4compressmissingoknotifemptycreate 0640 customuser customgroupprerotate# Notify admin before rotationecho "Log rotation starting for custom-app logs" | mail -s "Logrotate Notice" admin@example.comendscriptpostrotate# Backup logs to a remote serverrsync -av /var/log/custom-app/*.log remoteuser@remote-server:/backup/logs/endscript
}
  • prerotate/endscript: 在轮转开始之前运行命令。
  • postrotate/endscript: 在轮转完成后执行命令。

6. 基于年龄和大小组合轮转日志

你可能希望根据年龄和大小轮转日志,确保日志在一定时间后或达到特定大小时进行轮转。

编辑配置文件:

sudo nano /etc/logrotate.d/combined

组合年龄和大小轮转:

/var/log/combined-app/*.log {dailysize 50Mrotate 7compressmissingoknotifemptycreate 0640 combineduser combinedgroupsharedscriptspostrotatesystemctl reload combined-appendscript
}

日志将每天轮转或在达到 50MB 时轮转,以先到者为准。

7. 为记录到标准输出的应用程序配置 Logrotate

可以通过重定向日志来管理记录到标准输出的应用程序(例如,Docker 容器)。

为应用程序创建自定义日志文件:

sudo mkdir -p /var/log/custom-app

将标准输出重定向到日志文件:

custom-app > /var/log/custom-app/output.log 2>&1 &

配置 Logrotate:

sudo nano /etc/logrotate.d/custom-app

添加以下配置:

/var/log/custom-app/output.log {dailyrotate 10compressdelaycompresscopytruncatemissingoknotifemptypostrotatesystemctl restart custom-appendscript
}

结尾

通过利用 Logrotate 的高级配置,你可以有效地管理各种场景中的日志,从处理大规模环境到集成自定义脚本和管理跨多个服务器的日志。根据你的特定需求定制 Logrotate 可确保你的日志得到有效维护,避免磁盘空间问题,并确保在需要时始终可以使用关键的日志信息。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

相关文章:

如何在 Ubuntu 22.04 上配置 Logrotate 高级教程

简介 本教程将教你如何在 Ubuntu 22.04 上进行 Logrotate 的高级配置。 日志管理对于维护系统性能和确保你的日志不会占用太多磁盘空间至关重要。在 Ubuntu 上,logrotate 是一个强大的工具,它可以通过轮转、压缩和删除旧日志来自动管理日志文件。在本教…...

java项目之校园管理系统的设计与实现(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: springboot校园…...

关于 webservice 日志中 源IP是node IP的问题,是否能解决换成 真实的客户端IP呢

本篇目录 1. 问题背景2. 部署gitlab 17.52.1 添加repo源2.2 添加repo源 下载17.5.0的charts包2.3 修改values文件2.3.1 hosts修改如下2.3.2 appConfig修改如下2.3.3 gitlab下的sidekiq配置2.3.4 certmanager修改如下2.3.5 nginx-ingress修改如下2.3.6 <可选> prometheus修…...

Serializable接口

最近写项目的时候&#xff0c;发现有一些类要实现Serializable接口&#xff0c;一开始只是粗略的知道实现了Serializable接口&#xff0c;这个类的对象可以被序列化&#xff0c;但我比较轴&#xff0c;想知道这个接口到底有什么作用。 我点开这个接口发现什么方法都没有实现&am…...

如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈

如何操作github&#xff0c;gitee&#xff0c;gitcode三个git平台建立镜像仓库机制&#xff0c;这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈 问题背景 由于我司最早期19年使用的是gitee&#xff0c;因此大部分仓库都在gitee有几百个库的代码&#xff0c;…...

【HDU】1089 A+B for Input-Output Practice (I)

1089 AB for Input-Output Practice (I):以EOF结尾的输入 Problem Description Your task is to Calculate a b. Too easy?! Of course! I specially designed the problem for acm beginners. You must have found that some problems have the same titles with this one,…...

lua库介绍:数据处理与操作工具库 - leo

leo库简介 leo 模块的创作初衷旨在简化数据处理的复杂流程&#xff0c;提高代码的可读性和执行效率&#xff0c;希望leo 模块都能为你提供一系列便捷的工具函数&#xff0c;涵盖因子编码、多维数组创建、数据框构建、列表管理以及管道操作等功能。 要使用 Leo 模块&#xff0c;…...

逆向入门(1)C篇-正儿巴经的第1个实验

接触了这么久&#xff0c;第一次不是使用CV大法编写程序&#xff0c;认认真真的重头开始学习&#xff0c;记录一下找调试的感觉。 第一段代码&#xff0c;重温原码&#xff0c;反码和补码。 #include "stdafx.h"int main(int argc, char* argv[]) {char x -7;print…...

vue数据请求通用方案:axios的options都有哪些值

Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 Node.js 中。 在使用 Axios 发送请求时&#xff0c;可以通过传递一个配置对象来指定请求的各种选项。 以下是一些常用的 Axios 配置选项及其说明&#xff1a; 1.url: &#xff08;必需&#xff09;请求的 …...

使用R语言绘制标准的中国地图和世界地图

在日常的学习和生活中&#xff0c;有时我们常常需要制作带有国界线的地图。这个时候绘制标准的国家地图就显得很重要。目前国家标准地图服务系统向全社会公布的标准中国地图数据&#xff0c;是最权威的地图数据。 今天介绍的R包“ggmapcn”&#xff0c;就是基于最新公布的地图…...

【PyTorch】迁移学习、数据增强

PyTorch官网 介绍 PyTorch 是一个开源的机器学习库&#xff0c;由 Facebook 的人工智能研究实验室开发。它提供了两种主要的功能&#xff1a;张量计算&#xff08;类似于 NumPy&#xff0c;但具有 GPU 加速&#xff09;和基于动态计算图的深度学习工具。PyTorch 因其灵活性、…...

Lucas-Kanade光流法详解

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 光流&#xff08;Optical Flow&#xff09;描述的是图像序列中各像素点随时间的运动情况&#xff0c;是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...

python多张图片生成/合成gif

你可以通过调整帧率来提高GIF的流畅度。默认情况下,代码中的帧率为每秒1帧(fps=1)。我们可以增加这个值来加快动画速度。 下面是修改后的代码,将帧率从每秒1帧提高到每秒5帧(你可以根据需要进一步调整): 在这个版本中,我添加了一个可选参数fps,默认值为5帧每秒。你可…...

iptable限制多个端口出站

iptable限制多个端口出站 安装包 rootiptable:/home/bb# apt-get update rootiptable:/home/bb# apt-get -y install iptables iptables-restoreweb准备 rootweb:/home/bb/test-iptables# docker run -itd --name web -p 80:80 -v ./web1/index.html:/usr/share/nginx/html…...

springmvc--请求参数的绑定

目录 一、创建项目&#xff0c;pom文件 二、web.xml 三、spring-mvc.xml 四、index.jsp 五、实体类 Address类 User类 六、UserController类 七、请求参数解决中文乱码 八、配置tomcat,然后启动tomcat 1. 2. 3. 4. 九、接收Map类型 1.直接接收Map类型 &#x…...

Redis查询缓存

什么是缓存&#xff1f; 缓存是一种提高数据访问效率的技术&#xff0c;通过在内存中存储数据的副本来减少对数据库或其他慢速存储设备的频繁访问。缓存通常用于存储热点数据或计算代价高的结果&#xff0c;以加快响应速度。 添加Redis缓存有什么好处&#xff1f; Redis 基…...

双馈风电DFIG并网系统次转子侧变流器RSC抑制策略研究基于LADRC和重复控制的方法

风电装机容量的持续增长以及电力电子装置的大规模接入&#xff0c;导致电网强度降低&#xff0c;系 统运行特性发生深刻变化&#xff0c;严重威胁风电并网系统的安全稳定运行。因此本文以双馈风 电场经串补线路并网系统为研究对象&#xff0c;在深入分析双馈风电并网系统振荡…...

国产编辑器EverEdit - 使用技巧:变量重命名的一种简单替代方法

1 使用技巧&#xff1a;变量重命名的一种简单替代方法 1.1 应用场景 写过代码的都知道&#xff0c;经常添加功能的时候&#xff0c;是把别的地方的代码拷贝过来&#xff0c;改吧改吧&#xff0c;就能用了&#xff0c;改的过程中&#xff0c;就涉及到一个变量名的问题&#xff…...

使用SSH建立内网穿透,能够访问内网的web服务器

搞了一个晚上&#xff0c;终于建立了一个内网穿透。和AI配合&#xff0c;还是得自己思考&#xff0c;AI配合才能搞定&#xff0c;不思考只依赖AI也不行。内网服务器只是简单地使用了python -m http.server 8899&#xff0c;但是对于Gradio建立的服务器好像不行&#xff0c;会出…...

JWT认证实战

JWT&#xff08;JSON Web Token&#xff09;是一种轻量级的、基于 JSON 的开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全地传递信息。JWT 的特点是结构简单、轻量化和跨平台支持&#xff0c;适用于用户身份验证、信息加密以及无状态的 API 访问控制…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...