Amazon CloudWatch可以让你监控AWS上运行的资源的状态,方便你收集和跟踪资源的各项指标,并且可以设置相应的警报和自动应对的更改。
CloudWatch中的几个参数:
- 面板(Dashboards)-可创建自定义面板来方便观察你AWS环境中的不同监控对象
- 告警(Alarms)- 当某个监控对象超过阈值时,会给你发出告警信息
- 事件(Events)- 针对AWS环境中所发生的变化进行的反应
- 日志(Logs)-Cloudwatch日志帮助你收集、监控和存储日志信息
CloudWatch的其他特点:
- 基本监控:免费,采样频率为5分钟,监控CPU,磁盘IO,网络流量等
- 详细监控:收费,采样频率为1分钟,监控内容和基本监控一样
- 上面两种监控模式都不能监控内存使用率,监控内存需要使用自定义参数的监控
- 监控数据会保存15个月
- CloudWatch还可以监控弹性伸缩组(Auto Scaling Group),弹性负载均衡器(ELB),EBS等等
AWS Command Line Interface工具
AWS Command Line Interface (AWS CLI) 是一个建立在AWS SDK for Python (Boto)之上的开源工具,用来与AWS的服务进行交互。只需要非常少的配置,你就可以使用你所熟知的终端程序来执行几乎所有你在AWS管理平台上所做的任何事情。
这些终端包括了:
- Linux命令行 – 可以使用在Linux, macOS或者Unix上使用的shell程序Bash, Zsh和tsch等
- Windows命令行 – 使用PowerShell或者Windows命令行工具
- 远程 – 使用SSH登陆到EC2实例上来远程执行命令
AWS CLI工具可以直接安装在Windows, Mac/Linux上,或者使用预装有AWS CLI的Amazon Linux AMI镜像所创建的EC2实例。
赋予AWS CLI权限
仅仅安装了AWS CLI工具还不够,你必须给它赋予一定的权限,这样它才能访问AWS内的资源。有两个方法可以赋予AWS CLI权限:
- 使用AWS IAM来创建一个新的AWS用户,赋予该用户一定的权限,并且为该用户创建AWS Access Key ID和AWS Secret Access Key的程序访问凭证。然后将凭证配置到AWS CLI上。
- 使用AWS IAM创建一个新的AWS角色,赋予该角色一定的权限,然后将这个角色赋予到使用Amazon Linux AMI创建的EC2实例上。
第一种方法适用于任何装有AWS CLI工具的客户端,甚至是自己的个人电脑。但一定不要泄露AWS Access Key ID和AWS Secret Access Key,否则别人可以使用这个凭证来随意在你的AWS上创建/使用资源。也不要把这些凭证放在Github上!
第二种方法适用于装有AWS CLI的EC2实例,这是被认为最安全的一种方式。
为EC2分配IAM角色
使用Access Key ID和AWS Secret Access Key的凭证这种方式是不安全的,如果一旦这个凭证被泄露,任何人都可以通过这个凭证来获取你AWS内的资源。而且,如果你在管理成千上万台有类似需求的EC2实例,那么如果有一天需要更改Access Key ID和AWS Secret Access Key的时候,将是一场噩梦。
Bootstrap开机脚本
在你启动一个Amazon EC2实例的时候,你可以选择在实例启动的时候运行你预先设定的Bootstrap脚本。该脚本可以是一段代码、文件或者base64的编码。
创建EC2实例的时候,在配置实例详细信息里的高级详细信息可以将下面的代码配置进去。
脚本文件内容(第一行表示这是一个Bash脚本文件):
#!/bin/bash yum update -y yum install httpd -y service httpd start chkconfig httpd on echo "Hello aws.cloudbin.com" > /var/www/html/index.html |
Metadata
- 实例的metadata是关于实例本身的数据,这些数据描述了实例的一些状态和基本信息
- metadata包括的信息有实例的ID,使用的AMI ID,系统名,公网IP地址,内网IP地址,关联的角色等等
- 实例内部,可以通过http://169.254.169.254/latest/meta-data来获取metadata的信息
- Metadata可以用来管理和配置实例
- 如访问http://169.254.169.254/latest/meta-data/public-ipv4就可以获得EC2实例的公网IP地址
User Data
- User data可以用来在EC2实例启动的时候作为启动脚本的内容
- User data也可以在实例启动之后用于执行一些批量/自动化的脚本
- 可以通过http://169.254.169.254/latest/user-data来获取用户数据的信息
- 访问http://169.254.169.254/latest/user-data即可以获得实例的user data。
重要注意的地方:虽然您只能从实例自身内部访问实例元数据和用户数据,但数据并未进行加密保护。可访问实例的人员均可查看其元数据。因此,您应当采取适当的预防措施来保护敏感数据(例如永久加密密钥)。不应将敏感数据 (例如密码) 存储为用户数据。
请注意,您无需为用于检索实例元数据和用户数据的 HTTP 请求付费。
CloudWatch监控
- 标准监控 = 5 分钟
- 详细监控 = 1 分钟 (需要额外付费)
- CloudWatch是用来监控系统性能的
- CloudTrail是用来做审计的(查看日志信息等)
角色(Role)
- 使用角色(Role)比使用Access Key和Secret Access Key要安全很多
- 角色更容易管理和变更
- 角色可以在EC2实例启动之后再分配,并且可以随时更改角色以及角色关联的策略
- 在旧版本考试中,角色只能在EC2创建的时候分配,并且实例启动之后不能对角色进行任何更改
- 角色是跨区域的,创建的角色可以在任何区域中使用
实例Meta-data
- 用来获取实例自身的一些信息,例如公网IP地址
- 使用http://169.254.169.254/latest/meta-data/来获取meta-data