AWS 快速入门指南
关于
SevOne's AWS插件可让您从AWS环境中收集设备、元数据和指标。 该插件将 AWS CloudWatch 度量流用于超时数据以及用于元数据扩充的 API 调用。 AWS 插件允许您监视多个不同的 AWS 帐户和区域。
创建设备
SevOne NMS 在缺省情况下配置为定期调用 AWS API 以检索有关设备的信息,然后自动为每个 AWS 资源创建设备。
为 AWS 插件配置网络代理
所需的基础设施 AWS
- IAM 用户
- IAM 收集器角色
- SQS 队列
- 度量流
- 消防喉
- S3 存储区
该基础架构用于收集 AWS 环境的指标,并将其提供给 SevOne NMS。 在继续使用 AWS 插件之前,请确保已对此进行了配置。
- Terraform (建议) -有关详细信息,请继续执行 AWS 用户设置部分。
- AWS 管理控制台 -有关详细信息,请参阅 附录 B: 使用 AWS 控制台部署 AWS 资源 一节,以了解如何通过 AWS 管理控制台进行设置。
AWS 用户设置
要在 AWS 中设置所需基础结构并运行收集器时保持最低特权状态,建议执行以下操作。
- 基础架构用户 -部署基础架构的用户。
- 收集器用户 -收集器使用的用户。
基础设施用户设置
创建具有以下许可权的新 IAM 策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StatementIAM",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:UpdateAssumeRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:CreateRole",
"iam:ListRolePolicies",
"iam:GetRolePolicy",
"iam:PutRolePolicy",
"ec2:DescribeRegions"
],
"Resource":[
"*"
]
}
]
}
创建新用户并使用上面创建的 IAM 策略将其附加。
采集器用户设置
创建第二个新的 IAM 用户。 不需要将策略附加到此用户。
收集器用户只需存在,并且可以设置为空的许可权。 它将承担以下步骤中由 Terraform 创建的具有 必需许可权 的角色。
访问密钥证书
对于本指南中的以下部分,您将需要为收集器用户创建访问密钥凭证,并保留其访问密钥标识和密钥。 重要的是,创建证书后要立即复制秘钥,因为离开页面后秘钥将被永久隐藏。
如果使用 Terraform 部署基础架构,基础架构用户还需要访问密钥证书。 在这种情况下,您将需要此凭证的访问密钥标识和密钥。
使用 Terraform 进行部署
Terraform 是配置 AWS 资源的建议方法。 这将允许最快的启动时间,同时确保完全按预期配置资源。 要部署和配置所需资源,可在 /config/aws/terraform 目录中找到一组 Terraform 文件。 为了运行 Terraform 文件以创建资源,已定义角色以保持最低特权状态。 让我们将此角色称为 基础架构角色。
创建供 Terraform 使用的基础设施角色
- Terraform (建议) -有关详细信息,请继续本部分。
- AWS 管理控制台-有关详细信息,请参阅 附录 C: 通过 AWS Console for Terraform 创建基础架构角色以使用
为 Terraform 创建基础结构角色
- 使用 ssh,以 支持 用户身份登录到 SevOne NMS 设备。
ssh support@<NMS appliance> - 在 NMS 容器中打开 shell。
sudo podman exec -it nms-nms-nms /bin/bash - 将目录切换到 /config/aws/terraform/envs/infrastructure_role。
- 更新 terraform.tfvars中的以下值。重要: 变量前缀必须是、
- 在 1 到 20 个字符之间
- 仅包含小写字母,数字或连字符
- 以字母或数字开头和结尾
account_id = <YOUR AWS ACCOUNT NUMBER> prefix = <PREFIX TO UNIQUELY IDENTIFY RESOURCES>使用注释中的示例发布了空的 "terraform.tfvars" 文件
## Your 12 digit AWS account number # account_id = 012345678901 ## Prefix to uniquely identify resources that are created in AWS ## - Must be all lowercase due to S3 bucket naming restrictions # prefix = "sevone" - 使用在 访问密钥凭证部分中创建的基础结构用户的访问密钥标识和密钥设置以下环境变量。 有关为 IAM 用户创建访问密钥的更多信息,请参阅 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
export AWS_ACCESS_KEY_ID="mykey" export AWS_SECRET_ACCESS_KEY="mysecret" export AWS_REGION="us-east-1" - 应用 Terraform 文件。
terraform init terraform plan terraform apply重要信息: 请记下输出值 infrastructure_role_arn,因为在下面的 运行 Terraform 以部署 AWS 资源 部分中需要该值。
运行 Terraform 以部署 AWS 资源
- 将目录切换到 /config/aws/terraform/envs/collector_infrastructure。
cd /config/aws/terraform/envs/collector_infrastructure - 更新 terraform.tfvars中的以下值。
使用注释中的示例发布了空的 "terraform.tfvars" 文件
## Your 12 digit AWS account number # account_id = 012345678901 ## AWS IAM User ARN that will be used to run the collector # collector_user_arn = "arn:aws:iam::012345678901:user/person@company.com" ## AWS IAM Role ARN that will be used to install infrastructure ## - This can be found in the output of applying the `infrastructure_role` Terraform config # infrastructure_role_arn = "arn:aws:iam::012345678901:role/sevone_infrastructure_role" ## List of regions that you want to monitor # regions = ["us-east-1", "us-west-1"] ## Prefix to uniquely identify resources that are created in AWS ## - Must be all lowercase due to S3 bucket naming restrictions # prefix = "sevone"要点: 变量 前缀 必须是创建基础结构角色时使用的 同一 前缀。重要信息: 必须在要监视的每个区域中创建资源。 添加多个区域以创建资源时,可以在 terraform.tfvars 文件中添加为示例
regions = ["us-east-1", "eu-central-1"] - 应用 Terraform 文件。
cd gen terraform init terraform plan terraform apply cd .. terraform init terraform plan terraform apply - 需要以下输出中的详细信息才能在 SevOne NMS 中创建设备。
- 帐户标识
- 收集器角色
- sqs_队列
- 区域
启用 AWS 插件
执行以下步骤以监视 AWS 帐户。 这将自动创建设备并为该帐户的所选区域中的各种 AWS 资源收集度量。
- 要从导航栏访问设备管理器,请单击 设备 菜单,然后选择 设备管理器。
- 添加具有 AWS 插件的设备,或者编辑现有设备以启用 AWS 插件。
- 单击 添加设备 以显示 " 新建设备 " 页面。
- 单击 操作 列下的扳手图标以显示 " 编辑设备 " 页面。
- 单击插件下拉列表。 缺省情况下,它设置为 SNMP。 选择 AWS.

