日志分析與Rsyslog


---------------------------分析和存儲日志--------------------------------

 #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" 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM