Linux系统自带日志管理工具rsyslog简单介绍
1,可以已查看本機的rsyslog服務狀態
??sudo systemctl status rsyslog
2,可以查看服務的包的版本及配置所在目錄
2.1,可以看出這個 /etc/logrotate.d/syslog這個文件是系統默認自帶的要輪詢系統自帶日志的文件
cat /etc/logrotate.d/syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler {missingokdailysharedscriptssize 512Mrotate 10postrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript }2.1,?/etc/rsyslog.conf為rsyslogd的主配置文件
[root@master logrotate.d]# grep -C 5 maillog /etc/rsyslog.conf # The authpriv file has restricted access. authpriv.* /var/log/secure# Log all the mail messages in one place. mail.* -/var/log/maillog# Log cron stuff cron.* /var/log/cron[root@master logrotate.d]# grep -C 10 maillog /etc/rsyslog.conf #kern.* /dev/console# Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages# The authpriv file has restricted access. authpriv.* /var/log/secure# Log all the mail messages in one place. mail.* -/var/log/maillog# Log cron stuff cron.* /var/log/cron# Everybody gets emergency messages *.emerg :omusrmsg:*# Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler2.3,/etc/sysconfig/rsyslog是配置rsyslog的文件
[root@master logrotate.d]# cat /etc/sysconfig/rsyslog # Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2" # See rsyslogd(8) for more details SYSLOGD_OPTIONS="" [root@master logrotate.d]#3,服務說明
? ? ? ? 3.1
| 服務名稱 | 說明 |
| auth | 安全和認證相關信息( 不推薦使用authpriv替代) |
| authpriv | 安全和認證相關信息(私有的) |
| cron | 系統定時任務cront和at產生的日志 |
| daemon | 個各個守護進程相關的日志 |
| ftp | ftp守護進程產生的日志 |
| kern | 內核產生相關的日志(不是用戶進程產生的) |
| local0-local7 | 為本地服務使用預留的服務 |
| lpr | 打印產生的日志 |
| 郵件收發信息 | |
| news | 與新聞服務器相關的日志 |
| syslog | 有syslog服務產生的日志信息(雖然服務名稱已經改為rsyslogd,但是很多配置都還是沿用了syslogd的,這里名沒有修改服務名) |
| user | 用戶等級類別的日志信息 |
| uucp | uucp子系統的日志信息,uucp是早期Linux系統進行數據傳遞的協議,后來也常用在新聞組服務中。 |
? ? ? ?3.2,連接符號
連接符號可以識別為:
“*”代表所有日志等級,比如“authpriv.*”代表authpriv認證信息服務產生的日志,所有的日志等級都記錄。
“.”代表只要比后面等級高的(包含該等級)日志都記錄下來。比如:“cron.info”代表cron服務產生的日志,只要日志等級大于等于inifo級別,就記錄。
“.=”代表值記錄所需等級的日志,其他等級的都不記錄。比如:“*.=emerg”代表任何服務日志產生的日志,只要記錄是emerg等級就記錄。這種用法極少,了解就好。
“.!”代表不等于,也就是除了該等級的日志外,其他等級的日志都記錄。
? ? ? ? 3.3日志等級
| 等級名稱 | 說明 |
| debug | 一般的調試信息說明 |
| info | 基本的通知信息 |
| notice | 普通信息,但是有一定的重要性 |
| warning | 警告信息,但是還不會影響到服務或系統的運行 |
| err | 錯誤信息,一般達到err等級的信息以及可以影響到服務或系統的運行了。 |
| crit | 臨界狀況信息,比err等級還要重要 |
| alert | 警告狀態信息,比crit還要嚴重,必須立即采取行動 |
| emerg | 疼痛等級信息,系統以及無法使用了 |
?3.4,日志記錄位置
日志文件絕對路徑,如“/var/log/secure”
系統設備文件,如“/dev/lp0”
轉發給遠程主機,如"@192.177.5.55:5200"
用戶名,如“root” 忽略或丟棄日志,如“~”
4,?那如果我們想設置一個自己服務該如果配置呢,其實很簡單
先看下定時任務的配置:
[root@master logrotate.d]# cat /etc/cron.daily/logrotate #!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0可以看到它其實是加載的/etc/logrotate.conf文件,那讓我們再看下這個文件
[root@master logrotate.d]# 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 {monthlycreate 0664 root utmpminsize 1Mrotate 1 }/var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1 }# system-specific logs may be also be configured here.可以看到include /etc/logrotate.d這行代碼其實是加載的 /etc/logrotate.d這個目錄,那再讓我們看下這個目錄下:
[root@master logrotate.d]# ll /etc/logrotate.d/ total 36 -rw-r--r--. 1 root root 91 Sep 30 2020 bootlog -rw-r--r--. 1 root root 160 Sep 19 2018 chrony -rw-r--r--. 1 root root 93 Nov 17 2020 firewalld -rw-r--r-- 1 root root 810 Oct 2 2020 mariadb -rw-r--r-- 1 root root 109 Feb 16 15:33 mysqld -rw-r--r-- 1 root root 127 Oct 26 2018 redis -rw-r--r--. 1 root root 224 Sep 30 2020 syslog -rw-r--r--. 1 root root 100 Oct 31 2018 wpa_supplicant -rw-r--r--. 1 root root 103 Oct 2 2020 yum可以看到都是一下文件,以服務名命名,我們打開一個比如redis
[root@master logrotate.d]# cat !$/redis cat /etc/logrotate.d//redis /var/log/redis/*.log {weeklyrotate 10copytruncatedelaycompresscompressnotifemptymissingok }參數說明如下:
| 配置參數 | 說明 |
| monthly | 日志文件將按月輪循。其它可用值為'daily','weekly'或者'yearly'。 |
| rotate 5 | 一次將存儲5個歸檔日志。對于第六個歸檔,時間最久的歸檔將被刪除。 |
| compress | 在輪循任務完成后,已輪循的歸檔將使用gzip進行壓縮。 |
| delaycompress | 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。 |
| missingok | 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。 |
| notifempty | 如果日志文件為空,輪循不會進行。 |
| create 644 root root | 以指定的權限創建全新的日志文件,同時logrotate也會重命名原始日志文件。 |
| postrotate/endscript | 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執行。在這種情況下,rsyslogd?進程將立即再次讀取其配置并繼續運行。 |
所以如果想我想見一個mysql,其實只需要把目錄換成mysql自己的日志目錄就可以了,切分規則可以自己定,我的是這樣的:
[root@master logrotate.d]# cat /etc/logrotate.d/mysqld /data/mysql/log/mysql-error.log {weeklymissingokrotate 4copytruncatemaxsize 100K }我為了驗證效果設置的切分大小有點小100k,我的效果是這樣的(當然需要等定時任務生效,或者直接手動重新執行一下定時任務的那個命令即可)
[root@master logrotate.d]# ll /data/mysql/log/ total 228 drwxr-xr-x. 2 mysql mysql 80 Feb 16 15:00 binlog drwxr-xr-x. 2 mysql mysql 95 Feb 16 15:00 iblog -rw-r-----. 1 mysql mysql 0 Feb 16 15:33 mysql-error.log -rw-r----- 1 mysql mysql 224865 Feb 16 15:33 mysql-error.log-20220216 -rw-r-----. 1 mysql mysql 5686 Feb 16 15:00 mysql-slow.log drwxr-xr-x. 2 mysql mysql 6 Oct 21 2020 relaylog以上是我自己學習logrotate的一些總結,希望幫助到更多人謝謝。
總結
以上是生活随笔為你收集整理的Linux系统自带日志管理工具rsyslog简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 文件管理器 ranger,l
- 下一篇: 使用SPWM控制逆变器