用windows事件日志+visual syslog server+winlogbeat可快速搭建低维护告警系统,聚焦安全日志(如4625、4771)、应用日志(iis/sql/net错误)和服务状态(7036),通过过滤、高亮、声音/邮件告警实现精准响应。
直接用 windows 自带事件日志 + visual syslog server 就能搭出实用、低维护的告警系统,不用装 elk 或写复杂脚本。关键不是收集所有日志,而是盯住真正影响服务可用性的那几类事件。
明确要监控的服务日志类型
不是所有日志都值得告警。优先关注三类:
- Windows 安全日志中的关键事件 ID:比如 4625(登录失败)、4720(用户创建)、4771(Kerberos 预身份验证失败),这些常指向暴力破解或权限异常
- 应用服务自身的日志输出:如 IIS 的 HTTPERR 日志、SQL Server 的错误日志、.NET 应用写入 Application 日志的“Warning”或“Error”级别事件
- 系统服务状态变更:Event ID 7036(服务已启动/停止),特别关注你依赖的核心服务,比如 “w3svc”、“mssqlserver”、“dhcpserver”
用 Winlogbeat 把日志导出为 Syslog 格式
Visual Syslog Server 本身不读 Windows 事件日志,需要一个“翻译器”。Winlogbeat 是最轻量稳定的选择:
- 安装后修改
winlogbeat.yml,只启用你要监控的日志源,例如:
- name: Security
event_id: 4625,4624,4771,4720 - 配置输出目标为你的 Visual Syslog Server 地址和端口(默认 UDP 514)
- 加一条 processor 过滤掉噪音,比如排除域控制器日常同步产生的 4769 事件
在 Visual Syslog Server 中设高亮+动作规则
收到日志后,靠颜色和声音第一时间感知,再靠规则自动响应:
- 进 Highlighting setup,对 “Priority=err” 或 “Tag=auth” 的消息设红色背景+粗体,一眼可见
- 进 Message filtering & actions,新建规则:
IF Facility = "auth" AND Message contains "failed"
→ 播放 alarm.wav 声音 + 弹窗提示 + 发邮件给值班人 - 对非紧急但需记录的事件(如服务意外停止),设置“保存到独立文件”,方便后续查证
验证与调优要点
上线前必须做两件事:
- 手动触发一次测试事件(比如用
net stop w3svc),确认从 Windows 事件 → Winlogbeat → Syslog Server → 告警动作全链路畅通 - 观察头 24 小时的告警频率,如果每小时收 50 条“登录失败”,说明没过滤好,得加条件限制源 IP 段或时间窗口(比如 5 分钟内超 10 次才告警)
- 把告警邮件模板里加上
%SourceIP%和%Message%变量,避免收到一堆“某服务挂了”却不知道是哪台机器











