puppet系列之nginx+php日志切割与salt结合使用
前面的文章有salt的安装过程及salt模块,不清楚的可以去看一下,这篇主要是实现nginx+php 用logrotate来对日志进行切割,然后再简单的使用下salt这个工具;
架构如下:
以下.pp文件均在/etc/puppet/modules/logrotate/manifests下面,内容如下
init.pp
- class logrotate (
- $backup_nginx = "/data/backup/log/nginx",
- $nginx_log = "/data/log/nginx",
- $nginx_pid = "/usr/local/nginx/nginx.pid",
- $base_cron = "/home/cron/logrotate",
- # $backup_nginx_dir = ["/data","/data/backup","/data/backup/log","/data/backup/log/nginx"],
- # $base_cron_dir = ["/home/cron","/home/cron/logrotate"],
- $backup_php = "/data/backup/log/php",
- $php_log = "/usr/local/php/var/log",
- $php_pid = "/usr/local/php/var/run/php-fpm.pid"
- ){
- case $operatingsystem {
- centos:{
- include logrotate::base
- include logrotate::addcrons
- }
- }
- }
base.pp
- class logrotate::base {
- package {"logrotate":
- ensure => present
- }
- # file {["/data","/data/backup","/data/backup/log","/data/backup/log/nginx"]:
- file {"$backup_nginx":
- ensure => present,
- }
- # file {["/home/cron","/home/cron/logrotate"]:
- file {"$base_cron":
- ensure => present,
- }
- file {"$backup_php":
- ensure => present
- }
- }
addcrons.pp
- class logrotate::addcrons {
- file {"logrotate_nginx_conf":
- owner => root,
- group => root,
- mode => 644,
- path => "/home/cron/logrotate/logrotate_nginx.conf",
- content => template('logrotate/logrotate_nginx_conf.erb'),
- require => Class["logrotate::base"]
- }
- file {"logrotate_nginx_sh":
- owner => root,
- group => root,
- mode => 644,
- path => "/home/cron/logrotate/logrotate_nginx.sh",
- content => template('logrotate/logrotate_nginx_sh.erb'),
- require => Class["logrotate::base"]
- }
- cron {"logrotate nginx":
- command => "bash /home/cron/logrotate/logrotate_nginx.sh",
- user => root,
- minute => 59,
- hour => 23,
- require => File['logrotate_nginx_conf','logrotate_nginx_sh']
- }
- file {"logrotate_php_conf":
- owner => root,
- group => root,
- mode => 644,
- path => "/home/cron/logrotate/logrotate_php.conf",
- content => template('logrotate/logrotate_php_conf.erb'),
- require => Class["logrotate::base"]
- }
- file {"logrotate_php_sh":
- owner => root,
- group => root,
- mode => 644,
- path => "/home/cron/logrotate/logrotate_php.sh",
- content => template('logrotate/logrotate_php_sh.erb'),
- require => Class["logrotate::base"]
- }
- cron {"logrotate php":
- command => "bash /home/cron/logrotate/logrotate_php.sh",
- user => root,
- minute => 59,
- hour => 23,
- require => File['logrotate_php_conf','logrotate_php_sh']
- }
- }
=================================
以下是四个.erb文件的内容
logrotate_nginx_conf.erb
- <%= nginx_log %>/*.log {
- daily
- rotate 7
- missingok
- dateext
- notifempty
- compress
- sharedscripts
- postrotate
- [ ! -f <%= nginx_pid %> ] || /bin/kill -USR1 `/bin/cat <%= nginx_pid %>`
- endscript
- }
logrotate_nginx_sh.erb
- #!/bin/bash
- BACKUP_DIR=<%= backup_nginx %> # nginx 备份日志目录
- NGINX_LOG_PATH=<%= nginx_log %> # nginx 原始日志目录
- LOGROTATE_CONF_DIR=`dirname $0` # logrotate 配置文件目录,默认跟本脚本同目录
- # 切割日志
- /usr/sbin/logrotate -f $LOGROTATE_CONF_DIR/logrotate_nginx.conf
- if [ ! -d $BACKUP_DIR ]; then
- mkdir -p $BACKUP_DIR
- fi
- # 对切割完的日志直接重定向压缩到 BACKUP_DIR
- for log in `ls $NGINX_LOG_PATH/*-20[1-9][0-9][0,1][0-9][0-3][0-9].gz`; do
- mv $log $BACKUP_DIR/
- done
- # 删除7天前的 nginx 备份日志
- find $BACKUP_DIR/* -name "*.gz" -mtime 7 -type f -exec rm -f {} \;
logrotate_php_conf.erb
- <%= php_log %>/*.log {
- daily
- rotate 7
- missingok
- dateext
- notifempty
- compress
- sharedscripts
- postrotate
- [ ! -f <%= php_pid %> ] || /bin/kill -USR1 `/bin/cat <%= php_pid %>`
- endscript
- }
logrotate_php_sh.erb
- #!/bin/bash
- BACKUP_DIR=<%= backup_php %> # php 日志备份目录
- PHP_LOG_PATH=<%= php_log %> # php 日志原始目录
- LOGROTATE_CONF_DIR=`dirname $0` # logrotate 配置文件目录,默认跟本脚本同目录
- # 切割日志
- /usr/sbin/logrotate -f $LOGROTATE_CONF_DIR/logrotate_php.conf
- if [ ! -d $BACKUP_DIR ]; then
- mkdir -p $BACKUP_DIR
- fi
- # 对切割完日志进行重定向压缩到 BACKUP_DIR
- for log in `ls $PHP_LOG_PATH/*-20[1-9][0-9][0,1][0-9][0-3][0-9].gz`; do
- mv $log $BACKUP_DIR/
- done
- # 删除7天前的备份日志
- find $BACKUP_DIR/* -name "*.gz" -mtime 7 -type f -exec rm -f {} \;
由base.pp可知我们是需要backup_nginx,backup_php,base_cron这些参数的目录,这个我们可以直接用salt命令来实现
转载于:https://blog.51cto.com/tntdba/1147937
puppet系列之nginx+php日志切割与salt结合使用相关推荐
- linux中用shell脚本对tomcat和nginx做日志切割
Tomcat日志catalina.out切割小脚本 #!/bin/bash #cut tomcat catalina.out yesterday=`date +"%F" -d &q ...
- nginx每日日志切割脚本
说明:调用cron定时任务,每天凌晨0点跑一次脚本,通过mv原log到新文件,然后nginx -s reload 来生成新的日志文件.通过find查找7天前日志,然后删除 脚本内容和说明: #!/bi ...
- puppet系列之nginx+foreman
foreman架构: 本文主要讲述搭建foreman,及集成进nginx的过程 环境说明: CentOS 5.8 x86_64 puppet version:3.1.1 master hostname ...
- 笔记12(36-40)域名重定向,用户认证,nginx访问日志,日志切割
学习笔记 域名重定向 配置第二个域名: vi /etc/nginx/conf.d/blog.aminglinux.cc.conf 在server_name 那一行的域名后面加一个域名,空格作为分隔 n ...
- linux 日志按大小切割_nginx入门详解(六)- 日志切割
上一章讲解了nginx的目录加密功能,本章重点介绍nginx的日志切割. 笨办法学linux:nginx入门详解(五)- 目录加密zhuanlan.zhihu.com 在第二章,我们探讨了nginx ...
- LNMP--Nginx的日志切割
上一节日志配置好以后,会一直写入信息到/tmp/access.log里面,假如日志不去整理,总有一天会把硬盘塞满,所以我们需要做日志切割,每天生成一个新的日志,把旧的超过多少天的日志删除,我们需要去写 ...
- 日志切割之Logrotate
1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...
- centos 日志切割_centos 创建 logrotate 进行日志分割
这里就不赘述logrotate了,具体是什么,有什么作用,自行百度. 我们先说下,如何进行nginx的日志切割: 比如:日志目录为:/usr/local/nginx/logs/access.log 按 ...
- 4.36域名重定向4.37用户认证4.38Nginx访问日志4.39日志不记录静态文件4.40日志切割...
2019独角兽企业重金招聘Python工程师标准>>> 域名重定向 用户认证 Nginx访问日志 日志不记录静态文件 日志切割 域名重定向 配置第二个域名: vi /etc/ngin ...
最新文章
- oracle 实现HA,oracle RAC的客户端HA配置
- stm32 USB增加端点总结
- Docker实战(精简版本)
- python出现无法定位序数于动态链接库ssleay32.dll的问题
- 各种工具配置忽略证书
- 电脑从硬盘启动计算机,电脑如何设置固态硬盘启动
- 计算机神奇的画图教学反思,《画图》信息技术教学反思
- 基于javaweb的景区旅游管理系统(java+springboot+html+layui+bootstrap+jquery+mysql)
- 传统文本分类和基于深度学习文本分类
- android9默认字体下载,iFont爱字体 v5.5.9 Android特别版-实用的手机换字体软件
- apache atlas 案例_元数据治理 Apache Atlas
- c语言中 1ul什么意思,c语言 #define 中的UL
- 算法4:数列极差问题(贪心算法)
- 极限唯一性的三种反证法
- 畅游星河的炫彩手柄,配置也不简单,北通阿修罗2Pro上手
- Ignored attempt to cancel a touchmove event with cancelable=false问题
- freesurfer分割后的解剖文件.annot, 如何求解剖区域的三维坐标?如已知lh.HCP-MMP1.annot,如何求Glasser360的皮层三维坐标?
- 程序员界的九阳神功与独孤九剑
- java纸牌游戏程序报告_java--纸牌游戏自动出牌
- cmd 命令循环-笔记