fix: 替换所有中文括号为英文括号
feat: 新增操作审计字段 user/action/target/result 到 syslog 输出 docs: 更新 README 输出格式和配置示例说明
This commit is contained in:
53
README.md
53
README.md
@@ -1,6 +1,6 @@
|
||||
# db_log_exporter
|
||||
|
||||
从 MySQL / PostgreSQL 数据库表中**定时拉取日志**,写入标准 **syslog 格式**(RFC 5424 变体)文本文件。
|
||||
从 MySQL / PostgreSQL 数据库表中**定时拉取日志**,写入标准 **syslog 格式**(RFC 5424 变体)文本文件。
|
||||
|
||||
---
|
||||
|
||||
@@ -22,20 +22,24 @@
|
||||
|
||||
## 输出格式
|
||||
|
||||
每行一条日志,格式如下(RFC 5424 变体):
|
||||
每行一条日志,格式如下(RFC 5424 变体):
|
||||
|
||||
```
|
||||
<priority>1 2026-05-12T15:30:00.123456+08:00 hostname app_name[12345]: [trace=abc123] [span=def456] 日志内容
|
||||
<priority>1 2026-05-12T15:30:00.123456+08:00 hostname app_name[12345]: [user=张三] [action=删除订单] [target=订单系统] [result=成功] [trace=abc123] [span=def456] 日志内容
|
||||
```
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `<priority>` | syslog 优先级,`<6>`=INFO `<4>`=WARN `<3>`=ERROR 等 |
|
||||
| `version` | RFC 5424 版本号,始终为 `1` |
|
||||
| `timestamp` | ISO 8601 时间(含微秒和时区) |
|
||||
| `hostname` | 配置文件中的 hostname(默认系统 hostname) |
|
||||
| `timestamp` | ISO 8601 时间(含微秒和时区) |
|
||||
| `hostname` | 配置文件中的 hostname(默认系统 hostname) |
|
||||
| `app_name[pid]` | 配置的 app_name + 本进程 PID |
|
||||
| `[trace=...] [span=...]` | 结构化数据(trace_id / span_id 等) |
|
||||
| `[user=...]` | 操作人用户名 |
|
||||
| `[action=...]` | 操作动作,如:删除/创建/更新/登录等 |
|
||||
| `[target=...]` | 操作对象,如:订单系统/用户管理/配置项等 |
|
||||
| `[result=...]` | 操作结果,如:成功/失败/超时等 |
|
||||
| `[trace=...] [span=...]` | 结构化数据(trace_id / span_id 等) |
|
||||
| `message` | 日志正文 |
|
||||
|
||||
---
|
||||
@@ -70,7 +74,7 @@ sudo mkdir -p /etc/db_log_exporter
|
||||
sudo nano /etc/db_log_exporter/config.yaml
|
||||
```
|
||||
|
||||
参考 `config.yaml.example`(本仓库根目录),主要填:
|
||||
参考 `config.yaml.example`(本仓库根目录),主要填:
|
||||
|
||||
```yaml
|
||||
databases:
|
||||
@@ -93,7 +97,7 @@ sources:
|
||||
message: message
|
||||
```
|
||||
|
||||
### 4. 测试连接(Dry-run)
|
||||
### 4. 测试连接(Dry-run)
|
||||
|
||||
```bash
|
||||
python3 /opt/db_log_exporter/db_log_exporter.py \
|
||||
@@ -103,7 +107,7 @@ python3 /opt/db_log_exporter/db_log_exporter.py \
|
||||
|
||||
### 5. 运行方式
|
||||
|
||||
**方式 A:systemd 守护进程(推荐)**
|
||||
**方式 A:systemd 守护进程(推荐)**
|
||||
|
||||
```bash
|
||||
# 复制 service 文件
|
||||
@@ -113,7 +117,7 @@ sudo systemctl enable --now db_log_exporter
|
||||
sudo journalctl -u db_log_exporter -f # 实时查看日志
|
||||
```
|
||||
|
||||
**方式 B:cron 定时任务(单次模式)**
|
||||
**方式 B:cron 定时任务(单次模式)**
|
||||
|
||||
```bash
|
||||
# crontab -e
|
||||
@@ -121,7 +125,7 @@ sudo journalctl -u db_log_exporter -f # 实时查看日志
|
||||
-c /etc/db_log_exporter/config.yaml --once
|
||||
```
|
||||
|
||||
**方式 C:直接运行(前台守护)**
|
||||
**方式 C:直接运行(前台守护)**
|
||||
|
||||
```bash
|
||||
python3 /opt/db_log_exporter/db_log_exporter.py \
|
||||
@@ -139,7 +143,7 @@ global:
|
||||
output_dir: /var/log/db_exporter # 日志输出目录
|
||||
checkpoint_dir: /var/lib/... # 断点文件目录
|
||||
hostname: myserver # syslog hostname
|
||||
interval: 30 # 默认轮询间隔(秒)
|
||||
interval: 30 # 默认轮询间隔(秒)
|
||||
batch_size: 1000 # 默认每次最多读条数
|
||||
|
||||
databases:
|
||||
@@ -168,9 +172,14 @@ sources:
|
||||
message: message
|
||||
trace_id: trace_id # 可选
|
||||
span_id: span_id # 可选
|
||||
# 操作审计字段
|
||||
user: user # 操作人
|
||||
action: action # 操作动作
|
||||
target: target # 操作对象
|
||||
result: result # 操作结果
|
||||
```
|
||||
|
||||
### 数据库用户权限(最小权限)
|
||||
### 数据库用户权限(最小权限)
|
||||
|
||||
**MySQL:**
|
||||
```sql
|
||||
@@ -192,7 +201,7 @@ GRANT SELECT ON audit_log TO log_reader;
|
||||
|
||||
## 与日志采集系统集成
|
||||
|
||||
### rsyslog(服务器接收)
|
||||
### rsyslog(服务器接收)
|
||||
|
||||
```conf
|
||||
# /etc/rsyslog.d/60-db-exporter.conf
|
||||
@@ -204,7 +213,7 @@ input(type="imfile"
|
||||
Facility="local0")
|
||||
```
|
||||
|
||||
### Filebeat(采集到 Elasticsearch)
|
||||
### Filebeat(采集到 Elasticsearch)
|
||||
|
||||
```yaml
|
||||
# filebeat.yml
|
||||
@@ -217,7 +226,7 @@ filebeat.inputs:
|
||||
fields_under_root: true
|
||||
```
|
||||
|
||||
### Promtail(Loki 采集)
|
||||
### Promtail(Loki 采集)
|
||||
|
||||
```yaml
|
||||
# promtail.yml
|
||||
@@ -240,7 +249,7 @@ scrape_configs:
|
||||
| 连接被拒绝 | 确认数据库允许该 IP 连接,检查防火墙/安全组 |
|
||||
| 权限不足 | 确认运行用户对 `output_dir`、`checkpoint_dir` 有写权限 |
|
||||
| 日志重复 | 删除对应断点文件并重启,程序会从头拉取 |
|
||||
| 中文乱码 | 确认数据库字符集为 `utf8mb4`(MySQL)或 `UTF8`(PG) |
|
||||
| 中文乱码 | 确认数据库字符集为 `utf8mb4`(MySQL)或 `UTF8`(PG) |
|
||||
| 连接超时 | 在 `databases` 中加 `connect_timeout: 10` |
|
||||
|
||||
---
|
||||
@@ -249,7 +258,7 @@ scrape_configs:
|
||||
|
||||
```
|
||||
db_log_exporter/
|
||||
├── db_log_exporter.py # 主程序(Python 守护进程)
|
||||
├── db_log_exporter.py # 主程序(Python 守护进程)
|
||||
├── config.yaml.example # 配置文件示例
|
||||
├── requirements.txt # Python 依赖
|
||||
├── db_log_exporter.service # systemd 服务文件
|
||||
@@ -262,11 +271,11 @@ db_log_exporter/
|
||||
## 命令行参数
|
||||
|
||||
```
|
||||
-c, --config YAML 配置文件路径(必填)
|
||||
--once 仅执行一次轮询后退出(适合 cron)
|
||||
-c, --config YAML 配置文件路径(必填)
|
||||
--once 仅执行一次轮询后退出(适合 cron)
|
||||
--dry-run 仅测试数据库连接,不写文件
|
||||
--log-level 日志级别: DEBUG|INFO|WARNING|ERROR(默认 INFO)
|
||||
--log-file 本程序日志输出文件(默认 stdout)
|
||||
--log-level 日志级别: DEBUG|INFO|WARNING|ERROR(默认 INFO)
|
||||
--log-file 本程序日志输出文件(默认 stdout)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user