---------------------------分析和存儲日志--------------------------------
#tail -f /var/log/messages[實時監控日志]
rsyslog設施類型(facility)
設施名代碼說明
kern 0 內核日志消息
user 1 隨機的用戶日志消息
mail 2 郵件系統日志消息
daemon 3 系統守護進程日志消息
auth 4 安全管理日志消息
syslog 5 syslogd本身的日志消息
lpr 6 打印機日志消息
news 7 新聞服務日志消息
uucp 8 uucp(unix2unixcopy)日志消息
cron 9 crond日志消息
authpriv 10 授權相關的日志信息
ftp 11 ftp守護進程的日志信息
12-15 保留,由系統使用
local0~local7 16-23 保留,本地使用(可自定義)
使用logger發送日志消息
發送一個local3.info的日志消息
#logger -p local3.info "hello!"
//*-p指定優先級
發送一個以kern設備優先級為err級別的消息
#logger -t kern -p err “hello,wahahah.”
Rsyslog
查看當前系統中rsyslog狀態
#systemctl status rsyslog
#systemctl is-enabled rsyslog
#systemctl is-active rsyslog
通過ps查看rsyslog進程
#ps -ef | grep rsyslogd | grep -v grep
配置說明:
舉例:
/var/log/wtmp {
monthly ←每月轉儲
create 0664 root utmp ←創建wtmp文件,
文件權限0644,屬主root,屬組:utmp
minsize:1M ←日志大於1M才將被轉儲
rotate 1 ←轉儲文件保留1份
}
示例1:
1.編輯一個test的配置
#vim /etc/logrotate.d/test
/var/log/test.log {
missingok
rotate 5
size 1k
create 0640 root root
}
2.創建/var/log/test.log文件,大小為1000K
#dd if=/dev/zero of=/var/log/test.log bs=1024 count=1000
3.執行logrotate轉儲
#logrotate -v /etc/logrotate.conf
4.查看轉儲
#ls -l /var/log/test.log*
#journalctl[查看當前系統日志]
#journalctl -n 5[顯示最新的5條日志記錄]
#journalctl -p err[僅列示出err的錯誤信息]
#journalctl -f[實時查看日志信息]
#journalctl --since today[查看今天的日志]
#journalctl –snice yesterday[查看昨天的日志]
#journalctl --since “2014-09-09” --until “2014-09-15”[查看2014-09-09至2014-09-15的日志信息]
#journalctl --since “2014-09-09 12:50:00” --until “2014-09-15 12:00:00”[查看2014-09-09 12:50至2014-09-15 12:00的日志信息]
#journalctl --since 9:00 --until 18:00[按當日指定時間查看]
#journalctl --since 9:00_SYSTEMD_UNIT=sshd.service[依照某個時間查看指定的單元信息]
注:計算機必須uptime,一旦reboot,將只能看到啟動之后的日志
#journalctl -o verbose[通過journalctl獲得更多的各項服務/進程的信息]
#journalctl -o verbose -n[顯示10個服務/進程的詳細信息]
#journalctl -o verbose -n 1[顯示1個服務/進程的詳細信息]
#journalctl_SYSTEMD_UNIT=sshd.service[顯示指定的單元類型的相關日志信息]
#journalctl_SYSTEMD_UNIT=sshd.service _PID=862[顯示指定的單元類型及其PID的相關日志信息]
#journalctl _UID=0[顯示指定的UID所運行的服務/進程]
#journalctl _PID=1[顯示指定的PID信息]
#journalctl -b[查看從啟動時開始的所有信息]
#journalctl -b -1[顯示上一次系統啟動前產生的日志]
#journalctl -k[顯示由kernel產生的日志信息]
#systemd-analyze[顯示本次啟動系統過程中用戶、initrd和kernel所花費的時間]
#systemd-analyze blame[顯示每個啟動項所花費的時間明細]
#systemd-analyze critical-chain[時間順序你打印UNIT樹]
#systemd-analyze plot > bootplot.svg[產生開機啟動過程的時間圖標]
#systemd-analyze dot | dot -Tsvg >systemd.svg[產生開機啟動過程生成向量圖]
將systemd journal寫入至硬盤
(1)建立存放路徑並設置相關權限
#mkdir -v /var/log/journal
#chown root.systemd-journal /var/log/journal
#chmod 2755 /var/log/journal
(2)重啟你的系統或執行
#killall -USR1 systemd-journald
//*USR1用戶自定義信號,本實驗用來產生日志消息
(3)確認目錄下內容
#cd /var/log/journal
#cd $ID ←進入你機器的編號
#ls
system.journal
---------------------------------Rsyslog----------------------------------
實現集中管理日志目的:
將B主機(client)的指定日志信息發送至A
主機(Server).在A主機上可以集中查看A和B主機的全部信息
IP說明
host-A:192.168.131.129
host-B:192.168.131.136
Server端(A主機)實現
(1)配置rsyslog.conf
#vim /etc/rsyslog.conf
將下列注釋開啟
$ModLoad imudp ←開啟UDP syslog輸入插件
$UDPServerRun 514 ←-開啟UDP監聽端口514
$ModLoad imtcp ←開啟TCP syslog輸入插件
$InputTCPServerRun 514 ← 開啟TCP監聽端口
rsyslog的傳統傳送日志方式的有3 種
1.UDP傳輸, 但信息有損耗
2.基於TCP明文的傳輸,只在特定情況下丟失信息,並被廣泛使用
3.RELP傳輸,不會丟失信息,但只在rsyslogd 3.15.0及以上版本中可用
如果准備使用RELP傳輸,需要手動添加以下內容:
$ModLoad imrelp
$InputRELPServerRun 2514
(2)#vim /etc/sysconfig/rsyslog改為 SYSLOGD_OPTIONS="-r514 -c2"[啟用監聽服務]
Rsyslog
參數:
-c 指定運行兼容模式(兼容syslog)
-r 指定監聽端口
-x再接收客戶端時,禁用DNS查找(與-r配合)
-m標記時間戳.單位:分鍾,為0時,表示禁用。(即每個多少分鍾,在日志文件里增加—MARK--,以便於確認syslog守護進程沒有停止)
-s ip :表示僅允許接收來自指定的IP信息
-s 192.168.131.136:192.168.10.2
#systemctl restart rsyslog[重啟主機A的rsyslog服務]
Client(Host B)配置
#vim /etc/rsyslog.conf[配置rsyslog.conf]
在下面添加一行如下配置
*.* @192.168.131.129
注:
UDP傳輸 在主機名前加"@"→在客戶端更改傳輸方式后需重啟服務
TCP傳輸 在主機名前加"@@"
RELP傳輸 在主機名前加":omrelp:"
#systemctl restart rsyslog.service[啟動rsyslog]
測試
1)Server端(Host-A)
#tail -f /var/log/messages[時時監控]
2)Client端(Host-B)
#logger -t kern -p err "hahaha"