如何配置rsyslog读取指定目录下的日志文件
配置rsyslog读取指定目录下的日志并转发
1. 加载imfile模块
rsyslog依赖imfile模块读取本地文件,首先在配置中加载该模块(推荐在/etc/rsyslog.d/下新建自定义配置文件,比如00-network-log.conf,避免修改主配置/etc/rsyslog.conf):
module(load="imfile")
2. 配置监控指定目录的日志文件
根据需求配置监控目标目录下的日志文件。比如要监控/opt/my-network-logs/目录下所有.log后缀的文件,添加以下配置:
input( type="imfile" File="/opt/my-network-logs/*.log" # 指定监控的文件路径,支持通配符匹配 Tag="network-log:" # 给这类日志添加专属标签,方便识别过滤 StateFile="rsyslog-network-logs" # 记录日志读取位置的状态文件,防止重启后重复读取 Severity="info" # 自定义日志级别,可根据实际场景调整 Facility="local0" # 自定义日志设备,用于分类管理 PollingInterval="10" # 可选:每隔10秒检查目录变化,旧版本rsyslog可能需要 )
- 若要监控目录下所有文件(不限后缀),将
File参数改为/opt/my-network-logs/* Tag参数会作为日志前缀,方便后续精准转发或筛选
3. 配置日志转发
你已有的全局转发规则*.* action(type="omfwd" target="192.0.2.2" port="10514" protocol="tcp")会覆盖所有收集到的日志,包括刚配置的目录日志。如果只想转发这类网络日志,可以替换为精准规则:
:syslogtag, isequal, "network-log:" action(type="omfwd" target="192.0.2.2" port="10514" protocol="tcp")
4. 配置权限
确保rsyslog运行用户(通常是syslog或adm)有目标目录及文件的读取权限:
chown -R syslog:syslog /opt/my-network-logs/ # 若需要兼容其他用户读写,可设置ACL: setfacl -R -m u:syslog:rX /opt/my-network-logs/
5. 重启rsyslog服务
配置完成后,重启服务使配置生效:
systemctl restart rsyslog # 旧系统可使用: service rsyslog restart
内容的提问来源于stack exchange,提问作者mayouy
相关产品推荐
相关产品推荐

