如何查看已连接到 Amazon EFS 的 Amazon EC2 实例列表?
3 分钟阅读
0
我想查看挂载到 Amazon Elastic File System (Amazon EFS) 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例列表。该如何操作?
简短描述
将使用 VPC 流日志来跟踪每个 Amazon EFS 挂载目标的弹性网络接口上的流量。该流日志可以推送到 Amazon CloudWatch Logs。使用 CloudWatch Logs Insights 功能可以对挂载目标的弹性网络接口上的流量进行筛选,从而在特定时间戳中挂载到某个 Amazon EFS 的 Amazon EC2 实例列表。
解决方法
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
执行以下步骤一次。完成这些步骤后,每次您需要列出挂载到 Amazon EFS 的客户端 IP 地址时,只需运行查询以创建当前列表即可。
创建一个日志组
- 打开 CloudWatch 控制台。
- 在导航窗格中,选择 Logs(日志),然后选择 Log groups(日志组)。
- 选择 Create log group(创建日志组)。
- 输入Log group name(日志组名称)、Retention setting(保留设置)和可选的 KMS key ARN(KMS 密钥 ARN)。您也可以在此处添加 Tags(标签)。
- 选择 Create(创建)。
创建具有将流日志发布到 CloudWatch Logs 的权限的 Identity and Access Management(IAM)角色
- 打开 IAM console(IAM 控制台)。
- 在导航窗格中的 Access management(访问管理)下,选择 Roles(角色)。
- 选择 Create role(创建角色)并创建新的 IAM 角色。
- 您的 IAM 角色所附加的 IAM policy 必须具有将 VPC 的流日志发布到 CloudWatch 的权限。类似地,它必须具有允许流日志服务承担该角色的信任关系。
获取 Amazon EFS 的挂载目标使用的弹性网络接口列表
**注意:**Amazon EFS 在每个可用区都有不同的挂载目标。
- 打开 Amazon EFS 控制台。
- 在 File systems(文件系统)下,选择特定的 Amazon EFS,然后选择 View details(查看详细信息)。
- 单击 Network(网络),记下每个挂载目标的 Network Interface ID(网络接口 ID)。
创建流日志
- 打开 Amazon EC2 console(Amazon EC2 控制台)。
- 选择 Network & Security(网络和安全,)然后选择 Network Interfaces(网络接口)。
- 选择挂载目标正在使用的所有弹性网络接口。
- 从 Actions(操作)菜单中,选择 Create flow log(创建流日志)。创建流日志时请使用以下值:
- Name:(名称)可选
- Filter(筛选条件):请选择 All(全部)
- Maximum aggregation interval(最长聚合间隔):从默认 10 分钟或 1 分钟中选择
- Destination:(目标)请选择 Send to CloudWatch logs(发送到 CloudWatch Logs)
- Destination log group(目标日志组):请选择您创建的日志组
- IAM role(IAM 角色):选择您创建的 IAM 角色
- Log record format(日志记录格式):从 AWS default format(AWS 默认格式)或 Custom format(自定义格式)中选择。
- 标签:可选
- 选择 Create(创建)。
- 选择您为其创建了日志流的特定弹性网络接口,从而监控流日志状态。在屏幕底部,选择 Flow logs(流日志)。验证 Status(状态)为 Active(活动)。
- 大约 10 分钟后,第一个流日志将被推送到 CloudWatch 日志中。
验证流日志已在 CloudWatch Logs 中
- 打开 CloudWatch console(CloudWatch 控制台),然后选择 Logs(日志)。
- 选择在步骤 1 中创建的 Log groups(日志组)。
- 验证您创建的所有日志流现在是否已显示。每个弹性网络接口都有不同的日志流。
运行查询
要在 CloudWatch Logs Insights 中运行查询:
- 在 CloudWatch 控制台中,选择 Logs(日志),然后选择 Logs Insights。
- 从下拉菜单中选择您创建的日志组。
- 选择要查看流日志的持续时间(5 分钟、30 分钟、1 小时、3 小时、12 或自定义)。
- 输入下面的查询。
fields @timestamp, @message | filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc
**注意:**此查询会查看为所有挂载目标生成的所有流日志。它会筛选目标端口设置为 Port=2049 的日志(Amazon EFS 客户端连接到 NFS 端口 2049 上的挂载目标)。它会检索所有唯一的源 IP(Amazon EFS 客户端 IP),并按最活跃的客户端连接对它们进行排序。活跃性更具流日志中的条目数量来确定。
- 选择 Run query(运行查询)。输出将包含所有挂载到 Amazon EFS 的 Amazon EC2 实例的私有 IP 列表。
以下是查询输出的示例:
# srcAddr FlowLogEntries 1 111.22.33.44 78 2 111.55.66.77 36 3 111.88.99.000 33
使用 AWS CLI 运行查询 <br>
要从 AWS CLI 运行查询,请执行以下步骤:
- 设置好 VPC 流日志后,您可以使用 AWS CLI 命令来运行查询。
- 验证 AWS CLI 已更新到最新版本:
$ pip install --upgrade awscli
- 验证已经安装 jq:
yum install -y jq
- 使用以下查询参数运行下面的 AWS CLI 查询:
- log-group-name:输入您创建的日志组名称。
- start-time/end-time:这些值位于 Unix/Epoch 时间中。使用 epoch 转换器将可读的时间戳转换为 Unix/Epoch 时间。
- test.json:您可以在每次运行此命令时根据需要更改 json 文件名称。更改名称可确保以前的输出不会与新输出合并。
- sleep:此值(单位为秒)在 CloudWatch Logs Insights 执行查询时作为延迟使用。输入的值取决于您要查看多久的流日志。如果您要查看较长时间段(例如数周)的日志,则应增加休眠时间值。
aws logs start-query --log-group-name EFS-ENI-Flowlogs --start-time 1643127618 --end-time 1643128901 --query-string 'filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc' > test.json && sleep 10 && jq .queryId test.json | xargs aws logs get-query-results --query-id

AWS 官方已更新 3 年前
没有评论
相关内容
- AWS 官方已更新 2 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前