
1.
租用与网络准备
步骤:1) 选择云厂商或机房(例:台湾机房的X、Y厂商),确认是否支持裸金属/物理机租用。2) 确认带宽、公网IP、BGP/单线、机柜远程控制(IPMI/iLO/DRAC)与电源冗余。
3) 提供商下单后获取控制台信息:IPMI 管理地址、初始密码、MAC 地址、默认镜像上传方式等。
2.
操作系统安装与初始硬化
步骤:1) 通过控制台或 IPMI 安装 CentOS/Ubuntu 最小镜像;设置时区(Asia/Taipei)。命令示例:timedatectl set-timezone Asia/Taipei。2) 创建运维用户并启用密钥登录:adduser ops && mkdir -p /home/ops/.ssh && vi /home/ops/.ssh/authorized_keys;chmod 700/600;禁用 root 密码登录(/etc/ssh/sshd_config 中 PermitRootLogin no)。
3) 安装常用工具:apt/yum update && apt install -y vim git curl socat fail2ban smartmontools lm-sensors。
3.
网络、防火墙与监控端口规划
步骤:1) 规划内网(10.0.x.x)与公网IP,配置 /etc/hosts 与 DNS(若使用自建 DNS 在机房控制台创建域名解析)。2) 防火墙策略例:只开放 22(SSH)、9100(node_exporter)、9090(Prometheus 后端)、3000(Grafana)、9093(Alertmanager);使用 ufw/iptables:ufw allow proto tcp from 监控服务器IP to any port 9100。
3) 配置 IPMI 管理网段单独 ACL,避免公网暴露。
4.
运维自动化:使用 Ansible 部署基本组件
步骤:1) 在运维机器上安装 Ansible:pip3 install ansible。2) 创建 inventory(示例 inventory.ini)并写 playbook:安装 node_exporter、Docker、配置时区与时钟同步。示例任务片段:- name: install node_exporter apt: name=node-exporter state=present。
3) 将常用 playbook 管理到 Git,CI/CD(Jenkins/GitLab CI)触发自动化部署与补丁更新。
5.
监控与采集:Prometheus + node_exporter 部署
步骤:1) 在监控服务器上安装 Prometheus(下载 tar 包或使用 docker):docker run -d --name prometheus -p 9090:9090 -v /etc/prometheus:/etc/prometheus prom/prometheus。2) 在被监控物理机上安装 node_exporter:useradd -M -r nodeexp && wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz && tar xzf && cp node_exporter /usr/local/bin && 创建 systemd 服务并启动。
3) 在 prometheus.yml 中加入 scrape_configs:- job_name: 'tw-servers' static_configs: - targets: ['10.0.1.10:9100','10.0.1.11:9100'] labels: {datacenter: "tw"}。
6.
硬件与磁盘健康监控
步骤:1) 安装 smartmontools 并配置定时任务:smartctl -a /dev/sda > /var/log/smart/sda.log,结合 node_exporter 的 textfile collector 上报 SMART 指标。2) 使用 lm-sensors 监测温度与风扇:sensors-detect && sensors,然后将输出通过 node_exporter textfile 导出为 prometheus 格式文件。
3) 若有 IPMI,部署 ipmi_exporter 或使用 snmp_exporter 抓取 BMC/电源状态。
7.
告警策略与 Alertmanager 配置(问题)
问:如何设计告警策略以及在 Alertmanager 中配置接收器与路由?8.
告警策略与 Alertmanager 配置(回答)
答:首先按严重性分级(P0/P1/P2),示例规则:node_down(连续5m 无响应)、disk_usage (node_filesystem_avail_bytes / node_filesystem_size_bytes < 10%)。Prometheus rule 示例:- alert: NodeDown expr: up{job="tw-servers"} == 0 for: 5m。Alertmanager 配置 receivers(email/slack/webhook/pagerduty),并用 route 基于 label(datacenter、severity)做分流,确保抖动抑制(group_interval、repeat_interval)。9.
自动化恢复与告警联动(问题)
问:遇到常见故障(服务挂、磁盘满)如何实现自动化自愈?10.
自动化恢复与告警联动(回答)
答:在 Alertmanager receiver 使用 webhook 调用内部服务;该服务触发 Ansible API 或 Rundeck 运行预定义 playbook(例:重启服务、清理临时目录、扩容磁盘)。示例流程:Prometheus 告警 -> Alertmanager -> webhook -> 运维平台 -> 执行 Ansible playbook(restart app / cleanup tmp)。并在 playbook 中加入幂等性与回滚检查。11.
日志、可视化与备份(问题)
问:如何集中日志并在 Grafana 中建立告警面板与备份策略?12.


