Files
logs/doc/Syslog-Trap接入与重放.md
2026-06-26 12:51:50 +08:00

2.8 KiB
Raw Blame History

Syslog-Trap 接入与重放

接入目标

logs 服务负责接收 Syslog 与 SNMP Trap按字典和规则解析后写入 logs_events,并通过 logs_alert_outbox 异步转发到 alert 的原始事件池:

Syslog / Trap -> logs_events -> logs_alert_outbox -> Alert/v1/raw-events/ingest

转发使用 X-Internal-Key,配置来自 AlertForward.internal_key。解析成功的事件 parse_status=parsed,未命中字典或规则的事件仍保存原始报文,并以 parse_status=unparsed 入队,便于规则调整后重放。

部署配置

logs 当前内置 UDP 接收器:

Ingest:
  syslog_listen_addr: "0.0.0.0:5140"
  trap_listen_addr: "0.0.0.0:1620"
  rule_refresh_secs: 30

AlertForward:
  enabled: true
  base_url: "http://127.0.0.1:18080"
  internal_key: "change-me"
  default_policy_id: 1

生产环境如需标准端口 514/162,建议由 systemd socket、firewalld rich rule、iptables REDIRECT 或外层采集网关转发到非特权端口。TCP Syslog 接入建议在网关层启用 TCP listener再转发到 UDP 或调用后续 HTTP ingest 入口;开启 TCP 时必须保留原始来源 IP 和 trace ID。

字典与规则

Trap 字典字段:

  • vendor:厂商,例如 H3C
  • oid:精确 Trap OID。
  • oid_prefixOID 前缀,兼容旧字典。
  • name / title:展示名称。
  • severity_mapping_json:级别映射 JSON。
  • parse_expression:解析 varbind 的表达式或正则。

Syslog 规则字段:

  • source_match:来源 IP、主机名或原始行子串。
  • message_regex:消息正文正则。
  • severity_mapping_json:按正则映射平台级别。
  • resource_uid_extract_regex:提取 resource_uid,优先使用命名分组 resource_uid

示例 Syslog

<189>Jun 24 10:00:01 h3c-core-01 IFNET/4/LINK_DOWN: Interface GigabitEthernet1/0/1 is down, resource_uid=network:h3c-core-01

示例 H3C Trap OID

1.3.6.1.6.3.1.1.5.3

未解析队列与重放

未解析事件仍写入 logs_events,并创建 outbox payload

  • source_type=syslogtrap
  • parse_status=unparsed
  • raw_payload 保存原始报文或 varbind 摘要

重放接口:

POST /Logs/v1/entries/{id}/replay
Authorization: Bearer <jwt>

成功响应会返回新的 outbox_id。重放 payload 使用 parse_status=replayed,并带上 labels.replay_of_log_event_id,前端可在“日志查询 -> 重放结果”中查看发送结果,失败任务可人工重试。

Smoke 样例

输出 H3C Syslog 与 Trap 示例载荷:

C:\Users\27105\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe scripts\test_alert_receive_smoke.py --print-log-samples

这些样例用于准备 UDP/TCP 接收器 smoke 数据,也可作为联调 alert 原始事件池时的期望字段参考。