1.
准备工作与环境说明
- 说明:推荐架构为每台台湾节点安装轻量采集端(Filebeat/Fluentd)-> 集中ELK/EFK或Graylog -> Prometheus+Alertmanager用于指标告警->告警通道(邮件/短信/Slack)。
- 依赖:确保服务器时区设置为Asia/Taipei,开放TCP/UDP必要端口(22/5044/9200/5601/9090/9093)。
- 账户权限:使用root或具有sudo权限的管理账号,准备好SSH密钥和VPN/堡垒机访问。
2.
在台湾多IP节点上部署日志采集器(以Filebeat为例)
- 安装:Debian/Ubuntu:sudo apt-get update && sudo apt-get install filebeat -y;CentOS:yum install filebeat -y。
- 配置:编辑/etc/filebeat/filebeat.yml,设置output.elasticsearch或output.logstash,示例:output.logstash.hosts: ["log-collector.example.com:5044"]。
- 标记IP:在filebeat.inputs中增加fields字段以标注源IP或节点ID,例如:fields: { region: "tw", ip: "192.0.2.1" },并开启fields_under_root: true。
- 启动:systemctl enable --now filebeat;检查日志:journalctl -u filebeat -f。
3.
集中日志收集端(Logstash/Fluentd)与索引规范
- 接收配置:Logstash配置示例在/etc/logstash/conf.d/中,input使用beats插件,filter用grok解析并保留fields.ip。
- 索引策略:Elasticsearch索引按日期+region分割,例如:logs-tw-%{+YYYY.MM.dd},便于按台湾节点检索与归档。
- 保留与生命周期:设置ILM(Index Lifecycle Management),热天数7天、温天数14天、冷/删除策略按磁盘预算调整。
4.
指标采集与Prometheus告警链路
- 部署node_exporter:在每台节点上运行node_exporter,systemd服务并暴露9100端口。
- Prometheus配置:prometheus.yml中加入targets为每个台湾节点的IP,使用labels标注instance_ip与region="tw"。
- Alertmanager:配置告警接收器(smtp, webhook, slack),在alert.rules中定义阈值如:高CPU(>85% 5m)、磁盘使用量(>80% 10m)、进程崩溃计数。
5.
日志异常检测规则与实际示例
- 错误率检测:在Kibana/Elasticsearch中建立Watcher或使用ElastAlert,示例规则:5分钟内ERROR日志占比>5%触发告警。
- 异常登录/黑名单:解析auth日志(/var/log/auth.log),如果同一IP短时间内失败登录次数>10,触发黑名单规则并自动通知。
- IP相关异常:针对多IP站群,设置阈值如同一域名短时间内来自多个台湾出口IP的访问突增,可能为爬虫或攻击,触发流量告警。
6.
告警策略与通知配置(邮件/短信/企业微信/Slack)
- 告警模板:每条告警包含时间、节点IP、region、日志样例、建议操作步骤。
- 通道配置:Alertmanager配置receivers示例:email_configs/sms_gateway/webhook到运维值班群。
- 告警等级与抑制:设置告警级别CRITICAL/WARNING,使用Alertmanager的route抑制flapping并实现静默窗(例如夜间只短信重大事件)。
7.
运维自动化与恢复脚本
- 自动化脚本:编写脚本在检测到高错误率时自动抓取最近日志并上传到S3或对象存储,路径示例:/opt/autoremote/collect_logs.sh。
- 快速执行:在告警通知中附带一键故障排查链接(调用堡垒机API执行预定义命令,如tail、df、ps)。
- 例行检查:建立cron任务定期校验采集器状态并重启异常服务。
8.
安全与合规要点(台湾节点特殊注意)
- 时区与审计:确保所有日志时间统一为UTC或Asia/Taipei并记录变更审计。
- 隐私与脱敏:对含个人信息的日志做脱敏或留白,避免合规风险。
- 网络安全:对采集端到集中端启用TLS,Filebeat与Logstash间开TLS并校验证书,防止日志被中间人篡改。
9.
常见问题快速问答
问:为什么多IP站群日志在ELK里看不到IP标签?
答:通常是filebeat没有正确设置fields_under_root或者Logstash的filter清洗时覆盖了字段。检查/etc/filebeat/filebeat.yml,确认fields配置并重启Filebeat;同时在Logstash filter中保留原始fields,例如使用mutate+rename避免覆盖。
10.
一问一答 — 告警误报如何减少?
问:如何降低误报频率?
答:通过设置多维条件(例如错误率+CPU阈值同时满足)、增加抑制时长、设置自动聚合窗口,以及在Alertmanager中配置静默期与抑制规则,能显著减少误报。
11.
一问一答 — 部署后的运维建议
问:上线后日常要做哪些运维?
答:定期检查采集器状态、磁盘与索引使用、告警触发记录;每周核查高频错误日志并更新规则;每月回顾告警策略并调整阈值。
来源:站群多ip服务器台湾日志监控与异常告警配置方法