# ============================================================================== # 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: 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