在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?

要在Linux中实现只保留最近7天的Apache访问日志,可以使用logrotate工具,这是Linux系统中常用的日志管理工具,可以自动执行日志文件的轮转、压缩、删除等操作。以下是具体步骤:

1. 安装logrotate(如果尚未安装)

在大多数Linux发行版中,logrotate通常是预装的。如果你的系统中没有安装,可以通过包管理器安装,例如使用apt(对于Debian/Ubuntu)或yum/dnf(对于RHEL/CentOS/Fedora):

sudo apt-get install logrotate   # 对于Debian/Ubuntu系
sudo yum install logrotate      # 对于RHEL/CentOS系 (如果是旧版本)
sudo dnf install logrotate      # 对于Fedora系
2. 创建logrotate配置文件

你需要在/etc/logrotate.d/目录下创建一个新的配置文件,或者编辑现有的配置文件来包含对Apache访问日志的处理规则。这里我们假设创建一个名为apache-access-logs.conf的新文件:

sudo nano /etc/logrotate.d/apache-access-logs.conf

然后在文件中添加以下内容:

#/app/logs/*.log {
#   daily
#   rotate 7
#   compress
#   delaycompress
#   missingok
#   notifempty
#   create 640 root adm
#   postrotate
#       systemctl reload apache2.service > /dev/null 2>&1 || true
#   endscript
#}

这里解释一下各配置项的含义:

  • daily:指定日志每天轮转一次。
  • rotate 7:保留7份日志文件,包括当前日志和6个归档日志。
  • compress:使用gzip压缩归档的日志文件。
  • delaycompress:在下一次日志轮转时才压缩刚被轮转的文件,避免正在写入的日志被立即压缩。
  • missingok:如果日志文件不存在,不生成错误信息。
  • notifempty:如果日志文件为空,则不进行轮转。
  • create 640 root adm:在轮转后创建新的日志文件,并设置相应的权限和所有者。
  • postrotateendscript之间的命令会在日志轮转后执行,这里是重新加载Apache服务配置,确保新的日志文件被正确使用。
3. 测试和应用配置

修改完配置文件后,可以手动运行logrotate来测试配置是否正确,但通常不需要这样做,因为logrotate会被cron定时任务自动执行。

sudo logrotate -d /etc/logrotate.d/apache-access-logs.conf
BASH 复制 全屏

使用-d选项可以让logrotate执行模拟轮转,显示它将要做什么而不实际执行操作。

4. 确认cron作业

确保系统中有一个cron定时任务来定期运行logrotate。大多数系统已经默认配置好了每天运行logrotate,但你可以通过crontab -l(作为root用户)来检查。

5. 注意事项
  • 确保Apache服务配置中指定了正确的日志文件路径,并且日志文件名模式与logrotate配置匹配。
  • 考虑到安全性和资源管理,重新加载Apache服务的操作(如上述配置中的postrotate部分)应当谨慎处理,确保不影响服务稳定性。
  • 实际部署前应在测试环境中验证配置,以避免生产环境出现问题。
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
8月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
392 17
|
8月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
238 22
|
9月前
|
存储 JSON Go
PHP 日志系统的最佳搭档:一个 Go 写的远程日志收集服务
为了不再 SSH 上去翻日志,我写了个 Go 小脚本,用来接收远程日志。PHP 负责记录日志,Go 负责存储和展示,按天存储、支持 API 访问、可远程管理,终于能第一时间知道项目炸了。
178 10
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
454 101
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
176 1
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
743 0
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
805 54

热门文章

最新文章