- 选中 启用 AWS 集成 复选框。
- 在 帐户标识 字段中,输入要监视并从中收集数据的帐户的标识。
- 在 访问密钥标识 字段中,输入先前在 访问密钥凭证 中为收集器用户创建的访问密钥标识。
- 在 访问密钥 字段中,输入先前在 访问密钥凭证 中为收集器用户创建的密钥。
- 在 SQS 队列 字段中,输入收集器将侦听度量流事件的 SQS 队列名称。 有关更多详细信息,请参阅 AWS中的必需基础结构部分。
- 在 收集器角色 ARN 字段中,输入收集器将采用的 IAM 角色的 ARN。 有关更多详细信息,请参阅 AWS中的必需基础结构部分。
- 选择/取消选择要从中收集数据的列标题或 AWS 区域代码。
- 选择或取消选择列标题 (例如,北美) 以对该标题下的所有区域启用或禁用集合。
- 选择或取消选择 AWS 区域代码 (例如, us-east-1) 以启用或禁用该区域的收集。
- 单击 另存为新项 以将当前更改另存为 新设备,或者单击 保存 以在 " 编辑设备 " 页面中确认更改。
- 保存所需更改后,单击 取消 按钮以返回到 " 设备管理器 " 页面。重要信息: 创建设备后,将在 SevOne NMS 上启动 AWS 资源集合。
在 SevOne NMS 中创建 TopN 视图,以查看 AWS 资源
SevOne NMS 包含具有特定于 AWS的 TopN 视图的包。 要导入,请执行以下命令。
ssh support@<NMS appliance>
sudo podman exec -it nms-nms-nms SevOne-import --file /config/aws/topn.spk
OOTB 报告
以下开箱即用 (OOTB) 报告作为 SevOne Data Insight 6.5 及更高版本的一部分提供。
- AWS Direct Connect -显示 AWS Direct Connect 库存和网络性能的报告。
- AWS EBS 卷 -显示 AWS EBS 卷性能的报告。
- AWS EC2 报告 -显示 AWS EC2 库存, CPU ,磁盘和网络性能的报告。
- AWS NAT 网关 -显示 AWS NAT 网关库存,吞吐量和连接统计信息的报告。
- AWS 网络负载均衡器 -显示 AWS 网络负载均衡器统计信息的报告。
- AWS S3 报告 -显示 AWS S3 库存和存储区统计信息的报告。
- AWS 站点到站点 VPN -显示 AWS 站点到站点 VPN 度量的报告。
- AWS Transit Gateways -显示 AWS Transit Gateway 库存,网络流量和丢弃的报告。
- AWS Lambda - 报告显示 AWS Lambda 调用、异步调用、并发性和性能。
- AWS 路由 53 - 报告显示 AWS 路由 53 健康检查统计信息和 AWS 路由 53 解析器统计信息。
更新 AWS 基础设施
SevOne NMS 支持比 更多的 监控资源,并整合了所需的 权限,以保持最小权限状态。 v7.1.0 v7.0.0 AWS AWS 因此,如果从SevOneNMS7.0.0或之前的版本升级到SevOneNMS7.1.0,则需要重新应用 Terraform 来更新收集器的基础架构。
销毁以前创建的 AWS 资源
- 使用 ssh,以 支持 用户身份登录到 SevOne NMS 设备。
ssh support@<NMS appliance> - 在 NMS 容器中打开 shell。
sudo podman exec -it nms-nms-nms /bin/bash - 将目录切换到 /config/aws/terraform/envs/collector_infrastructure。
cd /config/aws/terraform/envs/collector_infrastructure - 破坏 Terraform 状态。
terraform destroy
销毁资源后,继续下一节。
更新基础设施作用
- 如果尚未使用,请使用 ssh 以 支持 用户身份登录到 SevOne NMS 设备,并在 NMS 容器中打开 shell。
ssh support@<NMS appliance> sudo podman exec -it nms-nms-nms /bin/bash - 将目录切换到 /config/aws/terraform/envs/infrastructure_role。
- 比较新的terraform.tfvars和备份terraform-v7.0.0.tfvars(如果存在)。
- 使用您选择的文本编辑器,通过取消注释变量赋值并将变量设置为正确的值来编辑 terraform.tfvars 。
- 应用 Terraform 文件。
terraform init terraform plan terraform apply
运行 Terraform 以部署 AWS 资源
- 将目录切换到 /config/aws/terraform/envs/collector_infrastructure。
- 重新生成 Terraform 文件。
cd gen terraform init terraform plan terraform apply cd .. - 比较新的terraform.tfvars和备份terraform-v7.0.0.tfvars(如果存在)。
- 使用您选择的文本编辑器,通过取消注释变量赋值并将变量设置为正确的值来编辑 terraform.tfvars 。要点: 变量 前缀 必须是用于基础结构角色的 同一 前缀。
- 应用 Terraform 文件。
terraform init terraform plan terraform apply
附录
标签 (可选)
将 Tags 列表添加到 /config/aws/config.yaml 文件。 如下例所示,在列表中添加要收集的标记名称。 Owner 和 Category 是示例标签名称。
Tags:
- "Owner"
- "Category"
附录 A:网络代理设置
其中,<user> 和 <password> 是 URL 编码字符串。http://<user>:<password>@<domain name or IP address>:<port> or https://<user>:<password>@<domain name or IP address>:<port>这些 URL 是通过环境变量定义的。 例如,HTTP_PROXY=http://user1:password@proxy.corp.com:8080 or HTTPS_PROXY=https://user1:password@proxy.corp.com:8080http://<domain name or IP address>:<port> or https://<domain name or IP address>:<port>如果没有与代理关联的用户名和密码。
这些 URL 是通过环境变量定义的。 例如,HTTP_PROXY=http://proxy.corp.com:8080 or HTTPS_PROXY=https://proxy.corp.com:8080
- 使用 ssh,以 支持 用户身份登录到 SevOne NMS 设备。
ssh support@<NMS appliance> - 使用您选择的文本编辑器,编辑 /etc/sevone/nms-collectors.yaml 文件。
sudo vi /etc/sevone/nms-collectors.yaml - 在此文件中,查找 spec.containers 部分,并查找与 AWS 收集器关联的容器; 它应该称为 aws-collector。
- 在此部分中,根据需要在 env 块下添加环境变量。
"env": - "name": "SSL_CERT_DIR" "value": "/secrets/nginx" - "name": "HTTP_PROXY" "value": "http://proxy.corp.com:8080" - "name": "HTTPS_PROXY" "value": "http://proxy.corp.com:8080" "image": "docker.s1artrtp1.s1.devit.ibm.com/cloud-monitoring/aws-nms-collector:3e3f2279" "imagePullPolicy": "IfNotPresent" "name": "aws-collector" - 重新启动 nms-Collector 服务。
sudo systemctl restart nms-collectors;
附录 B:使用 AWS 控制台部署 AWS 资源
AWS Console 允许您在不使用 Terraform 的情况下创建所需的 AWS 资源。 虽然建议使用 Terraform ,但当不可能时,这是一个可行的选项。
创建度量流
- 导航至 CloudWatch > 公制流。

