写点什么

使用 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:151667
用户头像

发布了 1855 篇内容, 共 123.8 次阅读, 收获喜欢 81 次。

关注

评论

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

Linux之tr命令

入门小站

与开源社区用户共创,首本《OceanBase 社区版入门到实战》电子书新鲜出炉啦!

OceanBase 数据库

乘数科技加入PolarDB开源数据库社区

阿里云数据库开源

数据库 阿里云 开源 开源数据库 polarDB

阿里云数据库MongoDB版助力吉比特《一念逍遥》游戏斩获千万玩家,运营效率成倍增长

MongoDB中文社区

mongodb

万亿级超高清产业变奏,分布式存储支撑关键应用落地

焱融科技

云计算 分布式 高性能 文件存储 影视渲染

在线Javascript加密混淆工具

入门小站

工具

Obsidian使用初体验

懒时小窝

软件推荐

[Day5]-[滑动窗口] 处理字符串

方勇(gopher)

LeetCode 数据结构与算法

高层次人才一站式服务平台系统开发 探索全方位服务新模式

a13823115807

深度剖析「圈组」消息系统设计 | 「圈组」技术系列文章

网易云信

开发 社交软件

模块一作业

库尔斯

架构实战营

cdr2022下载百度网盘

茶色酒

cdr2022

做个企业官网大概多少钱.?

源字节1号

微信小程序 前端开发 后端开发 网站开发

怎样搭建企业内部wiki

小炮

企业 wiki

隐私计算势头迅猛,但金融行业用户需要“冷静”

易观分析

金融 隐私计算 AMC

系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术

OpenAnolis小助手

网络协议 技术分享 龙蜥社区 RDMA SMC-R

江苏财政的数字新径,大型政企的云上坐标

脑极体

TiDB HTAP 遇上新能源车企:直营模式下实时数据分析的应用实践

PingCAP

参与开源项目很难吗?

捉虫大师

架构训练营-模块1-作业

kenlu

架构训练营 - 模块一

junl

架构实战营

2022 CCF国际AIOps挑战赛线上宣讲会成功举办

BizSeer必示科技

网络安全SSRF漏洞检测

网络安全学海

网络安全 信息安全 WEB安全 漏洞挖掘 信息安全渗透测试

云智慧 CTO 张博:智能运维场景中的时序数据库选型与挑战 | Apache IoTDB Talk

Apache IoTDB

阿里架构师巩宁:IoTDB 在阿里云智能制造业务中的实践 | Apache IoTDB Talk

Apache IoTDB

命令模式及其在Apache IoTDB中的应用丨社区分享

Apache IoTDB

微信业务架构和学生管理系统

锎心😌😌😌

架构实战营

在线HTML转MarkDown工具

入门小站

工具

如何画好架构图

Hockor

架构 前端

模块一作业

Stefan

系统架构

PMC 乔嘉林:基于开放数据文件格式的时序数据库 | Apache IoTDB Talk

Apache IoTDB

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