前面的文章有salt的安装过程及salt模块,不清楚的可以去看一下,这篇主要是实现nginx+php 用logrotate来对日志进行切割,然后再简单的使用下salt这个工具;

架构如下:

以下.pp文件均在/etc/puppet/modules/logrotate/manifests下面,内容如下

init.pp

  1. class logrotate (
  2. $backup_nginx     = "/data/backup/log/nginx",
  3. $nginx_log        = "/data/log/nginx",
  4. $nginx_pid        = "/usr/local/nginx/nginx.pid",
  5. $base_cron        = "/home/cron/logrotate",
  6. # $backup_nginx_dir = ["/data","/data/backup","/data/backup/log","/data/backup/log/nginx"],
  7. # $base_cron_dir    = ["/home/cron","/home/cron/logrotate"],
  8. $backup_php       = "/data/backup/log/php",
  9. $php_log          = "/usr/local/php/var/log",
  10. $php_pid          = "/usr/local/php/var/run/php-fpm.pid"
  11. ){
  12. case $operatingsystem {
  13. centos:{
  14. include logrotate::base
  15. include logrotate::addcrons
  16. }
  17. }
  18. }

base.pp

  1. class logrotate::base {
  2. package {"logrotate":
  3. ensure => present
  4. }
  5. #  file {["/data","/data/backup","/data/backup/log","/data/backup/log/nginx"]:
  6. file {"$backup_nginx":
  7. ensure  => present,
  8. }
  9. #  file {["/home/cron","/home/cron/logrotate"]:
  10. file {"$base_cron":
  11. ensure  => present,
  12. }
  13. file {"$backup_php":
  14. ensure  => present
  15. }
  16. }

addcrons.pp

  1. class logrotate::addcrons {
  2. file {"logrotate_nginx_conf":
  3. owner   => root,
  4. group   => root,
  5. mode    => 644,
  6. path    => "/home/cron/logrotate/logrotate_nginx.conf",
  7. content => template('logrotate/logrotate_nginx_conf.erb'),
  8. require => Class["logrotate::base"]
  9. }
  10. file {"logrotate_nginx_sh":
  11. owner   => root,
  12. group   => root,
  13. mode    => 644,
  14. path    => "/home/cron/logrotate/logrotate_nginx.sh",
  15. content => template('logrotate/logrotate_nginx_sh.erb'),
  16. require => Class["logrotate::base"]
  17. }
  18. cron {"logrotate nginx":
  19. command   => "bash /home/cron/logrotate/logrotate_nginx.sh",
  20. user      => root,
  21. minute    => 59,
  22. hour      => 23,
  23. require   => File['logrotate_nginx_conf','logrotate_nginx_sh']
  24. }
  25. file {"logrotate_php_conf":
  26. owner   => root,
  27. group   => root,
  28. mode    => 644,
  29. path    => "/home/cron/logrotate/logrotate_php.conf",
  30. content => template('logrotate/logrotate_php_conf.erb'),
  31. require => Class["logrotate::base"]
  32. }
  33. file {"logrotate_php_sh":
  34. owner   => root,
  35. group   => root,
  36. mode    => 644,
  37. path    => "/home/cron/logrotate/logrotate_php.sh",
  38. content => template('logrotate/logrotate_php_sh.erb'),
  39. require => Class["logrotate::base"]
  40. }
  41. cron {"logrotate php":
  42. command   => "bash /home/cron/logrotate/logrotate_php.sh",
  43. user      => root,
  44. minute    => 59,
  45. hour      => 23,
  46. require   => File['logrotate_php_conf','logrotate_php_sh']
  47. }
  48. }

=================================

以下是四个.erb文件的内容

