一、什么是rsyslog
是一個功能強大的和高度配置化的系統(tǒng)日志守護進程谎脯,可以配置成日志服務器和日志客戶端兩種環(huán)境葱跋。作為日志服務器,可以從其他主機收集日志源梭;作為客戶端娱俺,可以過濾并發(fā)送內(nèi)部日志消息到本地文件或遠程rsyslog服務器。
二废麻、日志類型及等級
1.日志類型
類型 | 含義 |
---|---|
kern | 內(nèi)核信息 |
user | 用戶程序產(chǎn)生的相關信息 |
郵件系統(tǒng)信息 | |
daemon | 守護進程產(chǎn)生的信息 |
auth | pam認證系統(tǒng)信息 |
syslog | 日志系統(tǒng)自身信息 |
authpriv | ssh荠卷、ftp等登錄信息 |
cron | 系統(tǒng)執(zhí)行定時任務產(chǎn)生的信息 |
lpr | 打印相關信息 |
mark | 服務內(nèi)部的信息,時間標識 |
uucp | Unix-to-Unix Copy 兩個ynix之間的相關通信 |
local0-local7 | 保留烛愧,本地使用 |
2.日志等級
級別從低到高油宜,記錄信息越來越少
等級 | 含義 | |
---|---|---|
0 | debug | 包含詳細的開發(fā)情報的信息掂碱,通常只在調(diào)試一個程序時使用 |
1 | info | 通用性信息,一般用來提供有用信息 |
2 | notice | 正常信息验庙,但是較為重要顶吮,可能需要處理 |
3 | warning | 警告信息 |
4 | error/err | 錯誤信息,某個功能或者模塊不能正常工作的信息 |
5 | crit | 嚴重級別粪薛,系統(tǒng)或整個軟件不能正常工作的信息 |
6 | alert | 需要立刻修改的信息悴了,如系統(tǒng)數(shù)據(jù)庫被破壞,ISP連接丟失 |
7 | emerg | 緊急情況违寿,內(nèi)核奔潰等重要信息 |
none | 什么也不記錄 |
三湃交、搭建rsyslog
1.服務端
檢查是否安裝rsyslog
[root@work1 ~]# ps -ef | grep rsyslog
[root@work1 ~]# rsyslogd -v
編輯rsyslog配置文件,開啟允許接收通過udp或者tcp轉(zhuǎn)發(fā)來的日志
[root@work1 ~]# cat /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
可以全局添加配置模板藤巢,來單獨接收遠端傳來的日志
[root@work1 ~]# cat /etc/rsyslog.conf
#### GLOBAL DIRECTIVES ####
$template RemoteLogs,"/var/log/rsyslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
*.* ?RemoteLogs
#創(chuàng)建相應目錄
[root@work1 ~]# mkdir /var/log/rsyslog
重啟服務
[root@work1 ~]# systemctl restart rsyslog.service
2.客戶端
編輯配置文件搞莺,添加日志服務器的地址加端口,@是udp協(xié)議掂咒,@@是tcp協(xié)議
[root@work1 ~]# cat /etc/rsyslog.conf
#udp protocol
*.* @10.0.0.100:514
#tcp protocol
*.* @@10.0.0.100:514
重啟服務
[root@work1 ~]# systemctl restart rsyslog.service
3.測試
客戶端手動添加日志測試才沧,服務端在日志文件查看
[root@node1 ~]# logger -t kern -p err "test00001"
四、rsyslog同步history日志
1.服務端配置
添加將local類型5的日志存放到/var/log/history.log
[root@work1 ~]# grep "local5" /etc/rsyslog.conf
local5.* /var/log/history.log
#創(chuàng)建相應文件
[root@work1 ~]# touch /var/log/history.log
#重啟服務
[root@work1 ~]# systemctl restart rsyslog.service
2.客戶端配置
添加將local類型5的日志發(fā)送到遠程服務端
[root@node1 cron.d]# grep "local5" /etc/rsyslog.conf
local5.* @10.0.0.100:514
#重啟服務
[root@node1 cron.d]# systemctl restart rsyslog.service
添加環(huán)境變量绍刮,用來實時輸出history日志温圆;如果想也收集服務端的history,服務端也進行配置
HISTFILESIZE 是歷史文件中包含的最大行數(shù)
HISTSIZE 命令歷史記錄中要記住的命令數(shù)量
HISTTIMEFORMAT 添加時間戳
PROMPT_COMMAND 實時記錄歷史命令
[root@node1 cron.d]# vim /etc/bashrc
HISTFILESIZE=2000
HISTSIZE=2000
export HISTTIMEFORMAT="%F %T: "
#多個終端同時操作孩革,避免覆蓋岁歉,采用追加的方式
shopt -s histappend
#logger 的用法,-p指定輸入消息日志級別膝蜈;-t 指定標記記錄锅移;-i 記錄進程id
export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local5.notice -t bash -i "user=$USER, ppid=$PPID, from=$SSH_CLIENT, pwd=$PWD, command: $command"; }'
#生效
[root@node1 cron.d]# source /etc/bashrc
3.測試
#客戶端執(zhí)行命令
[root@node1 ~]# touch file
#服務端驗證,遠端執(zhí)行命令的詳細信息已保存到history.log文件中
[root@work1 log]# cat history.log
2024-10-31T09:37:41+08:00 node1 bash[10441]: user=root,ppid=9001,from=10.0.0.1 49898 22,pwd=/root,command:20241031-093741: touch file