50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

在线HTML转Javascript工具

入门小站

工具

RocketMQ 5.0: 存储计算分离新思路

阿里巴巴中间件

阿里云 开源 云原生 消息队列 Apache RocketMQ

Flutter 利用 StreamProvider 一起玩 WebSocket

岛上码农

flutter ios 前端 安卓开发 5月月更

AbstractFactoryPattern-抽象工厂模式

梁歪歪 ♚

设计模式

BuilderPattern-建造者模式

梁歪歪 ♚

设计模式

PrototypePattern-原型模式

梁歪歪 ♚

设计模式

西昊智能家具2022新品发布,硬实力为健康撑腰

极客天地

「AuthTalk」今晚 7 点直播|从制造到“智造”,探索制造企业破局之道

Authing

云原生 身份云 制造业 Idaas

Feign 共享登录信息进行请求

Java Feign

【安全】揭秘小白如何从0到1逆袭成为安全工程师

网络安全学海

网络安全 安全 信息安全 渗透测试

TreeSet源码分析

zarmnosaj

5月月更

Angular 项目里使用 scss 文件的一些技巧

汪子熙

typescript 前端 前端开发 angular 5月月更

Crypto们纷纷聚焦“Building platonic”,PlatoFarm是解决方案吗?

股市老人

Jenkins Agent 的低成本高弹性实践

玄月九

Kubernetes jenkins 弹性 降本 Kaniko

Docker下RabbitMQ四部曲之四:高可用实战

程序员欣宸

Java Docker Docker-compose RabbitMQ 5月月更

WPF|快速添加新手引导功能(支持MVVM)

沙漠尽头的狼

C# WPF 新手引导

微信朋友圈高性能架构设计

地下地上

架构实战营

SAP UI5 的自动化测试套件页面的开发步骤介绍

汪子熙

JavaScript SAP SAP UI5 5月月更 SAP前端开发

朋友圈架构设计

intelamd

Vue框架学习笔记【day二】

恒山其若陋兮

5月月更

从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷

阿里巴巴中间件

阿里云 开源 云原生 dubbo

跨平台应用开发进阶(十八) :全局异常日志处理方案探究

No Silver Bullet

5月月更 异常日志 处理方案探究

在线字符或文本转二进制工具

入门小站

工具

架构实战营-模块2作业

下篇:技术 Leader 的思考方式

阿里巴巴中间件

阿里云 中间件 技术分享

[go]mongo工具类

林逸民

Go mongo goalng-underscore

linux之curl使用技巧

入门小站

2.4 航线图介绍

Geek_古藤模根

图数据库实战 Gremlin

OKALEIDO简化玩家进入NFT的门槛,做NFT界的UNISWAP

股市老人

MSVC编译环境介绍

Loken

音视频 5月月更

上篇:技术架构的设计方法

阿里巴巴中间件

阿里云 中间件 技术分享 技术思考

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