Amazon Q Business - 监控

监控 Amazon Q Developer 和 AWS 解决方案对于其可靠性、可用性和性能至关重要。您必须确定特定用户的 Amazon Q 订阅费用和成本管理,这就是需要监控的地方。

AWS 监控工具

AWS 提供以下监控工具:

  • AWS CloudTrail:捕获由您的 AWS 账户或代表您的 AWS 账户进行的 API 调用和相关事件,并将日志文件传送到指定的 Amazon S3 存储桶。
  • Amazon CloudWatch:实时监控您的 AWS 资源和应用程序,允许您收集和跟踪指标、创建自定义仪表板以及设置警报,当指定指标达到阈值时通知您或采取行动。
  • Amazon CloudWatch Logs:监控、存储和访问来自各种来源(例如 Amazon EC2 实例和 CloudTrail)的日志文件。它还会根据日志文件信息在达到某些阈值时通知您。

CloudTrail 日志

Amazon Q Developer 与 AWS CloudTrail 集成,后者记录了在 Amazon Q 中执行的所有操作。CloudTrail 捕获所有 Amazon Q API 调用,包括来自控制台的调用和对 API 操作的代码调用。您可以启用将这些事件持续传送到 Amazon S3 存储桶的功能,或在 CloudTrail 控制台中查看最近事件。

解释 Q Developer 日志文件

跟踪是一种配置,它将事件作为日志文件传送到指定的 Amazon S3 存储桶。每个日志文件包含一个或多个日志条目,这些条目代表单个请求,其中包含请求的操作、日期、时间和参数等详细信息。请注意,日志文件不按 API 调用顺序排序。

以下示例显示了一个 CloudTrail 日志条目,该条目演示了 SendMessage 操作。

{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXD12ABCDEF3G4HI5J:aws-user",
        "arn": "arn:aws:sts::123456789012:assumed-role/PowerUser/aws-user",
        "accountId": "123456789012",
        "accessKeyId": "ASIAAB12CDEFG34HIJK",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXD12ABCDEF3G4HI5J",
                "arn": "arn:aws:iam::123456789012:role/PowerUser",
                "accountId": "123456789012",
                "userName": "PowerUser"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-11-28T10:00:00Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-28T10:00:00Z",
    "eventSource": "q.amazonaws.com",
    "eventName": "SendMessage",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "123.456.789.012",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
    "requestParameters": {
        "Origin": "https://conversational-experience-worker.widget.console.aws.amazon.com",
        "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
        "source": "CONSOLE",
        "conversationToken": "***",
        "utterance": "***"
    },
    "responseElements": {
        "result": {
            "content": {
                "text": {
                    "body": "***",
                    "references": []
                }
            },
            "format": "PLAINTEXT",
            "intents": {},
            "type": "TEXT"
        },
        "Access-Control-Expose-Headers": "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date",
        "metadata": {
            "conversationExpirationTime": "2024-02-25T19:31:38Z",
            "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
            "conversationToken": "***",
            "utteranceId": "3b87b46f-04a9-41ef-b8fe-8abf52d2c053"
        },
        "resultCode": "LLM"
    },
    "requestID": "19b3c30e-906e-4b7f-b5c3-509f67248655",
    "eventID": "a552c487-7d97-403a-8ec4-d49539c7a03d",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}

以下示例显示了一个 CloudTrail 日志条目,该条目演示了 Amazon Q 代表您调用 s3:ListBuckets 操作。

{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDA6ON6E4XEGIEXAMPLE",
        "arn": "arn:aws:iam::555555555555:user/Paulo",
        "accountId": "555555555555",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDA6ON6E4XEGIEXAMPLE",
                "arn": "arn:aws:iam::555555555555:user/Paulo",
                "accountId": "555555555555",
                "userName": "Paulo"
            },
            "attributes": {
                "creationDate": "2024-04-10T14:06:08Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "q.amazonaws.com"
    },
    "eventTime": "2024-04-10T14:07:55Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "ListBuckets",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "q.amazonaws.com",
    "userAgent": "q.amazonaws.com",
    "requestParameters": {
        "Host": "s3.amazonaws.com"
    },
    "responseElements": null,
    "additionalEventData": {
        "SignatureVersion": "SigV4",
        "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "bytesTransferredIn": 0,
        "AuthenticationMethod": "AuthHeader",
        "x-amz-id-2": "ExampleRequestId123456789",
        "bytesTransferredOut": 4054
    },
    "requestID": "ecd94349-b36f-44bf-b6f5-EXAMPLE9c463",
    "eventID": "2939ba50-1d26-4a5a-83bd-EXAMPLE85850",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "555555555555",
    "vpcEndpointId": "vpce-EXAMPLE1234",
    "eventCategory": "Management"
}

使用 CloudWatch 进行监控

可以使用 CloudWatch 监控 Amazon Q Developer,它收集原始数据并将其处理为近乎实时的指标。这些指标将存储 15 个月,让您可以访问历史数据并跟踪性能。您还可以设置警报,在达到特定阈值时通知您或采取行动。

Amazon Q Developer 服务在 AWS/CodeWhisperer 命名空间中报告以下指标。

维度 指标 用例或说明
计数 调用 您想要确定一段时间内已计数的调用次数。
用户计数 DailyActiveUserTrend 您想要确定每个天。
SubscriptionUserCount SubscriptionCount 您想要确定付费订阅的用户数量。
UniqueUserCount MonthlyActiveUniqueUsers 您想要确定在给定月份内活跃的用户数量。
ProgrammingLanguage、SuggestionState、CompletionType GeneratedLineCount 您想要确定 CodeWhisperer 生成的行数。
ProgrammingLanguage、SuggestionState、CompletionType SuggestionReferenceCount 您想要确定已发生的具有引用的建议触发器的数量。
ProgrammingLanguage CodeScanCount 您想要确定已发生的代码扫描数量。
ProgrammingLanguage TotalCharacterCount 文件中的字符数,包括来自 CodeWhisperer 的所有建议。
ProgrammingLanguage CodeWhispererCharacterCount CodeWhisperer 生成的字符数。

跟踪 Q 开发人员使用情况

您可以通过 AWS 账单和成本管理确定具有资源 ID 的特定用户的 Amazon Q 订阅费用。为此,请在控制台中创建数据导出,并选择"包括资源 ID"选项。