久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Linux常用運(yùn)維服務(wù) – Nginx與Tomcat日志切割

      一 、Nginx-Tomcat 等常用服務(wù)日志分析

      在實(shí)際生產(chǎn)中,我們知道哪些應(yīng)用的日志會(huì)自動(dòng)分割嗎?哪些應(yīng)用日志需要我們通過(guò)服務(wù)進(jìn)行定時(shí)分割?接下來(lái)我們來(lái)看看。

      對(duì)比的標(biāo)準(zhǔn)

      • 是否會(huì)自動(dòng)切割 ?
      • 重啟是否會(huì)自動(dòng)分割 ?

      Nginx 日志

      日志名稱 日志描述 是否自動(dòng)切割 是否需要定時(shí)切割
      access.log Nginx 訪問(wèn)日志
      error.log Nginx 錯(cuò)誤日志

      如果需要單獨(dú)配置網(wǎng)站日志的話需要在 server 模塊添加access_log logs/djx.log ;

      Tomcat日志

      日志名稱 日志描述 是否自動(dòng)切割 是否需要定時(shí)切割
      catalina.out Tomcat 運(yùn)行時(shí)日志和輸出到控制臺(tái)日志(應(yīng)用)
      catalina.2019-04-28.log Tomcat本身運(yùn)行的日志,主要是啟動(dòng)和暫停的。
      localhost_access_log.2019-04-28.txt 訪問(wèn) Tomcat 的日志,請(qǐng)求時(shí)間和資源,狀態(tài)碼都有記錄
      localhost.2019-04-28.log 應(yīng)用初始化(listener, filter, servlet)未處理的異常最后被 Tomcat 捕獲而輸出的日志
      host-manager.2019-04-28.log 放 Tomcat 的自帶的 Host Manager項(xiàng)目的日志信息的
      manager.2019-04-28.log Tomcat 自帶 Manager項(xiàng)目專有的日志文件

      Tomcat 的日志比較特別和有意思,我也是認(rèn)真看了看才發(fā)現(xiàn)其中的奧秘。

      畫重點(diǎn)了

      Tomcat 的 catalina.out 日志是 不會(huì)自動(dòng)切割的,所以我們需要對(duì)它進(jìn)行定時(shí)切割,重啟 Tomcat 也是不會(huì)自動(dòng)切割的。

      其它的日志 Tomcat 是會(huì)進(jìn)行自動(dòng)切割的,但是會(huì)遵循這樣的一個(gè)規(guī)則:日志隔天切割,有日志才切割,重啟會(huì)切割:

      • 日志隔天切割 :含義是 日志在24.00分才會(huì)進(jìn)行切割,如果 00:00:10 產(chǎn)生了當(dāng)天的第一條日志,那么就進(jìn)行切割。
      • 有日志才切割 :含義是 如果滿足了隔天的要求,但是第二天一直沒有產(chǎn)生日志,那么就會(huì)直到第二天第一條日志產(chǎn)生時(shí)才進(jìn)行切割。
      • 重啟切割 : 含義是 如果上面的條件都不滿足,就是到了第二天,但是一條日志一直都沒有產(chǎn)生,那么在重啟Tomcat 時(shí)是會(huì)進(jìn)行切割的。

      上面內(nèi)容有點(diǎn)繞,我們舉幾個(gè)示例理解下。

      示例1:

       Tomcat 在 2019 年 4 月28號(hào)15.30分啟動(dòng)的,有日志文件 catalina.2019-04-28.log 等。2019 年 4月29號(hào)的第一條日志在 2019 年 4月29號(hào)9.30分。那么日志切割在什么時(shí)候?    ?       日志切割是在  2019 年 4月29號(hào)9.30分。

      示例2:

       Tomcat 在 2019 年 4 月28號(hào)10.30分啟動(dòng)的,有日志文件 catalina.2019-04-28.log 等。在 2019 年 4月29號(hào)3.30分重啟了 Tomcat  ,但是在重啟前,Tomcat 在2019 年 4月29號(hào)3.30分當(dāng)天是沒有產(chǎn)生日志的,但在  2019 年 4月29號(hào) 3.50 產(chǎn)生了日志。問(wèn)在什么時(shí)候切割了日志?    ?       Tomcat   重啟時(shí)就進(jìn)行了切割。

      MongoDB 日志

      MongoDB 的日志我們平時(shí)是關(guān)注的比較少,但是我們這邊還是做下記錄。

      MongoDB 的日志是否切割取決于 MongoDB 的配置參數(shù)。

      logRotate= rename/reopen      #3.0.0版中的新功能??梢匀≈禐?rename 或 reopen:          rename 重命名日志文件。每次重啟都會(huì)重命名日志文件。          reopen 按照典型的 Linux/Unix 日志循環(huán)行為關(guān)閉并重新打開日志文件。使用 reopen 使用的             Linux/Unix logrotate的工具時(shí),以避免日志的丟失。          如果指定 reopen,則還必須使用 logappend  logappend= true # 當(dāng) MongoDB 實(shí)例重新啟動(dòng)時(shí),將新的日志內(nèi)容添加到現(xiàn)有日志文件的末尾。如果沒有此選項(xiàng),MongoDB 將備份現(xiàn)有日志并創(chuàng)建新文件。

      但是,MongoDB 的日志默認(rèn)是不會(huì)進(jìn)行切割的(如果不重啟的話)。

      MongoDB 日志切割 見文章 :MongoDB 日志切割三種方式

      Redis 日志

      Redis 日志默認(rèn)也是不切割的, 重啟也不切割。 Redis 日志在實(shí)際環(huán)境中我們也是建議進(jìn)行切割的,切割頻率可以降低。我看到有的 Redis 日志達(dá)到 1G,運(yùn)行了2年,那么我們進(jìn)行查找日志就比較不方便的,所以建議 Redis 的日志也進(jìn)行切割。

      二 、日志切割服務(wù) logrotate

      我們通常會(huì)去尋找對(duì)應(yīng)的日志切割服務(wù),但是我們不知道系統(tǒng)默認(rèn)已經(jīng)默認(rèn)帶了一個(gè)日志的切割服務(wù) logrotate。像我們系統(tǒng)的日志 /var/log/cron 、/var/log/maillog、/var/log/messages等等這些都是通過(guò) logrotate 來(lái)進(jìn)行切割的,我們可以在文件 /etc/logrotate.d/syslog 看到具體的配置。logrotate 可以每天或者每個(gè)月按周期對(duì)日志進(jìn)行自動(dòng)切割和壓縮,以及通過(guò)郵件發(fā)送。logrotate 的自動(dòng)切割是 通過(guò) crond 來(lái)運(yùn)行任務(wù)的。

      logrotate 官方鏈接

      logrotate 命令以及選項(xiàng)

      logrotate [OPTION...] <configfile>   -d, --debug  # 僅僅是測(cè)試,并不做任何東西。在測(cè)試配置文件是否正確的時(shí)候可以使用。   -f, --force  # 指定配置文件   -m, --mail=command # 指定發(fā)送郵件的命令,替代 /bin/mail   -s, --state=statefile # 指定狀態(tài)文件的路徑 ,默認(rèn)路徑是 /var/lib/logrotate.status 。   -v, --verbose  # 顯示 logrotate 分割信息   -l, --log=STRING # 指定日志文件的路徑   --version # 顯示版本信息

      logrotate 配置文件路徑

      logrotate 配置文件的位置 位于/etc/logrotate.conf

      logrotate 用戶配置文件位于 /etc/logrotate.d/

      logrotate 的執(zhí)行狀態(tài)文件/var/lib/logrotate.status

      logrotate 配置文件的參數(shù):

      compress # 是否通過(guò)gzip壓縮轉(zhuǎn)儲(chǔ)以后的日志文件,如xxx.log-20131216.gz ;如果不需要壓縮,注釋掉就行  compresscmd # 指定壓縮的命令,默認(rèn) gzip  uncompresscmd # 用于解壓縮的日志文件的命令 默認(rèn)是 gunzip  compressext  # 啟用壓縮的擴(kuò)展名,默認(rèn) gzip 的擴(kuò)展名就是 .gz。  copy  # 制作日志文件的副本,與create選項(xiàng)互斥。  copytruncate # 用于還在打開中的日志文件,把當(dāng)前日志備份并截?cái)?;是先拷貝再清空的方式,拷貝和清空之間有一個(gè)時(shí)間差,可能會(huì)丟失部分日志數(shù)據(jù)。與create選項(xiàng)互斥。  create mode owner group # 在切割后,創(chuàng)建新的日志文件,并指定數(shù)據(jù)的權(quán)限和所有者和所屬組。  dateext    # 這個(gè)參數(shù)很重要!就是切割后的日志文件以當(dāng)前日期YYYYMMDD為格式結(jié)尾,如xxx.log-20131216這樣,如果注釋掉,切割出來(lái)是按數(shù)字遞增,即前面說(shuō)的 xxx.log-1這種格式  dateformat format_string # 指定日志文件后綴日期格式  ifempty # 表示即使是空文件也要選擇,該選項(xiàng)是默認(rèn)值。與 notifempty 相反  notifempty  # 當(dāng)日志文件為空時(shí),不進(jìn)行輪轉(zhuǎn),與 ifempty 相反  mailfirst  #  當(dāng)配置了郵件地址,指定發(fā)送最新的文件  maillast  # 當(dāng)配置了郵件地址,指定發(fā)送最舊的文件,(默認(rèn)設(shè)置)  rotate count  # 日志保留的次數(shù), 如果該參數(shù)不寫的話,默認(rèn)就是刪除之前所有的文件日志。比如切割了200次,那么只保留最新的180次日志,并刪除舊的20次日志。如果配置文件指定的是 daily,那每天切割一次日志,就意味著保留180天日志。  maxage count # 刪除早于 count 天的日志,如果配置了 mail 則通過(guò)郵件發(fā)送。  daily   # 每天 切割  weekly  # 每周運(yùn)行一次,通常在每周的第一天。  monthly      # 每月運(yùn)行一次切割,通常會(huì)在該月的第一天。  yearly   # 如果當(dāng)前年份與上一次年份不相同,就會(huì)進(jìn)行切割  nocompress   # 不進(jìn)行壓縮。   size size  # 日志文件達(dá)到多大就切割  olddir dir  # 切割后存放的目錄  start count  #  當(dāng)沒有指定日期后綴,將數(shù)字作為后綴內(nèi)容,默認(rèn)是從 1 開始 ??梢灾付ㄆ渌麛?shù)字開始。  missingok   # 如果日志丟失,不報(bào)錯(cuò)繼續(xù)滾動(dòng)下一個(gè)日志  mail  112@163.com # 該參數(shù)與 rotate 是有關(guān)聯(lián)的,當(dāng)超過(guò) rotate 指定次數(shù),文件不是刪除,而是通過(guò)郵件發(fā)送到指定位置。  prerotate       # 在logrotate轉(zhuǎn)儲(chǔ)之前需要執(zhí)行的指令  postrotate      # 在logrotate轉(zhuǎn)儲(chǔ)之后需要執(zhí)行的指令 ###  3.85 版本增加每個(gè)小時(shí)切割  hourly # 每個(gè)小時(shí)切割

      示例配置

      #  文件路徑,可以使用通配符。  /opt/tomcat/logs/catalina.out{  compress   compressext .gz  copytruncate  dateext  notifempty  maillast  rotate 180   daily  size 10M  olddir /opt/logs/tomcat  missingok  mail 888888@qq.com # 如果我們本地沒有配置好發(fā)送郵件配置的話是發(fā)送不了郵件的。  }

      常用命令

      logrotate -d -f /etc/logrotate.d/tomcat  # 測(cè)試配置文件是否配置正常  logrotate  -f /etc/logrotate.d/tomcat  # 立刻切割文件,可以將該命令放到定時(shí)任務(wù)中實(shí)現(xiàn)定時(shí)切割

      注意事項(xiàng):

      • 當(dāng)我們?cè)O(shè)置好日志按日進(jìn)行切割的時(shí)候,具體的執(zhí)行時(shí)間是在什么時(shí)候呢?我們不要以為是會(huì)在 24.00 的時(shí)候進(jìn)行切割的,它進(jìn)行切割的時(shí)間是隨機(jī)的。這個(gè)隨機(jī)值取決于 crond 服務(wù)的,最終會(huì)取決于文件 /etc/anacrontab

        [root@localhost ~]# cat /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details.    SHELL=/bin/sh  PATH=/sbin:/bin:/usr/sbin:/usr/bin  MAILTO=root  # the maximal random delay added to the base delay of the jobs # 延遲時(shí)間  RANDOM_DELAY=45  # the jobs will be started during the following hours only    執(zhí)行時(shí)間段  START_HOURS_RANGE=3-22    #period in days   delay in minutes   job-identifier   command  1   5   cron.daily      nice run-parts /etc/cron.daily  7   25  cron.weekly     nice run-parts /etc/cron.weekly  @monthly 45 cron.monthly        nice run-parts /etc/cron.monthly  

        我們可以發(fā)現(xiàn) 定時(shí)任務(wù)是會(huì)在 3-22點(diǎn)的5分-45分里面進(jìn)行日志切割。

      • 生產(chǎn)環(huán)境中該如何定時(shí)日志分割

        我們?cè)趯?shí)際的生產(chǎn)環(huán)境中,我們通常會(huì)進(jìn)行按日進(jìn)行日志分割,也就是我們希望在 24.00 進(jìn)行前一天的日志分割,我們可以通過(guò) crond 服務(wù)進(jìn)行定時(shí)切割 (logrotate -f /etc/logrotate.d/tomcat ), 但是我們通常在很多應(yīng)用中會(huì)有定時(shí)任務(wù)在 24.00進(jìn)行執(zhí)行,那個(gè)時(shí)間段也就會(huì)產(chǎn)生大量的日志,如果我們?cè)诖藭r(shí)切割,那么我們可能會(huì)導(dǎo)致比較多的重要的日志丟失(并且此時(shí)任務(wù)多,資源消耗多,切割也慢),那么我們建議先咨詢開發(fā),24.00 是否有大量定時(shí)任務(wù),我們可以在 24.00之前幾分鐘或者之后幾分鐘 進(jìn)行切割。這樣就避免大量的日志丟失。

      三、日志切割示例

      Nginx 切一切

      示例:Nginx 日志保存在 /opt/nginx/logs/,包含日志 access.logerror.log。

      /opt/nginx/logs/* {  compress   compressext .gz  copytruncate  dateext  notifempty  maillast  rotate 180   daily  size 10M  olddir /opt/logs/nginx  missingok  mail 888888@qq.com # 如果我們本地沒有配置好發(fā)送郵件配置的話是發(fā)送不了郵件的。  }

      Tomcat 切一切

      示例:Tomcat 日志保存在 /opt/tomcat/logs/,包含日志 catalina.out,其他日志會(huì)自動(dòng)切割。

      /opt/tomcat/logs/catalina.out{  compress   compressext .gz  copytruncate  dateext  notifempty  maillast  rotate 180   daily  size 10M  olddir /opt/logs/tomcat  missingok  mail 888888@qq.com # 如果我們本地沒有配置好發(fā)送郵件配置的話是發(fā)送不了郵件的。
      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)