

# 路由服务器对等日志记录
<a name="route-server-peer-logging"></a>

当需要执行以下操作时，请使用 VPC 路由服务器对等日志记录：
+ 监控 BGP 和 BFD 会话运行状况
+ 排查连接问题
+ 查看历史会话更改
+ 跟踪网络状态

## 定价
<a name="pricing"></a>
+ **CloudWatch**：当您将路由服务器对等日志发布到 CloudWatch Logs 时，将收取已出售日志的数据摄取和存档费用。
+ **S3**：当您将路由服务器对等日志发布到 Amazon S3 时，将收取已出售日志的数据摄取和存档费用。
+ **Data Firehose**：收取标准摄取和传输费用。

已出售日志是来自特定 Amazon 服务的日志，这些服务按批量分层定价提供，并传送到 CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。有关更多信息，请打开 **Amazon CloudWatch Pricing**（Amazon CloudWatch 定价），选择 **Logs**（日志），找到 [Vended Logs](https://www.amazonaws.cn//cloudwatch/pricing/)（已出售日志）。

## 日志格式示例
<a name="example-log-format"></a>

```
{
    "resource_arn": "arn:aws:ec2:us-east-1:111122223333:route-server-peer/rsp-1234567890abcdef0",
    "event_timestamp": 1746643505367,
    "type": "RouteStatus",
    "status": "ADVERTISED",
    "message": {
        "prefix": "10.24.34.0/32",
        "asPath": "65000",
        "med": 100,
        "nextHopIp": "10.24.34.1"
    }
}

{
    "resource_arn": "arn:aws:ec2:us-east-1:111122223333:route-server-peer/rsp-1234567890abcdef0",
    "event_timestamp": 1746643490000,
    "type": "BGPStatus",
    "status": "UP",
    "message": null
}
```

其中：
+ `resource_arn` 是路由服务器对等体的 ARN。
+ `event_timestamp` 是事件的时间戳。
+ 我们生成的日志事件的 `type`（`RouteStatus`、`BGPStatus`、`BFDStatus`）。
+ `status` 字段是状态更新。
  + 对于 `RouteStatus` 类型消息
    + `ADVERTISED`（路由由对等体公布）
    + `UPDATED`（现有路由由对等体更新）
    + `WITHDRAWN`（路由由对等体撤回）
  + 对于 `BFDStatus` 和 `BGPStatus` 更新
    + `UP`, `DOWN`.
+ `message` 字段当前仅用于 RouteStatus 消息类型的路由属性，但可以填充任何类型的相关信息。

------
#### [ Amazon Management Console ]

要创建路由服务器对等日志：

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中的**虚拟私有云**下，选择**路由服务器**。

1. 在**路由服务器**页面上，选择**路由服务器对等**。

1. 选择**日志传输**选项卡。

1. 选择**添加日志传输**。

1. 选择一个目的地并配置设置：
   + Amazon CloudWatch Logs
     + **日志类型**：要传输的日志类型。唯一支持的日志类型是 EVENT\$1LOGS。
     + **目的地日志组**：将发送日志的 CloudWatch 日志组。您可以选择一个现有日志组或创建一个新的日志组（例如：/aws/vpc/route-server-peers）。
     + **字段选择**：要包括在日志中的数据字段。
     + **输出格式**：如何设置日志的格式：
       + JSON：计算机处理的结构化格式
       + 文本：纯文本格式
     + **字段分隔符**：使用文本格式时，这是用于分隔字段的字符（例如：逗号、制表符、空格）。
   + Amazon S3
     + 跨账户 - 向不同的 Amazon 账户发送日志
       + **日志类型**：要传输的日志类型。唯一支持的日志类型是 EVENT\$1LOGS。
       + **传输目的地 ARN**：将发送日志的另一个 Amazon 账户中 S3 存储桶的 Amazon 资源名称。
       + **字段选择**：要包括在日志中的数据字段。
       + **后缀**：添加到日志文件名的结尾（例如：.log、.txt）。
       + **Hive 兼容**：启用后，将日志组织到可与基于 Hive 的工具配合使用的文件夹结构中，以便更轻松地使用 Amazon Athena 等服务进行搜索。
       + **字段分隔符**：使用文本格式时，这是用于分隔字段的字符。
     + 在当前账户中
       + **日志类型**：要传输的日志类型。唯一支持的日志类型是 EVENT\$1LOGS。
       + **目的地 S3 存储桶**：您的账户中将发送日志的 S3 存储桶。您可以指定一个子文件夹路径。
       + **字段选择**：要包括在日志中的数据字段。
       + **后缀**：添加到日志文件名的结尾（例如：.log、.txt）。
       + **Hive 兼容**：启用后，将日志组织到可与基于 Hive 的工具配合使用的文件夹结构中，以便更轻松地进行搜索。
       + **字段分隔符**：使用文本格式时，这是用于分隔字段的字符。
   + Amazon Data Firehose
     + 跨账户
       + **日志类型**：要传输的日志类型。唯一支持的日志类型是 EVENT\$1LOGS。
       + **传输目的地 ARN**：另一个 Amazon 账户中的 Firehose 传输流的 Amazon 资源名称。
       + **字段选择**：要包括在日志中的数据字段。
       + **字段分隔符**：使用文本格式时，这是用于分隔字段的字符。
     + 在当前账户中
       + **日志类型**：要传输的日志类型。唯一支持的日志类型是 EVENT\$1LOGS。
       + **传输目的地流**：您的账户中将发送日志的 Firehose 传输流。流必须使用“Direct Put”源类型。
       + **字段选择**：要包括在日志中的数据字段。
       + **输出格式**：如何设置日志的格式：
         + JSON：计算机处理的结构化格式
         + 文本：纯文本格式
       + **字段分隔符**：使用文本格式时，这是用于分隔字段的字符。

------
#### [ Command line ]

本节中的命令链接到《Amazon CLI 命令参考》**。本文档提供了运行命令时可以使用的选项的详细说明。

要创建路由服务器对等日志：

1. 使用 [put-delivery-source](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/put-delivery-source.html) 命令。
   + 示例请求

     ```
     aws logs put-delivery-source --name "source-rsp-1234567890abcdef0" --resource-arn "arn:aws:ec2:us-east-1:111122223333:route-server-peer/rsp-1234567890abcdef0" --log-type "EVENT_LOGS"
     ```
   + 响应示例

     ```
     {
          "deliverySource": {
             "name": "source-rsp-1234567890abcdef0",
             "arn": "arn:aws:logs:us-east-1:111122223333:delivery-source:source-rsp-1234567890abcdef0",
             "resourceArns": [
                 "arn:aws:ec2:us-east-1:111122223333:route-server-peer/rsp-1234567890abcdef0"
             ],
             "service": "ec2",
             "logType": "EVENT_LOGS"
         }
     }
     ```

1. 使用 [put-delivery-destination](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/put-delivery-destination.html) 命令。
   + 以下 Amazon CLI 示例创建路由服务器日志。日志将传输到指定的日志组。
   + 示例请求

     ```
     aws logs put-delivery-destination --name "destination-rsp-abcdef01234567890" --destination-resource-arn "arn:aws:logs:us-east-1:111122223333:log-group:/aws/vendedlogs/ec2/route-server-peer/EVENT_LOGS/rsp-abcdef01234567890"
     ```
   + 响应示例

     ```
     {
          "deliveryDestination": {
             "name": "destination-rsp-abcdef01234567890",
             "arn": "arn:aws:logs:us-east-1:111122223333:delivery-destination:destination-rsp-abcdef01234567890",
             "deliveryDestinationType": "CWL",
             "deliveryDestinationConfiguration": {
                 "destinationResourceArn": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/vendedlogs/ec2/route-server-peer/EVENT_LOGS/rsp-abcdef01234567890"
             }
         }
     }
     ```

1. 使用 [create-delivery](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/create-delivery.html) 命令。
   + 示例请求

     ```
     aws logs create-delivery --delivery-source-name "source-rsp-1234567890abcdef0" --delivery-destination-arn "arn:aws:logs:us-east-1:111122223333:delivery-destination:destination-rsp-abcdef01234567890"
     ```
   + 响应示例

     ```
     {
          "delivery": {
             "id": "1234567890abcdef0",
             "arn": "arn:aws:logs:us-east-1:111122223333:delivery:1234567890abcdef0",
             "deliverySourceName": "source-rsp-1234567890abcdef0",
             "deliveryDestinationArn": "arn:aws:logs:us-east-1:111122223333:delivery-destination:destination-rsp-abcdef01234567890",
             "deliveryDestinationType": "CWL",
             "recordFields": [
                 "resource_arn",
                 "event_timestamp",
                 "type",
                 "status",
                 "message"
             ]
         }
     }
     ```

------