在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux日志管理經驗總結

馬哥Linux運維 ? 來源:博客園xiaoyaozhe ? 2024-10-24 17:36 ? 次閱讀

日志管理目標

日志的管理,一般包括兩大部分

日志內容,合理的日志內容(日志錨點,內容格式,等)可以為應用服務的執行記錄、問題排查提供最有力的幫助

日志存檔規則,包括日志分割方式(按日期、按文件大小,等),日志存檔數量,如只保存最近一個月,等

對于自行開發的應用服務,日志的管理可以由開發人員通過日志組件定制化,如logback,log4j等,但對于安裝部署的第三方組件如MySQL、nginx、redis等,以及開發引用的第三方組件如nacos,sentinel等,除非組件開放了豐富的日志配置參數,否則將無法按照開發人員的要求管理日志文件。

特殊日志場景

一些特殊應用服務或組件,如果沒有進行特定的配置操作,默認情況下將使日志文件不受控制,為后期清理造成麻煩,常見的有

nohup方式啟動應用服務,如果未配置日志重定向,或者重定向到了單文件,則系統將日志持續輸出在nohup.out文件或重定向的單文件

mysql數據庫支持配置日志文件路徑,但無法自動清理日志內容

nginx支持配置日志內容模板以及日志文件路徑(默認access.log、error.log),但無法自動清理日志內容

以上類似情況下,日志將始終在單文件中持續輸出,過了一定時間后,日志文件將占用無限大的磁盤存儲,對整個系統造成運行故障。

特殊工具 - 定時清理

可以使用Linux自帶定時工具 crontab + 清理日志腳本的方式,實現定時清理,示例如下

crontab -e
# 定時清理日志,保留最近7天
1 0 * * * find /logs.dir/ -mtime +7 | xargs rm -rf

特別關注

Linux系統下,有些應用服務組件如nginx與MySQL,運行過程中,對日志存儲文件將使用文件句柄跟蹤,如此會有以下問題:

將日志文件重命名,同時新建一個同名的文件,組件依然會向原來的文件中輸出日志

將日志文件刪除(rm -f),也需要同時將應用服務組件進程重啟才行,否則刪除的文件也會由于被占用而無法釋放磁盤資源

刪除但被占用的文件將無法通過 ls -l 命令查看,也無法通過 du -sh 命令統計磁盤占用,但 df -h 命令會顯示真實磁盤占用,只能通過 lsof 命令,查看打開的文件描述符,對運維造成很大麻煩

針對這種情況

如果只是單次清理文件,可以使用清空文件的方式,如 echo > log.log,或其他清空的方式,但切記不能直接 rm -f 刪除

如果已經執行 rm -f 刪除,則可以使用 lsof | grep -i deleted 命令查看被刪除但無法回收的文件,然后將相應的進程重啟即可回收

如果要保留日志內容,又要控制存儲容量,則需要使用logrotate的 拷貝+清空 方式,即只是將日志文件內容拷貝一份存檔,然后清空當前日志文件(而非刪除)

特殊工具 - logrotate

對于不方便進行自定義日志管理的應用服務組件,可以自定義腳本維護,可以自行開發應用軟件維護,但強聯推薦使用Linux系統集成的日志管理工具logrotate,該工具由Linux系統crontab定時調度,支持為相關日志文件(或其他文件)自定義存儲規則,但日志內容只能按照應用服務組件的實現輸出。

logrotate提供的功能參數很多,比較常用的如下

日志分割周期

日志文件擴展名

日志文件分割方式,包括新建+刪除,拷貝+清空,等,適用不同應用服務場景

日志內容壓縮

日志文件存檔數量

logrotate 命令格式:
logrotate [OPTION...] 
-d, --debug :debug模式,測試配置文件是否有錯誤。
-f, --force :強制轉儲文件。
-m, --mail=command :壓縮日志后,發送日志到指定郵箱。
-s, --state=statefile :使用指定的狀態文件。
-v, --verbose :顯示轉儲過程。


