写点什么

使用 Cloudwatch Agent 在 Cloudwatch 中收集、展现 EC2 的内存及系统、应用日志

  • 2019-10-09
  • 本文字数:3377 字

    阅读完需:约 11 分钟

使用Cloudwatch Agent在Cloudwatch中收集、展现EC2的内存及系统、应用日志

背景介绍:

默认情况下,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 中,方便用户后续的分析等操作,这些收集的信息的访问权仍然属于用户自己。


https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html


目前 Cloudwatch Agent 支持以下操作系统:


  • Amazon Linux 版本 03.02 或更高版本

  • Amazon Linux 2

  • Ubuntu Server 版本 04 和 14.04

  • CentOS 版本 0 和 6.5

  • Red Hat Enterprise Linux (RHEL) 版本 5、7.4、7.0 和 6.5

  • Debian 8.0

  • SUSE Linux Enterprise Server (SLES) 12 或更高版本

  • 64 位版本的 Windows Server 2016、Windows Server 2012 和 Windows Server 2008


本文档将介绍如何在 EC2 上安装、配置、分发 Cloudwatch Agent 并通过 Cloudwatch 和 Cloudwatch Logs 展现相关的信息和日志。


本文档将主要使用到 AWS Cloudwatch 和 System Manager 服务(简称 SSM)。

准备工作:

1.在 IAM 中创建 2 个 Role,分别用户创建 Cloudwatch Agent 策略和使用 Cloudwatch Agent 策略


  • CloudWatch Agent Admin Policy:用于创建 Cloudwatch Agent 模版并保存至 System Manager 中。


对于 Choose the service that will use this role,选择 EC2 Allows EC2 instances to call AWS services on your behalf。选择 Next: Permissions (下一步: 权限)。



配置角色名称:CloudWatch Agent Admin Policy


创建完成之后,再添加策略 CloudWatch Agent Admin Policy 到角色中。



#请注意创建的SSM的 参数存储名将会以AmazonCloudwatch- 开头,如果需要用自定义前缀名称,请修改对应策略。
复制代码



参考上述步骤,创建另外一个 Role 专门用于使用此策略的 Role。差别仅为 Cloudwatch 策略改为:CloudWatchAgentServerPolicy



2.安装、配置 Cloudwatch Agent 及其策略


启动一台主机,本例中使用 Amazon Linux,启动时关联角色 CloudWatchAgentAdminPolicy。


并在用户数据中对 amazon-ssm-agent 进行更新。


#!/bin/bash
yum update -y amazon-ssm-agent
yum -y install collectd
复制代码


###Collectd 如果不安装可能会遇到 Cloudwatch agent 启动失败的问题。



为了方便管理,配置了标签。



在 EC2 启动后,我们可以在服务 AWS System Manager 的托管实例中,可以看到此 EC2 实例已经被关联。



接下来我们安装 Cloudwatch Agent。


选择 运行命令,选择 AWS-ConfigureAWSPackage,



在名称 中输入 AmazonCloudWatchAgent,然后点击运行



系统会很快完成运行,并给予输出结果。



可以看到当前的 Cloudwatch Agent 版本为 1.2.0.6336。


配置 Cloudwatch Agent 作为样例:

登陆对应的 EC2,开始配置需要通过 Cloudwatch 进行监控的指标。


运行如下命令:


sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
复制代码


第一部分选择默认即可:



第二部分,根据实际情况收集:


请注意 Do you want to monitor any host metrics? E.g CPU, Memory,请选择 Yes。


本例中,metric config 选择的 Standard



所有这些配置后续都保存在本地,并可以进行编辑,所以建议选择 Yes。


在 Cloudwatch Agent 之前,AWS 通过 Cloudwatch Logs Agent 来收集相关信息,如果系统中有使用过 Cloudwatch Logs Agent 可以导入相关配置。


#Cloudwatch Logs Agent 已经被 Cloudwatch Agent 替代。



接下来就是对日志的收集,本例中我就收集了/var/log/messages,如果需要可以增加更多日志,并指定到对应的 Cloudwatch Logs Group 中。


#所有系统、应用日志都可以使用相同方式进行配置。



至此配置就完成了,配置文件以 json 格式存放在本地,并可以进行编辑。


/opt/aws/amazon-cloudwatch-agent/bin/config.json



同时可以把所有的配置文件保存到 SSM 的 参数存储 中,这样其他 EC2 只要拥有权限就可以进行获取,而无需再进行配置。



回到 SSM 的控制台,可以看到刚才创建的 参数存储 已经存在。



运行命令,来启动 Cloudwatch Agent 服务。


sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-linuxsample -s
#请记住这个名字AmazonCloudWatch-linuxsample,后续需要使用
复制代码



可以看到 Cloudwatch Agent 已经正常工作。


同时使用此命令后,主机重启此服务会自动启动保持工作状态。


等待几分钟,在 Cloudwatch 的 Metric 中,我们就可以看到此 EC2 实例的相关监控信息。比如:内存


#Cloudwatch会增加一个新的分类:CWAgent
复制代码



在 Cloudwatch Logs Group 中就可以看到此 EC2 实例的/var/logs/messages 的信息


在其他 EC2 上配置 Cloudwatch Agent 来收集信息:

后续如果要使用 Cloudwatch Agent 及相同配置,则只需要在对应的 EC2 实例中安装 Cloudwatch Agent 并对应 参数存储 中的函数进行调用即可。


本例中,通过部署一个 AutoScaling Group 来让所有的机器都使用前序配置的的 Cloudwatch Agent 的配置。


