1.1 确认监控范围与网络拓扑:列出台湾站群所有服务器(物理机、虚机、容器、负载均衡、数据库、缓存等),记录IP、角色、是否在私有网络/跨机房。
1.2 选型并规划:建议指标系统使用Prometheus+Grafana,日志使用EFK(ElasticSearch+Filebeat+Kibana)或Promtail+Loki+Grafana;告警用Alertmanager或外部通知集成(Slack、邮件、PagerDuty)。
1.3 资源与安全准备:在台湾机房或连通链路处预留监控主机(建议HA双节点)、配置防火墙白名单、申请证书用于HTTPS与远程日志传输,确认运维账号与权限。
2.1 在每台物理/虚拟主机上部署 node_exporter:下载官方二进制,创建系统服务,设置端口(默认9100)并开启系统防火墙端口。
2.2 在容器主机部署 cAdvisor(或kubelet metrics):若为Kubernetes,启用kube-state-metrics、node-exporter DaemonSet;对Docker主机直接运行cAdvisor收集容器层指标。
2.3 验证:在Prometheus采集目标页面(http(s)://prometheus:9090/targets)确认所有node_exporter、cAdvisor处于UP状态,若未采集请检查防火墙和服务状态(systemctl status node_exporter)。
3.1 安装Prometheus并做HA:使用两台Prometheus做跨机房或同机房HA,使用相同scrape_configs和rule_files,通过文件或Consul/Etcd做服务发现。
3.2 配置示例(要点说明):在prometheus.yml中设置global->scrape_interval为15s,使用file_sd_configs或static_configs对台湾站群打标签(region="taiwan");录制规则(recording rules)保存关键指标如job:instance:cpu:avg。
3.3 存储与保留:根据指标量设计TSDB保留天数(例如1-3个月),若数据量大接入远端存储(Thanos或Cortex)以实现跨机房查询与长期归档。
4.1 导入与创建仪表盘:为CPU/Memory/Disk/Network/IO、负载、响应时间、错误率、数据库连接数分别创建面板,使用变量(var)来筛选台湾机房、业务线或环境。
4.2 模板与告警面板:建立统一模板供各业务复用,包含SLO面板、Top-N主机列表、异常趋势图;在Grafana中配置报警通道并与Alertmanager联动(或Grafana直接发通知)。
4.3 权限与审计:启用Grafana组织与团队权限,限制编辑权限,仅运维与SRE可修改告警规则,开启审计日志保存变更记录。
5.1 日志采集选型:轻量主机建议用Filebeat/Fluent Bit发送到Elasticsearch或Logstash;容器环境推荐Promtail发送至Loki再通过Grafana查询。
5.2 部署步骤(Filebeat->ES例):安装filebeat,配置filebeat.inputs指向/var/log/nginx/*.log、/var/log/app/*.log等;设置output.elasticsearch主机为日志集群;启用Grok或Ingest Pipeline解析字段。
5.3 索引与ILM策略:为台湾站群建立专属索引前缀(taiwan-logs-*),配置Index Lifecycle Management(ILM)设置hot/warm/delete策略,避免磁盘爆满并控制成本。
6.1 设计日志字段:定义统一字段集(timestamp, host, service, env, level, request_id, user_id, uri, status, latency),便于跨系统查询和聚合。
6.2 编写Grok或解析规则:针对Nginx写Grok模板:%{IPORHOST:remote_addr} - %{DATA:remote_user} \[%{HTTPDATE:time_local}\] \"%{WORD:method} %{DATA:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:body_bytes_sent} \"%{DATA:referrer}\" \"%{DATA:agent}\" \"%{DATA:request_id}\";在Filebeat或Logstash中测试并部署。
6.3 查询与告警:在Kibana或Grafana Explore创建常用查询(例如按status分布、top uri、错误请求链路),并在发现异常模式时触发告警(如5xx占比超过阈值)。
问:如何为台湾站群设置实用且不泛滥的告警策略?
答:先定义SLO/SLI(如可用率、请求成功率、平均响应时间),按影响范围划分告警级别(P1服务不可用,P2性能退化,P3容量预警)。使用告警分级与抑制规则(例如在一定时间内重复触发抑制、避免噪音),并配置告警接收人组和Escalation流程。对敏感告警设置自动抑制窗(比如预期的备份时间)并结合运行手册(Runbook)在告警中提供处理步骤与常用诊断命令。
问:指标与日志数据如何做长期保存与合规备份?
答:指标数据可通过Thanos/Cortex远端存储到对象存储(S3兼容)实现长期存档与跨机房高可用;日志数据对重要业务按照合规要求设置冷存储策略(比如7天热、30天温、按需归档到对象存储),并定期做快照(Elasticsearch snapshot)与离线备份。加密传输与存储,保存访问日志以满足审计要求。
问:运维遇到监控或日志系统问题时如何快速定位并自动化恢复?
答:建立健康检查与自愈脚本(例如Prometheus exporter端点异常时自动重启服务,或Filebeat日志发送失败时重启并轮询磁盘空间)。诊断步骤要标准化:查看服务状态(systemctl status)、检查端口(netstat/tssocks)、确认防火墙与证书、查看Prometheus targets和scrape errors、查看ES/Kibana集群状态。将常用诊断命令写入Runbook并通过自动化工具(Ansible/Script)实现一键收集或一键重启,定期演练故障场景并记录时间线与根因。每次故障结束后执行incident retrospective并完善监控与告警规则以防复发。