我可以将 AWS LightSail 与 AWS CloudWatch 一起使用吗?

Can I use AWS LightSail with AWS CloudWatch?

我最近开始测试 LightSail, but I would like to keep my logging centralized in CloudWatch,但似乎找不到任何可以启用此功能的东西。有趣的是,LightSail 实例没有出现在 EC2 仪表板中。我以为它们只是表面之下的 EC2 实例。

I thought they were just EC2 instances beneath the surface.

是的……但是。

从概念上讲,你是Lightsail的客户,Lightsail是EC2的客户。

就好像在您和 AWS 之间有一个中介。 Lightsail 资源在 EC2 中,但它们不在在您的 EC2 中。它们似乎属于 您的 AWS 帐户以外的 AWS 帐户,因此您无法直接看到它们。

平行于此:

RDS 是 EC2/EBS 的 "customer"。 RDS 实例是带有 EBS 卷的 EC2 机器。它们在控制台中的什么位置?他们不在那里。基础资源不属于您的帐户。

在EC2中,EBS快照存储在S3中。哪个桶?不是你能看到的。 EBS 是 S3 的 "customer"。它有自己的桶。

S3 对象可以迁移到 Glacier 存储 class。哪个冰川拱顶?再一次,不是你能看到的。 S3 是 Glacier 的 "customer"。它有自己的保险库。

每个 API 网关端点由 CloudFront 自动 front-ended。哪个分布?你明白了...... API 网关是 CloudFront 的 "customer"。

我并不是在以任何方式暗示 Lightsail 实际上是一个独立于 AWS 的实体,在任何有意义的意义上...我不知道它实际上是如何组织的...但是 在操作上,这就是它的工作原理。您看不到这些资源。

运行 Lightsail 上的 CloudWatch 代理目前 工作。当代理尝试与 CloudWatch 通信时,它会收到来自 STS 服务的 403。在配置向导期间选择 EC2OnPremise 选项会产生相同的结果。

2018-10-20T16:04:37Z E! WriteToCloudWatch failure, err:  AccessDenied: User: arn:aws:sts::891535117650:assumed-role/AmazonLightsailInstanceRole/i-0788a602f758b836f is not authorized to perform: cloudwatch:PutMetricData status code: 403, request id: b443ecc6-d481-11e8-a551-6d030b8667be

为了确保,我在我的 Ubuntu 18.04 桌面上安装了 CloudWatch 代理,并且启动代理没有错误。

此外,如果它确实有效,为什么人们会以更高的价格购买 EC2? CloudWatch 是使用完整服务的 free 增值服务。

有可能让它发挥作用。问题是 Lightsail 实例是引擎盖下的 EC2 实例,但无法访问所有 EC2 配置。 CloudWatch 代理文档解释了如何为 EC2 实例设置 IAM 角色以承担,但 Lightsail 框仅使用一个角色,该角色无法更改且无法编辑。因此,您需要按照说明将其设置为 on-premise 服务器。

你将遇到的问题就像 David J Eddy 在他的回答中看到的那样:

2018-10-20T16:04:37Z E! WriteToCloudWatch failure, err:  AccessDenied: User: arn:aws:sts::891535117650:assumed-role/AmazonLightsailInstanceRole/i-0788a602f758b836f is not authorized to perform: cloudwatch:PutMetricData status code: 403, request id: b443ecc6-d481-11e8-a551-6d030b8667be

这是由于 CloudWatch 代理中的一个错误,如果它检测到它在 EC2 实例上是 运行,则会忽略使用 on-premise 模式 (-m onPremise) 的参数。诀窍是编辑 common-config.toml 文件以强制使用本地 AWS CLI 配置文件进行身份验证。您需要将以下行添加到该文件(可以在 Debian 上的 /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml 找到 - 安装位置取决于 OS):

[credentials]
shared_credential_profile = "AmazonCloudWatchAgent"

重新启动代理,它应该会开始报告指标。我整理了一个完整的教程 here