logrotate_nginx_conf.erb

  1. <%= nginx_log %>/*.log {
  2. daily
  3. rotate 7
  4. missingok
  5. dateext
  6. notifempty
  7. compress
  8. sharedscripts
  9. postrotate
  10. [ ! -f <%= nginx_pid %> ] || /bin/kill -USR1 `/bin/cat <%= nginx_pid %>`
  11. endscript
  12. }

logrotate_nginx_sh.erb

  1. #!/bin/bash
  2. BACKUP_DIR=<%= backup_nginx %>  # nginx 备份日志目录
  3. NGINX_LOG_PATH=<%= nginx_log %>      # nginx 原始日志目录
  4. LOGROTATE_CONF_DIR=`dirname $0`    # logrotate 配置文件目录,默认跟本脚本同目录
  5. # 切割日志
  6. /usr/sbin/logrotate -f $LOGROTATE_CONF_DIR/logrotate_nginx.conf
  7. if [ ! -d $BACKUP_DIR ]; then
  8. mkdir -p $BACKUP_DIR
  9. fi
  10. # 对切割完的日志直接重定向压缩到 BACKUP_DIR
  11. for log in `ls $NGINX_LOG_PATH/*-20[1-9][0-9][0,1][0-9][0-3][0-9].gz`; do
  12. mv $log $BACKUP_DIR/
  13. done
  14. # 删除7天前的 nginx 备份日志
  15. find $BACKUP_DIR/* -name "*.gz" -mtime 7 -type f -exec rm -f {} \;

logrotate_php_conf.erb

  1. <%= php_log %>/*.log {
  2. daily
  3. rotate 7
  4. missingok
  5. dateext
  6. notifempty
  7. compress
  8. sharedscripts
  9. postrotate
  10. [ ! -f <%= php_pid %> ] || /bin/kill -USR1 `/bin/cat <%= php_pid %>`
  11. endscript
  12. }

logrotate_php_sh.erb

  1. #!/bin/bash
  2. BACKUP_DIR=<%= backup_php %>         # php 日志备份目录
  3. PHP_LOG_PATH=<%= php_log %>              # php 日志原始目录
  4. LOGROTATE_CONF_DIR=`dirname $0`         # logrotate 配置文件目录,默认跟本脚本同目录
  5. # 切割日志
  6. /usr/sbin/logrotate -f $LOGROTATE_CONF_DIR/logrotate_php.conf
  7. if [ ! -d $BACKUP_DIR ]; then
  8. mkdir -p $BACKUP_DIR
  9. fi
  10. # 对切割完日志进行重定向压缩到 BACKUP_DIR
  11. for log in `ls $PHP_LOG_PATH/*-20[1-9][0-9][0,1][0-9][0-3][0-9].gz`; do
  12. mv $log $BACKUP_DIR/
  13. done
  14. # 删除7天前的备份日志
  15. find $BACKUP_DIR/* -name "*.gz" -mtime 7 -type f -exec rm -f {} \;

由base.pp可知我们是需要backup_nginx,backup_php,base_cron这些参数的目录,这个我们可以直接用salt命令来实现

salt 'slave.domain.com' cmd.run 'mkdir -p /data/backup/log/nginx&& /data/backup/log/php&& mkdir -p /home/cron/logrotate'
salt 'slave.domain.com' cmd.run 'puppet agent --test --server func.domain.com' 
下篇待续

转载于:https://blog.51cto.com/tntdba/1147937

puppet系列之nginx+php日志切割与salt结合使用相关推荐

  1. linux中用shell脚本对tomcat和nginx做日志切割

    Tomcat日志catalina.out切割小脚本 #!/bin/bash #cut tomcat catalina.out yesterday=`date +"%F" -d &q ...

  2. nginx每日日志切割脚本

    说明:调用cron定时任务,每天凌晨0点跑一次脚本,通过mv原log到新文件,然后nginx -s reload 来生成新的日志文件.通过find查找7天前日志,然后删除 脚本内容和说明: #!/bi ...

  3. puppet系列之nginx+foreman

    foreman架构: 本文主要讲述搭建foreman,及集成进nginx的过程 环境说明: CentOS 5.8 x86_64 puppet version:3.1.1 master hostname ...

  4. 笔记12(36-40)域名重定向,用户认证,nginx访问日志,日志切割

    学习笔记 域名重定向 配置第二个域名: vi /etc/nginx/conf.d/blog.aminglinux.cc.conf 在server_name 那一行的域名后面加一个域名,空格作为分隔 n ...

  5. linux 日志按大小切割_nginx入门详解(六)- 日志切割

    上一章讲解了nginx的目录加密功能,本章重点介绍nginx的日志切割. 笨办法学linux:nginx入门详解(五)- 目录加密​zhuanlan.zhihu.com 在第二章,我们探讨了nginx ...

  6. LNMP--Nginx的日志切割

    上一节日志配置好以后,会一直写入信息到/tmp/access.log里面,假如日志不去整理,总有一天会把硬盘塞满,所以我们需要做日志切割,每天生成一个新的日志,把旧的超过多少天的日志删除,我们需要去写 ...

  7. 日志切割之Logrotate

    1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...

  8. centos 日志切割_centos 创建 logrotate 进行日志分割

    这里就不赘述logrotate了,具体是什么,有什么作用,自行百度. 我们先说下,如何进行nginx的日志切割: 比如:日志目录为:/usr/local/nginx/logs/access.log 按 ...

  9. 4.36域名重定向4.37用户认证4.38Nginx访问日志4.39日志不记录静态文件4.40日志切割...

    2019独角兽企业重金招聘Python工程师标准>>> 域名重定向 用户认证 Nginx访问日志 日志不记录静态文件 日志切割 域名重定向 配置第二个域名: vi /etc/ngin ...

最新文章

  1. oracle 实现HA,oracle RAC的客户端HA配置
  2. stm32 USB增加端点总结
  3. Docker实战(精简版本)
  4. python出现无法定位序数于动态链接库ssleay32.dll的问题
  5. 各种工具配置忽略证书
  6. 电脑从硬盘启动计算机,电脑如何设置固态硬盘启动
  7. 计算机神奇的画图教学反思,《画图》信息技术教学反思
  8. 基于javaweb的景区旅游管理系统(java+springboot+html+layui+bootstrap+jquery+mysql)
  9. 传统文本分类和基于深度学习文本分类
  10. android9默认字体下载,iFont爱字体 v5.5.9 Android特别版-实用的手机换字体软件
  11. apache atlas 案例_元数据治理 Apache Atlas
  12. c语言中 1ul什么意思,c语言 #define 中的UL
  13. 算法4:数列极差问题(贪心算法)
  14. 极限唯一性的三种反证法
  15. 畅游星河的炫彩手柄,配置也不简单,北通阿修罗2Pro上手
  16. Ignored attempt to cancel a touchmove event with cancelable=false问题
  17. freesurfer分割后的解剖文件.annot, 如何求解剖区域的三维坐标?如已知lh.HCP-MMP1.annot,如何求Glasser360的皮层三维坐标?
  18. 程序员界的九阳神功与独孤九剑
  19. java纸牌游戏程序报告_java--纸牌游戏自动出牌
  20. cmd 命令循环-笔记

热门文章

  1. linqtoxml读写xml
  2. 基础知识回顾——异常处理
  3. 能使用html/css解决的问题就不要使用JS
  4. javaweb学习总结九(xml解析以及调整JVM内存大小)
  5. 团队冲刺阶段一第四次站立会议
  6. 摘自网络--浅析UpdatePanel的partial render原理
  7. 你们计算机专业的学生应该看看这篇文章
  8. MFC的Main函数跑哪去了
  9. dart初始化项目的分析
  10. IOS OC项目的单例模式