# CentOS8中怎么配置Rsyslog服務器
## 前言
Rsyslog是Linux系統中最常用的日志管理工具之一,它提供了高性能、高安全性的日志處理能力。在CentOS8中配置Rsyslog服務器可以幫助我們集中管理多臺服務器的日志,便于監控和故障排查。本文將詳細介紹在CentOS8系統中配置Rsyslog服務器的完整步驟。
## 一、Rsyslog簡介
### 1.1 什么是Rsyslog
Rsyslog("Rocket-fast SYStem for LOG processing")是syslog協議的增強實現,具有以下特點:
- 支持TCP、UDP、TLS加密傳輸
- 支持MySQL、PostgreSQL等數據庫存儲
- 支持日志內容過濾和重定向
- 高性能,每秒可處理百萬級日志消息
### 1.2 Rsyslog基本架構
[客戶端] –> (網絡傳輸) –> [Rsyslog服務器] –> (存儲/轉發)
## 二、環境準備
### 2.1 系統要求
- CentOS8操作系統
- 至少1GB可用內存
- root或sudo權限
### 2.2 檢查系統版本
```bash
cat /etc/centos-release
# 臨時關閉防火墻
systemctl stop firewalld
# 或開放514端口(UDP/TCP)
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload
CentOS8默認已安裝Rsyslog,可通過以下命令驗證:
rsyslogd -v
dnf install rsyslog
systemctl start rsyslog
systemctl enable rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d/*.conf
編輯主配置文件:
vim /etc/rsyslog.conf
取消以下注釋以啟用TCP/UDP監聽:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
在文件末尾添加:
# 接收所有設備的日志
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
# 按IP地址分類存儲
$template IpTemplate,"/var/log/%FROMHOST-IP%/%PROGRAMNAME%.log"
*.* ?IpTemplate
# 過濾特定程序的日志
if $programname == 'nginx' then /var/log/nginx/access.log
vim /etc/rsyslog.conf
添加以下內容(替換192.168.1.100為服務器IP):
*.* @192.168.1.100:514 # UDP傳輸
*.* @@192.168.1.100:514 # TCP傳輸
systemctl restart rsyslog
dnf install logrotate
vim /etc/logrotate.d/remote_logs
添加以下內容:
/var/log/*/*.log {
daily
missingok
rotate 30
compress
delaycompress
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
openssl req -x509 -newkey rsa:2048 -keyout /etc/rsyslog.key -out /etc/rsyslog.crt -days 365 -nodes
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1")
input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
*.* @@(o)server.example.com:6514;RSYSLOG_TLS
# 只允許特定IP訪問
$AllowedSender UDP, 192.168.1.0/24
$AllowedSender TCP, 192.168.1.0/24
logger "This is a test message from client"
ls /var/log/client-hostname/
tail -f /var/log/client-hostname/root.log
systemctl status rsyslog
netstat -tulnp | grep rsyslog
chmod -R 755 /var/log/
semanage fcontext -a -t var_log_t "/var/log/.*"
restorecon -Rv /var/log
# 啟用批量處理
$ActionQueueSize 100000
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
dnf install rsyslog-mysql
module(load="ommysql")
*.* :ommysql:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD
module(load="omelasticsearch")
template(name="json-template" type="list" option.json="on") {
constant(value="{")
constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\"}")
}
action(type="omelasticsearch"
server="elasticsearch.example.com"
serverport="9200"
template="json-template"
searchIndex="syslog"
bulkmode="on")
通過本文的詳細指導,您應該已經成功在CentOS8上配置了Rsyslog服務器。Rsyslog的強大功能可以幫助您構建企業級的日志管理系統,結合其他工具如Logstash、Grafana等可以打造完整的監控解決方案。
命令 | 說明 |
---|---|
systemctl status rsyslog |
查看服務狀態 |
rsyslogd -N1 |
測試配置文件 |
logger "test message" |
發送測試日志 |
tail -f /var/log/messages |
實時查看日志 |
”`
這篇文章共計約2100字,采用Markdown格式編寫,包含了CentOS8中配置Rsyslog服務器的完整指南,從基礎安裝到高級配置,并提供了常見問題解決方案和進階建議。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。