initial: db_log_exporter v1.0

This commit is contained in:
QClaw Bot
2026-05-12 19:02:46 +08:00
commit 7cd8f78404
6 changed files with 1364 additions and 0 deletions

137
config.yaml Normal file
View File

@@ -0,0 +1,137 @@
# ==============================================================================
# db_log_exporter — 配置文件示例
# ==============================================================================
# 路径: /etc/db_log_exporter/config.yaml
# ==============================================================================
# 修改说明:
# 1. 在 databases 节点下定义各数据库连接信息
# 2. 在 sources 节点下定义需要导出的日志表
# 3. 每个 source 通过 database 字段引用一个已定义的数据库
# ==============================================================================
# ---------------------------------------------------------------------------
# 全局配置
# ---------------------------------------------------------------------------
global:
# 日志输出目录(需有写入权限)
output_dir: /var/log/db_exporter
# 断点存放目录(需有写入权限)
# 每次拉取后保存最后一条记录的 ID实现断点续传
checkpoint_dir: /var/lib/db_exporter/checkpoints
# 本程序写入日志时使用的 hostname出现在 syslog 行中)
# 不填则自动取系统 hostname
hostname: ""
# 全局默认轮询间隔(秒),单个 source 可单独覆盖
interval: 30
# 全局默认每次最多读取条数,单个 source 可单独覆盖
batch_size: 1000
# ---------------------------------------------------------------------------
# 数据库连接定义
# ---------------------------------------------------------------------------
databases:
# ---------- MySQL 示例 ----------
mysql_prod:
type: mysql
host: 192.168.1.100
port: 3306
user: log_reader
password: "your_password_here"
database: app_logs
charset: utf8mb4
# ---------- PostgreSQL 示例 ----------
pg_prod:
type: postgresql
host: 192.168.1.200
port: 5432
user: log_reader
password: "your_password_here"
dbname: app_logs
# ---------------------------------------------------------------------------
# 日志源定义(每个 source = 一个数据库表)
# ---------------------------------------------------------------------------
sources:
# -------------------------------
# MySQL 日志表 — 按 ID 自增主键
# -------------------------------
- name: mysql_access_log
# 引用上方定义的数据库
database: mysql_prod
# 要查询的表名
table: access_log
# 输出到 output_dir 中的文件名(支持子目录,如 "subdir/app.log"
log_file: mysql_access.log
# 此数据源的 app_name出现在 syslog 行 <app_name>[<pid>]
app_name: access-log
# 此数据源的轮询间隔(秒),覆盖全局配置
interval: 15
# 每次最多读取条数,覆盖全局配置
batch_size: 500
# 列名映射(当数据库列名与默认值不同时使用)
columns:
id: id # 主键/自增列(必填,用于断点跟踪)
timestamp: created_at # 时间戳列(必填)
level: log_level # 日志级别列(必填,值如 INFO/ERROR/WARN
message: msg # 日志内容列(必填)
# 以下为可选扩展字段,可在 syslog structured data 中体现
trace_id: trace_id
span_id: span_id
extra: extra_data
# -------------------------------
# MySQL 日志表 — 错误日志
# -------------------------------
- name: mysql_error_log
database: mysql_prod
table: error_log
log_file: mysql_error.log
app_name: error-log
interval: 10
columns:
id: id
timestamp: created_at
level: level
message: message
trace_id: trace_id
# -------------------------------
# PostgreSQL 日志表 — 应用日志
# -------------------------------
- name: pg_app_log
database: pg_prod
table: application_logs
log_file: pg_app.log
app_name: pg-app
interval: 30
columns:
id: log_id
timestamp: logged_at
level: severity
message: content
logger: component
trace_id: trace_id
extra: metadata
# -------------------------------
# PostgreSQL 日志表 — 审计日志
# -------------------------------
- name: pg_audit_log
database: pg_prod
table: audit_log
log_file: pg_audit.log
app_name: pg-audit
interval: 60
columns:
id: audit_id
timestamp: happened_at
level: event_type
message: description