

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为微软 Windows 配置 Amazon Kinesis 运行代理
<a name="configuring-kinesis-agent-windows"></a>

在启动适用于微软 Windows 的 Amazon Kinesis 代理之前，您必须创建配置文件并部署它。该配置文件提供了所需的信息，用于将 Windows 服务器和台式计算机上的数据收集、转换并流式传输到不同的 AWS 服务。配置文件定义一组源、接收器和将源连接到接收器的管道，以及可选的转换。

Windows 配置文件的 Kinesis 代理名为`appsettings.json`。将此文件部署到 `%PROGRAMFILES%\Amazon\AWSKinesisTap`。

**Topics**
+ [基本配置结构](basic-configuration-structure.md)
+ [源声明](source-object-declarations.md)
+ [接收器声明](sink-object-declarations.md)
+ [管道声明](pipe-object-declarations.md)
+ [配置自动更新](update-configuration-options.md)
+ [适用于 Windows 的 Kinesis 代理配置示例](configuring-kaw-examples.md)
+ [配置遥测](telemetrics-configuration-option.md)

# 基本配置结构
<a name="basic-configuration-structure"></a>

Amazon Kinesis 的 Windows 配置文件配置文件的基本结构是具有以下模板的 JSON 文档：

```
{
     "Sources": [ ],
     "Sinks": [ ],
     "Pipes": [ ]
}
```
+ `Sources` 的值是一个或多个[源声明](source-object-declarations.md)。
+ `Sinks` 的值是一个或多个[接收器声明](sink-object-declarations.md)。
+ `Pipes` 的值是一个或多个[管道声明](pipe-object-declarations.md)。

有关的 Windows 源、接收器和管道概念，请参阅[面向微软 Windows 概念的 Amazon Kinesis 代理](kinesis-agent-windows-concepts.md)。

以下示例是一个完整的`appsettings.json`配置文件，其中配置以将 Windows 应用程序日志事件流式传输到 Kinesis 数据消防器。

```
{
  "Sources": [
    {
      "LogName": "Application",
      "Id": "ApplicationLog",
      "SourceType": "WindowsEventLogSource"
    }
  ],
  "Sinks": [
    {
      "StreamName": "ApplicationLogFirehoseStream",
      "Region": "us-west-2",
      "Id": "MyKinesisFirehoseSink",
      "SinkType": "KinesisFirehose"
    }
  ],
  "Pipes": [
    {
      "Id": "ApplicationLogTotestKinesisFirehoseSink",
      "SourceRef": "ApplicationLog",
      "SinkRef": "MyKinesisFirehoseSink"
    }
  ]
}
```

有关各种类型声明的信息，请参阅以下章节：
+ [源声明](source-object-declarations.md)
+ [接收器声明](sink-object-declarations.md)
+ [管道声明](pipe-object-declarations.md)

## 配置区分大小写
<a name="basic-configuration-structure-case"></a>