- 单击 创建度量流 以启动向导。
- 选择 选择度量。
- 选择 包含。
- 选择以下名称空间,然后选择 Use: "AWS/<namespace> = All metrics names" 以获取所选名称空间的所有度量。
- AWS/EC2
- AWS/S3
- AWS /NATGateway
- AWS/TransitGateway
- AWS /DX
- AWS/EBS
- AWS/NetworkELB
- AWS /VPN
- AWS /Lambda
- AWS/Route53
- AWS/Route53Resolver

- 命名度量流。注: 您将需要下一节的 将资源添加到帐户 部分中的 S3 存储区的名称。
- 单击 创建度量流 以完成配置。
设置 S3 Event Notifications
创建收集器角色
策略 "aws_collector_directconnect_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"directconnect:DescribeLocations",
"directconnect:DescribeConnections"
],
"Resource": "*"
}
]
}
策略 "sevone_collector_cloudwatch_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "cloudwatch:GetMetricData",
"Resource": "*"
}
]
}
策略 "sevone_collector_ec2_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeNatGateways",
"ec2:DescribeTransitGateways",
"ec2:DescribeVolumes",
"ec2:DescribeVolumeStatus",
"ec2:DescribeVpnConnections"
],
"Resource": "*"
}
]
}
策略 "sevone_collector_elasticloadbalancing_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:DescribeTags",
"elasticloadbalancing:DescribeLoadBalancers"
],
"Resource": "*"
}
]
}
策略 "sevone_collector_s3_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketTagging"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::BUCKET_NAME*"
},
]
}
策略 "sevone_collector_sqs_policy"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sqs:ReceiveMessage",
"sqs:GetQueueUrl",
"sqs:DeleteMessage"
],
"Resource": "arn:aws:sqs:*:ACCOUNT_ID:QUEUE_NAME"
}
]
}
策略 "sevone_collector_lambda_policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"lambda:ListTags",
"lambda:ListFunctions"
],
"Effect":"Allow",
"Resource":"*"
}
]
}
策略 'sevone_collector_route53_policy'
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"route53:ListTagsForResource",
"route53:ListHealthChecks"
],
"Effect":"Allow",
"Resource":"*"
}
]
}
策略 'sevone_collector_route53resolver_policy'
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"route53resolver:ListTagsForResource",
"route53resolver:ListResolverEndPoints"
],
"Effect":"Allow",
"Resource":"*"
}
]
}
- 浏览至 IAM> 角色。
- 搜索您最近创建的收集器角色
- 单击该角色。注: 如果尚未复制此角色的 ARN ,那么现在可以执行此操作。 您将需要它来启用 AWS 插件。
- 单击 "信任关系" 选项卡。
- 请确保收集器用户具有承担该角色的许可权。
- 如果收集器用户不具有许可权,那么可以通过单击 "编辑信任策略" 按钮将新语句添加到信任策略 (与收集器用户 ARN 类似,如下所示)。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "COLLECTOR_USER_ARN"
},
"Action": "sts:AssumeRole"
}
]
}
完成所有步骤后,您可以 启用 AWS 插件。
附录 C:通过 AWS 控制台创建基础设施角色供 Terraform 使用
创建策略
要创建角色以供 Terraform 使用,必须首先定义将添加到角色的策略。
- 浏览至 IAM > 策略。
- 单击 " 创建策略 "按钮启动向导。

