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

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-2-14 14:33:30 | 显示全部楼层 |阅读模式
调用方式可以看一下的文章;
调用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
金山快盘附件cronolog-1.6.2.tar.gz(130.46KB)



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;
结果统计:
[iyunv@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;

[iyunv@computer 20140212]# wc -l access_2014021203.log  
10 access_2014021203.log

4.3 测试结论;
nginx结合cronolog能够按照需求灵活的切割日志,nginx之前简单总结啦一下有三种日志切割方式,详见:
http://michaelkang.blog./1553154/1359062
cronolog对日志切割算比较灵活的,就是管道文件不是以服务的方式启动的,放置在后台比较担心稳定性。

下面是整理的将cronolog启动文件添加到nginx启动文件内容:

5.将cronolog启动文件嵌入nginx启动文件,保证在nginx启动之前启动管道文件。
###########nginx启动配置文件内置cronolog启动

[iyunv@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 reload"
}


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-14947-1-1.html 上篇帖子: nginx 里设置font-face 跨域 下篇帖子: nginx的中文rewrite规则 切割
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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