AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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

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

关注

评论

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

前端性能优化

roadup

大前端 性能调优

理财之我见

三石

理财 28天写作

案例研究之聊聊 QLExpress 源码 (三)

小诚信驿站

刘晓成 小诚信驿站 28天写作 QLExpress源码 聊聊源码

2020年度编程语言排行榜 C语言称霸,Java遭遇滑铁卢?

架构精进之路

编程语言 28天写作

助力金三银四跳槽季,《Java面试突击版》第四版强势来袭

Java架构之路

Java 程序员 架构 面试 编程语言

跪了!Alibaba内部出品贼火的Java面试手册,全面对标蚂蚁金服、头条、拼多多等

Java架构之路

Java 程序员 架构 面试 编程语言

第1周架构方法总结

Richard

UML 需求分析 概要设计 软件架构设计 详细设计

音频特征提取方法和工具汇总

行者AI

音视频

DAPP智能合约交易系统开发、DAPP系统开发的详细解释

W13902449729

DAPP智能合约交易系统开发 DAPP系统开发

霸榜各个网站的阿里独有的高并发高并发手册:Netty、Redis、Zookeeper,看完惊呆了!

996小迁

redis zookeeper 架构 面试 Netty

python 输入输出

赵开忠

Python 28天写作

12月阿里蚂蚁金服四面(已拿offer)Java技术面经总结:项目+源码+jvm调优+MySQL

Java 学习 编程 程序员 面试

凭借这份Java超硬核面试 “备战” 手册!我刚面试完字节跳动、阿里、华为、小米等后端岗位

Java架构之路

Java 程序员 架构 面试 编程语言

助力ARM生态 —Dragonwell新增aarch64支持

阿里云基础软件团队

redis中的一致性hash

原来不悔

redis 一致性hash

计算机网络基础

roadup

TCP 网络 HTTP 计算机 HTTP3.0

产品风控:短信验证码的风控策略

香芋味的猫丶

短信防刷 产品安全 短信验证码 短信防轰炸 短信防火墙

花火交易所系统开发、雷达模式系统搭建开发

W13902449729

花火交易所系统开发 雷达模式系统搭建开发

架构师训练营第七周作业

zamkai

SpringBoot太强了、ShardingSphere上榜

spring 编程 框架

数智化浪潮之中,传统企业如何抓住转型机遇?

京东科技开发者

DevOps

ArgoCD + KubeVela:以开发者为中心的 GitOps

阿里巴巴云原生

阿里云 开源 容器 云原生 k8s

不交“人脉”交朋友:新荣耀的底气与新机

脑极体

跨界

张老蔫

28天写作

重学JS | 改变函数上下文的3种方式

梁龙先森

大前端 编程语言 28天写作

波场链DAPP软件APP开发|波场链DAPP系统开发

系统开发

博弈论 - 海盗分金

石云升

博弈论 28天写作 海盗分金

巧合?达摩院2021十大科技是十九世纪那场幻想的升级版?

Java架构师迁哥

新的方式-谷歌浏览器插件的使用【天猫超市抢购飞天茅台】

谙忆

探索 React 合成事件

Geek_z9ygea

大前端 React 28天写作

分布式全链路灰度发布的探索与实践

阿里巴巴云原生

阿里云 微服务 运维 云原生 中间件

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