- 将 策略编辑器 切换到 JSON。
- 粘贴以下策略定义。重要: 变量前缀必须是、
- 在 1 到 20 个字符之间
- 仅包含小写字母,数字或连字符
- 以字母或数字开头和结尾
注: 您需要将以下策略语句中 PREFIX 的实例替换为您选取的前缀,然后将 ACCOUNT_ID 的实例替换为将在其中创建资源的帐户的 AWS 帐户标识。{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:TagResource", "cloudwatch:ListTagsForResource" ], "Effect": "Allow", "Resource": "arn:aws:cloudwatch:*:ACCOUNT_ID:*PREFIX*", "Sid": "" }, { "Action": [ "firehose:ListTagsForDeliveryStream", "firehose:DescribeDeliveryStream", "firehose:DeleteDeliveryStream", "firehose:CreateDeliveryStream" ], "Effect": "Allow", "Resource": "arn:aws:firehose:*:ACCOUNT_ID:deliverystream/PREFIX*", "Sid": "" }, { "Action": [ "iam:TagRole", "iam:PutRolePolicy", "iam:PassRole", "iam:ListRolePolicies", "iam:ListInstanceProfilesForRole", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy", "iam:GetRole", "iam:DeleteRolePolicy", "iam:DeleteRole", "iam:CreateRole" ], "Effect": "Allow", "Resource": " arn:aws:iam::ACCOUNT_ID:role/PREFIX*", "Sid": "" }, { "Action": [ "cloudwatch:StopMetricStreams", "cloudwatch:StartMetricStreams", "cloudwatch:PutMetricStream", "cloudwatch:ListMetricStreams", "cloudwatch:GetMetricStream", "cloudwatch:DeleteMetricStream" ], "Effect": "Allow", "Resource": " arn:aws:cloudwatch:*:ACCOUNT_ID:*PREFIX*", "Sid": "" }, { "Action": [ "s3:PutObject", "s3:PutLifecycleConfiguration", "s3:PutBucketTagging", "s3:PutBucketPublicAccessBlock", "s3:PutBucketNotification", "s3:PutBucketAcl", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetReplicationConfiguration", "s3:GetLifecycleConfiguration", "s3:GetEncryptionConfiguration", "s3:GetBucketWebsite", "s3:GetBucketVersioning", "s3:GetBucketTagging", "s3:GetBucketRequestPayment", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:GetBucketPolicy", "s3:GetBucketObjectLockConfiguration", "s3:GetBucketNotification", "s3:GetBucketLogging", "s3:GetBucketLocation", "s3:GetBucketCORS", "s3:GetBucketAcl", "s3:GetAccelerateConfiguration", "s3:DeleteBucket", "s3:CreateBucket" ], "Effect": "Allow", "Resource": "arn:aws:s3:::*PREFIX*", "Sid": "" }, { "Action": [ "sqs:TagQueue", "sqs:SetQueueAttributes", "sqs:ListQueues", "sqs:ListQueueTags", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:DeleteQueue", "sqs:CreateQueue" ], "Effect": "Allow", "Resource": "arn:aws:sqs:*:ACCOUNT_ID:*PREFIX*", "Sid": "" } ] }
- 单击下一步。
- 在 策略详细信息下,输入 策略名称。
- 单击 创建策略。
创建角色
创建策略后,现在可以创建 IAM 角色。
- 浏览至 IAM > 角色。
- 单击 " 创建角色 "按钮启动向导。

- 在 可信实体类型下,选择 AWS 帐户。
- 在 AWS 账户下,选择此账户。

- 单击下一步。
- 在 许可权策略 下,搜索您在上一步中创建的策略的名称。
- 单击上一步中创建的策略旁边的复选框。

- 单击下一步。
- 在 角色详细信息下,输入 角色名称
- 单击 创建角色。