JSON 格式的文件通常区分大小写，并且您也应假定 Windows 配置文件中 Kinesis 所有键和值均区分大小写。`appsettings.json` 配置文件中的某些键和值不区分大小写，例如：
+ 接收器的 `Format` 键/值对的值。有关更多信息，请参阅 [接收器声明](sink-object-declarations.md)。
+ 源的 `SourceType` 键/值对的值、接收器的 `SinkType` 键/值对的值以及管道和插件的 `Type` 键/值对的值。
+ `RecordParser` 源的 `DirectorySource` 键/值对的值。有关更多信息，请参阅 [DirectorySource 配置](source-object-declarations.md#directory-source-configuration)。
+ 源的 `InitialPosition` 键/值对的值。有关更多信息，请参阅 [书签配置](source-object-declarations.md#advanced-source-configuration)。
+ 变量替换的前缀。有关更多信息，请参阅 [配置接收器变量替换](sink-object-declarations.md#configuring-kinesis-agent-windows-sink-variable-substitution)。

# 源声明
<a name="source-object-declarations"></a>

在适用于微软 Windows 的 Amazon Kinesis 代理程序中，*源声明*描述应该在何处收集哪些日志、事件和指标数据。它们还可以选择性地指定用于解析数据的信息，以便对数据进行转换。以下部分介绍了针对 Windows 的 Kinesis 代理中可用的内置源类型的配置。由于 Windows 的 Kinesis 代理是可扩展的，因此，您可以添加自定义源类型。每种源类型通常都需要配置对象中与该源类型相关的特定键/值对。

所有源声明都必须至少包含以下键/值对：

`Id`  
一个唯一字符串，用于标识配置文件中的特定源对象。

`SourceType`  
此源对象的源类型的名称。源类型指定此源对象正在收集的日志、事件或指标数据的来源。它还控制可声明源的其他方面。

有关使用不同类型的源声明的完整配置文件的示例，请参阅[从不同源流式传输到 Kinesis Data Streams](configuring-kaw-examples.md#configuring-kaw-examples-sources)。

**Topics**
+ [DirectorySource 配置](#directory-source-configuration)
+ [ExchangeLogSource 配置](#exchange-source-configuration)
+ [W3SVCLogSource 配置](#iis-source-configuration)
+ [UlsSource 配置](#sharepoint-source-configuration)
+ [WindowsEventLogSource 配置](#window-event-source-configuration)
+ [窗口七个日志轮询源配置](#eventlogpolling-source-configuration)
+ [WindowsETWEventSource 配置](#etw-source-configuration)
+ [WindowsPerformanceCounterSource 配置](#performance-counter-source-configuration)
+ [Windows 内置指标源的 Kinesis 代理](#kinesis-agent-builin-metrics-source)
+ [适用于 Windows 指标的 Kinesis 代理列表](#kinesis-agent-metric-list)
+ [书签配置](#advanced-source-configuration)

## DirectorySource 配置
<a name="directory-source-configuration"></a>

### Overview
<a name="directory-source-configuration-overview"></a>

`DirectorySource` 源类型从存储在指定目录中的文件收集日志。由于日志文件有许多不同的格式，因此，`DirectorySource` 声明允许您指定日志文件中数据的格式。然后，您可以将日志内容转换为标准格式（如 JSON 或 XML），然后再将该内容流式传输到各种 AWS 服务。

以下是示例 `DirectorySource` 声明：

```
{
	   "Id": "myLog",
	   "SourceType": "DirectorySource",
	   "Directory": "C:\\Program Data\\MyCompany\\MyService\\logs",
	   "FileNameFilter": "*.log",
	   "IncludeSubdirectories": true,
	   "IncludeDirectoryFilter": "cpu\\cpu-1;cpu\\cpu-2;load;memory",
	   "RecordParser": "Timestamp",
	   "TimestampFormat": "yyyy-MM-dd HH:mm:ss.ffff",
	   "Pattern": "\\d{4}-\\d{2}-\\d(2}",
	   "ExtractionPattern": "",
	   "TimeZoneKind": "UTC",
	   "SkipLines": 0,
	   "Encoding": "utf-16",
	   "ExtractionRegexOptions": "Multiline"
}
```

所有 `DirectorySource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"DirectorySource"`（必需）。

`Directory`  
包含日志文件的目录的路径（必需）。

`FileNameFilter`  
（可选）根据通配符文件命名模式限制从中收集日志数据的目录中的文件集。如果您有多个日志文件名模式，则此功能允许您使用单个`DirectorySource`，如以下示例所示。  

```
FileNameFilter: "*.log|*.txt"
```
系统管理员有时会在归档日志文件之前压缩日志文件。如果您指定`"*.*"`在`FileNameFilter`，已知的压缩文件现在将被排除。此功能可防止`.zip`、`.gz`, 和`.bz2`文件被意外流式传输。如果未指定此键/值对，则默认情况下会收集目录中所有文件中的数据。

`IncludeSubdirectories`  
指定将子目录监视到受操作系统限制的任意深度。此功能对于监控具有多个网站的 Web 服务器非常有用。您也可以使用`IncludeDirectoryFilter`属性以仅监视过滤器中指定的某些子目录。

`RecordParser`  
指定 `DirectorySource` 源类型应如何解析在指定目录中找到的日志文件。此键/值对是必需的，有效值如下所示：  
+ `SingleLine`— 日志文件的每一行都是一条日志记录。
+ `SingleLineJson`— 日志文件的每一行都是一条 JSON 格式的日志记录。当您想使用对象修饰向 JSON 添加其他键/值对时，此解析程序非常有用。有关更多信息，请参阅 [配置接收器修饰](sink-object-declarations.md#configuring-kinesis-agent-windows-decoration-configuration)。有关使用 `SingleLineJson` 记录解析程序的示例，请参阅[教程：使用适用于 Windows 的 Kinesis 代理将 JSON 日志文件流式传输到 Amazon S3](directory-source-to-s3-tutorial.md)。
+ `Timestamp`— 一行或多行可以包含一条日志记录。日志记录的开头为时间戳。此选项要求指定 `TimestampFormat` 键/值对。
+ `Regex`— 每条记录都以匹配特定正则表达式的文本开头。此选项要求指定 `Pattern` 键/值对。
+ `SysLog`— 指示日志文件写入[syslog](https://en.wikipedia.org/wiki/Syslog)标准格式。根据该规范将日志文件解析为记录。
+ `Delimited`— 一个更简单的 Regex 记录解析程序版本，其中日志记录中的数据项由一致的分隔符分隔。此选项比 Regex 解析程序更容易使用且执行速度更快，当此选项可用时，它是首选。在使用此选项时，您必须指定 `Delimiter` 键/值对。

`TimestampField`  
指定哪个 JSON 字段包含记录的时间戳。它仅可与 `SingleLineJson` `RecordParser` 结合使用。键/值对是可选的。如果未指定此项，Windows 的 Kinesis 代理使用读取记录的时间作为时间戳。指定此键/值对的一个优点是，由 Windows 的 Kinesis 代理生成的延迟统计信息更准确。

`TimestampFormat`  
指定如何解析与记录关联的日期和时间。该值可以是字符串 `epoch` 或 .NET 日期/时间格式字符串。如果值为 `epoch`，则根据 UNIX 纪元时间来解析时间。有关 UNIX 纪元时间的更多信息，请参阅 [Unix 时间](https://en.wikipedia.org/wiki/Unix_time)。有关 .NET 日期/时间格式字符串的更多信息，请参阅 Microsoft .NET 文档中的[自定义日期和时间格式字符串](https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings)。此键/值对仅在以下情况下是必需的：指定了 `Timestamp` 记录解析程序或将 `SingleLineJson` 记录解析程序与 `TimestampField` 键/值对一起指定。

`Pattern`  
指定必须与可能的多行记录的第一行匹配的正则表达式。此键/值对仅对于 `Regex` 记录解析程序是必需的。

`ExtractionPattern`  
指定应使用命名组的正则表达式。使用此正则表达式解析记录，并且命名组构成已解析记录的字段。然后，这些字段将用作构建 JSON 或 XML 对象或文档的基础，这些对象或文档随后由接收器流式传输到各种 AWS 服务。键/值对是可选的，并且可用于`Regex`记录解析器和时间戳解析器。  
`Timestamp` 组名称经过特殊处理，因为它向 `Regex` 解析程序指示哪个字段包含每个日志文件中每条记录的日期和时间。

`Delimiter`  
指定分隔每条日志记录中每个项目的字符或字符串。此键/值对必须（且只能）用于 `Delimited` 记录解析程序。使用双字符序列 `\t` 表示制表符。

`HeaderPattern`  
指定用于匹配日志文件中包含记录标头集的行的正则表达式。如果日志文件不包含任何标头信息，请使用 `Headers` 键/值对指定隐式标题。`HeaderPattern` 键/值对是可选的，并且仅对 `Delimited` 记录解析程序有效。  
列的空（0 长度）标头条目导致从 `DirectorySource` 解析输出的最终输出中筛选出该列的数据。

`Headers`  
指定使用指定分隔符解析的数据列的名称。此键/值对是可选的，并且仅对 `Delimited` 记录解析程序有效。  
列的空（0 长度）标头条目导致从 `DirectorySource` 解析输出的最终输出中筛选出该列的数据。

`RecordPattern`  
指定标识日志文件中包含记录数据的行的正则表达式。除了 `HeaderPattern` 标识的可选标题行之外，在记录处理期间将忽略与指定的 `RecordPattern` 不匹配的行。此键/值对是可选的，并且仅对 `Delimited` 记录解析程序有效。如果未提供此项，则默认情况下将任何与可选 `HeaderPattern` 或可选 `CommentPattern` 不匹配的行视为包含可解析记录数据的行。

`CommentPattern`  
指定一个正则表达式，该表达式标识在解析日志文件中的数据之前应排除的日志文件中的行。此键/值对是可选的，并且仅对 `Delimited` 记录解析程序有效。如果未提供此项，则默认情况下将任何与可选 `HeaderPattern` 不匹配的行视为包含可解析记录数据的行，除非指定了 `RecordPattern`。

`TimeZoneKind`  
指定是应在本地时区还是 UTC 时区中考虑日志文件中的时间戳。这是可选的，默认值为 UTC。此键/值对的唯一有效值为 `Local` 或 `UTC`。如果未指定 `TimeZoneKind` 或值为 UTC，则绝不会更改时间戳。时间戳将转换为 UTC 时`TimeZoneKind`值为`Local`，接收时间戳的接收器为 CloudWatch Logs，或将解析后的记录发送到其他接收器。不会转换消息中嵌入的日期和时间。

`SkipLines`  
在指定此项时，控制在记录解析发生之前在每个日志文件的开头忽略的行数。这是可选的，默认值为 0。

编码  
默认情况下，Windows 的 Kinesis 代理可以自动检测从字节标记的编码。但是，自动编码可能无法在某些较旧的 unicode 格式上正常工作。以下示例指定流式传输 Microsoft SQL Server 日志所需的编码。  

```
"Encoding": "utf-16"
```
有关编码名称的列表，请参阅[编码列表](https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding?view=netframework-4.8#list-of-encodings)在微软 .NET 文档中。

提取正则表达式选项  
您可以使用`ExtractionRegexOptions`来简化正则表达式。键/值对是可选的。默认为 `"None"`。  
以下示例指定`"."`表达式匹配任何字符，包括`\r\n`。  

```
"ExtractionRegexOptions" = "Multiline"
```
有关提取正则表达式选项的可能字段的列表，请参阅[正则表达式选项枚举](https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regexoptions?view=netframework-4.7.2#fields)在微软 .NET 文档中。

### `Regex` 记录解析程序
<a name="directory-source-configuration-regex"></a>



您可以将 `Regex` 记录解析程序与 `TimestampFormat`、`Pattern` 和 `ExtractionPattern` 键/值对结合使用来解析非结构化文本日志。例如，假设您的日志文件如下所示：

```
[FATAL][2017/05/03 21:31:00.534][0x00003ca8][0000059c][][ActivationSubSystem][GetActivationForSystemID][0] 'ActivationException.File: EQCASLicensingSubSystem.cpp'
[FATAL][2017/05/03 21:31:00.535][0x00003ca8][0000059c][][ActivationSubSystem][GetActivationForSystemID][0] 'ActivationException.Line: 3999'
```

您可以为 `Pattern` 键/值对指定以下正则表达式，以帮助将日志文件分解为单条日志记录：

```
^\[\w+\]\[(?<TimeStamp>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\]   
```

此正则表达式匹配以下序列：

1. 要评估的字符串的开头。

1. 由方括号括起的一个或多个单词字符。

1. 由方括号括起的时间戳。时间戳匹配以下序列：

   1. 四位数年份

   1. 正斜杠

   1. 两位数月份

   1. 正斜杠

   1. 两位数日期

   1. 空格字符

   1. 两位数小时

   1. 冒号

   1. 两位数分钟

   1. 冒号

   1. 两位数秒

   1. 句点

   1. 三位数毫秒

您可以为 `TimestampFormat` 键/值对指定以下格式，以将文本时间戳转换为日期和时间：

```
yyyy/MM/dd HH:mm:ss.fff
```

您可以使用以下正则表达式通过 `ExtractionPattern` 键/值对提取日志记录的字段。

```
^\[(?<Severity>\w+)\]\[(?<TimeStamp>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\]\[[^]]*\]\[[^]]*\]\[[^]]*\]\[(?<SubSystem>\w+)\]\[(?<Module>\w+)\]\[[^]]*\] '(?<Message>.*)'$
```

此正则表达式匹配序列中的以下组：

1. `Severity`— 用方括号括起的一个或多个单词字符。

1. `TimeStamp`— 参阅时间戳的上一描述。

1. 跳过三个包含 0 个或多个字符的用方括号括起的未命名序列。

1. `SubSystem`— 用方括号括起的一个或多个单词字符。

1. `Module`— 用方括号括起的一个或多个单词字符。

1. 跳过一个包含 0 个或多个字符的用方括号括起的未命名序列。

1. 跳过一个未指定空格。

1. `Message`— 用单引号括起的 0 个或多个字符。

以下源声明将这些正则表达式和日期时间格式组合在一起，为 Windows 的 Kinesis 代理提供了有关解析此类日志文件的完整说明。

```
{
    "Id": "PrintLog",
    "SourceType": "DirectorySource",
    "Directory": "C:\\temp\\PrintLogTest",
    "FileNameFilter": "*.log",
    "RecordParser": "Regex",
    "TimestampFormat": "yyyy/MM/dd HH:mm:ss.fff",
    "Pattern": "^\\[\\w+\\]\\[(?<TimeStamp>\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})\\]",
    "ExtractionPattern": "^\\[(?<Severity>\\w+)\\]\\[(?<TimeStamp>\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})\\]\\[[^]]*\\]\\[[^]]*\\]\\[[^]]*\\]\\[(?<SubSystem>\\w+)\\]\\[(?<Module>\\w+)\\]\\[[^]]*\\] '(?<Message>.*)'$",
    "TimeZoneKind": "UTC"
}
```

**注意**  
必须使用额外的反斜杠对 JSON 格式的文件中的反斜杠进行转义。

有关正则表达式的更多信息，请参阅 Microsoft .NET 文档中的[正则表达式语言 – 快速参考](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference)。

### `Delimited` 记录解析程序
<a name="directory-source-configuration-delimited"></a>

您可以使用 `Delimited` 记录解析程序来解析半结构化日志和数据文件，其中存在一致的字符序列，用于分隔每行数据中的每列数据。例如，CSV 文件使用逗号分隔每列数据，TSV 文件使用选项卡。

假设您要解析由网络策略服务器生成的 Microsoft [NPS 数据库格式](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc771748(v=ws.10))的日志文件。此类文件可能如下所示：

```
"NPS-MASTER","IAS",03/22/2018,23:07:55,1,"user1","Domain1\user1",,,,,,,,0,"192.168.86.137","Nate - Test 1",,,,,,,1,,0,"311 1 192.168.0.213 03/15/2018 08:14:29 1",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Use Windows authentication for all users",1,,,,
"NPS-MASTER","IAS",03/22/2018,23:07:55,3,,"Domain1\user1",,,,,,,,0,"192.168.86.137","Nate - Test 1",,,,,,,1,,16,"311 1 192.168.0.213 03/15/2018 08:14:29 1",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Use Windows authentication for all users",1,,,,
```

以下示例 `appsettings.json` 配置文件包含一个 `DirectorySource` 声明，该声明使用 `Delimited` 记录解析程序来将此文本解析为对象表示形式。然后，它将 JSON 格式的数据流式传输到 Kinesis Data Firehose：

```
{
    "Sources": [
        {
            "Id": "NPS",
            "SourceType": "DirectorySource",
            "Directory": "C:\\temp\\NPS",
            "FileNameFilter": "*.log",
            "RecordParser": "Delimited",
            "Delimiter": ",",
            "Headers": "ComputerName,ServiceName,Record-Date,Record-Time,Packet-Type,User-Name,Fully-Qualified-Distinguished-Name,Called-Station-ID,Calling-Station-ID,Callback-Number,Framed-IP-Address,NAS-Identifier,NAS-IP-Address,NAS-Port,Client-Vendor,Client-IP-Address,Client-Friendly-Name,Event-Timestamp,Port-Limit,NAS-Port-Type,Connect-Info,Framed-Protocol,Service-Type,Authentication-Type,Policy-Name,Reason-Code,Class,Session-Timeout,Idle-Timeout,Termination-Action,EAP-Friendly-Name,Acct-Status-Type,Acct-Delay-Time,Acct-Input-Octets,Acct-Output-Octets,Acct-Session-Id,Acct-Authentic,Acct-Session-Time,Acct-Input-Packets,Acct-Output-Packets,Acct-Terminate-Cause,Acct-Multi-Ssn-ID,Acct-Link-Count,Acct-Interim-Interval,Tunnel-Type,Tunnel-Medium-Type,Tunnel-Client-Endpt,Tunnel-Server-Endpt,Acct-Tunnel-Conn,Tunnel-Pvt-Group-ID,Tunnel-Assignment-ID,Tunnel-Preference,MS-Acct-Auth-Type,MS-Acct-EAP-Type,MS-RAS-Version,MS-RAS-Vendor,MS-CHAP-Error,MS-CHAP-Domain,MS-MPPE-Encryption-Types,MS-MPPE-Encryption-Policy,Proxy-Policy-Name,Provider-Type,Provider-Name,Remote-Server-Address,MS-RAS-Client-Name,MS-RAS-Client-Version",
            "TimestampField": "{Record-Date} {Record-Time}",
            "TimestampFormat": "MM/dd/yyyy HH:mm:ss"
        }
    ],
    "Sinks": [
        {
            "Id": "npslogtest",
            "SinkType": "KinesisFirehose",
            "Region": "us-west-2",
            "StreamName": "npslogtest",
            "Format": "json"
        }
    ],
    "Pipes": [
        {
            "Id": "W3SVCLog1ToKinesisStream",
            "SourceRef": "NPS",
            "SinkRef": "npslogtest"
        }
    ]
}
```

流式传输到 Kinesis 数据防火器的 JSON 格式的数据如下所示：

```
{
    "ComputerName": "NPS-MASTER",
    "ServiceName": "IAS",
    "Record-Date": "03/22/2018",
    "Record-Time": "23:07:55",
    "Packet-Type": "1",
    "User-Name": "user1",
    "Fully-Qualified-Distinguished-Name": "Domain1\\user1",
    "Called-Station-ID": "",
    "Calling-Station-ID": "",
    "Callback-Number": "",
    "Framed-IP-Address": "",
    "NAS-Identifier": "",
    "NAS-IP-Address": "",
    "NAS-Port": "",
    "Client-Vendor": "0",
    "Client-IP-Address": "192.168.86.137",
    "Client-Friendly-Name": "Nate - Test 1",
    "Event-Timestamp": "",
    "Port-Limit": "",
    "NAS-Port-Type": "",
    "Connect-Info": "",
    "Framed-Protocol": "",
    "Service-Type": "",
    "Authentication-Type": "1",
    "Policy-Name": "",
    "Reason-Code": "0",
    "Class": "311 1 192.168.0.213 03/15/2018 08:14:29 1",
    "Session-Timeout": "",
    "Idle-Timeout": "",
    "Termination-Action": "",
    "EAP-Friendly-Name": "",
    "Acct-Status-Type": "",
    "Acct-Delay-Time": "",
    "Acct-Input-Octets": "",
    "Acct-Output-Octets": "",
    "Acct-Session-Id": "",
    "Acct-Authentic": "",
    "Acct-Session-Time": "",
    "Acct-Input-Packets": "",
    "Acct-Output-Packets": "",
    "Acct-Terminate-Cause": "",
    "Acct-Multi-Ssn-ID": "",
    "Acct-Link-Count": "",
    "Acct-Interim-Interval": "",
    "Tunnel-Type": "",
    "Tunnel-Medium-Type": "",
    "Tunnel-Client-Endpt": "",
    "Tunnel-Server-Endpt": "",
    "Acct-Tunnel-Conn": "",
    "Tunnel-Pvt-Group-ID": "",
    "Tunnel-Assignment-ID": "",
    "Tunnel-Preference": "",
    "MS-Acct-Auth-Type": "",
    "MS-Acct-EAP-Type": "",
    "MS-RAS-Version": "",
    "MS-RAS-Vendor": "",
    "MS-CHAP-Error": "",
    "MS-CHAP-Domain": "",
    "MS-MPPE-Encryption-Types": "",
    "MS-MPPE-Encryption-Policy": "",
    "Proxy-Policy-Name": "Use Windows authentication for all users",
    "Provider-Type": "1",
    "Provider-Name": "",
    "Remote-Server-Address": "",
    "MS-RAS-Client-Name": "",
    "MS-RAS-Client-Version": ""
}
```

### `SysLog` 记录解析程序
<a name="directory-source-configuration-syslog"></a>

对于 `SysLog` 记录解析程序，源的解析输出包含以下信息：


| 属性 | 类型 | 描述 | 
| --- | --- | --- | 
| SysLogTimeStamp | 字符串 | syslog 格式的日志文件中的原始日期和时间。 | 
| Hostname | 字符串 | syslog 格式的日志文件所在的计算机的名称。 | 
| Program | 字符串 | 生成日志文件的应用程序或服务的名称。 | 
| Message | 字符串 | 应用程序或服务生成的日志消息。 | 
| TimeStamp | 字符串 | ISO 8601 格式的解析的日期和时间。 | 

以下是转换为 JSON 的 SysLog 数据的示例：

```
{
    "SysLogTimeStamp": "Jun 18 01:34:56",
    "Hostname": "myhost1.example.mydomain.com",
    "Program": "mymailservice:",
    "Message": "Info: ICID 123456789 close",
    "TimeStamp": "2017-06-18T01:34.56.000"
}
```

### Summary
<a name="directory-source-configuration-summary"></a>

以下是可用于 `DirectorySource` 源的键/值对以及与这些键/值对相关的 `RecordParser` 的摘要。


| 密钥名称 | RecordParser | 备注 | 
| --- | --- | --- | 
| SourceType | 对于所有项是必需的 | 必须具有值 DirectorySource | 
| Directory | 对于所有项是必需的 |  | 
| FileNameFilter | 对于所有项是可选的 |  | 
| RecordParser | 对于所有项是必需的 |  | 
| TimestampField | 对于 SingleLineJson 是可选的 |  | 
| TimestampFormat | 对于 Timestamp 是必需的，对于 SingleLineJson 是可选的（如果指定 TimestampField） |  | 
| Pattern | 对于 Regex 是必需的 |  | 
| ExtractionPattern | 对于 Regex 是可选的 | 对于 Regex 是必需的（如果接收器指定 json 或 xml 格式） | 
| Delimiter | 对于 Delimited 是必需的 |  | 
| HeaderPattern | 对于 Delimited 是可选的 |  | 
| Headers | 对于 Delimited 是可选的 |  | 
| RecordPattern | 对于 Delimited 是可选的 |  | 
| CommentPattern | 对于 Delimited 是可选的 |  | 
| TimeZoneKind | 对于 Regex、Timestamp、SysLog 和 SingleLineJson 是可选的（如果标识时间戳字段） |  | 
| SkipLines | 对于所有项是可选的 |  | 

## ExchangeLogSource 配置
<a name="exchange-source-configuration"></a>

 `ExchangeLogSource` 类型用于从 Microsoft Exchange 收集日志。Exchange 以多种不同的日志格式生成日志。此源类型解析所有这些日志。虽然可以将 `DirectorySource` 类型与 `Regex` 记录解析程序结合使用来解析日志，但使用 `ExchangeLogSource` 要简单得多。这是因为您不需要为日志文件格式设计和提供正则表达式。以下是示例 `ExchangeLogSource` 声明：

```
{
   "Id": "MyExchangeLog",
   "SourceType": "ExchangeLogSource",
   "Directory": "C:\\temp\\ExchangeLogTest",
   "FileNameFilter": "*.log"
}
```

所有交换声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"ExchangeLogSource"`（必需）。

`Directory`  
包含日志文件的目录的路径（必需）。

`FileNameFilter`  
（可选）根据通配符文件命名模式限制从中收集日志数据的目录中的文件集。如果未指定此键/值对，则默认情况下会收集目录中所有文件的日志数据。

`TimestampField`  
包含记录的日期和时间的列的名称。此键/值对是可选的，如果字段名为 `date-time` 或 `DateTime`，则无需指定它。否则，它是必需的。

## W3SVCLogSource 配置
<a name="iis-source-configuration"></a>

 `W3SVCLogSource` 类型用于从 Internet Information Services (IIS) for Windows 收集日志。

以下是示例 `W3SVCLogSource` 声明：

```
{
   "Id": "MyW3SVCLog",
   "SourceType": "W3SVCLogSource",
   "Directory": "C:\\inetpub\\logs\\LogFiles\\W3SVC1",
   "FileNameFilter": "*.log"
}
```

所有 `W3SVCLogSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"W3SVCLogSource"`（必需）。

`Directory`  
包含日志文件的目录的路径（必需）。

`FileNameFilter`  
（可选）根据通配符文件命名模式限制从中收集日志数据的目录中的文件集。如果未指定此键/值对，则默认情况下会收集目录中所有文件的日志数据。

## UlsSource 配置
<a name="sharepoint-source-configuration"></a>

 `UlsSource` 类型用于从 Microsoft SharePoint 收集日志。以下是示例 `UlsSource` 声明：

```
{
    "Id": "UlsSource",
    "SourceType": "UlsSource",
    "Directory": "C:\\temp\\uls",
    "FileNameFilter": "*.log"
}
```

所有 `UlsSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"UlsSource"`（必需）。

`Directory`  
包含日志文件的目录的路径（必需）。

`FileNameFilter`  
（可选）根据通配符文件命名模式限制从中收集日志数据的目录中的文件集。如果未指定此键/值对，则默认情况下会收集目录中所有文件的日志数据。

## WindowsEventLogSource 配置
<a name="window-event-source-configuration"></a>

`WindowsEventLogSource` 类型用于从 Windows Event Log 服务收集事件。以下是示例 `WindowsEventLogSource` 声明：

```
{
    "Id": "mySecurityLog",
    "SourceType": "WindowsEventLogSource",
    "LogName": "Security"
}
```

所有 `WindowsEventLogSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"WindowsEventLogSource"`（必需）。

`LogName`  
从指定日志收集事件。常见值包括 `Application`、`Security` 和 `System`，但您可以指定任何有效的 Windows 事件日志名称。此键/值对是必需的。

`Query`  
（可选）限制从 `WindowsEventLogSource` 输出的事件。如果未指定此键/值对，则默认情况下会输出所有事件。有关此值的语法的信息，请参阅 Windows 文档中的[事件查询和事件 XML](https://msdn.microsoft.com/en-us/library/bb399427(v=vs.90).aspx)。有关日志级别定义的信息，请参阅 Windows 文档中的[事件类型](https://docs.microsoft.com/en-us/windows/desktop/eventlog/event-types)。

`IncludeEventData`  
当此键/值对的值为 `"true"` 时，（可选）启用与指定 Windows 事件日志中的事件关联的特定于提供程序的事件数据的收集和流式传输。仅包括可成功序列化的事件数据。此键/值对是可选的，如果未指定它，则不会收集特定于提供程序的事件数据。  
包含事件数据可能会显著增加从此源流式传输的数据量。事件的最大大小可以是 262143 字节（包括事件数据）。

从 `WindowsEventLogSource` 解析的输出包含以下信息：


| 属性 | 类型 | 描述 | 
| --- | --- | --- | 
| EventId | Int | 事件类型的标识符。 | 
| Description | 字符串 | 描述事件详细信息的文本。 | 
| LevelDisplayName | 字符串 | 事件类别（“错误”、“警告”、“信息”、“成功审核”、“失败审核”之一）。 | 
| LogName | 字符串 | 记录事件的位置（典型值为 Application、Security 和 System，但有很多可能性）。 | 
| MachineName | 字符串 | 记录了事件的计算机。 | 
| ProviderName | 字符串 | 记录了事件的应用程序或服务。 | 
| TimeCreated | 字符串 | 事件发生（用 ISO 8601 格式）的时间。 | 
| Index | Int | 项在日志中的位置。 | 
| UserName | 字符串 | 项的创建者（如果知道）。 | 
| Keywords | 字符串 | 事件类型。标准值包括 AuditFailure（失败的安全审核事件）、AuditSuccess（成功的安全审核事件）、Classic（使用 RaiseEvent 函数引发的事件）、Correlation Hint（传输事件）、SQM（Service Quality Mechanism 事件）、WDI Context（Windows Diagnostic Infrastructure 上下文事件）和 WDI Diag（Windows Diagnostic Infrastructure 诊断事件）。 | 
| EventData | 对象列表 | 有关日志事件的可选的特定于提供程序的额外数据。仅在 IncludeEventData 键/值对的值为 "true" 时包含此项。 | 

以下是转换为 JSON 的示例事件：

```
{[ 
    "EventId": 7036, 
    "Description": "The Amazon SSM Agent service entered the stopped state.", 
    "LevelDisplayName": "Informational", 
    "LogName": "System", 
    "MachineName": "mymachine.mycompany.com", 
    "ProviderName": "Service Control Manager", 
    "TimeCreated": "2017-10-04T16:42:53.8921205Z", 
    "Index": 462335, 
    "UserName": null, 
    "Keywords": "Classic", 
    "EventData": [ 
    "Amazon SSM Agent", 
    "stopped", 
    "rPctBAMZFhYubF8zVLcrBd3bTTcNzHvY5Jc2Br0aMrxxx==" 
]}
```

## 窗口七个日志轮询源配置
<a name="eventlogpolling-source-configuration"></a>

`WindowsEventLogPollingSource`使用基于轮询的机制从事件日志中收集与配置的参数匹配的所有新事件。根据上次轮询期间收集的事件数量，轮询间隔会在 100 ms 到 5000 ms 之间动态更新。以下是示例 `WindowsEventLogPollingSource` 声明：

```
{
    "Id": "MySecurityLog",
    "SourceType": "WindowsEventLogPollingSource",
    "LogName": "Security",
    "IncludeEventData": "true",
    "Query": "",
    "CustomFilters": "ExcludeOwnSecurityEvents"
}
```

所有 `WindowsEventLogPollingSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"WindowsEventLogPollingSource"`（必需）。

`LogName`  
指定日志。有效选项为`Application`、`Security`、`System`或其他有效日志。

`IncludeEventData`  
可选。何时`true`，指定以 JSON 和 XML 的形式流式传输时包含额外的 EventData。默认为 `false`。

`Query`  
可选。Windows 事件日志支持使用 XPath 表达式查询事件，您可以使用`Query`。有关更多信息，请参阅 。[事件查询和事件 XML](https://docs.microsoft.com/en-us/previous-versions/bb399427(v=vs.90))在微软文档中。

`CustomFilters`  
可选。用分号隔开的筛选器列表 (`;`)。可以指定以下筛选器。    
`ExcludeOwnSecurityEvents`  
排除 Windows 本身的 Kinesis 代理生成的安全事件。

## WindowsETWEventSource 配置
<a name="etw-source-configuration"></a>

 `WindowsETWEventSource` 类型用于通过名为 Windows 事件跟踪 (ETW) 的功能来收集应用程序和服务事件跟踪。有关更多信息，请参阅 Windows 文档中的[事件跟踪](https://docs.microsoft.com/en-us/windows/desktop/etw/event-tracing-portal)。

以下是示例 `WindowsETWEventSource` 声明：

```
{
    "Id": "ClrETWEventSource",
    "SourceType": "WindowsETWEventSource",
    "ProviderName": "Microsoft-Windows-DotNETRuntime",
    "TraceLevel": "Verbose",
    "MatchAnyKeyword": 32768
}
```

所有 `WindowsETWEventSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"WindowsETWEventSource"`（必需）。

`ProviderName`  
指定用于收集跟踪事件的事件提供程序。这必须是已安装的提供程序的有效 ETW 提供程序名称。要确定安装了哪些提供程序，请在 Windows 命令提示符窗口中执行以下命令：  

```
logman query providers
```

`TraceLevel`  
指定应收集哪些类别的跟踪事件。允许的值包括 `Critical`、`Error`、`Warning`、`Informational` 和 `Verbose`。确切含义取决于所选的 ETW 提供程序。

`MatchAnyKeyword`  
该值是一个 64 位数，其中每个位代表一个单独的关键字。每个关键字都描述了要收集的事件类别。有关受支持的关键字及其值以及它们与 `TraceLevel` 的关联方式，请参阅该提供程序的文档。例如，有关 CLR ETW 提供程序的信息，请参阅 Microsoft .NET Framework 文档中的 [CLR ETW 关键字和级别](https://docs.microsoft.com/en-us/dotnet/framework/performance/clr-etw-keywords-and-levels)。  
在前面的示例中，32768 (0x00008000) 表示 CLR ETW 提供程序的 `ExceptionKeyword`，它指示提供程序收集有关引发的异常的信息。虽然 JSON 本身不支持十六进制常量，但您可以通过将它们放在一个字符串中为 `MatchAnyKeyword` 指定它们。您也可以指定多个常量（用逗号分隔）。例如，使用以下命令指定 `ExceptionKeyword` 和 `SecurityKeyword` (0x00000400)：  

```
{
   "Id": "MyClrETWEventSource",
   "SourceType": "WindowsETWEventSource",
   "ProviderName": "Microsoft-Windows-DotNETRuntime",
   "TraceLevel": "Verbose",
   "MatchAnyKeyword": "0x00008000, 0x00000400"
}
```
为了确保为提供程序启用所有指定的关键字，使用 OR 组合多个关键字值并将其传递给该提供程序。

来自 `WindowsETWEventSource` 的输出包含每个事件的以下信息：


| 属性 | 类型 | 描述 | 
| --- | --- | --- | 
| EventName | 字符串 | 发生的事件的类型。 | 
| ProviderName | 字符串 | 检测到事件的提供程序。 | 
| FormattedMessage | 字符串 | 事件的文本摘要。 | 
| ProcessID | Int | 报告了事件的过程。 | 
| ExecutingThreadID | Int | 报告了事件的过程中的线程。 | 
| MachineName | 字符串 | 报告事件的桌面设备或服务器的名称。 | 
| Payload | 哈希表 | 具有字符串键和任何类型的对象作为值的表。键是负载项名称，值是负载项的值。负载依赖于提供程序。 | 

以下是转换为 JSON 的示例事件：

```
{ 
     "EventName": "Exception/Start", 
     "ProviderName": "Microsoft-Windows-DotNETRuntime", 
     "FormattedMessage": "ExceptionType=System.Exception;\r\nExceptionMessage=Intentionally unhandled exception.;\r\nExceptionEIP=0x2ab0499;\r\nExceptionHRESULT=-2,146,233,088;\r\nExceptionFlags=CLSCompliant;\r\nClrInstanceID=9 ",
     "ProcessID": 3328, 
     "ExecutingThreadID": 6172, 
     "MachineName": "MyHost.MyCompany.com", 
     "Payload": 
      { 
        "ExceptionType": "System.Exception", 
        "ExceptionMessage": "Intentionally unhandled exception.", 
        "ExceptionEIP": 44762265, 
        "ExceptionHRESULT": -2146233088, 
        "ExceptionFlags": 16, 
        "ClrInstanceID": 9 
      } 
}
```

## WindowsPerformanceCounterSource 配置
<a name="performance-counter-source-configuration"></a>

 `WindowsPerformanceCounterSource` 类型从 Windows 中收集性能计数器指标。以下是示例 `WindowsPerformanceCounterSource` 声明：

```
{
	"Id": "MyPerformanceCounter",
	"SourceType": "WindowsPerformanceCounterSource",
	"Categories": [{
			"Category": "Server",
			"Counters": ["Files Open", "Logon Total", "Logon/sec", "Pool Nonpaged Bytes"]
		},
		{
			"Category": "System",
			"Counters": ["Processes", "Processor Queue Length", "System Up Time"]
		},
		{
			"Category": "LogicalDisk",
			"Instances": "*",
			"Counters": [
				"% Free Space", "Avg. Disk Queue Length",
				{
					"Counter": "Disk Reads/sec",
					"Unit": "Count/Second"
				},
				"Disk Writes/sec"
			]
		},
		{
			"Category": "Network Adapter",
			"Instances": "^Local Area Connection\* \d$",
			"Counters": ["Bytes Received/sec", "Bytes Sent/sec"]
		}
	]
}
```

所有 `WindowsPerformanceCounterSource` 声明都可以提供以下键/值对：

`SourceType`  
必须是文本字符串 `"WindowsPerformanceCounterSource"`（必需）。

`Categories`  
指定要从 Windows 中收集的一组性能计数器指标组。每个指标组都包含以下键/值对：    
`Category`  
指定要收集的指标的计数器集（必需）。  
`Instances`  
当每个对象都有一组唯一的性能计数器时，指定感兴趣的对象集。例如，当类别为 `LogicalDisk` 时，每个磁盘驱动器都有一组性能计数器。键/值对是可选的。您可以使用通配符 `*` 和 `?` 匹配多个实例。要聚合所有实例的值，请指定 `_Total`。  
您还可以使用`InstanceRegex`，它接受包含`*`通配符作为实例名称的一部分。  
`Counters`  
指定要为指定类别收集的指标。此键/值对是必需的。您可以使用通配符 `*` 和 `?` 匹配多个计数器。您可以仅使用名称或使用名称和单位来指定 `Counters`。如果未指定计数器单位，则 Windows 的 Kinesis 代理会尝试从名称推断单位。如果这些推理不正确，则可以明确指定单位。如果需要，您可以更改 `Counter` 名称。计数器的更复杂的表示形式是具有以下键/值对的对象：    
`Counter`  
计数器的名称。此键/值对是必需的。  
`Rename`  
要提供给接收器的计数器的名称。键/值对是可选的。  
`Unit`  
与计数器关联的值的含义。有关有效设备名称的完整列表，请参阅[MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)中的*Amazon CloudWatch API 参考*。
以下是复杂计数器规范的示例：  

```
{
   "Counter": "Disk Reads/sec, 
   "Rename": "Disk Reads per second",
   "Unit": "Count/Second"
}
```

`WindowsPerformanceCounterSource`只能与指定 Amazon CloudWatch 接收器的管道结合使用。如果 Windows Kinesis 代理内置指标也流式传输到 CloudWatch，请使用单独的接收器。检查适用于 Windows 的 Kinesis 代理日志，以确定在未指定单位时，为计数器推断了哪些单位。`WindowsPerformanceCounterSource`声明。使用 PowerShell 确定类别、实例和计数器的有效名称。

要查看有关所有类别的信息（包括与计数器集关联的计数器），请在 PowerShell 窗口中执行以下命令：

```
    Get-Counter -ListSet * | Sort-Object
```

要确定计数器集中每个计数器可用的实例，请在 PowerShell 窗口中执行类似于以下示例的命令：

```
    Get-Counter -Counter "\Process(*)\% Processor Time"
```

`Counter` 参数的值应是上一个 `Get-Counter -ListSet` 命令调用列出的 `PathsWithInstances` 成员中的路径之一。

## Windows 内置指标源的 Kinesis 代理
<a name="kinesis-agent-builin-metrics-source"></a>

除了普通指标来源（如`WindowsPerformanceCounterSource`类型（请参阅[WindowsPerformanceCounterSource 配置](#performance-counter-source-configuration)），CloudWatch 接收器类型可以从收集有关适用于 Windows 本身的 Kinesis 代理的指标的特殊源接收指标。Windows 指标的 Kinesis 代理还可用于`KinesisTap`类别的 Windows 性能计数器。

这些区域有：`MetricsFilter`键 Kinesis 值对指定哪些指标从内置的 Windows 功能代理程序指标源流式传输到 CloudWatch。该值是一个字符串，其中包含一个或多个用分号分隔的筛选表达式；例如：

`"MetricsFilter": "`*FilterExpression1*`;`*FilterExpression2*`"`

与一个或多个筛选表达式匹配的指标将流式传输到 CloudWatch。

单实例指标本质上是全局的，不与特定的源或接收器关联。多实例指标是多维的，并且基于源或接收器声明 `Id`。每个源或接收器类型均可具有一组不同的指标。

有关 Windows 指标名称的内置 Kinesis 代理的列表，请参阅[适用于 Windows 指标的 Kinesis 代理列表](#kinesis-agent-metric-list)。

对于单实例指标，筛选表达式是指标的名称；例如：

```
"MetricsFilter": "SourcesFailedToStart;SinksFailedToStart"
```

对于多实例指标，筛选表达式依次包含指标名称、句点 (`.`) 和生成该指标的源或接收器声明的 `Id`。例如，假设有一个 `Id` 为 `MyFirehose` 的接收器声明：

```
"MetricsFilter": "KinesisFirehoseRecordsFailedNonrecoverable.MyFirehose"      
```

您可以使用旨在区分单实例指标和多实例指标的特殊通配符模式。
+ 星号 (`*`) 将匹配 0 个或多个字符，句点 (`.`) 除外。
+ 问号 (`?`) 匹配一个字符，句点除外。
+ 任何其他字符仅匹配自身。
+ `_Total` 是一个特殊标记，它会导致跨维度聚合所有匹配的多实例值。

以下示例匹配所有单实例指标：

```
"MetricsFilter": "*"
```

由于星号与句点字符不匹配，因此，仅包含单实例指标。

以下示例匹配所有多实例指标：

```
"MetricsFilter": "*.*"
```

以下示例匹配所有指标（单个和多个）：

```
"MetricsFilter": "*;*.*"
```

以下示例跨所有源和接收器聚合所有多实例指标：

```
"MetricsFilter": "*._Total"
```

以下示例聚合所有 Kinesis Data Firehose 收器的所有 Kinesis 数据防火管指标：

```
"MetricsFilter": "*Firehose*._Total"
```

以下示例匹配所有单实例和多实例错误指标：

```
"MetricsFilter": "*Failed*;*Error*.*;*Failed*.*"
```

以下示例匹配跨所有源和接收器聚合的所有不可恢复的错误指标：

```
"MetricsFilter": "*Nonrecoverable*._Total"
```



有关如何指定使用适用于 Windows 的 Kinesis 代理的内置指标源的信息，请参阅[为 Windows 度量管道配置 Kinesis 代理](pipe-object-declarations.md#kinesis-agent-metric-pipe-configuration)。

## 适用于 Windows 指标的 Kinesis 代理列表
<a name="kinesis-agent-metric-list"></a>

以下是对适用于 Windows 的 Kinesis 代理可用的单实例指标和多实例指标的列表。

### 单实例指标
<a name="single-instance-metrics"></a>

提供了以下单实例指标：

`KinesisTapBuildNumber`  
Windows 的 Kinesis 代理的版本号。

`PipesConnected`  
已成功将其源连接到其接收器的管道的数目。

`PipesFailedToConnect`  
已成功将其源连接到其接收器的管道的数目。

`SinkFactoriesFailedToLoad`  
未成功加载到 Windows 的 Kinesis 代理的接收器类型的数目。

`SinkFactoriesLoaded`  
已成功加载到 Windows Kinesis 代理的接收器类型的数目。

`SinksFailedToStart`  
未成功启动（通常是因接收器声明不正确导致的）的接收器的数目。

`SinksStarted`  
已成功启动的接收器的数目。

`SourcesFailedToStart`  
未成功启动（通常是因源声明不正确导致的）的源的数目。

`SourcesStarted`  
已成功启动的源的数目。

`SourceFactoriesFailedToLoad`  
未成功加载到 Windows 的 Kinesis 代理的源类型的数目。

`SourceFactoriesLoaded`  
已成功加载到 Windows Kinesis 代理的源类型的数目。

### 多实例指标
<a name="multiple-instance-metrics"></a>

提供了以下多实例指标：

#### DirectorySource 指标
<a name="directory-source-metrics"></a>

`DirectorySourceBytesRead`  
在此 `DirectorySource` 的间隔期间读取的字节的数目。

`DirectorySourceBytesToRead`  
已知可供读取但尚未由 Kinesis 代理读取的字节数（适用于 Windows）。

`DirectorySourceFilesToProcess`  
需要检查但尚未由 Kinesis 代理的 Windows 检查的已知文件的数目。

`DirectorySourceRecordsRead`  
在此 `DirectorySource` 的间隔期间已读取的记录数。

#### WindowsEventLogSource 指标
<a name="windows-event-log-source-metrics"></a>

`EventLogSourceEventsError`  
未成功读取的 Windows 事件日志事件的数目。

`EventLogSourceEventsRead`  
已成功读取的 Windows 事件日志事件的数目。

#### KinesisFirehose 接收器指标
<a name="kinesis-firehose-sink-metrics"></a>

`KinesisFirehoseBytesAccepted`  
间隔期间已接受的字节数。

`KinesisFirehoseClientLatency`  
记录生成和记录流式传输到 Kinesis Data Firehose 服务之间经过的时间。

`KinesisFirehoseLatency`  
Kinesis Data Firehose 服务的记录流的开始和结束之间经过的时间。

`KinesisFirehoseNonrecoverableServiceErrors`  
无法无错误地将记录发送到 Kinesis 数据消防软管服务的次数（尽管已重试）。

`KinesisFirehoseRecordsAttempted`  
已尝试流式传输到 Kinesis 数据消防软管服务的记录的数目。

`KinesisFirehoseRecordsFailedNonrecoverable`  
未成功流式传输到 Kinesis 数据消防软管服务的记录的数目（尽管已重试）。

`KinesisFirehoseRecordsFailedRecoverable`  
已成功流式传输到 Kinesis 数据消防软管服务的记录的数目（但仅在重试的情况下）。

`KinesisFirehoseRecordsSuccess`  
已成功流式传输到 Kinesis 数据防火管服务的记录的数目（无需重试）。

`KinesisFirehoseRecoverableServiceErrors`  
将记录成功发送到 Kinesis 数据消防软管服务的次数（但仅在重试的情况下）。

#### KinesisStream 指标
<a name="kinesis-stream-metrics"></a>

`KinesisStreamBytesAccepted`  
间隔期间已接受的字节数。

`KinesisStreamClientLatency`  
记录生成和记录流式传输到 Kinesis Data Streams 服务之间经过的时间。

`KinesisStreamLatency`  
Kinesis 数据流服务的记录流的开始和结束之间经过的时间。

`KinesisStreamNonrecoverableServiceErrors`  
无法无错误地将记录发送到 Kinesis 数据流服务的次数（尽管已重试）。

`KinesisStreamRecordsAttempted`  
已尝试流式传输到 Kinesis 数据流服务的记录的数目。

`KinesisStreamRecordsFailedNonrecoverable`  
未成功流式传输到 Kinesis 数据流服务的记录的数目（尽管已重试）。

`KinesisStreamRecordsFailedRecoverable`  
已成功流式传输到 Kinesis 数据流服务的记录的数目（但仅在重试的情况下）。

`KinesisStreamRecordsSuccess`  
已成功流式传输到 Kinesis Data Streams 服务的记录的数目。

`KinesisStreamRecoverableServiceErrors`  
将记录成功发送到 Kinesis 数据流服务的次数（但仅在重试的情况下）。

#### CloudWatchLog 指标
<a name="cloud-watch-log-metrics"></a>

`CloudWatchLogBytesAccepted`  
间隔期间已接受的字节数。

`CloudWatchLogClientLatency`  
记录生成和记录流式传输到 CloudWatch Logs 服务之间经过的时间。

`CloudWatchLogLatency`  
CloudWatch Logs 服务的记录流的开始和结束之间经过的时间。

`CloudWatchLogNonrecoverableServiceErrors`  
无法无错误地将记录发送到 CloudWatch Logs 服务的次数（尽管已重试）。

`CloudWatchLogRecordsAttempted`  
已尝试流式传输到 CloudWatch Logs 服务的记录的数目。

`CloudWatchLogRecordsFailedNonrecoverable`  
未成功流式传输到 CloudWatch Logs 服务的记录的数目（尽管已重试）。

`CloudWatchLogRecordsFailedRecoverable`  
已成功流式传输到 CloudWatch Logs 服务的记录的数目（但仅在重试的情况下）。

`CloudWatchLogRecordsSuccess`  
已成功流式传输到 CloudWatch Logs 服务的记录的数目。

`CloudWatchLogRecoverableServiceErrors`  
将记录成功发送到 CloudWatch Logs 服务的次数（但仅在重试的情况下）。

#### CloudWatch 指标
<a name="cloud-watch-metrics"></a>

`CloudWatchLatency`  
CloudWatch 服务的指标流的开始和结束之间平均经过的时间。

`CloudWatchNonrecoverableServiceErrors`  
无法无错误地将指标发送到 CloudWatch 服务的次数（尽管已重试）。

`CloudWatchRecoverableServiceErrors`  
无错误地将指标发送到 CloudWatch 服务的次数（但仅在重试的情况下）。

`CloudWatchServiceSuccess`  
无错误地将指标发送到 CloudWatch 服务的次数（无需重试）。

## 书签配置
<a name="advanced-source-configuration"></a>

 默认情况下，Windows 的 Kinesis 代理将日志记录发送到在代理启动后创建的接收器。有时，发送早期日志记录很有用，例如，当在自动更新期间停止时创建的日志记录。书签功能可跟踪已发送到接收器的记录。当 Windows 的 Kinesis 代理处于书签模式中并启动时，它会将在 Windows 的 Kinesis 代理停止后创建的所有日志记录与随后创建的任何日志记录一起发送。要控制此行为，基于文件的源声明可以选择包括以下键/值对：

`InitialPosition`  
指定书签的初始情况。可能值如下所示：    
`EOS`  
指定流结束 (EOS)。仅将在代理运行时创建的日志记录发送到接收器。  
`0`  
最初发送所有可用的日志记录和事件。然后，创建书签以确保最终将发送在创建书签后创建的每条新日志记录和事件，无论是否正在运行。  
`Bookmark`  
书签初始化为最新的日志记录或事件之后的书签。然后，创建书签以确保最终将发送在创建书签后创建的每条新日志记录和事件，无论是否正在运行。  
默认情况下已启用书签。文件存储在`%ProgramData%\Amazon\KinesisTap`目录。  
`Timestamp`  
发送在 `InitialPositionTimestamp` 值（定义如下）之后创建的日志记录和事件。然后，创建书签以确保最终将发送在创建书签后创建的每条新日志记录和事件，无论是否正在运行。

`InitialPositionTimestamp`  
指定所需的最早日志记录或事件时间戳。仅在 `InitialPosition` 的值为 `Timestamp` 时指定此键/值对。

`BookmarkOnBufferFlush`  
 可以将此设置添加到任何可书签源。如果设置为`true`，确保书签更新仅在接收器成功向 AWS 发送事件时才进行。您只能为源订阅单个汇。如果您要将日志发送到多个目的地，请复制源以避免数据丢失的潜在问题。

当 Windows 的 Kinesis 代理已停止很长一段时间，可能需要删除这些书签，因为已添加书签的日志记录和事件可能不再存在。给定*源 ID* 的书签文件位于 `%PROGRAMDATA%\Amazon\AWSKinesisTap\source id.bm`。

书签不适用于已重命名或截断的文件。由于 ETW 事件和性能计数器的性质，无法为它们添加书签。

# 接收器声明
<a name="sink-object-declarations"></a>

*接收器声明* 指定应从哪里以何种格式将日志、事件和指标发送到各种 AWS 服务。以下部分描述了 Microsoft Windows 的 Amazon Kinesis 代理中可用的内置接收器类型的配置。由于 Windows 的 Kinesis 代理是可扩展的，因此，您可以添加自定义接收器类型。通常在与各个接收器类型关联的配置声明中，需要有该接收器类型的唯一键/值对。

所有接收器声明可以包含以下键/值对：

`Id`  
唯一字符串，在配置文件中标识特定接收器（必需）。

`SinkType`  
此接收器的接收器类型的名称（必需）。接收器类型指定此接收器流式传输的日志、事件或指标数据的目标。

`AccessKey`  
指定在授权访问与接收器类型关联的 AWS 服务时，使用的 AWS 访问密钥。键/值对是可选的。有关更多信息，请参阅 [接收器安全配置](#configuring-kinesis-agent-windows-sink-security-configuration)。

`SecretKey`  
指定在授权访问与接收器类型关联的 AWS 服务时，使用的 AWS 私有密钥。键/值对是可选的。有关更多信息，请参阅 [接收器安全配置](#configuring-kinesis-agent-windows-sink-security-configuration)。

`Region`  
指定哪个 AWS 区域包含用于流式传输的目标资源。键/值对是可选的。

`ProfileName`  
指定用于身份验证的 AWS 配置文件。键/值对是可选的，但如果指定，则会覆盖任何指定的访问密钥和私有密钥。有关更多信息，请参阅 [接收器安全配置](#configuring-kinesis-agent-windows-sink-security-configuration)。

`RoleARN`  
指定在访问与接收器类型关联的 AWS 服务时使用的 IAM 角色。当 Windows Kinesis Agent 在 EC2 实例上运行但其他角色比实例配置文件所引用的角色更合适时，此选项非常有用。例如，跨账户角色可用于定位与 EC2 实例不在相同 AWS 账户中的资源。键/值对是可选的。

`Format`  
指定在流式传输之前，应用到日志和事件数据的序列化类型。有效值为 `json` 和 `xml`。当数据管道中的下游分析需要或偏好特定格式的数据时，此选项非常有用。此键/值对可选，如果未指定，则将来自源的普通文本从接收器流式传输到与该接收器类型关联的 AWS 服务。

`TextDecoration`  
未指定 `Format` 时，`TextDecoration` 指定在流式传输日志或事件记录时应包含的其他文本。有关更多信息，请参阅 [配置接收器修饰](#configuring-kinesis-agent-windows-decoration-configuration)。键/值对是可选的。

`ObjectDecoration`  
指定了 `Format` 时，`ObjectDecoration` 指定在序列化和流式传输之前，日志或事件记录中包含哪些其他数据。有关更多信息，请参阅 [配置接收器修饰](#configuring-kinesis-agent-windows-decoration-configuration)。键/值对是可选的。

`BufferInterval`  
为了尽可能减少对与接收器类型关联的 AWS 服务的 API 调用，Windows Kinesis Agent 在流式传输之前缓冲多个日志、事件或指标记录。这可以为针对每次 API 调用收费的服务节省费用。`BufferInterval` 指定在流式传输到 AWS 服务之前，缓冲记录的最大时间长度（以秒为单位）。此键/值对可选，在指定时，使用字符串来表示值。

`BufferSize`  
为了尽可能减少对与接收器类型关联的 AWS 服务的 API 调用，Windows Kinesis Agent 在流式传输之前缓冲多个日志、事件或指标记录。这可以为针对每次 API 调用收费的服务节省费用。`BufferSize` 指定在流式传输到 AWS 服务之前，缓冲的最大记录数。此键/值对可选，在指定时，使用字符串来表示值。

`MaxAttempts`  
指定在流式传输持续失败时，Windows Kinesis Agent 尝试将一组日志、事件和指标记录流式传输到 AWS 服务的次数。键/值对是可选的。在指定时，使用字符串来表示值。默认值为“`3`”。

有关使用不同接收器类型的完整配置文件示例，请参阅[从 Windows 应用程序事件日志流式传输到接收器](configuring-kaw-examples.md#configuring-kaw-examples-sinks)。

**Topics**
+ [`KinesisStream` 接收器配置](#sink-object-declarations-kinesis-stream)
+ [`KinesisFirehose` 接收器配置](#sink-object-declarations-kinesis-firehose)
+ [CloudWatch 接收器配置](#sink-object-declarations-cloud-watch)
+ [`CloudWatchLogs` 接收器配置](#sink-object-declarations-cloud-watch-logs)
+ [本地`FileSystem`接收器配置](#sink-object-declarations-local-filesystem)
+ [接收器安全配置](#configuring-kinesis-agent-windows-sink-security-configuration)
+ [配置`ProfileRefreshingAWSCredentialProvider`刷新 AWS 凭证](#configuring-credential-refresh)
+ [配置接收器修饰](#configuring-kinesis-agent-windows-decoration-configuration)
+ [配置接收器变量替换](#configuring-kinesis-agent-windows-sink-variable-substitution)
+ [配置接收器排队](#configuring-kinesis-agent-windows-queuing)
+ [为接收器配置代理](#configuring-kinesis-agent-windows-sink-proxy)
+ [在更多汇属性中配置解析变量](#configuring-resolving-variables)
+ [在 AWS 汇中使用 RoLearn 属性时配置 AWS STS 区域终端节点](#configuring-sts-endpoints)
+ [为 AWS 汇配置 VPC 终端节点](#configuring-vpc-endpoint)
+ [配置替代代代理方式](#configuring-alternate-proxy)

## `KinesisStream` 接收器配置
<a name="sink-object-declarations-kinesis-stream"></a>

这些区域有：`KinesisStream`接收器类型将日志记录和事件流式传输到 Kinesis Data Streams 服务。通常，流式传输到 Kinesis Data Tata Stream 的数据由一个或多个使用各种 AWS 服务执行的自定义应用程序处理。数据流式传输到使用 Kinesis 数据流配置的指定流。有关更多信息，请参阅 。*[Amazon Kinesis Data Streams 开发人员指南](https://docs.aws.amazon.com/streams/latest/dev/)*。

以下是 Kinesis Data Streams 接收器声明的示例：

```
{
    "Id": "TestKinesisStreamSink",
    "SinkType": "KinesisStream",
    "StreamName": "MyTestStream",
    "Region": "us-west-2"
}
```

所有 `KinesisStream` 接收器声明可以提供以下额外的键/值对：

`SinkType`  
必须指定，值必须为文本字符串 `KinesisStream`。

`StreamName`  
指定 Kinesis 数据流的名称，该数据流接收从`KinesisStream`汇类型（必需）。在流式传输数据之前，请在 AWS 管理控制台、AWS CLI 或通过使用 Kinesis Data Street API 的应用程序来配置流。

`RecordsPerSecond`  
指定每秒流式传输到 Kinesis Data Streams 的最大记录数。键/值对是可选的。如果指定，则使用整数来表示值。默认值为 1000 个记录。

`BytesPerSecond`  
指定每秒流式传输到 Kinesis Data Streams 的最大字节数。键/值对是可选的。如果指定，则使用整数来表示值。默认值为 1 MB。

此接收器类型的默认 `BufferInterval` 为 1 秒，默认 `BufferSize` 为 500 个记录。

## `KinesisFirehose` 接收器配置
<a name="sink-object-declarations-kinesis-firehose"></a>

这些区域有：`KinesisFirehose`接收器类型将日志记录和事件流式传输到 Kinesis Data Firehose 服务。Kinesis Data Firehose 将流式传输的数据提供给其他服务进行存储。通常，接下来在数据管道的后续阶段中会分析存储的数据。数据流式传输到使用 Kinesis Data Firehose 配置的指定传输流。有关更多信息，请参阅 。*[Amazon Kinesis Data Firehose 开发人员指南](https://docs.aws.amazon.com/firehose/latest/dev/)*。

以下是 Kinesis 数据消防器接收器声明的示例：

```
{
   "Id": "TestKinesisFirehoseSink",
   "SinkType": "KinesisFirehose",
   "StreamName": "MyTestFirehoseDeliveryStream",
   "Region": "us-east-1",
   "CombineRecords": "true"
}
```

所有 `KinesisFirehose` 接收器声明可以提供以下额外的键/值对：

`SinkType`  
必须指定，值必须为文本字符串 `KinesisFirehose`。

`StreamName`  
指定 Kinesis Data Firehose 传输流的数据流名称，该流接收从`KinesisStream`汇类型（必需）。在流式传输数据之前，请使用 AWS 管理控制台、AWS CLI 或通过使用 Kinesis Data Firehose API 的应用程序来配置传输流。

`CombineRecords`  
如果设置为`true`，指定将多个小记录合并成一个最大大小为 5 KB 的大记录。键/值对是可选的。使用此函数组合的记录由`\n`。如果您使用 AWS Lambda 转换 Kinesis Data Firehose 记录，则 Lambda 函数需要考虑分隔符字符。

`RecordsPerSecond`  
指定每秒流式传输到 Kinesis Data Streams 的最大记录数。键/值对是可选的。如果指定，则使用整数来表示值。默认值为 5000 条记录。

`BytesPerSecond`  
指定每秒流式传输到 Kinesis Data Streams 的最大字节数。键/值对是可选的。如果指定，则使用整数来表示值。默认值为 5 MB。

此接收器类型的默认 `BufferInterval` 为 1 秒，默认 `BufferSize` 为 500 个记录。

## CloudWatch 接收器配置
<a name="sink-object-declarations-cloud-watch"></a>

这些区域有：`CloudWatch`接收器类型将指标流式传输到 CloudWatch Service。您可在 AWS 管理控制台中查看指标。有关更多信息，请参阅 *[Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)*。

以下为 `CloudWatch` 接收器声明：

```
{
   "Id": "CloudWatchSink",
   "SinkType": "CloudWatch"
}
```

所有 `CloudWatch` 接收器声明可以提供以下额外的键/值对：

`SinkType`  
必须指定，值必须为文本字符串 `CloudWatch`。

`Interval`  
指定 Windows Kinesis 代理程序向 CloudWatch 服务报告指标的频率（以秒为单位）。键/值对是可选的。如果指定，则使用整数来表示值。默认值为 60 秒。如果您希望高分辨率的 CloudWatch 指标，则指定 1 秒。

`Namespace`  
指定指标数据报告到的 CloudWatch 命名空间。CloudWatch 命名空间将指标集分组到一起。键/值对是可选的。默认值为 `KinesisTap`。

`Dimensions`  
指定用于在命名空间中隔离指标集的 CloudWatch 维度。这会非常有用，例如，为各个台式机或服务器提供单独的指标集数据。此键/值对可选，在指定时，其值必须符合以下格式：`"`*key1*`=`*value1*;*key2*`=`*value2...*`"`。默认值为 `"ComputerName={computername};InstanceId={instance_id}"`。此值支持接收器变量替换。有关更多信息，请参阅 [配置接收器变量替换](#configuring-kinesis-agent-windows-sink-variable-substitution)。

`MetricsFilter`  
指定哪些指标将哪些指标从内置的 Windows Kinesis 代理程序指标源流式传输到 CloudWatch。有关 Windows 指标源的内置 Kinesis Agent 的详细信息，包括此键/值对的值的语法详细信息，请参阅[Windows 内置指标源的 Kinesis 代理](source-object-declarations.md#kinesis-agent-builin-metrics-source)。

## `CloudWatchLogs` 接收器配置
<a name="sink-object-declarations-cloud-watch-logs"></a>

这些区域有：`CloudWatchLogs`接收器类型将日志记录和事件流式传输到 Amazon CloudWatch Logs。您可在 AWS 管理控制台中查看日志，或者通过数据管道的其他阶段处理它们。数据流式传输到在 CloudWatch 日志中配置的指定日志流。日志流按照指定的日志组排列。有关更多信息，请参阅 。*[Amazon CloudWatch Logs 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)*。

以下是 CloudWatch Logs 接收器声明的示例：

```
{
   "Id": "MyCloudWatchLogsSink",
   "SinkType": "CloudWatchLogs",
   "BufferInterval": "60",
   "BufferSize": "100",
   "Region": "us-west-2",
   "LogGroup": "MyTestLogGroup",
   "LogStream": "MyTestStream"
}
```

所有 `CloudWatchLogs` 接收器声明必须提供以下额外的键/值对：

`SinkType`  
必须为文本字符串 `CloudWatchLogs`。

`LogGroup`  
指定 CloudWatch Logs Logs 日志组的名称，该日志组包含的日志流接收由`CloudWatchLogs`汇类型。如果指定的日志组不存在，Windows 的 Kinesis 代理将尝试创建它。

`LogStream`  
指定 CloudWatch Logs 流的名称，该日志流由`CloudWatchLogs`汇类型。此值支持接收器变量替换。有关更多信息，请参阅 [配置接收器变量替换](#configuring-kinesis-agent-windows-sink-variable-substitution)。如果指定的日志流不存在，Windows 的 Kinesis 代理将尝试创建它。

此接收器类型的默认 `BufferInterval` 为 1 秒，默认 `BufferSize` 为 500 个记录。最大缓冲区大小为 10000 个记录。

## 本地`FileSystem`接收器配置
<a name="sink-object-declarations-local-filesystem"></a>

汇类型`FileSystem`将日志和事件记录保存到本地文件系统上的文件中，而不是将其流式传输到 AWS 服务。`FileSystem`汇对于测试和诊断非常有用。例如，您可以使用此接收器类型在将记录发送到 AWS 之前检查记录。

与`FileSystem`接收器，您还可以使用配置参数来模拟批处理、限制和错误时重试，以模拟实际 AWS 汇的行为。

来自所有源的所有记录连接到`FileSystem`接收器保存到指定为`FilePath`。如果`FilePath`未指定，则会将记录保存到名为`SinkId.txt`中的`%TEMP%`目录，通常是`C:\Users\UserName\AppData\Local\Temp`，其中，`SinkId`是接收器的唯一标识符，`UserName`是活动用户的 Windows 用户名。

此接收器类型支持文本装饰属性。有关更多信息，请参阅 [配置接收器修饰](#configuring-kinesis-agent-windows-decoration-configuration)。

一个示例`FileSystem`接收器类型配置显示在以下示例中。

```
{
	   "Id": "LocalFileSink",
	   "SinkType": "FileSystem",
	   "FilePath": "C:\\ProgramData\\Amazon\\local_sink.txt",
	   "Format": "json",
	   "TextDecoration": "",
	   "ObjectDecoration": ""
}
```

这些区域有：`FileSystem`配置由以下键/值对组成。

`SinkType`  
必须为文本字符串 `FileSystem`。

`FilePath`  
指定保存记录的路径和文件。键/值对是可选的。如果未指定，默认值为`TempPath\\SinkId.txt`，其中，`TempPath`是存储在`%TEMP%`变量和`SinkId`是接收器的唯一标识符。

`Format`  
将事件的格式指定为`json`或者`xml`。此键值对是可选的，不区分大小写。如果省略，事件将以纯文本形式写入文件。

`TextDecoration`  
仅适用于以纯文本形式编写的事件。键/值对是可选的。

`ObjectDecoration`  
仅适用于`Format`设置为`json`。键/值对是可选的。

### 高级使用 — 记录限制和故障模拟
<a name="file-system-sink-advanced"></a>

`FileSystem`可以通过模拟记录限制来模拟 AWS 汇的行为。可使用以下键-值对指定记录限制和失效模拟属性。

通过获取目标文件的锁定并阻止对其进行写入，您可以使用`FileSystem`汇来模拟和检查网络发生故障时 AWS 汇的行为。

以下示例显示了一个`FileSystem`配置与模拟属性。

```
{
	   "Id": "LocalFileSink",
	   "SinkType": "FileSystem",
	   "FilePath": "C:\\ProgramData\\Amazon\\local_sink.txt",
	   "TextDecoration": "",
	   "RequestsPerSecond": "100",
    "BufferSize": "10",
    "MaxBatchSize": "1024"
}
```

`RequestsPerSecond`  
可选并指定为字符串类型。如果省略，默认值为`"5"`。控制接收器处理的请求速率（即写入文件），而不是记录数。适用于 Windows 的 Kinesis 代理向 AWS 终端节点发出批量请求，因此一个请求可能包含多个记录。

`BufferSize`  
可选并指定为字符串类型。指定在保存到文件之前，接收器批处理的最大事件记录数。

`MaxBatchSize`  
可选并指定为字符串类型。指定接收器在保存到文件之前批处理的最大事件记录数据量（以字节为单位）。

最大记录速率限制是`BufferSize`，它确定每个请求的最大记录数，`RequestsPerSecond`。您可以使用以下公式计算每秒记录速率限制。

**记录率**=`BufferSize`\$1`RequestsPerSecond`

给定上面示例中的配置值，最大记录速率为每秒 1000 条记录。

## 接收器安全配置
<a name="configuring-kinesis-agent-windows-sink-security-configuration"></a>

### 配置身份验证
<a name="configuring-kinesis-agent-windows-authentication"></a>

对于 Windows Kinesis Agent 将日志、事件和指标流式传输到 AWS 服务，必须对访问进行身份验证。有多种方法可以为 Windows 提供身份验证。如何提供身份验证取决于 Windows 的 Kinesis Agent 以及特定组织的特定安全要求。
+ 如果 Windows Kinesis Agent for Windows 在 Amazon EC2 主机上执行，则提供身份验证最简单安全的方法是，创建对所需 AWS 服务的所需操作具有足够访问权限的 IAM 角色，以及引用该角色的 EC2 实例配置文件。有关创建实例配置文件的信息，请参阅[使用实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)。有关将哪些策略附加到 IAM 角色的信息，请参阅[配置授权](#configuring-kinesis-agent-windows-authorization)。

  创建实例配置文件之后，您可以将其与使用适用于 Windows 的 Kinesis Agent 的任意 EC2 实例关联。如果实例已有关联的实例配置文件，您可以将相应的策略附加到与该实例配置文件关联的角色。
+ 如果 Windows Kinesis Agent for Windows 在一个账户中的 EC2 主机上执行，但作为接收器目标的资源位于不同账户中，您可以创建 IAM 角色用于跨账户访问。有关更多信息，请参阅 。[教程：使用 IAM 角色委托跨 AWS 账户的访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)。创建跨账户角色之后，为跨账户角色指定 Amazon 资源名称 (ARN) 作为`RoleARN`键/值对。然后，在访问与该接收器的接收器类型关联的 AWS 资源时，Windows Kinesis Agent 尝试代入指定的跨账户角色。
+ 如果 Windows Kinesis Agent 在 Amazon EC2 之外执行（例如，本地），则存在多个选项：
  + 如果允许将本地服务器或台式计算机注册为 Amazon EC2 系统管理器托管实例，请使用以下过程来配置身份验证：

    1. 使用[在混合环境中设置 AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html) 中介绍的过程来设置服务角色、为托管实例创建激活以及安装 SSM 代理。

    1. 将相应的策略附加到服务角色，以允许 Windows Kinesis Agent 访问从所配置接收器流式传输数据时所需的资源。有关将哪些策略附加到 IAM 角色的信息，请参阅[配置授权](#configuring-kinesis-agent-windows-authorization)。

    1. 使用[配置`ProfileRefreshingAWSCredentialProvider`刷新 AWS 凭证](#configuring-credential-refresh)刷新 AWS 凭证。

    由于身份证明由 SSM 和 AWS 安全地管理，因此这是建议用于非 EC2 实例的方法。
  + 如果允许在特定用户而不是默认系统帐户下为 Windows 运行 AWSKinesis sisTAP 服务，请使用以下过程：

    1. 在将使用 AWS 服务的 AWS 账户中创建 IAM 用户。在创建过程中，收集此用户的访问密钥和私有密钥。此过程中稍后的步骤需要这些信息。

    1. 将策略附加到 IAM 用户，授予对所需服务的所需操作访问权限。有关将哪些策略附加到 IAM 用户的信息，请参阅[配置授权](#configuring-kinesis-agent-windows-authorization)。

    1. 在各个台式机或服务器上更改 AWSKinesisTap 服务，使其运行在特定用户而不是默认系统账户下。

    1. 使用之前记录的访问密钥和私有密钥在开发工具包存储中创建配置文件。有关更多信息，请参阅[配置 AWS 凭证](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html)。

    1. 在 `%PROGRAMFILES%\Amazon\AWSKinesisTap` 目录中更新 `AWSKinesisTap.exe.config` 文件，指定在上一步中创建的配置文件的名称。有关更多信息，请参阅[配置 AWS 凭证](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html)。

    对于无法作为托管实例的非 EC2 主机，这是推荐方法，因为特定主机和特定用户的凭证是加密的。
  + 如果需要在默认系统账户下为 Windows 运行 AWSKinesis sisTAP 服务，您必须使用共享凭证文件。这是因为系统账户没有用于启用开发工具包存储的 Windows 用户配置文件。共享凭证文件未加密，因此我们建议不要使用此方法。有关如何使用共享配置文件的信息，请参阅[配置 AWS 凭证](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html)中的*适用于 .NET 的 AWS 开发工具包*。如果您使用此方法，我们建议您使用 NTFS 加密并限制对共享配置文件的访问权限。管理平台应该轮换密钥，并且在进行密钥轮换时必须更新共享配置文件。

虽然可以在接收器声明中直接提供访问密钥和私有密钥，但不建议使用此方法，因为声明未加密。

### 配置授权
<a name="configuring-kinesis-agent-windows-authorization"></a>

将相应策略附加到 IAM 用户或角色，适用于 Windows 的 Kinesis Agent 将使用这些用户或角色来流式传输数据到 AWS 服务：

#### Kinesis Data Streams
<a name="minimum-permissions-kinesis-stream"></a>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": "arn:aws:kinesis:*:*:stream/*"
        }
    ]
}
```

要将授权限制到特定区域、账户或流名称，请使用特定值替换 ARN 中的相应星号。有关更多信息，请参阅[使用 IAM 控制对 Amazon Kinesis Data Streams 资源的访问](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html)中的“用于 Kinesis Data Streams 的 Amazon 资源名称 (ARN)”。

#### Kinesis Data Firehose
<a name="minimum-permissions-kinesis-firehose"></a>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": "arn:aws:firehose:*:*:deliverystream/*"
        }
    ]
}
```

要将授权限制到特定区域、账户或传输流名称，请使用特定值替换 ARN 中的相应星号。有关更多信息，请参阅 。[使用 Amazon Kinesis Data Firehose 控制访问](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html)中的*Amazon Kinesis Data Firehose 开发人员指南*。

#### CloudWatch
<a name="minimum-permissions-cloud-watch"></a>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*"
        }
    ]
}
```

有关更多信息，请参阅 。[管理您的 CloudWatch 资源的访问权限概述](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html)中的*Amazon CloudWatch Logs 用户指南*。

#### 具有现有日志组和日志流的 CloudWatch 日志
<a name="minimum-permissions-cloud-watch-logs1"></a>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:*"
        },
        {
            "Sid": "VisualEditor4",
            "Effect": "Allow",
            "Action": "logs:PutLogEvents",
            "Resource": "arn:aws:logs:*:*:log-group:*:*:*"
        }
    ]
}
```

要限制对特定区域、账户、日志组或日志流的访问，请使用相应值替换 ARN 中的相应星号。有关更多信息，请参阅 。[管理您的 CloudWatch Logs 资源的访问权限概述](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html)中的*Amazon CloudWatch Logs 用户指南*。

#### CloudWatch Logs 具有额外权限的 CloudWatch Kinesis 日志日志日志日志，用于 Windows 创建日志组和日志流
<a name="minimum-permissions-cloud-watch-logs2"></a>

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor5",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:*"
        },
        {
            "Sid": "VisualEditor6",
            "Effect": "Allow",
            "Action": "logs:PutLogEvents",
            "Resource": "arn:aws:logs:*:*:log-group:*:*:*"
        },
        {
            "Sid": "VisualEditor7",
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "*"
        }
    ]
}
```

要限制对特定区域、账户、日志组或日志流的访问，请使用相应值替换 ARN 中的相应星号。有关更多信息，请参阅 。[管理您的 CloudWatch Logs 资源的访问权限概述](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html)中的*Amazon CloudWatch Logs 用户指南*。

#### EC2 标签变量扩展所需的权限
<a name="ec2-permissions"></a>

通过 `ec2tag` 变量前缀使用变量扩展需要 `ec2:Describe*` 权限。

```
{
   "Version": "2012-10-17",
   "Statement": [{
      "Sid": "VisualEditor8",
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    }
   ]
}
```

**注意**  
只要各个语句的 `Sid` 在策略中唯一，您就可以将多个语句组合成单个策略。有关创建策略的信息，请参阅[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)中的*IAM 用户指南*。

## 配置`ProfileRefreshingAWSCredentialProvider`刷新 AWS 凭证
<a name="configuring-credential-refresh"></a>

如果您使用适用于混合环境的 AWS Systems Manager 来管理 AWS 证书，Systems Manager 会在`c:\Windows\System32\config\systemprofile\.aws\credentials`。有关混合环境的更多信息，请参阅[为混合环境设置 AWS Systems Manager](https://docs.aws.amazon.com/(systems-manager/latest/userguide/systems-manager-managedinstances.html))中的*AWS Systems Manager 用户指南*。

由于 AWS .net 开发工具包不会自动获取新证书，因此我们提供`ProfileRefreshingAWSCredentialProvider`插件刷新凭据。

您可以使用`CredentialRef`属 AWS 来引用`Credentials`定义，其中`CredentialType`属性设置为`ProfileRefreshingAWSCredentialProvider`如以下示例所示。

```
{
    "Sinks": [{
		      "Id": "myCloudWatchLogsSink",
		      "SinkType": "CloudWatchLogs",
		      "CredentialRef": "ssmcred",
		      "Region": "us-west-2",
		      "LogGroup": "myLogGroup",
		      "LogStream": "myLogStream"
    }],
    "Credentials": [{
        "Id": "ssmcred",
        "CredentialType": "ProfileRefreshingAWSCredentialProvider",
        "Profile": "default",
        "FilePath": "%USERPROFILE%//.aws//credentials",
        "RefreshingInterval": 300
    }]
}
```

凭证定义由以下属性组成，作为键 — 值对。

`Id`  
定义接收器定义可以使用`CredentialRef`以引用此凭据配置。

`CredentialType`  
设置为文本字符串`ProfileRefreshingAWSCredentialProvider`。

`Profile`  
可选。默认为 `default`。

`FilePath`  
可选。指定 AWS 凭证文件的路径。如果省略，则 `%USERPROFILE%/.aws/credentials` 是默认值。

`RefreshingInterval`  
可选。刷新凭据的频率（以秒为单位）。如果省略，则 `300` 是默认值。

## 配置接收器修饰
<a name="configuring-kinesis-agent-windows-decoration-configuration"></a>

接收器声明可以选择包括指定要流式传输到各种 AWS 服务的额外数据的键/值对，用于增强从源收集的记录。

`TextDecoration`  
在接收器声明中未指定 `Format` 时，使用此键/值对。该值是进行变量替换的特殊格式字符串。例如，假设为接收器提供了 `"{ComputerName}:::{timestamp:yyyy-MM-dd HH:mm:ss}:::{_record}"` 的 `TextDecoration`。当源发出包含文本 `The system has resumed from sleep.` 的日志记录时，源通过管道连接到接收器，然后文本 `MyComputer1:::2017-10-26 06:14:22:::The system has resumed from sleep.` 流式传输到与该接收器类型关联的 AWS 服务。`{_record}` 变量引用源所传输的原始文本记录。

`ObjectDecoration`  
在接收器声明中指定了 `Format` 时，使用此键/值对，以在记录序列化之前添加其他数据。例如，假设为指定 JSON `Format` 的接收器提供了 `"ComputerName={ComputerName};DT={timestamp:yyyy-MM-dd HH:mm:ss}"` 的 `ObjectDecoration`。流式传输到与接收器类型关联的 AWS 服务的所生成 JSON，在来自源的原始数据之外，包括下列键/值对：  

```
{
    ComputerName: "MyComputer2",
    DT: "2017-10-17 21:09:04"
}
```
有关使用 `ObjectDecoration` 的示例，请参阅[教程：使用适用于 Windows 的 Kinesis 代理将 JSON 日志文件流式传输到 Amazon S3](directory-source-to-s3-tutorial.md)。

`ObjectDecorationEx`  
指定一个表达式，该表达式允许与`ObjectDecoration`。此字段可用于当汇的格式为`json`。表达式语法如以下所示。  

```
"ObjectDecorationEx": "attribute1={expression1};attribute2={expression2};attribute3={expression3}(;...)"
```
例如，以下`ObjectDecorationEx`属性：  

```
"ObjectDecorationEx": "host={env:ComputerName};message={upper(_record)};time={format(_timestamp, 'yyyyMMdd')}"
```
转换文字记录：  
`System log message`  
使用表达式返回的值进入 JSON 对象，如下所示：  

```
{
    "host": "EC2AMAZ-1234",
    "message": "SYSTEM LOG MESSAGE",
    "time": "20210201"
}
```
有关编制表达式的详细信息，请参阅[有关编写表达式的提示](#configuring-expressions)。其中，`ObjectDecoration`声明应该使用新语法工作，但时间戳变量除外。A`{timestamp:yyyyMMdd}`中的字段`ObjectDecoration`表示为`{format(_timestamp,'yyyyMMdd')}`在`ObjectDecorationEx`。

`TextDecorationEx`  
指定一个表达式，该表达式允许与`TextDecoration`，如以下示例所示。  

```
"TextDecorationEx": "Message '{lower(_record)}' at {format(_timestamp, 'yyyy-MM-dd')}"
```
您可以使用`TextDecorationEx`来组成 JSON 对象。使用 '@ \$1'转义左大括号，如以下示例所示。  

```
"TextDecorationEx": "@{ \"var\": \"{upper($myvar1)}\" }"
```

如果与接收器连接的源的源类型是 `DirectorySource`，则接收器可以使用三个其他变量：

`_FilePath`  
日志文件的完整路径。

`_FileName`  
文件名和文件的扩展名。

`_Position`  
一个整数，表示记录在日志文件中的位置。

当您使用从连接到单个接收器的多个文件收集日志记录的源并将所有记录流式传输到单个流时，这些变量非常有用。将这些变量的值注入流记录中可在数据管道的下游进行分析，以按照文件和在各个文件中的位置来排序记录。

### 有关编写表达式的提示
<a name="configuring-expressions"></a>

表达式可以为以下任一种：
+ 变量表达式。
+ 常量表达式，例如`'hello'`、`1`、`1.21`、`null`、`true`、`false`。
+ 调用函数的调用表达式，如以下示例所示。

  ```
  regexp_extract('Info: MID 118667291 ICID 197973259 RID 0 To: <jd@acme.com>', 'To: (\\\\S+)', 1)
  ```

#### 特殊字符
<a name="ex-special-char"></a>

需要两个反斜杠来转义特殊字符。

#### Nesting
<a name="ex-nesting"></a>

函数调用可以嵌套，如以下示例所示。

```
format(date(2018, 11, 28), 'MMddyyyy')
```

#### Variables
<a name="ex-variables"></a>

有三种类型的变量：局部变量、元变量和全局变量。
+ **局部变量**从开始`$`例如`$message`。它们用于解析事件对象的属性、如果事件是字典的条目或事件是 JSON 对象的属性。如果局部变量包含空格或特殊字符，请使用引号的局部变量，例如`$'date created'`。
+ **元变量**以下划线开头（`_`），并用于解析为事件的元数据。所有事件类型都支持以下元变量。  
`_timestamp`  
事件的时间戳。  
`_record`  
事件的原始文本表示形式。

  日志事件支持以下附加元变量。  
`_filepath`  
  
`_filename`  
  
`_position`  
  
`_linenumber`  


  
+ **全局变量**解析为环境变量、EC2 实例元数据或 EC2Tag。为了获得更好的性能，我们建议您使用前缀限制搜索范围，例如`{env:ComputerName}`、`{ec2:InstanceId}`, 和`{ec2tag:Name}`。

#### 内置函数
<a name="ex-built-in-functions"></a>

Windows Kinesis 代理支持以下内置函数。如果任何参数是`NULL`并且该函数不是为了处理`NULL`，a`NULL`对象被返回。

```
//string functions
int length(string input)
string lower(string input)
string lpad(string input, int size, string padstring)
string ltrim(string input)
string rpad(string input, int size, string padstring)
string rtrim(string input)
string substr(string input, int start)
string substr(string input, int start, int length)
string trim(string input)
string upper(string str)

//regular expression functions
string regexp_extract(string input, string pattern)
string regexp_extract(string input, string pattern, int group)

//date functions
DateTime date(int year, int month, int day)
DateTime date(int year, int month, int day, int hour, int minute, int second)
DateTime date(int year, int month, int day, int hour, int minute, int second, int millisecond)

//conversion functions
int? parse_int(string input)
decimal? parse_decimal(string input)
DateTime? parse_date(string input, string format)
string format(object o, string format)

//coalesce functions
object coalesce(object obj1, object obj2)
object coalesce(object obj1, object obj2, object obj3)
object coalesce(object obj1, object obj2, object obj3, object obj4)
object coalesce(object obj1, object obj2, object obj3, object obj4, object obj5) 
object coalesce(object obj1, object obj2, object obj3, object obj4, object obj5, object obj6)
```

## 配置接收器变量替换
<a name="configuring-kinesis-agent-windows-sink-variable-substitution"></a>

`KinesisStream`、`KinesisFirehose` 和 `CloudWatchLogs` 接收器声明需要 `LogStream` 或 `StreamName` 键/值对。值的值可以包含由 Windows 的 Kinesis 代理自动解析的变量引用。适用于`CloudWatchLogs`，`LogGroup`键/值对也是必需的，并且可以包含由 Windows Kinesis 代理自动解析的变量引用。使用模板 `{`*`prefix`*`:`*`variablename`*`}` 指定变量，其中 *`prefix`*`:` 可选。支持的前缀如下所示：
+ `env`— 变量引用解析为同名的环境变量的值。
+ `ec2`— 变量引用解析为同名的 EC2 实例元数据。
+ `ec2tag`— 变量引用解析为同名的 EC2 实例标签的值。访问实例标签需要 `ec2:Describe*` 权限。有关更多信息，请参阅 [EC2 标签变量扩展所需的权限](#ec2-permissions)。

如果未指定前缀，并且某个环境变量具有与 `variablename` 相同的名称，变量引用解析为环境变量的值。否则，如果 `variablename` 为 `instance_id` 或 `hostname`，变量引用解析为同名的 EC2 元数据的值。如果均不满足，不解析变量引用。

以下为使用变量引用的有效键/值对示例：

```
"LogStream": "LogStream_{instance_id}"
"LogStream": "LogStream_{hostname}"
"LogStream": "LogStream_{ec2:local-hostname}"
"LogStream": "LogStream_{computername}"
"LogStream": "LogStream_{env:computername}"
```

`CloudWatchLogs` 接收器声明支持特殊格式的时间戳变量，允许来自源的日志或事件记录的时间戳变更日志流的名称。格式为 `{timestamp:``timeformat``}`。请参见以下示例：

```
"LogStream": "LogStream_{timestamp:yyyyMMdd}"
```

如果日志或事件记录在 2017 年 6 月 5 日生成，上一例中 `LogStream` 键/值对的值将解析为 `"LogStream_20170605"`。

如果已授权，根据生成的名称，在需要时 `CloudWatchLogs` 接收器类型可以自动创建新日志流。对于其他接收器类型，由于它们在流名称之外需要其他配置，您无法执行此操作。

这些是在文本和对象修饰中出现的特殊变量替换。有关更多信息，请参阅 [配置接收器修饰](#configuring-kinesis-agent-windows-decoration-configuration)。

## 配置接收器排队
<a name="configuring-kinesis-agent-windows-queuing"></a>

`KinesisStream`、`KinesisFirehose` 和 `CloudWatchLogs` 接收器声明可以选择如果由于临时连接问题，记录无法流式传输到与这些接收器类型关联的 AWS 服务，则启用记录排队。要启用排队和在连接恢复时的自动流式传输重试，请在接收器声明中使用以下键/值对：

`QueueType`  
指定要使用的排队机制的类型。唯一支持的值是 `file`，这表示记录应在文件中排队。此键-值对是必需的，以启用适用于 Windows 的 Kinesis 代理的队列功能。如果未指定此项，则默认行为是仅在内存中排队，达到内存排队限制时将无法流式传输。

`QueuePath`  
指定包含已排队记录的文件的文件夹。键/值对是可选的。默认值为 `%PROGRAMDATA%\KinesisTap\Queue\`*SinkId*，其中 *SinkId* 是您分配作为接收器声明的 `Id` 值的标识符。

`QueueMaxBatches`  
限制 Windows Kinesis Agent 在排队记录以进行流式传输时可以使用的空间总量。空间量限制为此键/值对的值乘以每一批的最大字节数。`KinesisStream`、`KinesisFirehose` 和 `CloudWatchLogs` 接收器类型的每一批的最大字节数分别为 5 MB、4 MB 和 1 MB。达到此限制时，任何失败的流式传输不排队，并报告为不可恢复的故障。键/值对是可选的。默认值为 10000 个批处理。

## 为接收器配置代理
<a name="configuring-kinesis-agent-windows-sink-proxy"></a>

要为访问 AWS 服务的 Windows 接收器类型配置代理，请编辑位于的 Windows Kinesis Agent 配置文件。`%Program Files%\Amazon\KinesisTap\AWSKinesisTap.exe.config`。有关说明，请参阅`proxy`中的部分[AWS SDK for .NET 的配置文件参考](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/net-dg-config-ref.html#net-dg-config-ref-elements-proxy)中的*AWS SDK for .NET Developer Guide*。

## 在更多汇属性中配置解析变量
<a name="configuring-resolving-variables"></a>

以下示例显示了接收器配置，该接收器配置使用`Region`环境变量的值`Region`属性键/值对。适用于`RoleARN`，它指定 EC2 标签密钥`MyRoleARN`，它的计算结果为与该键关联的值。

```
"Id": "myCloudWatchLogsSink",
"SinkType": "CloudWatchLogs",
"LogGroup": "EC2Logs",
"LogStream": "logs-{instance_id}"
"Region": "{env:Region}"
"RoleARN": "{ec2tag:MyRoleARN}"
```

## 在 AWS 汇中使用 RoLearn 属性时配置 AWS STS 区域终端节点
<a name="configuring-sts-endpoints"></a>

此功能仅在您在 Amazon EC2 上使用 KinesiSTAP 并使用`RoleARN`属性代入外部 IAM 角色，以便通过目标 AWS 服务进行身份验证。

通过将设置`UseSTSRegionalEndpoints`到`true`，您可以指定代理使用区域终端节点（例如`https://sts.us-east-1.amazonaws.com`）而不是全局终端节点（例如，`https://sts.amazonaws.com`)。使用区域 STS 终端节点可减少操作的往返延迟，并限制全局终端服务中故障的影响。

## 为 AWS 汇配置 VPC 终端节点
<a name="configuring-vpc-endpoint"></a>

您可以在接收器配置中指定 VPC 终端节点`CloudWatchLogs`、`CloudWatch`、`KinesisStreams`, 和`KinesisFirehose`汇类型。VPC 终端节点使您能够将 VPC 私密地连接到支持的 AWS 服务和 VPC 终端节点服务（由 AWS PrivateLink 提供支持），而无需互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的实例无需公有 IP 地址便可与服务中的资源通信。VPC 和其他服务之间的通信不会离开 Amazon 网络。有关更多信息，请参阅 。[VPC 终端节点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)中的*Amazon VPC 用户指南*。

您可 VPC 使用`ServiceURL`属性，如以下示例所示。`CloudWatchLogs`汇配置。将值设置为`ServiceURL`设置为**VPC 终端节点节点详**选项卡上，使用 Amazon VPC 控制台。

```
{
    "Id": "myCloudWatchLogsSink",
    "SinkType": "CloudWatchLogs",
    "LogGroup": "EC2Logs",
    "LogStream": "logs-{instance_id}",
    "ServiceURL":"https://vpce-ab1c234de56-ab7cdefg.logs.us-east-1.vpce.amazonaws.com"
}
```

## 配置替代代代理方式
<a name="configuring-alternate-proxy"></a>

此功能允许您使用 AWS 开发工具包内置的代理支持而不是 .NET 来配置接收器配置代理服务器。以前，将代理配置为使用代理的唯一方法是使用 .NET 的本机功能，该功能通过代理文件中定义的代理自动路由所有 HTTP/S 请求。

如果您当前使用代理与代理服务器一起使用，则无需更改即可使用此方法。

您可以使用`ProxyHost`和`ProxyPort`属性配置备用代理，如以下示例所示。

```
{
    "Id": "myCloudWatchLogsSink",
    "SinkType": "CloudWatchLogs",
    "LogGroup": "EC2Logs",
    "LogStream": "logs-{instance_id}",
    "Region": "us-west-2",
    "ProxyHost": "myproxy.mydnsdomain.com",
    "ProxyPort": "8080"
}
```

# 管道声明
<a name="pipe-object-declarations"></a>

使用*管道声明*连接源（请参阅[源声明](source-object-declarations.md)）添加到一个接收器（请参阅[接收器声明](sink-object-declarations.md)）在 Amazon Kinesis 代理 Microsoft Windows。管道声明表示为一个 JSON 对象。在启动 Windows 的 Kinesis 代理之后，为指定管道从源收集日志、事件或指标。然后，使用与该管道关联的接收器，将这些数据流式传输到各个 AWS 服务。

下面是示例 管道声明：

```
{
   "Id": "MyAppLogToCloudWatchLogs", 
   "SourceRef": "MyAppLog", 
   "SinkRef": "MyCloudWatchLogsSink" 
}
```

**Topics**
+ [配置管道](#kinesis-agent-pipe-configuration)
+ [为 Windows 度量管道配置 Kinesis 代理](#kinesis-agent-metric-pipe-configuration)

## 配置管道
<a name="kinesis-agent-pipe-configuration"></a>

所有管道声明可包含以下键/值对：

`Id`  
指定管道的名称（必需）。该名称在配置文件中必须唯一。

`Type`  
指定在将日志数据从源传输到接收器时，管道应用的转换类型（如有）。`RegexFilterPipe` 是唯一受支持的值。此值启用对日志记录的基本文本表示进行正则表达式筛选。使用筛选功能可仅将相关日志记录发送到下游数据管道，从而减少传输和存储成本。键/值对是可选的。默认值为不提供转换。

`FilterPattern`  
指定在传输到接收器之前，对源所收集日志记录进行筛选所用的 `RegexFilterPipe` 管道的正则表达式。当正则表达式与记录的基本文本表示匹配时，由 `RegexFilterPipe` 类型管道传输日志记录。所生成的结构化日志记录（例如，在 `DirectorySource` 声明中使用 `ExtractionPattern` 键/值对时），仍可使用 `RegexFilterPipe` 机制来筛选。这是因为此机制在解析之前对原始文本表示进行操作。此键/值对是可选的，但在管道指定 `RegexFilterPipe` 类型时必须提供。  
下面是示例 `RegexFilterPipe` 管道声明：  

```
{
	"Id": "MyAppLog2ToFirehose",
	"Type": "RegexFilterPipe",
	"SourceRef": "MyAppLog2",
	"SinkRef": "MyFirehose",
	"FilterPattern": "^(10|11),.*",
	"IgnoreCase": false,
	"Negate": false
}
```

`SourceRef`  
指定源声明的名称（`Id` 键/值对的值），该声明定义为管道收集日志、事件和指标的源（必需）。

`SinkRef`  
指定接收器声明的名称（`Id` 键/值对的值），该声明定义接收管道的日志、事件和指标的接收器（必需）。

`IgnoreCase`  
可选。接受的值`true`或者`false`。如果设置为`true`，则正则表达式将以不区分大小写的方式匹配记录。

`Negate`  
可选。接受的值`true`或者`false`。如果设置为`true`，管道将转发*不*匹配正则表达式。

有关使用 `RegexFilterPipe` 管道类型的完整配置文件示例，请参阅[使用管道](configuring-kaw-examples.md#configuring-kaw-examples-pipes)。

## 为 Windows 度量管道配置 Kinesis 代理
<a name="kinesis-agent-metric-pipe-configuration"></a>

名为的内置指标源`_KinesisTapMetricsSource`，生成有关适用于 Windows 的 Kinesis 代理的衡量指标。如果有`CloudWatch`接收器声明`Id`的`MyCloudWatchSink`，以下示例管道声明将 Windows 生成指标的 Kinesis 代理传输到该接收器：

```
{
   "Id": "KinesisAgentMetricsToCloudWatch",
   "SourceRef": "_KinesisTapMetricsSource",
   "SinkRef": "MyCloudWatchSink"
}
```

有关 Windows 的 Kinesis 代理内置指标源的更多信息，请参阅[Windows 内置指标源的 Kinesis 代理](source-object-declarations.md#kinesis-agent-builin-metrics-source)。

如果配置文件还流式传输 Windows 性能计数器指标，我们建议您使用单独的管道和接收器，而不是为 Windows 指标和 Windows 性能计数器指标使用相同的接收器。

# 配置自动更新
<a name="update-configuration-options"></a>

使用`appsettings.json`配置文件，以启用 Microsoft Windows 的 Amazon Kinesis 代理的自动更新以及适用于 Windows 的 Kinesis 代理的配置文件。要控制更新行为，请在配置文件中与 `Sources`、`Sinks` 和 `Pipes` 相同的级别指定 `Plugins` 键/值对。

`Plugins` 键/值对指定不在源、接收器和管道类别中时使用的其他一般功能。例如，有一个插件用于更新 Windows 的 Kinesis 代理，还有一个插件用于更新`appsettings.json`配置文件。插件表示为 JSON 对象，并始终具有 `Type` 键/值对。`Type` 确定可以为插件指定的其他键/值对。支持以下插件类型：

`PackageUpdate`  
指定 Windows 的 Kinesis 代理应定期检查程序包版本配置文件。如果程序包版本文件指示应安装不同版本的 Windows Kinesis 代理，则 Windows 的 Kinesis 代理下载该版本并安装。`PackageUpdate` 插件键/值对包括：    
`Type`  
该值必须为字符串 `PackageUpdate`，并且是必需的。  
`Interval`  
指定检查程序包版本文件中是否有任何更改的频率，以分钟为单位并表示为字符串。键/值对是可选的。如果未指定，则默认值为 60 分钟。如果值小于 1，则不进行更新检查。  
`PackageVersion`  
指定程序包版本 JSON 文件的位置。该文件可驻留在文件共享 (`file://`), 一个网站 (`http://`) 或 Amazon S3 (`s3://`)。例如，值变为`s3://mycompany/config/agent-package-version.json`指示 Windows Kinesis 代理应检查`config/agent-package-version.json`中的文件`mycompany`Amazon S3 存储桶。它应根据该文件的内容执行更新。  
的值`PackageVersion`对于 Amazon S3，键/值对对的值区分大小写。
以下是程序包版本文件内容的示例：  

```
{
    "Name": "AWSKinesisTap",
    "Version": "1.0.0.106",
    "PackageUrl": "https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/AWSKinesisTap.{Version}.nupkg"
}
```
这些区域有：`Version`键/值对指定应安装的 Windows Kinesis 代理版本（如果尚未安装）。`PackageUrl` 中引用的 `{Version}` 变量解析您为 `Version` 键/值对指定的值。在本示例中，变量解析为字符串 `1.0.0.106`。提供此变量解析是为了在程序包版本文件中有一个单独的位置可以用于存储特定所需版本。您可以使用多个程序包版本文件来控制部署新版本的 Windows Kinesis 代理的节奏，以在较大规模的部署之前进行验证。要回退 Windows 的 Kinesis 代理的部署，请更改一个或多个程序包版本文件，指定已知可在您环境中使用的 Windows 的较早版本的 Kinesis 代理。  
`PackageVersion` 键/值对的值受变量替换的影响，用于帮助自动选择不同的程序包版本文件。有关变量替换的更多信息，请参阅[配置接收器变量替换](sink-object-declarations.md#configuring-kinesis-agent-windows-sink-variable-substitution)。  
`AccessKey`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的访问密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`SecretKey`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的私有密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`Region`  
指定在从 Amazon S3 访问程序包版本文件时要使用的区域终端节点。键/值对是可选的。  
`ProfileName`  
指定在对 Amazon S3 中程序包版本文件的访问进行身份验证时，要使用的安全配置文件。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。  
`RoleARN`  
指定在跨账户场景下，在 Amazon S3 中程序包版本文件的访问进行身份验证时，要代入的角色。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。
如果未指定 `PackageUpdate` 插件，则不检查程序包版本文件来确定是否需要更新。

`ConfigUpdate`  
指定 Windows Kinesis 代理应定期检查更新的`appsettings.json`配置文件存储在文件共享、网站或 Amazon S3 中。如果存在更新的配置文件，则下载并安装该文件的 Kinesis 代理适用于 Windows。`ConfigUpdate`键/值对包括以下内容：    
`Type`  
该值必须为字符串 `ConfigUpdate`，并且是必需的。  
`Interval`  
指定检查新配置文件的频率，以分钟为单位并表示为字符串。此键/值对可选，如果未指定，则默认为 5 分钟。如果值小于 1，则不检查配置文件更新。  
`Source`  
指定在何处查找已更新的配置文件。该文件可驻留在文件共享 (`file://`), 一个网站 (`http://`) 或 Amazon S3 (`s3://`)。例如，值变为`s3://mycompany/config/appsettings.json`指示 Windows Kinesis 代理应检查`config/appsettings.json`中的文件`mycompany`Amazon S3 存储桶。  
的值`Source`对于 Amazon S3，键/值对的值区分大小写。
`Source` 键/值对的值受变量替换的影响，可用于帮助自动选择不同的配置文件。有关变量替换的更多信息，请参阅[配置接收器变量替换](sink-object-declarations.md#configuring-kinesis-agent-windows-sink-variable-substitution)。  
`Destination`  
指定在本地计算机上存储配置文件的位置。这可以是相对路径、绝对路径或者包含环境变量引用的路径，例如 `%PROGRAMDATA%`。如果是相对路径，则它相对于 Windows 的 Kinesis 代理安装的位置。通常值应为 `.\appsettings.json`。此键/值对是必需的。  
`AccessKey`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的访问密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`SecretKey`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的私有密钥。键/值对是可选的。我们不建议使用此键/值对。有关推荐的替代身份验证过程，请参阅[配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。  
`Region`  
指定在从 Amazon S3 访问配置文件时要使用的区域终端节点。键/值对是可选的。  
`ProfileName`  
指定在对 Amazon S3 中配置文件的访问进行身份验证时，要使用的安全配置文件。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。  
`RoleARN`  
指定在跨账户场景下，在对 Amazon S3 中配置文件的访问进行身份验证时，要代入的角色。有关更多信息，请参阅 [配置身份验证](sink-object-declarations.md#configuring-kinesis-agent-windows-authentication)。键/值对是可选的。
如果未指定 `ConfigUpdate` 插件，则不检查配置文件来确定是否需要进行配置文件更新。

下面是一个示例 `appsettings.json` 配置文件，该文件演示 `PackageUpdate` 和 `ConfigUpdate` 插件的使用。在本示例中，程序包版本文件位于`mycompany`Amazon S3 存储桶名为`config/agent-package-version.json`。大约每 2 个小时检查此文件是否有任何更新。如果在程序包版本文件中指定了不同版本的 Kinesis Agent，则从程序包版本文件中的指定位置安装指定的代理版本。

此外，还有一个`appsettings.json`配置文件存储在`mycompany`Amazon S3 存储桶名为`config/appsettings.json`。大约每 30 分钟将该文件与当前配置文件进行对比。如果发生更改，则从 Amazon S3 下载更新的配置文件并安装到`appsettings.json`配置文件。

```
{
  "Sources": [
    {
      "Id": "ApplicationLogSource",
      "SourceType": "DirectorySource",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "RecordParser": "SingleLine"
    }
  ],
  "Sinks": [
    {
       "Id": "ApplicationLogKinesisFirehoseSink",
       "SinkType": "KinesisFirehose",
       "StreamName": "ApplicationLogFirehoseDeliveryStream",
       "Region": "us-east-1"
    }  
    ],
  "Pipes": [
    {
      "Id": "ApplicationLogSourceToApplicationLogKinesisFirehoseSink",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "ApplicationLogKinesisFirehoseSink"
    }
  ],
  "Plugins": [
    {
      "Type": "PackageUpdate"
      "Interval": "120",
      "PackageVersion": "s3://mycompany/config/agent-package-version.json"
    },
    {
      "Type": "ConfigUpdate",
      "Interval": "30", 
      "Source": "s3://mycompany/config/appsettings.json",
      "Destination": ".\appSettings.json"      
    }
  ]
}
```

# 适用于 Windows 的 Kinesis 代理配置示例
<a name="configuring-kaw-examples"></a>

 这些区域有：`appsettings.json`配置文件是一个 JSON 文档，控制面向 Microsoft Windows 的 Amazon Kinesis 代理如何收集日志、事件和指标。它还控制 Windows Kinesis Agent 如何将数据转换为数据并将其流式传输到各个 AWS 服务。有关配置文件中的源、接收器和管道声明的详细信息，请参阅[源声明](source-object-declarations.md)、[接收器声明](sink-object-declarations.md)和[管道声明](pipe-object-declarations.md)。

以下部分包含多个不同类型场景的配置文件示例。

**Topics**
+ [从不同源流式传输到 Kinesis Data Streams](#configuring-kaw-examples-sources)
+ [从 Windows 应用程序事件日志流式传输到接收器](#configuring-kaw-examples-sinks)
+ [使用管道](#configuring-kaw-examples-pipes)
+ [使用多个源和管道](#configuring-kaw-examples-multiple)

## 从不同源流式传输到 Kinesis Data Streams
<a name="configuring-kaw-examples-sources"></a>

以下示例`appsettings.json`配置文件演示将来自不同源的日志和事件流式传输到 Kinesis Data Streams 指标，以及从 Windows 性能计数器流式传输到 Amazon CloudWatch 指标。

### `DirectorySource`、`SysLog` 记录解析程序
<a name="configuring-kaw-examples-sources-ds-sl"></a>

以下文件将 syslog 格式的日志记录，从所有文件，流式传输到`.log`文件扩展名`C:\LogSource\`目录中的`SyslogKinesisDataStream`us-east-1 区域中的 Kinesis Data Streams。其中将建立一个书签，确保发送来自日志文件的所有数据，即使代理关闭并稍后重启。自定义应用程序可以读取和处理来自 `SyslogKinesisDataStream` 流的记录。

```
{
  "Sources": [
    {
      "Id": "SyslogDirectorySource",
      "SourceType": "DirectorySource",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "RecordParser": "SysLog",
      "TimeZoneKind": "UTC",
      "InitialPosition": "Bookmark"
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "SyslogKinesisDataStream",
      "Region": "us-east-1"
    }
  ],
  "Pipes": [
    {
      "Id": "SyslogDS2KSSink",
      "SourceRef": "SyslogDirectorySource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### `DirectorySource`、`SingleLineJson` 记录解析程序
<a name="configuring-kaw-examples-sources-ds-slj"></a>

以下文件将 JSON 格式的日志记录，从所有文件，流式传输到`.log`文件扩展名`C:\LogSource\`目录中的`JsonKinesisDataStream`us-east-1 区域中的 Kinesis Data Streams。在流式传输之前，`ComputerName` 的键/值对和 `DT` 键添加到各个 JSON 对象中，并带有计算机名称的值以及处理记录的日期和时间。自定义应用程序可以读取和处理来自 `JsonKinesisDataStream` 流的记录。

```
{
  "Sources": [
    {
      "Id": "JsonLogSource",
      "SourceType": "DirectorySource",
      "RecordParser": "SingleLineJson",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "InitialPosition": 0
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "JsonKinesisDataStream",
      "Region": "us-east-1",
      "Format": "json",
      "ObjectDecoration": "ComputerName={ComputerName};DT={timestamp:yyyy-MM-dd HH:mm:ss}"
    }
  ],
  "Pipes": [
    {
      "Id": "JsonLogSourceToKinesisStreamSink",
      "SourceRef": "JsonLogSource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### `ExchangeLogSource`
<a name="configuring-kaw-examples-sources-exchange"></a>

以下文件将 Microsoft Exchange 生成的日志记录，以及存储在`.log`扩展名`C:\temp\ExchangeLog\`目录中的`ExchangeKinesisDataStream`以 JSON 格式显示的 us-east-1 区域中的 Kinesis 力学数据流。虽然 Exchange 日志并非 JSON 格式，Windows Kinesis 代理程序可以解析日志并将其传输到 JSON。在流式传输之前，`ComputerName` 的键/值对和 `DT` 键添加到各个 JSON 对象中，其中包含计算机名称的值以及处理记录的日期和时间。自定义应用程序可以读取和处理来自 `ExchangeKinesisDataStream` 流的记录。

```
{
  "Sources": [
    {
       "Id": "ExchangeSource",
       "SourceType": "ExchangeLogSource",
       "Directory": "C:\\temp\\ExchangeLog\",
       "FileNameFilter": "*.log"
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "ExchangeKinesisDataStream",
      "Region": "us-east-1",
      "Format": "json",
      "ObjectDecoration": "ComputerName={ComputerName};DT={timestamp:yyyy-MM-dd HH:mm:ss}"
    }
  ],
  "Pipes": [
    {
      "Id": "ExchangeSourceToKinesisStreamSink",
      "SourceRef": "ExchangeSource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### `W3SVCLogSource`
<a name="configuring-kaw-examples-sources-iis"></a>

以下文件将存储在这些文件标准位置的 Windows 日志记录，流式传输到`IISKinesisDataStream`us-east-1 区域中的 Kinesis Data Streams。自定义应用程序可以读取和处理来自 `IISKinesisDataStream` 流的记录。IIS 是适用于 Windows 的 Web 服务器。

```
{
  "Sources": [
    {
       "Id": "IISLogSource",
       "SourceType": "W3SVCLogSource",
       "Directory": "C:\\inetpub\\logs\\LogFiles\\W3SVC1",
       "FileNameFilter": "*.log"
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "IISKinesisDataStream",
      "Region": "us-east-1"
    }
  ],
  "Pipes": [
    {
      "Id": "IISLogSourceToKinesisStreamSink",
      "SourceRef": "IISLogSource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### 带有查询的 `WindowsEventLogSource`
<a name="configuring-kaw-examples-sources-wevq"></a>

以下文件将日志事件从 Windows 系统事件日志进行流式处理，这些事件具有`Critical`或者`Error`（小于或等于 2）设置为`SystemKinesisDataStream`以 JSON 格式显示的 us-east-1 区域中的 Kinesis 力学数据流。自定义应用程序可以读取和处理来自 `SystemKinesisDataStream` 流的记录。

```
{
  "Sources": [
    {
         "Id": "SystemLogSource",
         "SourceType": "WindowsEventLogSource",
         "LogName": "System",
         "Query": "*[System/Level<=2]"
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "SystemKinesisDataStream",
      "Region": "us-east-1",
      "Format": "json"
    }
  ],
  "Pipes": [
    {
      "Id": "SLSourceToKSSink",
      "SourceRef": "SystemLogSource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### `WindowsETWEventSource`
<a name="configuring-kaw-examples-sources-etw"></a>

以下文件将 Microsoft 公共语言运行时 (CLR) 异常和安全事件流式传输到`ClrKinesisDataStream`以 JSON 格式显示的 us-east-1 区域中的 Kinesis 力学数据流。自定义应用程序可以读取和处理来自 `ClrKinesisDataStream` 流的记录。

```
{
  "Sources": [
    {
       "Id": "ClrETWEventSource",
       "SourceType": "WindowsETWEventSource",
       "ProviderName": "Microsoft-Windows-DotNETRuntime",
       "TraceLevel": "Verbose",
       "MatchAnyKeyword": "0x00008000, 0x00000400"
    }
  ],
  "Sinks": [
    {
      "Id": "KinesisStreamSink",
      "SinkType": "KinesisStream",
      "StreamName": "ClrKinesisDataStream",
      "Region": "us-east-1",
      "Format": "json"
    }
  ],
  "Pipes": [
    {
      "Id": "ETWSourceToKSSink",
      "SourceRef": "ClrETWEventSource",
      "SinkRef": "KinesisStreamSink"
    }
  ]
}
```

### `WindowsPerformanceCounterSource`
<a name="configuring-kaw-examples-sources-wpc"></a>

以下文件将所有打开文件的性能计数器、重启以来的登录尝试总数、每秒磁盘读取数以及空闲磁盘空间百分比，流式传输到 us-east-1 区域中的 CloudWatch 指标。您可以在 CloudWatch 中绘制这些指标的图形、从图形构建控制面板以及设置在超过阈值时发送通知的警报。

```
{
  "Sources": [
    {
      "Id": "PerformanceCounter",
      "SourceType": "WindowsPerformanceCounterSource",
      "Categories": [
        {
          "Category": "Server",
          "Counters": [
            "Files Open",
            "Logon Total"
          ]
        },
        {
          "Category": "LogicalDisk",
          "Instances": "*",
          "Counters": [
            "% Free Space",
            {
              "Counter": "Disk Reads/sec",
              "Unit": "Count/Second"
            }
          ]
        }
      ],
    }
  ],
  "Sinks": [
    {
      "Namespace": "MyServiceMetrics",
      "Region": "us-east-1",
      "Id": "CloudWatchSink",
      "SinkType": "CloudWatch"
    }
  ],
  "Pipes": [
    {
      "Id": "PerformanceCounterToCloudWatch",
      "SourceRef": "PerformanceCounter",
      "SinkRef": "CloudWatchSink"
    }
  ]
}
```

## 从 Windows 应用程序事件日志流式传输到接收器
<a name="configuring-kaw-examples-sinks"></a>

以下示例`appsettings.json`配置文件演示将 Windows 应用程序事件日志流式传输到亚 Amazon Kinesis 代理中的各个接收器。有关使用 `KinesisStream` 和 `CloudWatch` 接收器类型的示例，请参阅[从不同源流式传输到 Kinesis Data Streams](#configuring-kaw-examples-sources)。

### `KinesisFirehose`
<a name="configuring-kaw-examples-sinks-fh"></a>

以下文件流`Critical`或者`Error`Windows 应用程序将事件记录到`WindowsLogFirehoseDeliveryStream`在 us-east-1 区域中的 Kinesis Data Firehose 传输流。如果与 Kinesis Data Firehose 的连接中断，则首先将事件在内存中排队。接下来，如有必要，这些事件在磁盘上的文件中排队，直至恢复连接。然后，事件将出队并发送，后跟任何新事件。

您可以配置 Kinesis Data Firehose，以根据数据管道要求，将流式传输的数据存储到多个不同类型的存储和分析服务。

```
{
  "Sources": [
    {
         "Id": "ApplicationLogSource",
         "SourceType": "WindowsEventLogSource",
         "LogName": "Application",
         "Query": "*[System/Level<=2]"
    }
  ],
  "Sinks": [
    {
       "Id": "WindowsLogKinesisFirehoseSink",
       "SinkType": "KinesisFirehose",
       "StreamName": "WindowsLogFirehoseDeliveryStream",
       "Region": "us-east-1",
       "QueueType": "file"
    }  
    ],
  "Pipes": [
    {
      "Id": "ALSource2ALKFSink",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "WindowsLogKinesisFirehoseSink"
    }
  ]
}
```

### `CloudWatchLogs`
<a name="configuring-kaw-examples-sinks-cwl"></a>

以下文件流`Critical`或者`Error`Windows 应用程序日志事件 CloudWatch Logs 事件流式传输到`MyServiceApplicationLog-Group`日志组。各个流的名称以 `Stream-` 开头。它以创建流的四位数年份、两位数月份以及两位数日期结尾，所有数字连在一起（例如，`Stream-20180501` 是创建于 2018 年 5 月 1 日的流）。

```
{
  "Sources": [
    {
         "Id": "ApplicationLogSource",
         "SourceType": "WindowsEventLogSource",
         "LogName": "Application",
         "Query": "*[System/Level<=2]"
    }
  ],
  "Sinks": [
    {
      "Id": "CloudWatchLogsSink",
      "SinkType": "CloudWatchLogs",
      "LogGroup": "MyServiceApplicationLog-Group",
      "LogStream": "Stream-{timestamp:yyyyMMdd}",
      "Region": "us-east-1",
      "Format": "json"
    }
  ],
  "Pipes": [
    {
      "Id": "ALSource2CWLSink",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "CloudWatchLogsSink"
    }
  ]
}
```

## 使用管道
<a name="configuring-kaw-examples-pipes"></a>

以下示例 `appsettings.json` 配置文件演示使用与管道相关的功能。

 此示例将日志条目流式传输到`c:\LogSource\`添加到`ApplicationLogFirehoseDeliveryStream`Kinesis Data Firehose 传输流。它仅包含与 `FilterPattern` 键/值对所指定的正则表达式匹配的行。具体来说，只有日志文件中以`10`或者`11`将流式传输到 Kinesis Data Firehose。

```
{
  "Sources": [
    {
      "Id": "ApplicationLogSource",
      "SourceType": "DirectorySource",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "RecordParser": "SingleLine"
    }
  ],
  "Sinks": [
    {
       "Id": "ApplicationLogKinesisFirehoseSink",
       "SinkType": "KinesisFirehose",
       "StreamName": "ApplicationLogFirehoseDeliveryStream",
       "Region": "us-east-1"
    }  
    ],
  "Pipes": [
    {
      "Id": "ALSourceToALKFSink",
      "Type": "RegexFilterPipe",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "ApplicationLogKinesisFirehoseSink",
      "FilterPattern": "^(10|11),.*"
    }
  ]
}
```

## 使用多个源和管道
<a name="configuring-kaw-examples-multiple"></a>

以下示例 `appsettings.json` 配置文件演示使用多个源和管道。

此示例将应用程序、安全和系统 Windows 事件日志流式传输到`EventLogStream`Kinesis Data Firehose 传输流，使用三个源，三个管道，和一个接收器。

```
{
    "Sources": [
		{
		  "Id": "ApplicationLog",
		  "SourceType": "WindowsEventLogSource",
		  "LogName": "Application"
		},
		{
		  "Id": "SecurityLog",
		  "SourceType": "WindowsEventLogSource",
		  "LogName": "Security"
		},
		{
		  "Id": "SystemLog",
		  "SourceType": "WindowsEventLogSource",
		  "LogName": "System"
		}
    ],
    "Sinks": [
		{
		  "Id": "EventLogSink",
		  "SinkType": "KinesisFirehose",
		  "StreamName": "EventLogStream",
		  "Format": "json"
		},
    ],
    "Pipes": [
		{
		  "Id": "ApplicationLogToFirehose",
		  "SourceRef": "ApplicationLog",
		  "SinkRef": "EventLogSink"
		},
		{
		  "Id": "SecurityLogToFirehose",
		  "SourceRef": "SecurityLog",
		  "SinkRef": "EventLogSink"
		},
		{
		  "Id": "SystemLogToFirehose",
		  "SourceRef": "SystemLog",
		  "SinkRef": "EventLogSink"
		}
    ]
}
```

# 配置遥测
<a name="telemetrics-configuration-option"></a>

为实现更好的支持，在默认情况下，适用于微软 Windows 的 Amazon Kinesis 代理收集有关代理的操作并将其发送到 AWS。此信息不包含任何个人可识别信息。它不包含任何您收集或流式传输到 AWS 服务的数据。我们每 60 分钟收集大约 1 到 2 KB 的此指标数据。

您可以选择退出收集和传输这些统计信息。要执行此操作，请将以下的键/值对添加到 `appsettings.json` 配置文件中与源、接收器和管道相同的级别。

```
"Telemetrics": 
    { "off": "true" }
```

例如，以下配置文件配置源、接收器和管道，并禁用遥测：

```
{
  "Sources": [
    {
      "Id": "ApplicationLogSource",
      "SourceType": "DirectorySource",
      "Directory": "C:\\LogSource\\",
      "FileNameFilter": "*.log",
      "RecordParser": "SingleLine"
    }
  ],
  "Sinks": [
    {
       "Id": "ApplicationLogKinesisFirehoseSink",
       "SinkType": "KinesisFirehose",
       "StreamName": "ApplicationLogFirehoseDeliveryStream",
       "Region": "us-east-1"
    }  
    ],
  "Pipes": [
    {
      "Id": "ApplicationLogSourceToApplicationLogKinesisFirehoseSink",
      "SourceRef": "ApplicationLogSource",
      "SinkRef": "ApplicationLogKinesisFirehoseSink"
    }
  ],
  "Telemetrics":
    {
      "off": "true"
    }
}
```

我们在启用了遥测时收集以下指标：

`ClientId`  
安装软件时自动分配的唯一 ID。

`ClientTimestamp`  
收集遥测的日期和时间。

`OSDescription`  
操作系统的描述。

`DotnetFramework`  
当前的 .NET 框架版本。

`MemoryUsage`  
用于 Windows 的 Kinesis 代理使用的内存量 (MB)。

`CPUUsage`  
以小数表示的 Windows CPU 利用率百分比。例如，0.01 表示 1%。

`InstanceId`  
如果适用于 Windows 的 Kinesis 代理正在 Amazon EC2 实例上运行，则会显示 Amazon EC2 实例 ID。

`InstanceType (string)`  
Amazon EC2 实例类型（如果 Windows Kinesis 代理程序在 Amazon EC2 实例上运行）。

此外，我们收集在[适用于 Windows 指标的 Kinesis 代理列表](source-object-declarations.md#kinesis-agent-metric-list)中列出的指标。