背景介绍:
默认情况下,AWS的监控服务Cloudwatch并没有对EC2内的内存总量和使用情况进行监控,因为内存属于用户操作系统内的信息,在AWS的产品设计中,所有系统内的信息都属于用户的私有财产和信息。所以默认情况下,AWS的Cloudwatch不收集相关信息。
但在实际使用的项目中,以内存监控为代表的系统、应用层面的监控是系统监控中的非常重要的一环,所以AWS提供了Cloudwatch Agent来帮助用户将EC2实例中的系统层面的信息,如:内存及其他相关信息通过Cloudwatch展现出来,这些信息的访问权仍然属于用户自己。
事实上,Cloudwatch Agent不仅仅能够收集内存信息,还能在更多系统层面收集信息,比如: CPU Active/Idle time,Disk IO Time,Network的包转发数等等,相比EC2的默认Cloudwatch,它可以提供更为详细和多样性的监控。
同时通过Cloudwatch Agent还可以对系统中的各种日志进行统一的收集并存放至Cloudwatch Logs中,方便用户后续的分析等操作,这些收集的信息的访问权仍然属于用户自己。
实例讲解
1、前提:已经存在EC2实例
2、给现有用户组分配权限:AmazonSSMFullAccess策略,这样对应的用户自动添加这个策略
3、给现有用户添加CloudWatchAgentServerPolicy权限
4、创建一个角色SSMInstanceProfile:添加权限
CloudWatchAgentAdminPolicy
CloudWatchAgentServerPolicy
AmazonSSMManagedInstanceCore
AmazonSSMDirectoryServiceAccess
SessionManagerPermissions(内联策略,具体内容之后添加,这个就添加前4项)
一些选项:
在 Select type of trusted entity (选择受信任实体的类型) 下,选择 AWS service ( 服务)。
选择将使用此角色的服务中,选择EC2
5、将创建的SSMInstanceProfile角色添加到现有的ec2内
选择安全>>修改 IAM 角色
6、在 CentOS 7.x 上安装 SSM 代理
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
查看ssm状态:sudo systemctl status amazon-ssm-agent
在队列管理器可以看到添加 的实例
7、打开会话数据的 KMS 密钥加密
注意:没有kms密钥创建kms密钥
8、角色SSMInstanceProfile添加SessionManagerPermissions权限
选择添加内联策略
选择JSON选项卡
权限详细内容:https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-add-permissions-to-existing-profile.html
最后结果:
9、创建具有 Fleet Manager 权限的 IAM 策略,并且添加给角色SSMInstanceProfile
权限详细内容:https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-setup-iam.html
添加Fleet Manager 权限给角色SSMInstanceProfile
10、使用 Systems Manager 下载 CloudWatch 代理
详细查看:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance-fleet.html
在命令文档列表中,选择 AWS-ConfigureAWSPackage
在操作列表中,选择 安装
在名称字段中,输入 AmazonCloudWatchAgent
将版本设置为最新以安装最新版本的代理
安装成功显示
手动下载安装amazon-cloudwatch-agent
详细查看:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html
1、wget [download-link]
2、sudo rpm -U ./amazon-cloudwatch-agent.rpm
3、sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -s -c file:configuration-file-path,替换configuration-file-path为代理配置文件的路径
11、使用向导创建 CloudWatch 代理配置文件
参数:
标准
中央处理器: cpu_usage_idle , cpu_usage_iowait, cpu_usage_user,cpu_usage_system
磁盘: disk_used_percent,disk_inodes_free
磁盘: diskio_io_time
模因: mem_used_percent
交换: swap_used_percent
1、通过输入以下内容启动 CloudWatch 代理配置向导:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
2、回答问题以自定义服务器的配置文件
对日志进行监控,本例中我就收集了/var/log/messages
如果用到collectd,需要安装collectd
yum -y install collectd
选择的最后他会询问是否保存生成的config.json文件到 parameter store,选择是,可以在Parameter Store找到创建的配置文件
3、创建成功可以看到配置文件目录
CloudWatch 代理配置文件:/opt/aws/amazon-cloudwatch-agent/bin/config.json
amazon-cloudwatch-agent日志:/var/log/amazon/amazon-cloudwatch-agent
ctl命令:amazon-cloudwatch-agent-ctl -help
如果配置文件修改了需要重启amazon-cloudwatch-agent
12、启动 CloudWatch 代理
使用 Systems Manager Run Command 启动 CloudWatch 代理
在命令文档列表中,选择 AmazonCloudWatch-ManageAgent
在操作列表中,选择 configure
在可选配置源列表中,选择 ssm
详细步骤:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance-fleet.html
成功启动
查询状态:sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
使用命令行在 Amazon EC2 实例上启动 CloudWatch 代理
如果您在本地计算机上保存了配置文件,请输入以下命令。替换configuration-file-path为代理配置文件的路径。config.json如果您使用向导创建该文件,则会调用该文件,amazon-cloudwatch-agent.json如果您手动创建它,则可能会调用该文件。
启动:sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path
配置文件修改了需要重启amazon-cloudwatch-agent
13、查看
查看cloudwatch>>metrics,,可以看到cwagent的下面有指标