vi /etc/logrotate.d/nginx     #在/etc/logrotate.d/目錄下新建nginx文件,內容如下:
/usr/share/nginx/log/*.log{
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 root root
    sharedscripts
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}




#調用方法
logrotate -d /etc/logrotate.d/nginx
#結合crontab定時執行 
echo "0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx > /dev/null 2>&1" >> /var/spool/cron/root






#參數說明:
compress                                  通過gzip 壓縮轉儲以后的日志
nocompress                                不做gzip壓縮處理
copytruncate                              用于還在打開中的日志文件,把當前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數據。
nocopytruncate                            備份日志文件不過不截斷
create mode owner group                   輪轉時指定創建新文件的屬性,如create 0777 nobody nobody
nocreate                                  不建立新的日志文件
delaycompress                             和compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress                           覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok                                 如果日志丟失,不報錯繼續滾動下一個日志
errors address                            專儲時的錯誤信息發送到指定的Email 地址
ifempty                                   即使日志文件為空文件也做輪轉,這個是logrotate的缺省選項。
notifempty                                當日志文件為空時,不進行輪轉
mail address                              把轉儲的日志文件發送到指定的E-mail 地址
nomail                                    轉儲時不發送日志文件
olddir directory                          轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
noolddir                                  轉儲后的日志文件和當前日志文件放在同一個目錄下
sharedscripts                             運行postrotate腳本,作用是在所有日志都輪轉后統一執行一次腳本。如果沒有配置這個,那么每個日志輪轉后都會執行一次腳本
prerotate                                 在logrotate轉儲之前需要執行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate                                在logrotate轉儲之后需要執行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
daily                                     指定轉儲周期為每天
weekly                                    指定轉儲周期為每周
monthly                                   指定轉儲周期為每月
rotate count                              指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext                                   使用當期日期作為命名格式
dateformat .%s                            配合dateext使用,緊跟在下一行出現,定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數
size(或minsize) log-size                  當日志文件到達指定的大小時才轉儲,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).


#當日志文件 >= log-size 的時候就轉儲。以下為合法格式:(其他格式的單位大小寫沒有試過)
size = 5 或 size 5 (>= 5 個字節就轉儲)
size = 100k 或 size 100k
size = 100M 或 size 100M

附錄:logrotate簡易配置


MySQL
/data/mysql/log/mysqld.log
{
    daily
    dateext
    dateyesterday
    copytruncate
    notifempty
    missingok
    olddir backup
    rotate 60
        compress
}


nginx
/usr/local/nginx/logs/access.log
/usr/local/nginx/logs/error.log
{
    daily
    dateext
    dateyesterday
    copytruncate
    notifempty
    missingok
    olddir backup
    rotate 30
        compress
}

附錄:關于常用組件運行時日志管理

nginx不支持自動清理,默認單文件持續寫入,且不會自動滾動

mysql不支持自動清理,默認單文件持續寫入,且不會自動滾動

zookeeper默認支持自動清理(限制文件大小和個數),log4j配置文件維護

redis不支持自動清理,只記錄少量核心日志,單文件持續寫入,但默認只記錄少量核心日志,可以不處理

kafka的數據記錄日志(topic、offset等),支持自動清理,配置文件維護

kafka操作日志,默認在安裝目錄logs目錄,支持自動滾動,但不會自動清理,log4j配置文件維護

鏈接:https://www.cnblogs.com/xiaoyaozhe/p/17671275.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209476
  • 文件
    +關注

    關注

    1

    文章

    566

    瀏覽量

    24744
  • MySQL
    +關注

    關注

    1

    文章

    809

    瀏覽量

    26564
  • 日志
    +關注

    關注

    0

    文章

    138

    瀏覽量

    10642

原文標題:Linux日志管理經驗總結(crontab+logrotate)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Altera SOPC專題競賽-經驗總結

    Altera SOPC專題競賽-經驗總結Altera SOPC專題競賽-經驗總結.docx
    發表于 08-10 18:19

    電源制作高手經驗總結

    電源制作高手經驗總結電源制作高手經驗總結 28頁.pdf (2.9 MB )
    發表于 06-05 02:05

    SOPC Builder/Nios 學習經驗總結

    SOPC Builder/Nios 學習經驗總結
    發表于 07-22 15:32 ?0次下載
    SOPC Builder/Nios 學習<b class='flag-5'>經驗總結</b>

    線圈天線設計經驗總結

    線圈天線設計經驗總結
    發表于 09-12 17:21 ?224次下載

    做四軸飛行器的經驗總結

    做四軸飛行器的經驗總結,請各位大神共同學習,里面是一位大神做四軸飛行器的經驗總結
    發表于 11-11 16:52 ?0次下載

    電池管理經驗之談

    電池管理經驗之談,有需要的下來看看
    發表于 08-24 16:30 ?40次下載

    開關電源測量的經驗總結

    開關電源測量的經驗總結,感興趣的小伙伴們可以瞧一瞧。
    發表于 09-18 17:34 ?0次下載

    模擬電路設計經驗總結

    模擬電子的相關知識學習教材資料——模擬電路設計經驗總結
    發表于 09-27 15:19 ?0次下載

    指針經驗總結

    指針經驗總結
    發表于 10-27 15:44 ?19次下載
    指針<b class='flag-5'>經驗總結</b>

    手機TDD引起電流聲問題理論和經驗總結

    手機TDD引起電流聲問題理論和經驗總結
    發表于 11-27 15:02 ?34次下載

    TD-LTE網絡優化經驗總結解析

    TD-LTE網絡優化經驗總結解析說明。
    發表于 04-27 10:30 ?23次下載

    電路設計的一些經驗總結

    電路設計的一些經驗總結
    發表于 12-02 13:57 ?44次下載

    EMI整改經驗總結

    EMI整改經驗總結
    發表于 12-20 15:55 ?45次下載

    富士變頻器維修經驗總結

    富士變頻器維修經驗總結
    發表于 10-07 10:55 ?0次下載

    選擇燒結銀的經驗總結

    選擇燒結銀的經驗總結
    的頭像 發表于 12-17 15:46 ?1395次閱讀
    選擇燒結銀的<b class='flag-5'>經驗總結</b>
    主站蜘蛛池模板: 四虎永久免费观看| 免费观看a黄一级视频| 黄色片啪啪| 天天插天天搞| 亚欧一区| 欧美午夜片| 天天躁日日2018躁狠狠躁| 一二三区视频| 青草青视频在线观看| 午夜毛片福利| 国产三级中文字幕| 久久riav二区三区| 一级做a爰片久久毛片一| 黄色3急| 综合网视频| 中文字幕一区二区三| 色香视频在线| 天天天天操| 精品国产柚木在线观看| 精品国产三级a∨在线| 国产精品午夜寂寞视频| 亭亭色| 午夜精品久久久久久91| 亚洲精品二区中文字幕| 免费爱爱视频| 丁香五六月婷婷| 欧美一级免费| 一区二区三区伦理高清| 国产成人三级视频在线观看播放| 在线黄网| 日本aaaa| 国产呦在线观看视频| 精彩视频一区二区三区| 精品欧美一区二区三区| 波多野结衣久久精品| 色拍拍拍| 理论免费| 色婷婷色综合缴情在线| 日韩夜夜操| 特级一级全黄毛片免费| 天天射天天草|