Nginx日志按天分割實(shí)戰(zhàn)
前言
nginx日志文件建議按照天的維度進(jìn)行分割,方便快速按照天的維度分析以及查找報(bào)錯(cuò)定位
一、方式1:定時(shí)任務(wù)執(zhí)行分割腳本
1.分割日志腳本
創(chuàng)建一個(gè)sh文件,寫(xiě)入以下內(nèi)容(個(gè)別內(nèi)容根據(jù)自己nginx的情況修改)
我這里的文件為 /usr/local/nginx/log_bak.sh
#/bin/bash yesterday=$(date +%Y-%m-%d) #取得服務(wù)器當(dāng)前時(shí)間 savepath_log=' /var/log/nginx_bak'#分割后的日志文件保存目錄(注意結(jié)尾目錄斜杠去掉) nglogs='/usr/local/nginx/logs' #nginx日志文件目錄,具體根據(jù)實(shí)際地址替換(結(jié)尾目錄斜杠去掉 以免與下面路徑中的"/"重復(fù)) #判斷分割日志保存目錄是否存在不存在則創(chuàng)建 if [ ! -d ${savepath_log} ] # 注意 語(yǔ)句之間 空格不可省略,這是bash腳本 不是php腳本那樣隨和 then mkdir -p ${savepath_log} fi #通過(guò)mv命令將日志移動(dòng)到分割后的日志目錄里,然后發(fā)送kill -USR1信號(hào)給Nginx的主進(jìn)程號(hào),讓Nginx重新生成一個(gè)新的日志文件。 mv ${nglogs}/access.log ${savepath_log}/access_${yesterday}.log #具體根據(jù)你的實(shí)際日志文件名路徑 進(jìn)行修改access.log名字 mv ${nglogs}/error.log ${savepath_log}/error_${yesterday}.log #具體根據(jù)實(shí)際日志文件名地址 修改error.log名字 mv ${nglogs}/host.access.log ${savepath_log}/host.access_${yesterday}.log kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #通知nginx重新生成新的日志
2.添加定時(shí)任務(wù)
crontab -e 后添加下面內(nèi)容
59 23 * * * /usr/local/nginx/log_bak.sh(自己寫(xiě)的腳本的路徑)
這樣每天的23點(diǎn)59就會(huì)將當(dāng)天的日志進(jìn)行備份,并生成新的日志文件繼續(xù)記錄訪問(wèn)日志
二、方式2:logrotate配置分割
1.logrotate簡(jiǎn)單介紹
logrotate 是一個(gè) Linux系統(tǒng)日志的管理工具??梢詫?duì)單個(gè)日志文件或者某個(gè)目錄下的文件按時(shí)間 / 大小
進(jìn)行切割,壓縮操作;指定日志保存數(shù)量;還可以在切割之后運(yùn)行自定義命令。
主流 Linux 發(fā)行版上都默認(rèn)安裝有 logrotate 包,如果你的 Linux 系統(tǒng)中找不到 logrotate, 可以使用 apt-get 或 yum 命令來(lái)安裝。
yum install -y logrotate
下面命令可以查看是否安裝了
rpm -ql logrotate
/etc/logrotate.conf是主配置文件,/etc/logrotate.d 文件夾下面是自定義的配置文件
2.新增切割nginx日志的配置文件
在/etc/logrotate.d目錄下新增nginx文件
vi nginx 寫(xiě)入下面內(nèi)容(我的日志文件目錄是/data/wxl/nginx/logs/)
/data/wxl/nginx/logs/ /data/nginx/logs/*.log { daily # 按天分割 rotate 30 #保留30個(gè)文件 create sharedscripts # 所有的文件切割之后只執(zhí)行一次下面腳本,通知nginx重新打開(kāi)新的日志文件進(jìn)行后續(xù)寫(xiě)入 postrotate if [ -f /data/nginx/logs/nginx.pid ]; then kill -USR1 `cat /data/nginx/logs/nginx.pid` # 通過(guò)USER1信號(hào)通知nginx重新打開(kāi)日志文件 fi endscript }
這樣就會(huì)每天定時(shí)分割日志了
也可以手動(dòng)執(zhí)行命令測(cè)試一下能否正常分割日志
logrotate -f /etc/logrotate.d/nginx
3.備份日志壓縮
如果分割后的日志想要壓縮進(jìn)行空間節(jié)約
可以加上下面配置
compress # 以gzip方式壓縮 nodelaycompress # 所有分割后的文件都進(jìn)行壓縮
推薦將 nodelaycompress 改為 delaycompress,這樣分割后對(duì)最新的序號(hào)為1的文件不會(huì)進(jìn)行壓縮,對(duì)其他序號(hào)的文件進(jìn)行壓縮,這樣可以方便我們查看最新的分割日志。
4.分割日志后綴改為日期
如果想要分割后的日志后綴為當(dāng)天日志的日期,可以加上下面的配置
dateext # 切割后的文件添加日期作為后綴 dateyesterday # 配合dateext使用,添加前一天的日期作為分割后日志的后綴 dateformat -%Y-%m-%d # 格式為2022-02-08
到此這篇關(guān)于Nginx日志按天分割實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Nginx日志按天分割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置二級(jí)域名的方法實(shí)現(xiàn)
本文主要介紹了Nginx配置二級(jí)域名的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03使用Nginx解決跨域訪問(wèn)問(wèn)題的完整案例
在現(xiàn)代的Web開(kāi)發(fā)中,跨域訪問(wèn)是一種常見(jiàn)的需求,由于瀏覽器的同源策略,不同域名之間的訪問(wèn)存在一定的限制,本文將介紹如何使用Nginx來(lái)解決跨域訪問(wèn)的問(wèn)題,并通過(guò)一個(gè)完整的實(shí)例來(lái)展示,需要的朋友可以參考下2024-03-03linux(centos5.5)/windows下nginx開(kāi)啟phpinfo模式功能的配置方法分享
某站點(diǎn)用到結(jié)合phpinfo功能的urlrewrite,在nginx中需要在nginx.conf文件中進(jìn)行配置才可支持phpinfo2013-02-02nginx限制ip訪問(wèn)頻率的實(shí)現(xiàn)示例
Nginx通過(guò)limit_conn_zone 和 limit_req_zone對(duì)同一個(gè)IP地址進(jìn)行限速限流,本文主要介紹了nginx限制ip訪問(wèn)頻率的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07使用Nginx反向代理實(shí)現(xiàn)多端口跳轉(zhuǎn)的實(shí)戰(zhàn)分享
在現(xiàn)代Web開(kāi)發(fā)中,Nginx作為一款高性能的開(kāi)源反向代理服務(wù)器,提供了強(qiáng)大的功能來(lái)管理網(wǎng)絡(luò)流量和路由,本文將介紹如何利用 Nginx 的反向代理功能,以實(shí)現(xiàn)多端口跳轉(zhuǎn)的效果,需要的朋友可以參考下2024-02-02記一次nginx配置不當(dāng)引發(fā)的499與failover 機(jī)制失效問(wèn)題
近期在非高峰期也存在499超過(guò)告警閾值的偶發(fā)情況,多的時(shí)候一天幾次,少的時(shí)候則幾天一次,持續(xù)一般也就數(shù)分鐘,經(jīng)過(guò)和小伙伴的共同探究,最后發(fā)現(xiàn)之前對(duì)于499是客戶端主動(dòng)斷開(kāi)因而和服務(wù)端關(guān)系不大的想當(dāng)然認(rèn)知是錯(cuò)誤的,這里記錄一下2023-05-05