选择的 AMI 是标准的 Amazon Linux,IAM 角色选择前序创建的 CloudWatchAgentServerPolicy。



在用户数据中,配置如下信息:


#!/bin/bash
yum update -y amazon-ssm-agent
yum -y install collectd
wget https://s3.cn-north-1.amazonaws.com.cn/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-linuxsample -s

#本例中使用了前序配置的SSM参数存储 中的配置信息,本例为:AmazonCloudWatch-linuxsample。
复制代码


当启动完成之后,


在 Cloudwatch Logs Group 中,新创建的 EC2 实例的相关信息自动更新到其中。



在 Cloudwatch 的 Metric 的 CWAgent 分类中,会拥有更多的子分类。



对于 AutoScaling Group 则会把相关信息归类到其子分类中。



3.变更、修改 Cloudwatch Agent 的配置信息


对于 Cloudwatch 的配置文件因为存放在 2 个地方本地 json 和 SSM 参数存储中,同样有 2 种修改方式:


1) 对于单台机器,可以直接修改本地的 json 文件


修改方式可以直接再运行一次 wizard,或者直接修改对应的 json 文件。


#修改了的文件就和前序的 参数存储 将无关。
复制代码



!


2)第二种方式是修改之前生成的 参数存储 中的函数


这样所有读取此函数的实例只要再运行重新读取一次此函数就会获得最新的配置信息。这种也是我们推荐的方式,因为所有调用这个函数 EC2 主机都会更新相应的配置。



同时在对于每次修改都会记录有版本记录,



本例中,我增加了下面两个配置:


/var/log/secure 和metric 中的mem_used 
复制代码


来作为样例。



可以看到在 Cloudwatch 日志组中输出了对应日志。



CWAgent 的在 Cloudwatch 中也输出了对应的 mem_used 指标。


根据需要可以把所有这些监控的指标保存到 Cloudwatch 控制面板中, 这样方便后续的持续跟踪。


相关文章:


https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html


https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html


https://docs.amazonaws.cn/systems-manager/latest/userguide/sysman-install-ssm-agent.html


作者介绍:


钱凯


AWS 解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计.在加入 AWS 之前曾在 HP、Citrix 服务多年,熟悉传统虚拟化、虚拟桌面、微软 Windows 等产品。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/cloudwatch-agent-in-cloudwatch-ec2-rom/


2019-10-09 13:151575
用户头像

发布了 1849 篇内容, 共 114.7 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

GaussDB(for Redis)游戏实践:玩家下线行为上报

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

软件测试/测试开发丨​利用ChatGPT编写测试用例

测试人

软件测试 测试开发 ChatGPT

“融合康养产业、乐享宜居灞桥”灞桥康养论坛成功举办

联营汇聚

中秋时节赏明月,五子棋戏月饼趣 — Flutter中秋限定版五子棋

编程的平行世界

flutter 游戏开发

怎么解决在数据采集时使用http代理ip效率不高的问题?

巨量HTTP

http代理

本地缓存无冕之王Caffeine Cache

Java随想录

Java 缓存

DApp智能合约链上盲盒游戏代币质押项目挖矿系统开发

l8l259l3365

Pyth

灞桥康养论坛圆满落幕 灞桥康养“四片区”邀您遇见新西安

联营汇聚

小灯塔系列-中小企业数字化转型系列研究——进销存测评报告

人称T客

http代理ip服务器有哪些?代理服务器有什么作用?

巨量HTTP

代理IP http代理

推送服务本地通知频次及分类管控通知

HarmonyOS SDK

HMS Core

MAC地址修改软件推荐 WiFiSpoof免激活中文版

mac大玩家j

Mac软件 网络管理软件

高性能网络 SIG 月度动态:推动 virtio 支持动态中断调节及更灵活的分流机制

OpenAnolis小助手

Linux 内核 龙蜥社区 virtio 高性能网络sig

CodeArts Check代码检查服务用户声音反馈集锦(2)

华为云PaaS服务小智

云计算 软件开发 代码规范 华为云 代码检查

第五期 PaddlePaddle Hackathon 飞桨黑客马拉松热身赛上线!

飞桨PaddlePaddle

深度学习 编程、

Hologres RoaringBitmap实践:千亿级画像数据秒级分析

阿里云大数据AI技术

大数据 阿里云

高并发系统设计之缓存

Java随想录

Java nginx 缓存

程序员会使用的十个基础算法

小魏写代码

Bridge 2024 (br2024) for Mac v14.0.0.102 中文破解激活版

mac

windows 苹果mac Bridge 2024

交易所开发 通过定制解决方案获得优势:加密货币交易服务

区块链软件开发推广运营

交易所开发 数字藏品开发 dapp开发 区块链开发 链游开发

微调语言模型前,需要考虑这三个关键方面

Baihai IDP

AI LLM 白海科技 大模型微调 Baihai IDP

Parallels Desktop 19 for Mac(PD19虚拟机)无需关闭SIPv19.0.0一键激活版

mac

pd虚拟机 苹果mac Windows软件 Parallels Desktop 19

20个最佳实践提升Terraform工作流程|Part 1

SEAL安全

基础设施 IaC terrafrom 企业号9月PK榜

万字长文教你实现华为云IoT+OpenHarmony智能家居开发

华为云开发者联盟

鸿蒙 物联网 华为云 华为云开发者联盟 企业号9月PK榜

文盘Rust -- tonic-Rust grpc初体验 | 京东云技术团队

京东科技开发者

rust gRPC 虚拟操作系统 企业号9月PK榜

使用Cloudwatch Agent在Cloudwatch中收集、展现EC2的内存及系统、应用日志_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章