1.
概览与准备工作
说明:在开始前,准备好AWS账户并选择东京区(ap-northeast-1)。建议创建具备EC2/CloudWatch/IAM权限的IAM用户,并在本地安装AWS CLI、Terraform、Ansible、kubectl(如果用K8s)、ssh客户端。准备好本地SSH私钥(id_rsa)并在AWS中创建KeyPair或上传公钥。
2.
使用Terraform自动化创建基础资源
步骤:a) 新建目录terraform-tokyo并创建main.tf,provider指定region="ap-northeast-1";b) 定义aws_key_pair、aws_security_group(开启SSH 22,Prometheus 9090,Grafana 3000,node_exporter 9100端口);c) 创建aws_instance,指定AMI(例如Amazon Linux 2或Ubuntu 20.04),instance_type按业务选择;d) 运行terraform init、terraform plan、terraform apply -auto-approve。示例命令:terraform apply 后记录Public IP。
3.
通过AWS CLI快速创建实例(可选)
步骤:a) aws ec2 create-key-pair --key-name mykey --query 'KeyMaterial' --output text > ~/.ssh/mykey.pem && chmod 600 ~/.ssh/mykey.pem;b) 创建安全组并授权端口:aws ec2 create-security-group/authorize-security-group-ingress;c) 启动实例:aws ec2 run-instances --image-id ami-xxxx --instance-type t3.micro --key-name mykey --security-group-ids sg-xxx --subnet-id subnet-xxx;d) 获取公网IP并ssh连接。
4.
使用Ansible对实例进行配置管理
步骤:a) 在控制机写hosts文件([tokyo] ip1 ip2);b) 写playbook install-monitor.yml,tasks包含:更新包管理 apt/yum、创建监控用户、安装prometheus、node_exporter、grafana、fluent-bit或cloudwatch-agent;c) 运行 ansible-playbook -i hosts install-monitor.yml --private-key=~/.ssh/mykey.pem。示例任务:使用systemd模板创建prometheus服务并把配置放到/etc/prometheus/prometheus.yml。
5.
部署Prometheus与node_exporter(详细步骤)
步骤:a) 下载并解压Prometheus:curl -LO https://github.com/prometheus/prometheus/releases/download/v2.x.x/prometheus-2.x.x.linux-amd64.tar.gz && tar xzf …;b) 将prometheus.yml放到/etc/prometheus,示例scrape_configs加入node_exporter的目标ip:9100;c) 添加node_exporter:下载node_exporter并创建systemd单元 /etc/systemd/system/node_exporter.service,内容ExecStart=/usr/local/bin/node_exporter;d) systemctl daemon-reload && systemctl enable --now node_exporter && systemctl enable --now prometheus;e) 在防火墙/SG中开放9090和9100端口。
6.
部署Grafana和可视化
步骤:a) 安装Grafana(apt/yum或官方repo),systemctl enable --now grafana-server;b) 打开浏览器访问http://公网IP:3000,默认admin/admin,首次登录修改密码;c) 在Grafana添加Prometheus数据源(URL http://localhost:9090 或 Prometheus实例IP:9090);d) 导入或创建Dashboard(节点监控、CPU、内存、磁盘、网络);e) 可用Grafana API自动化导入JSON面板(curl -X POST ...)。
7.
告警策略:Prometheus Alertmanager 与 CloudWatch 告警
步骤:a) 在prometheus.yml添加alerting: alertmanagers: - static_configs: - targets: ['localhost:9093'];b) 安装Alertmanager并配置alertmanager.yml(接收器:email/Slack/PagerDuty);c) 在Prometheus定义rules文件(例如node_down、cpu_usage_high),并在Prometheus配置中引用;d) 对关键资源还可在AWS侧创建CloudWatch Alarm(例如EC2 CPU>80% 5分钟)并触发SNS通知。
8.
日志收集:Fluent Bit/CloudWatch Agent 实操
步骤:a) 安装fluent-bit(或AWS CloudWatch Agent);b) 配置fluent-bit.conf,inputs tail 指定/var/log/*.log,outputs cloudwatch_logs,指定log_group_name与region为 ap-northeast-1;c) systemctl enable --now td-agent-bit;d) 在CloudWatch Logs中创建Metric Filter并生成告警或通过CloudWatch Logs Insights做查询。
9.
自动化运维:CI/CD 与补丁管理示例
步骤:a) 将Terraform与Ansible代码放入Git仓库,使用GitHub Actions/GitLab CI进行计划与自动应用(Terraform plan 和 apply 在受控分支);b) 对系统更新使用Ansible定期运行playbook(apt upgrade或yum update),可使用cron或CI触发;c) 针对配置变更使用版本化(tag release)并在变更后自动重启服务:ansible handler触发systemctl restart。
10.
安全与成本优化建议
细则:a) 使用IAM Role绑定给EC2以便CloudWatch/SSM权限最小化,不在实例内存放长期凭证;b) 使用SSM Session Manager取代直接开放SSH到公网;c) 根据负载使用Auto Scaling并结合ALB,闲时使用Spot实例或t3/t4g节省成本;d) 对监控采样率与日志保留期做策略,降低CloudWatch成本。
11.
常见故障排查实操步骤
步骤:a) Prometheus无法抓取节点:检查node_exporter是否在目标机器运行、防火墙/SG端口是否开放、prometheus.yml中targets是否正确;b) Grafana看不到数据:检查Prometheus是否有数据、Grafana数据源URL是否能访问;c) 日志不进CloudWatch:检查fluent-bit是否报错、AWS权限(IAM role/policy)是否授权PutLogEvents。
12.
Q1:在日本(东京)区部署,需要注意的网络与延迟问题是什么?
答:注意选择就近可用区和子网,若用户主要在日本或亚洲,选择ap-northeast-1可降低延迟。使用专用VPC与子网、启用ENI加速(例如增强型网络)并配置合理的安全组与NACL。跨区复制数据会有较高延迟,建议把时序数据写入最近的Prometheus/CloudWatch并做周期性归档。
13.
Q2:如何在东京区控制监控成本而不丢失关键告警?
答:策略包括降低指标抓取频率(非关键指标可30s或60s),缩短日志保留期并对重要日志使用Metric Filters提取关键指标,使用CloudWatch付费模式优化(按需降低高卡路里查询),并对Grafana报警设置抑制与告警阈值避免告警风暴。
14.
Q3:我希望快速把现有脚本变成可重复的自动化流程,优先做什么?
答:优先将基础资源用Terraform定义(网络、子网、SG、KeyPair、EC2),再把配置管理(安装prometheus、node_exporter、fluent-bit等)写成Ansible playbook。把Terraform/Ansible放入CI流程(例如GitHub Actions),每次合并触发部署,保证可重复与可审计。
来源:运维工具推荐 亚马逊 日本服务器 自动化与监控方案