logrotate 做日誌收集處理
logrotate是一個日誌檔案管理工具。用來把舊檔案輪轉、壓縮、刪除,並且建立新的日誌檔案。
用好logrotate,就不用專門去寫切割日誌的指令碼,去維護一個專門的crontab 了,方便實用。
1.logrotate的目錄結構
主目錄結構:
[[email protected] ~]# ll /etc/|grep logrotate
-rw-r--r--. 1 root root 662 Aug 29 2007 logrotate.conf
drwxr-xr-x. 2 root root 4096 Sep 20 16:09 logrotate.d
[[email protected] ~]#
子目錄結構:
[[email protected] ~]# ll /etc/logrotate.d/ total 60 -rw-r--r--. 1 root root 71 Aug 17 2013 cups -rw-r--r--. 1 root root 103 Dec 8 2011 dracut -rw-r--r--. 1 root root 468 Aug 20 04:23 fail2ban -rw-r--r--. 1 root root 307 Jul 10 2013 haproxy -rw-r--r--. 1 root root 224 Sep 20 16:08 httpd -rw-r--r--. 1 root root 871 Feb 13 2014 mysqld -rw-r-----. 1 root named 170 Jan 21 2014 named -rw-r--r--. 1 root root 256 Jun 10 05:08 puppet -rw-r--r--. 1 root root 159 Mar 22 2013 puppet-dashboard -rw-r--r--. 1 root root 131 Apr 1 2012 redis -rwxr-xr-x. 1 root root 452 Jul 11 06:57 salt -rw-r--r--. 1 root root 98 Apr 23 2007 supervisor -rw-r--r--. 1 root root 210 Aug 3 2011 syslog -rw-r--r--. 1 root root 100 Dec 9 2011 yum -rw-r--r--. 1 root root 107 Jun 21 00:23 zabbix-server
logrotate.conf 通用的配置
1.rotate log files的時間間隔
2.backlogs 的儲存時間
3.是否壓縮檔案等
等等
具體如下:
[[email protected] ~]# cat /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.
其中有一個配置項是:include /etc/logrotate.d 這裡面引入了一些常用自定義的子配置檔案,子配置檔案可以重寫主配置檔案的某些配置項。
子配置:
看一個Apache http例子預設的配置:
[[email protected] ~]# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
Apache的日誌結構
[[email protected] httpd]# ll
total 756
-rw-r--r--. 1 root root 0 Sep 14 03:09 access_log
-rw-r--r--. 1 root root 9220 Jun 16 15:00 access_log.1
-rw-r--r--. 1 root root 286 Aug 31 03:18 access_log-20140829.gz
-rw-r--r--. 1 root root 532 Sep 10 04:38 access_log-20140831.gz
-rw-r--r--. 1 root root 2300 Sep 14 03:09 access_log-20140910.gz
-rw-r--r--. 1 root root 527385 Sep 12 13:38 access_log-20140914
-rw-r--r--. 1 root root 27361 Sep 14 21:20 error_log
-rw-r--r--. 1 root root 452 Jun 16 15:01 error_log.1
-rw-r--r--. 1 root root 237 Aug 31 03:18 error_log-20140824.gz
-rw-r--r--. 1 root root 71168 Sep 7 03:38 error_log-20140831.gz
-rw-r--r--. 1 root root 239 Sep 14 03:09 error_log-20140907.gz
-rw-r--r--. 1 root root 61331 Sep 14 03:09 error_log-20140914
-rw-r--r--. 1 root root 285 Jun 16 15:01 error_log.2.gz
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_access_log
-rw-r--r--. 1 root root 10989 Sep 14 21:20 ssl_error_log
-rw-r--r--. 1 root root 118 Aug 31 03:18 ssl_error_log-20140824.gz
-rw-r--r--. 1 root root 135 Sep 7 03:38 ssl_error_log-20140831.gz
-rw-r--r--. 1 root root 118 Sep 14 03:09 ssl_error_log-20140907.gz
-rw-r--r--. 1 root root 1776 Sep 12 12:34 ssl_error_log-20140914
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_request_log
修改下預設的配置:
[[email protected] ~]# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
rotate 2
missingok
notifempty
compress
sharedscripts
delaycompress
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null && touch /tmp/hello
endscript
}
[[email protected] ~]#
然後手動執行下 logrotate
[[email protected] httpd]# logrotate -f /etc/logrotate.conf
[[email protected] httpd]# ll
total 576
-rw-r--r--. 1 root root 0 Sep 14 03:09 access_log
-rw-r--r--. 1 root root 9220 Jun 16 15:00 access_log.1
-rw-r--r--. 1 root root 286 Aug 31 03:18 access_log-20140829.gz
-rw-r--r--. 1 root root 532 Sep 10 04:38 access_log-20140831.gz
-rw-r--r--. 1 root root 2300 Sep 14 03:09 access_log-20140910.gz
-rw-r--r--. 1 root root 527385 Sep 12 13:38 access_log-20140914
-rw-r--r--. 1 root root 290 Sep 20 16:09 error_log
-rw-r--r--. 1 root root 452 Jun 16 15:01 error_log.1
-rw-r--r--. 1 root root 2582 Sep 20 16:09 error_log-20140914.gz
-rw-r--r--. 1 root root 1736 Sep 20 16:14 error_log-20140920.gz
-rw-r--r--. 1 root root 285 Jun 16 15:01 error_log.2.gz
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_access_log
-rw-r--r--. 1 root root 111 Sep 20 16:09 ssl_error_log
-rw-r--r--. 1 root root 197 Sep 20 16:09 ssl_error_log-20140914.gz
-rw-r--r--. 1 root root 433 Sep 20 16:14 ssl_error_log-20140920.gz
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_request_log
之前的rotate引數是4 預設儲存4份,且是weekly,子配置項是compresss,所以有.gz的間隔是7天,然後我在子配置檔案,重寫了rotate 引數,變成了2個,手動執行之後,多餘的被刪除了。如果你足夠細心的話,你會發現acess_log 沒有變化,因為在http配置項中有一個notifyempty
notifempty
Do not rotate the log if it is empty (this overrides the ifempty option).
訪問下website 然後重新執行下:
[[email protected] httpd]# logrotate -f /etc/logrotate.conf
[[email protected] httpd]# ll
total 68
-rw-r--r--. 1 root root 816 Sep 20 16:15 access_log
-rw-r--r--. 1 root root 9220 Jun 16 15:00 access_log.1
-rw-r--r--. 1 root root 2300 Sep 14 03:09 access_log-20140910.gz
-rw-r--r--. 1 root root 13015 Sep 20 16:15 access_log-20140914.gz
-rw-r--r--. 1 root root 516 Sep 20 16:15 error_log
-rw-r--r--. 1 root root 452 Jun 16 15:01 error_log.1
-rw-r--r--. 1 root root 2582 Sep 20 16:09 error_log-20140914.gz
-rw-r--r--. 1 root root 1736 Sep 20 16:14 error_log-20140920.gz
-rw-r--r--. 1 root root 285 Jun 16 15:01 error_log.2.gz
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_access_log
-rw-r--r--. 1 root root 111 Sep 20 16:09 ssl_error_log
-rw-r--r--. 1 root root 197 Sep 20 16:09 ssl_error_log-20140914.gz
-rw-r--r--. 1 root root 433 Sep 20 16:14 ssl_error_log-20140920.gz
-rw-r--r--. 1 root root 0 Jul 17 10:53 ssl_request_log
[[email protected] httpd]#
一些常用的配置說明:
compress通過gzip 壓縮轉儲以後的日誌
nocompress不需要壓縮時,用這個引數
copytruncate 用於還在開啟中的日誌檔案,把當前日誌備份並截斷
nocopytruncate 備份日誌檔案但是不截斷
create mode owner group 轉儲檔案,使用指定的檔案模式建立新的日誌檔案
nocreate 不建立新的日誌檔案
delaycompress 和 compress 一起使用時,轉儲的日誌檔案到下一次轉儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉儲同時壓縮。
errors address 專儲時的錯誤資訊傳送到指定的Email 地址
ifempty 即使是空檔案也轉儲,這個是 logrotate 的預設選項。
notifempty 如果是空檔案的話,不轉儲
mail address 把轉儲的日誌檔案傳送到指定的E-mail 地址
nomail 轉儲時不傳送日誌檔案
olddir directory 轉儲後的日誌檔案放入指定的目錄,必須和當前日誌檔案在同一個檔案系統
noolddir 轉儲後的日誌檔案和當前日誌檔案放在同一個目錄下
prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
daily 指定轉儲週期為每天
weekly 指定轉儲週期為每週
monthly 指定轉儲週期為每月
rotate count 指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
tabootext [+] list 讓logrotate 不轉儲指定副檔名的檔案,預設的副檔名是:.rpm-orig, .rpmsave, v, 和 ~
size size 當日志文件到達指定的大小時才轉儲,Size 可以指定 bytes (預設)以及KB (sizek)或者MB (sizem).
如何設定logrotate的間隔
應該很容易理解
[[email protected] httpd]# ll /etc/|grep cron
-rw-r--r--. 1 root root 541 Jul 19 2011 anacrontab
drwxr-xr-x. 2 root root 4096 Sep 18 10:36 cron.d
drwxr-xr-x. 2 root root 4096 Sep 20 15:57 cron.daily
-rw-r--r--. 1 root root 0 Jul 19 2011 cron.deny
drwxr-xr-x. 2 root root 4096 Sep 20 15:57 cron.hourly
drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.monthly
-rw-r--r--. 1 root root 457 Sep 27 2011 crontab
drwxr-xr-x. 2 root root 4096 Sep 27 2011 cron.weekly
解釋一個特殊的東西
[[email protected] httpd]# sudo su xluren
cd[[email protected] httpd]$ cd ~
[[email protected] ~]$ crontab
You (xluren) are not allowed to use this program (crontab)
See crontab(1) for more information
[[email protected] ~]$ crontab -e
You (xluren) are not allowed to use this program (crontab)
See crontab(1) for more information
[[email protected] ~]$ exit
exit
[[email protected] httpd]# cat /etc/cron.
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/
[[email protected] httpd]# cat /etc/cron.deny
xluren
[[email protected] httpd]#
文件http://linuxcommand.org/man_pages/logrotate8.html相關推薦
logrotate 做日誌收集處理
logrotate是一個日誌檔案管理工具。用來把舊檔案輪轉、壓縮、刪除,並且建立新的日誌檔案。 用好logrotate,就不用專門去寫切割日誌的指令碼,去維護一個專門的crontab 了,方便實用。 1.logrotate的目錄結構 主目錄結構: [[email
使用elasticsearch和filebeat做日誌收集
hosts 處理 如何 emp 51cto -h host beat 日誌收集 在存儲數據之前,elasticsearch可以使用Ingest Node對數據做預處理。https://www.elastic.co/guide/en/beats/filebeat/curren
微服務下,使用ELK做日誌收集及分析
一、使用背景 目前專案中,採用的是微服務框架,對於日誌,採用的是logback的配置,每個微服務的日誌,都是通過File的方式儲存在部署的機器上,但是由於日誌比較分散,想要檢查各個微服務是否有報錯資訊,需要挨個服務去排查,比較麻煩。所以希望通過對日誌進行聚合,然後通過監控,能夠快速的找到各個微服務的報錯資
老生常談SpringAop日誌收集與處理做的工具包
#### AopLog是基於Spring Aop 和ThreadLocal實現的一個專門對請求方法內容日誌的攔截與處理的日誌工具包。 ![](https://img.shields.io/static/v1?label=release&message=2.1&color=green)![](
ELK+syslog+nginx訪問日誌收集+分詞處理
elk nginx syslog mapping 一、nginx訪問日誌配置:1、日誌格式配置:log_format json ‘{"@timestamp":"$time_iso8601",‘ ‘"host":"$server_addr",‘
ELK nginx系統日誌收集+微服務日誌集中處理實戰
ELK 系統 ELK Elastic stack is a popular open-source solution for analyzing weblogs,ELK stack will reside on a server separate from y
filebeat + ELK 做日誌分析 配置 logstash 做正則匹配處理message 時間的讀取 時區處理 反斜槓 ip 處理
利用 Filebeat 去讀取日誌傳送到 Logstash ,再由 Logstash 對日誌分析處理,提取我們需要的項後傳送給 Elasticsearch 儲存起來, 然後利用 Kibana 去分析獲得
elk通過kafka收集處理Tomcat日誌
環境說明 server 安裝軟體 10.16.0.15 elasticsearch+logstash+kibana+kafka 10.16.0.14 tomcat+logstash+mysql
filebeat和logstash收集處理java多行日誌
2017-11-15 08:04:23:889 ERROR com.weconex.pay.callback.gateway.service.mq.receive.MerchantCallbackReceiver 173 send - 商戶回撥閘道器-- 傳送HTTP異常!引數:requestNo=1012
日誌收集與處理
日誌的出現是為了彌補使用System.out.println()進行除錯的不足. 因為列印語句需要我們一條一條手動控制. 日誌的管理分為兩大部分: 日誌記錄器 日誌處理器 日誌記錄器負責按設定級別對日誌進行記錄和向上傳遞, 日誌處理器負責按設定級別對日
linux日誌分割處理工具logrotate
logrotate 程式是一個日誌檔案管理工具。用來把舊的日誌檔案刪除,並建立新的日誌檔案,我們把它叫做“轉儲”。我們可以根據日誌檔案的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行。 logrotate 程式還可以用於壓縮日誌檔案,以及傳送日誌到指定
Linux 之rsyslog+LogAnalyzer 日誌收集系統
windows 服務器 應用程序 數據庫 規劃圖 一、LogAnalyzer介紹 LogAnalyzer工具提供了一個易於使用,功能強大的前端,用於搜索,查看和分析網絡活動數據,包括系統日誌,事件日誌和其他許多日誌源。由於它只是將數據展示到我們用戶的面前,所以數據本身需要由另一個程序收集
logrotate切割日誌後,新的日誌還是寫入到老的日誌文件中
logrotate線上生產環境中,安裝了dnsmasq,並記錄日誌。由於每一次dns查詢都會生產日誌,考慮到日誌量越來越大,就用logrotate做日誌輪轉。配置如下:/var/log/dnsmasq/dnsmasq.log { daily //按天輪轉日誌 rotat
Laravel之加密解密/日誌/異常處理及自定義錯誤
文件中 例如 tom 處理器 crypt return cat 情況 而不是 一.加密解密 1.加密Crypt::encrypt($request->secret) 2.解密try { $decrypted = Crypt::decrypt($encryptedV
簡單記錄一次REDO文件損壞報錯 ORA-00333重做日誌讀取塊出錯
clas 後者 利用 實例恢復 poi cancel true cover html 一.故障描寫敘述 首先是實例恢復須要用到的REDO文件損壞 二、解決方法 1.對於非當前REDO或者當前REDO可是無活動事務使用下面CLEAR命令: 用CLEAR命令重建該日誌
通過 rsync 做日誌log備份
rsync 日誌備份 log rsyslog1、拓撲如下:2、通過rsync日誌備份1>ssh 免密鑰登陸確定發起方,從log-back-server_10.1.1.1 為中心發起方。因此,要實現從log-server到各主機之前的 免密登陸。在log-server 主機上,cd ~ &&a
我感覺prometheus這種日誌收集模式不錯
ima 報警 tin bsp intro 思想 tar 分享 安裝 思想可以,可推可拉,可自己寫接入點。。。還有報警。。。 按官方文檔試一下安裝 https://prometheus.io/docs/introduction/getting_started/
Oracle Logminer 分析重做日誌RedoLog和歸檔日誌ArchiveLog
cti data 格式 保存 命令 重啟 msl dba object 在實際開發過程中,有時我們很有可能需要某個表的操作痕跡,或通過記錄的SQL語句進行有目的性的數據恢復(此時POINT-IN-TIME恢復已經滿足不了更細的粒度)、或僅僅是查看;
日誌異常處理-spring aop註解
get target public ring -s row imp for method spring aop 可以在不破壞我們程序代碼的前提下很好的對程序異常進行打印,網上也有很多這樣的例子,我這裏寫的比較簡單,只是針對程序出異常時進行見到的日誌打印,代碼比較簡單。
Flume日誌收集系統架構詳解--轉
with 指定 mwl 裏程碑 工程 生命 數據接收 dba -i 2017-09-06 朱潔 大數據和雲計算技術 任何一個生產系統在運行過程中都會產生大量的日誌,日誌往往隱藏了很多有價值的信息。在沒有分析方法之前,這些日誌存儲一段時間後就會被清理。隨著技術的發展和