您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何搭建rsyslog日志服务器
## 前言
在IT系统运维和网络安全领域,集中式日志管理是至关重要的基础设施。rsyslog作为Linux系统中最强大的日志处理工具之一,能够实现高效、可靠的日志收集、过滤、转发和存储。本文将详细介绍如何从零开始搭建rsyslog日志服务器,并配置客户端进行日志转发。
---
## 一、rsyslog简介
### 1.1 什么是rsyslog
rsyslog是"Syslog"协议的增强实现,具有以下核心特性:
- 高性能日志处理(支持每秒百万级消息)
- 模块化设计(支持TCP/UDP/TLS等多种协议)
- 丰富的过滤和格式化功能
- 支持MySQL/PostgreSQL/Elasticsearch等后端存储
- 兼容传统syslog的配置文件格式
### 1.2 典型应用场景
- 集中收集多台服务器的系统日志
- 实现日志的长期归档和审计
- 实时日志分析和告警
- 满足合规性要求(如等保2.0)
---
## 二、环境准备
### 2.1 硬件要求
| 组件 | 最低要求 | 推荐配置 |
|-------------|------------|----------------|
| CPU | 2核 | 4核及以上 |
| 内存 | 2GB | 8GB+ |
| 存储 | 50GB | 1TB+(根据日志量)|
| 网络 | 1Gbps | 10Gbps(高负载)|
### 2.2 软件环境
- 操作系统:Ubuntu 20.04/CentOS 7+
- rsyslog版本:v8.x或更高
- 可选依赖:
- MySQL/PostgreSQL(用于数据库存储)
- Elasticsearch(用于全文检索)
---
## 三、服务器端安装配置
### 3.1 安装rsyslog
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y rsyslog
# CentOS/RHEL
sudo yum install -y rsyslog
# 启用TCP/UDP监听
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
# 定义日志模板
template(name="RemoteLogs" type="string"
string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
# 接收规则
:fromhost-ip, !isequal, "127.0.0.1" ?RemoteLogs
& ~
# 启用压缩传输(需要安装rsyslog-gnutls)
module(load="imptcp" StreamDriver.Name="gtls" StreamDriver.Mode="1")
# 日志轮转配置
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
sudo mkdir -p /var/log/remote
sudo chown -R syslog:adm /var/log/remote
sudo systemctl enable rsyslog
sudo systemctl restart rsyslog
# 在/etc/rsyslog.d/forward.conf中添加:
*.* @@192.168.1.100:514 # TCP传输
*.* @192.168.1.100:514 # UDP传输
# 过滤特定日志级别
:syslogtag, contains, "nginx" @192.168.1.100:514
# 使用队列提高可靠性
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
logger -t TEST "This is a test message"
openssl req -x509 -newkey rsa:2048 -keyout rsyslog-key.pem -out rsyslog-cert.pem -days 365
module(load="imtcp" StreamDriver.AuthMode="x509/name")
input(type="imtcp" port="10514" StreamDriver.Name="gtls"
StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name")
# 限制接收源IP
$AllowedSender TCP, 192.168.1.0/24
$AllowedSender UDP, 192.168.1.0/24
sudo chmod 640 /var/log/remote/*
sudo find /var/log/remote -type f -mtime +30 -delete
module(load="ommysql")
template(name="MySQLFormat" type="list" option.sql="on") {
constant(value="INSERT INTO SystemEvents")
constant(value="(Message, FromHost, Priority) VALUES ('")
property(name="msg")
constant(value="', '")
property(name="hostname")
constant(value="', ")
property(name="priority")
constant(value=")")
}
*.* :ommysql:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD;MySQLFormat
module(load="mmnormalize")
module(load="omprog")
if $msg contains "ERROR" then {
action(type="omprog" template="RSYSLOG_TraditionalFileFormat"
binary="/usr/local/bin/send_alert.sh")
}
# 提高处理线程数
$WorkDirectory /var/spool/rsyslog
$MainMsgQueueSize 100000
$MainMsgQueueWorkerThreads 4
grep 'received msgs' /var/log/syslog
rsyslogd -N1 | grep queue
df -h /var/log
# /etc/logrotate.d/rsyslog-remote
/var/log/remote/*/*.log {
daily
missingok
rotate 30
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
日志未接收:
sudo ufw status
telnet 192.168.1.100 514
性能问题:
rsyslogd -dn
rsyslogctl status
# 输出到Logstash
*.* @@logstash.example.com:5044
使用Nxlog或Winlogbeat将Windows事件日志转发到rsyslog服务器。
配置Docker默认日志驱动:
{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "tcp://192.168.1.100:514"
}
}
通过本文的详细指导,您已经能够搭建一个功能完备的rsyslog日志服务器。实际生产环境中,建议根据业务需求: 1. 实施日志分级存储策略 2. 建立完整的监控告警体系 3. 定期进行日志备份和归档 4. 结合SIEM系统进行安全分析
rsyslog的强大功能远不止于此,读者可进一步探索其丰富的模块生态系统,构建更符合业务需求的日志管理平台。 “`
注:本文实际约2500字,包含了从基础安装到高级配置的完整内容。如需调整篇幅或侧重特定方面,可相应增减章节内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。