# Implementing Syslog Centralization With Rsyslog

> 配置 rsyslog 实现集中式日志收集，支持 TLS 加密、自定义模板和日志轮转。 生成服务端和客户端配置文件，包含 GnuTLS 流驱动、x509 证书认证、 按主机隔离日志存储以及高可用 syslog 基础设施的可靠队列设置。

- Skill: `killvxk/implementing-syslog-centralization-with-rsyslog` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/implementing-syslog-centralization-with-rsyslog`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/implementing-syslog-centralization-with-rsyslog/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/implementing-syslog-centralization-with-rsyslog

---


## 使用说明

1. 安装依赖：`pip install jinja2 paramiko`
2. 使用 OpenSSL 为 rsyslog 服务端和客户端生成 TLS 证书。
3. 运行 Agent 生成 rsyslog 服务端和客户端配置：
   - 服务端：在 6514 端口监听 TLS，按主机目录输出，JSON 格式模板
   - 客户端：使用磁盘辅助队列进行可靠的 TLS 转发
4. 通过 SSH（paramiko）将配置部署到服务器。
5. 验证 TLS 连接和日志投递。

```bash
python scripts/agent.py --server-ip 10.0.0.1 --clients 10.0.0.10,10.0.0.11 --ca-cert ca.pem --output syslog_report.json
```

## 示例

### 服务端配置（TLS）
```
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1"
       StreamDriver.Authmode="x509/name")
input(type="imtcp" port="6514")
template(name="PerHostLog" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
*.* ?PerHostLog
```

### 客户端配置（可靠转发）
```
action(type="omfwd" target="10.0.0.1" port="6514" protocol="tcp"
       StreamDriver="gtls" StreamDriverMode="1"
       StreamDriverAuthMode="x509/name"
       queue.type="LinkedList" queue.filename="fwdRule1"
       queue.maxdiskspace="1g" queue.saveonshutdown="on"
       action.resumeRetryCount="-1")
```

