设为首页 收藏本站
查看: 1094|回复: 0

[经验分享] nginx使用cronolog切割日志安装、部署、应用测试

[复制链接]

尚未签到

发表于 2018-11-13 10:29:22 | 显示全部楼层 |阅读模式
  我们使用的是tnginx(支持日志抽样、直接输出到log服务器等)详细安装配置见另一篇博文,
  http://michaelkang.blog.51cto.com/1553154/1359106
  调用方式可以看一下的文章;
  调用cronolog
  http://tengine.taobao.org/document_cn/http_log_cn.html
  #cronolog官网
  http://cronolog.org/
  软件下载链接(稳定版)
  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
  1,安装cronolog
  tar zxvf cronolog-1.6.2.tar.gz
  cd cronolog-1.6.2
  mkdir -p /usr/local/cronolog
  ./configure --prefix=/usr/local/cronolog
  make
  make install
  ln -s /usr/local/cronolog/sbin/cronolog /usr/bin/
  2,创建一个命名管道
  mkfifo /data/access_log_pipe
  3,配置cronolog,按需配置:
  精确到分钟
  nohup cat /data/access_log_pipe | /usr/local/cronolog/sbin/cronolog /data/logs/%Y%m%d/access_%Y%m%d%H%M.log &
  精确到小时
  nohup cat /data/access_log_pipe | /usr/local/cronolog/sbin/cronolog /data/logs/%Y%m%d/access_%Y%m%d%H.log &
  注意: cronolog必须在nginx启动前启动。如果nginx先启动了,可以reload实现。
  4:相关应用方式测试;
  #####################################################################
  4.1日志直接写入文:100/1抽样测试
  测试脚本:
  for i in $(seq 1000);do echo --$i---;curl http://192.168.2.151/lua;done
  nginx配置:
  server {
  listen       80;
  server_name  localhost;
  access_log  /data/logs/access_2014021203.log  main  ratio=0.01;
  结果统计:
  [root@computer logs]# wc -l access_2014021203.log  #按照分钟切割日志
  10 access_2014021203.log
  ####################################################################
  4.2 日志写入 管道文件 抽样测试
  测试脚本:
  for i in $(seq 1000);do echo --$i---;curl http://192.168.2.151/lua;done
  nginx配置:
  server {
  listen       80;
  server_name  localhost;
  access_log  /data/access_log_pipe  main  ratio=0.01;
  [root@computer 20140212]# wc -l access_2014021203.log
  10 access_2014021203.log
  4.3 测试结论;
  nginx结合cronolog能够按照需求灵活的切割日志,nginx之前简单总结啦一下有三种日志切割方式,详见:
  http://michaelkang.blog.51cto.com/1553154/1359062
  cronolog对日志切割算比较灵活的,就是管道文件不是以服务的方式启动的,放置在后台比较担心稳定性。
  下面是整理的将cronolog启动文件添加到nginx启动文件内容:
  5.将cronolog启动文件嵌入nginx启动文件,保证在nginx启动之前启动管道文件。
  ###########nginx启动配置文件内置cronolog启动
  [root@computer ~]# more /etc/init.d/nginx.cronolog
  #!/bin/sh
  #
  # Comments to support chkconfig
  #
  # chkconfig: 2345 77 77
  # Description: Startup script for nginx webserver
  #
  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  DESC="nginx daemon"
  NAME=nginx
  DAEMON=/usr/local/nginx/sbin/$NAME
  CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
  PIDFILE=/usr/local/nginx/logs/$NAME.pid
  SCRIPTNAME=/etc/init.d/$NAME
  #日志存放位置
  if [ ! -d "/data/logs" ]; then
  mkdir -p "/data/logs"
  fi
  #生成管道文件位置
  if [ ! -d "/usr/local/nginx/pipe/" ]; then
  mkdir -p "/usr/local/nginx/pipe/"
  fi
  #cronolog相关变量
  LOGPATH=/data/logs
  PIPEPATH=/usr/local/nginx/pipe/
  ERROE_LOG_PIPE=/usr/local/nginx/pipe/error_log_pipe
  ACCESS_LOG_PIPE=/usr/local/nginx/pipe/access_log_pipe
  CRONOLOG=/usr/local/cronolog/sbin/cronolog
  d_mkfifo(){
  #判断管道文件属性、建立管道文件
  if [ ! -p "$ERROE_LOG_PIPE" ]; then
  /bin/rm "$ERROE_LOG_PIPE"
  mkfifo "$ERROE_LOG_PIPE"
  fi
  if [ ! -p "$ACCESS_LOG_PIPE" ]; then
  /bin/rm "$ACCESS_LOG_PIPE"
  mkfifo  "$ACCESS_LOG_PIPE"
  fi
  }
  cronolog_start()
  {
  #ps -ef|grep wireless|grep -v grep |awk '{print $2}'|xargs kill -9
  nohup cat "$ACCESS_LOG_PIPE" | $CRONOLOG  $LOGPATH/%Y%m%d/Access_%Y%m%d%H.log &
  nohup cat "$ERROE_LOG_PIPE" |  $CRONOLOG  $LOGPATH/%Y%m%d/Error_%Y%m%d%H.log &
  }
  cronolog_kill()
  {
  ps -ef|grep data/logs|grep -v grep |awk '{print $2}'|xargs kill -9
  ps -ef|grep nginx/pipe|grep -v grep |awk '{print $2}'|xargs kill -9
  }
  # Gracefully exit if the package has been removed.
  test -x $DAEMON || exit 0
  d_start() {
  d_mkfifo
  cronolog_start
  $DAEMON -c $CONFIGFILE || echo -n " already running"
  }
  d_stop() {
  #  kill -QUIT `cat $PIDFILE` || echo -n " not running"
  cronolog_kill
  killall nginx || echo -n " not running"
  }
  d_reload() {

  kill -HUP `cat $PIDFILE` || echo -n " can't>  }
  case "$1" in
  start)
  echo -n "Starting $DESC: $NAME"
  d_start
  echo "."
  ;;
  stop)
  echo -n "Stopping $DESC: $NAME"
  d_stop
  echo "."
  ;;
  reload)
  echo -n "Reloading $DESC configuration..."
  d_reload
  echo "reloaded."
  ;;
  status)
  pgrep -x $NAME > /dev/null && echo $NAME \(pid `pgrep $NAME`\) is running...  || echo "$NAME is stoped."
  ;;
  test|-t)
  $DAEMON -t
  ;;
  restart)
  echo -n "Restarting $DESC: $NAME"
  d_stop
  sleep 2
  d_start
  echo "...done!"
  ;;
  *)
  echo "Usage: $SERVICENAME {start|stop|restart|reload|status|check}"
  exit 3
  ;;
  esac
  exit 0


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-634475-1-1.html 上篇帖子: 2017最新nginx+keepalived+centos7安装配置过程 下篇帖子: 整合freeBSD下nginx+php+mysql安装方案(ports安装)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表