目的地宣告 - Microsoft Windows 的 Amazon Kinesis Kinesis 代理程式

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

目的地宣告

「目的地宣告」可指定日誌、事件和指標應該於何處、以任何形式傳送到各種 AWS 服務。下列各節說明了適用於微軟視窗的 Amazon Kinesis 代理程式可用內建目的地類型的組態。由於 Windows 適用的 Kinesis 代理程式是可延伸的,因此您可以新增自訂目的地類型。在每個目的地類型的相關組態宣告中,目的地類型通常需要唯一的鍵/值對。

所有目的地宣告都可以包含下列鍵/值對:

Id

可識別組態檔案中特定目的地的唯一字串 (必要)。

SinkType

此目的地的目的地類型名稱 (必要)。目的地類型可指定此目的地要串流的日誌、事件或指標資料目標。

AccessKey

指定要使用的 AWS 存取金鑰以授權存取與目的地類型相關聯的 AWS 服務。這個鍵/值對是選用的。如需詳細資訊,請參閱 目的地安全組態

SecretKey

指定要使用的 AWS 秘密金鑰以授權存取與目的地類型相關聯的 AWS 服務。這個鍵/值對是選用的。如需詳細資訊,請參閱 目的地安全組態

Region

指定哪個 AWS 區域包含要串流的目標資源。這個鍵/值對是選用的。

ProfileName

指定哪個 AWS 描述檔要用於身份驗證。這個指定鍵/值對是選用的,但若有指定,它會覆寫任何指定的存取金鑰和秘密金鑰。如需詳細資訊,請參閱 目的地安全組態

RoleARN

指定要使用的 IAM 角色以存取與目的地類型相關聯的 AWS 服務。當 Windows 版 Kinesis Agent 在 EC2 執行個體上執行時,此選項非常實用,但不同的角色會比執行個體描述檔參考的角色更適合。例如,跨帳戶角色可用來鎖定與 EC2 執行個體不同之 AWS 帳戶中的資源目標。這個鍵/值對是選用的。

Format

指定要在串流之前套用至日誌和事件資料的序列化類型。有效值為 jsonxml。當您必須進行資料管道的下游分析或需要特定形式的資料時,此選項很有幫助。這個指定鍵/值對是選用的,但若未指定,則會將來源的一般文字從目的地串流到與目的地類型相關聯的 AWS 服務。

TextDecoration

當未指定任何 Format 時,TextDecoration 會指定在串流日誌或事件記錄時應該包含哪些額外的文字。如需詳細資訊,請參閱 設定目的地宣告。這個鍵/值對是選用的。

ObjectDecoration

當指定 Format 時,ObjectDecoration 會指定在序列化和串流之前,日誌或事件記錄中應該包含哪些額外的資料。如需詳細資訊,請參閱 設定目的地宣告。這個鍵/值對是選用的。

BufferInterval

為了盡可能減少對目的地類型相關聯之 AWS 服務的 API 呼叫,Windows 專用 Kinesis Agent 會先緩衝多個日誌、事件或指標記錄之後再串流。這可以節省按 API 呼叫收費的服務成本。BufferInterval 可指定在串流到 AWS 服務之前應該緩衝記錄的最長時間 (秒為單位)。這個指定鍵/值對是選用的,但若有指定,請使用字串代表值。

BufferSize

為了盡可能減少對目的地類型相關聯之 AWS 服務的 API 呼叫,Windows 專用 Kinesis Agent 會先緩衝多個日誌、事件或指標記錄之後再串流。這可以節省按 API 呼叫收費的服務成本。BufferSize 可指定在串流到 AWS 服務之前要緩衝的記錄數量上限。這個指定鍵/值對是選用的,但若有指定,請使用字串代表值。

MaxAttempts

指定在串流持續失敗時要將日誌、事件和指標記錄串流到 AWS 服務的次數上限。這個鍵/值對是選用的。若有指定,請使用字串代表值。預設值為 3

如需使用各種目的地的完整組態檔案範例,請參閱從 Windows 應用程式事件日誌串流到目的地

KinesisStream 目的地組態

所以此KinesisStream目的地類型會將日誌記錄和事件串流到 Kinesis Data Streams 服務。一般而言,資料串流到 Kinesis Data S流的資料會由使用各種 AWS 服務執行的一或多個自訂應用程式來處理。系統會將資料串流到使用 Kinesis Data Streams 設定的具名串流。如需詳細資訊,請參閲 。Amazon Kinesis Data Streams 開發者指南

以下是範例 Kinesis Data Streams 目的地宣告:

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

所有 KinesisStream 目的地宣告都可以提供下列額外的鍵/值對:

SinkType

必須指定,而且值必須為常值字串 KinesisStream

StreamName

指定 Kinesis 資料串流的名稱,以接收從KinesisStream水槽類型 (必要)。串流資料之前,請先在 AWS 管理主控台、AWS CLI 或透過使用 Kinesis Data Streams API 的應用程式來設定串流。

RecordsPerSecond

指定每秒串流到 Kinesis Data Streams 的記錄數目上限。這個鍵/值對是選用的。若有指定,請使用整數代表值。預設值為 1000 筆記錄。

BytesPerSecond

指定每秒串流到 Kinesis Data Streams 的位元組數目上限。這個鍵/值對是選用的。若有指定,請使用整數代表值。預設值為 1 MB。

此目的地類型的預設 BufferInterval 為 1 秒,而預設的 BufferSize 為 500 筆記錄。

KinesisFirehose 目的地組態

所以此KinesisFirehose目的地類型會將日誌記錄和事件串流到 Kinesis Data Firehose 服務。Kinesis Data Firehose 會將串流的資料交付給其他服務以儲存。接著,存放的資料通常會在資料管道後續階段分析。系統會將資料串流到使用 Kinesis Data Firehose 設定的具名交付串流。如需詳細資訊,請參閲 。Amazon Kinesis Data Firehose 開發者指南

以下是範例 Kinesis Data Firehose 目的地宣告:

{ "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 Logs 目的地組態

所以此CloudWatch目的地類型會將指標串流到 CloudWatch Logs 服務。您可以在 AWS 管理主控台中檢視指標。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南

以下是 CloudWatch 目的地宣告的範例:

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

所有 CloudWatch 目的地宣告都可以提供下列額外的鍵/值對:

SinkType

必須指定,而且值必須為常值字串 CloudWatch

Interval

指定 Windows 適用的 Kinesis Agent 向 CloudWatch 服務回報指標的頻率 (以秒為單位)。這個鍵/值對是選用的。若有指定,請使用整數代表值。預設值為 60 秒。如果您想要高解析度的 CloudWatch 指標,請指定 1 秒。

Namespace

指定要回報指標資料的 CloudWatch 命名空間。CloudWatch 命名空間會將指標集分組。這個鍵/值對是選用的。預設值為 KinesisTap

Dimensions

指定 CloudWatch 維度,以用於隔離命名空間內的指標集。好比說,如果要提供每個桌面或伺服器的個別指標資料集,這會很有用。這個指定鍵/值對是選用的,但若有指定,值必須符合以下格式:"key1=value1;key2=value2..."。預設值為 "ComputerName={computername};InstanceId={instance_id}"。此值支援目的地變數替換。如需詳細資訊,請參閱 設定目的地變數替換

MetricsFilter

指定要將哪些指標從內建 Kinesis Agent 串流到 CloudWatch。如需內建 Kinesis Agent Windows 指標來源的詳細資訊,包括此鍵/值對的值語法詳細資訊,請參閱Windows 內建指標來源適用的 Kinesis 代理程式

CloudWatchLogs 目的地組態

所以此CloudWatchLogs目的地類型會將日誌記錄和事件串流到 Amazon CloudWatch Logs。您可以在 AWS 管理主控台中檢視日誌,或透過資料管道的其他階段來處理這些日誌。系統會將資料串流到 CloudWatch 日誌中設定的具名日誌串流。系統會將日誌串流分為具名日誌群組。如需詳細資訊,請參閲 。Amazon CloudWatch 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 日誌群組的名稱,此群組包含由CloudWatchLogs接收器類型。如果指定的日誌群組不存在,Windows 版 Kinesis Agent 會嘗試建立它。

LogStream

指定 CloudWatch Logs 串流的名稱,以接收由CloudWatchLogs接收器類型。此值支援目的地變數替換。如需詳細資訊,請參閱 設定目的地變數替換。如果指定的日誌串流不存在,Windows 版 Kinesis 代理程式會嘗試建立它。

此目的地類型的預設 BufferInterval 為 1 秒,而預設的 BufferSize 為 500 筆記錄。緩衝大小上限為 10,000 筆記錄。

區域FileSystem目的地組態

接收器類型FileSystem會將日誌和事件記錄儲存到本機檔案系統上的檔案,而不是將它們串流到 AWS 服務。FileSystem水槽是有用的測試和診斷。例如,您可以使用此接收器類型來檢查記錄,然後再將記錄傳送至 AWS。

搭配FileSystem接收器,您也可以使用組態參數模擬批次處理、節流和錯誤重試,以模擬實際 AWS 接收器的行為。

來自所有來源的所有記錄連接至FileSystem接收器被保存到指定為FilePath。如果FilePath,則會將記錄儲存到名為的檔案SinkId.txt中的%TEMP%目錄,這通常是C:\Users\UserName\AppData\Local\Temp,其中:SinkId是目的地的地的地的地的地的唯一識別符UserName是作用中使用者的 Windows 使用者名稱。

此接收器類型支援文字裝飾屬性。如需詳細資訊,請參閱 設定目的地宣告

範例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

指定事件的格式是jsonxml。此金鑰值組是選用的,不區分大小寫。如果省略,事件會以純文字寫入檔案。

TextDecoration

僅適用於以純文字撰寫的事件。這個鍵/值對是選用的。

ObjectDecoration

僅適用於其中的事件:Format已設定為json。這個鍵/值對是選用的。

進階使用 — 記錄節流和失敗模擬

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*RequestsPerSecond

在上述範例中給定組態值,最大記錄速率為每秒 1000 筆記錄。

目的地安全組態

設定身份驗證

若要讓 Windows 專用 Kinesis Agent 將日誌、事件和指標串流到 AWS 服務,存取必須經過身份驗證。為 Windows 版的 Kinesis 代理程式提供驗證有幾種方法。您的執行方式取決於的 Windows Kinesis Agent 執行方式以及特定組織的特定安全需求。

  • 如果是在 Amazon EC2 主機上執行的 Kinesis Agent,提供身份驗證最安全與最簡單的方法是建立 IAM 角色並提供足夠權限以存取 AWS 服務所需的操作,並建立參考該角色的 EC2 執行個體描述檔。如需建立執行個體描述檔的資訊,請參閱使用執行個體描述檔。如需要將哪些政策連接至 IAM 角色的資訊,請參閱設定授權

    在建立執行個體描述檔之後,您可以將其與任何使用 Kinesis Agent 的 EC2 執行個體建立關聯。如果執行個體已有相關聯的執行個體描述檔,您即可將適當政策連接至該執行個體描述檔相關聯的角色。

  • 如果是 Windows 的 Kinesis Agent 在某個帳戶的 EC2 主機上執行,但目的地的目標資源位於不同的帳戶,您可以建立一個跨帳戶存取的 IAM 角色。如需詳細資訊,請參閱「」教學課程:使用 IAM 角色將存取權委派給不同 AWS 帳戶。在建立跨帳戶角色之後,請為跨帳戶角色指定 Amazon Resource Name (ARN) 做為RoleARN目的地宣告中的地金鑰值對。即會 Kinesis 存取與該目的地類型相關聯的 AWS 資源時,嘗試擔任指定的跨帳戶角色。

  • 如果是在 Amazon EC2 之外執行的 Kinesis Agent,例如現場部署),您可以使用幾個選項:

    • 如果可以將現場部署伺服器或桌面機器註冊為 Amazon EC2 Systems Manager 受管的執行個體,請使用下列程序來設定身份驗證:

      1. 使用在混合式環境中設定 AWS Systems Manager 所述的程序,以建立服務角色、建立受管執行個體的啟用,並安裝 SSM 代理程式。

      2. 將適當的政策連接至服務角色,以讓 Windows 版 Kinesis Agent 存取從所設目的地串流資料所需的資源。如需要將哪些政策連接至 IAM 角色的資訊,請參閱設定授權

      3. 使用設定ProfileRefreshingAWSCredentialProvider重新整理 AWS 登入資料來重新整理 AWS 登入資料。

      這是針對非 EC2 執行個體的建議方法,因為 SSM 和 AWS 會安全地管理登入資料。

    • 如果可接受以特定使用者身分執行的 AWSKinesis Agent 服務,而非預設的系統帳戶,請使用下列程序:

      1. 在要使用 AWS 服務的 AWS 帳戶中,建立 IAM 使用者。在建立過程中,擷取此使用者的存取金鑰和秘密金鑰。您在此程序的後續步驟中將需要這些資訊。

      2. 將政策連接至 IAM 使用者,以授權存取必要服務的必要作業。如需要將哪些政策連接至 IAM 使用者的資訊,請參閱設定授權

      3. 變更每個桌面或伺服器的 AWSKinesisTap 服務,使其以特定使用者身分執行而非預設的系統帳戶。

      4. 使用稍早記錄的存取金鑰和秘密金鑰,在軟體開發套件存放區中建立描述檔。如需詳細資訊,請參閱設定 AWS 登入資料

      5. 更新 %PROGRAMFILES%\Amazon\AWSKinesisTap 目錄中的 AWSKinesisTap.exe.config 檔案,以指定您在先前步驟建立的描述檔名稱。如需詳細資訊,請參閱設定 AWS 登入資料

      針對不得為受管執行個體的非 EC2 主機,這是建議的方法,因為系統會為特定主機和特定使用者加密登入資料。

    • 如果必須以預設系統帳戶執行適用於 Windows 的 Kinesis Agent 服務,您必須使用共享登入資料檔案。這是因為系統帳戶沒有 Windows 使用者描述檔,無法啟用軟體開發套件存放區。系統不會加密共享登入資料檔案,因此我們不建議此做法。如需如何使用共用組態檔的資訊,請參閱設定 AWS 登入資料中的適用於 .NET 的 AWS 開發套件。如果您使用此方法,建議您使用 NTFS 加密,並限制共享組態檔案的檔案存取。管理平台應該輪換金鑰,而共享組態檔案必須在金鑰輪換時更新。

雖然您可以直接在目的地宣告中提供存取金鑰和秘密金鑰,但不建議此方法,因為系統不會加密宣告。

設定授權

將適當的政策連接至 IAM 使用者或角色,以便 Windows 版 Kinesis Agent 用來串流資料到 AWS 服務:

Kinesis Data Streams

{ "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 資源的存取中「Kinesis Data Streams 的 Amazon Resource Name (ARN)」。

Kinesis Data Firehose

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

若要限制特定區域、帳戶或交付串流名稱的授權,請將 ARN 中的適當星號取代為特定值。如需詳細資訊,請參閱「」控制 Amazon Kinesis Data Firehose 的存取中的Amazon Kinesis Data Firehose 開發者指南

CloudWatch

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

如需詳細資訊,請參閱「」管理 CloudWatch 資源存取許可概觀中的Amazon CloudWatch Logs 使用者指南

含現有日誌群組和日誌串流的 CloudWatch 日誌

{ "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 日誌資源存取許可概觀中的Amazon CloudWatch Logs 使用者指南

CloudWatch Logs 與 Windows 專用 Kinesis 代理程式的額外許可,以建立日誌群組和日誌串流

{ "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 日誌資源存取許可概觀中的Amazon CloudWatch Logs 使用者指南

EC2 標籤變數擴展所需的許可

使用變數擴展與 ec2tag 變數字首時,必須具備 ec2:Describe* 許可。

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

您可以將多個陳述式合併成單一政策,只要該政策中每個陳述式的 Sid 是唯一的即可。如需建立政策的詳細資訊,請參閱建立 IAM 政策中的IAM 使用者指南

設定ProfileRefreshingAWSCredentialProvider重新整理 AWS 登入資料

如果您針對混合環境使用 AWS Systems Manager 來管理 AWS 登入資料,Systems Manager 會在c:\Windows\System32\config\systemprofile\.aws\credentials。如需混合式環境的 Systems Manager 的詳細資訊,請參閱為混合環境設定 AWS Systems Manager中的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 為預設值。

設定目的地宣告

您可選擇在目的地宣告中包含鍵/值對,以指定其他要串流到各種 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。系統會將產生的 JSON 串流到與目的地類型相關聯的 AWS 服務,包含下列鍵/值對與來源的原始資料:

{ ComputerName: "MyComputer2", DT: "2017-10-17 21:09:04" }

如需使用 ObjectDecoration 的範例,請參閱 教學課程:使用適用於視窗的 Kinesis 代理程式將 JSON 日誌檔串流到 Amazon S3

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" }

如需有關制定運算式的詳細資訊,請參閱撰寫運算式的秘訣。大部分的ObjectDecoration聲明應該使用新語法工作,但時間戳變量除外。A{timestamp:yyyyMMdd}欄位ObjectDecoration會將其表示為{format(_timestamp,'yyyyMMdd')}中的ObjectDecorationEx

TextDecorationEx

指定一個表示式,它允許更靈活的資料萃取和格式相比,TextDecoration,如下列範例所示。

"TextDecorationEx": "Message '{lower(_record)}' at {format(_timestamp, 'yyyy-MM-dd')}"

您可以使用TextDecorationEx來組成 JSON 對象。使用 '@ {'以逸出開放的大括號,如下列範例所示。

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

如果連線到目的地之來源的來源類型為 DirectorySource,則目的地可以使用下列三個額外變數:

_FilePath

日誌檔案的完整路徑。

_FileName

檔案的檔案名稱和副檔名。

_Position

整數,其表示記錄在日誌檔中的位置。

當您使用的來源會從連線到目的地 (其可將所有記錄串流到單一串流) 的多個檔案收集日誌記錄時,這些變數非常有用。將這些變數插入串流記錄時,可啟用資料管道的下游分析,以按檔案和記錄在每個檔案中的位置來排序記錄。

撰寫運算式的秘訣

運算式可為下列任何一項:

  • 變數表示式。

  • 常量表達式,例如'hello'11.21nulltruefalse

  • 呼叫函數的叫用表達式,如下列範例所示。

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

特殊字元

需要兩個反斜杠來轉義特殊字符。

Nesting

函數呼叫可以巢狀,如下列範例所示。

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

Variables

有三種變數:局部、中繼和全域。

  • 局部變數開頭為$例如$message。它們用於解析事件對象的屬性,如果事件是字典的條目,或者如果事件是 JSON 對象的屬性。如果局部變量包含空格或特殊字符,請使用帶引號的局部變量,如$'date created'

  • 中繼變數以下劃線開頭(_),並用於解析事件的元數據。所有事件類型都支援下列中繼變數。

    _timestamp

    事件的時間戳記。

    _record

    事件的原始文字表示。

    記錄事件支援下列其他中繼變數。

    _filepath

    _filename

    _position

    _linenumber

  • 全域變數解析環境變量,EC2 實例元數據或 EC2Tag。為獲得更高的效能,我們建議您使用字首來限制搜尋範圍,例如{env:ComputerName}{ec2:InstanceId},以及{ec2tag:Name}

內建函數

Windows 專用的 Kinesis 代理程式支援以下內建功能。如果任何參數是NULL並且該函數不是為了處理NULL,一個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)

設定目的地變數替換

KinesisStreamKinesisFirehoseCloudWatchLogs 目的地宣告必須使用 LogStreamStreamName 鍵/值對。這些鍵/值可包含由 Windows 版 Kinesis Agent 自動解析的變數參考。適用於CloudWatchLogsLogGroup鍵/值對也必須使用,並可包含由適用於 Windows 的 Kinesis Agent 自動解析的變數參考。您可以使用範本 {prefix:variablename} 來指定變數,其中 prefix: 是選用的。支援的字首如下:

  • env— 變數參考會解析為相同名稱的環境變數值。

  • ec2— 變數參考會解析為相同名稱的 EC2 實體中繼資料。

  • ec2tag— 變數參考會解析為相同名稱的 EC2 執行個體標籤值。若要存取執行個體標籤,則必須具備 ec2:Describe* 許可。如需詳細資訊,請參閱 EC2 標籤變數擴展所需的許可

如果未指定字首,且環境變數含有 variablename 的相同名稱,則變數參考會解析為環境變數的值。否則,如果 variablenameinstance_idhostname,則變數參考會解析為相同名稱的 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 目的地類型可根據產生的名稱視需要自動建立新的日誌串流。您無法針對其他目的地類型執行上述動作,因為它們需要串流名稱以外的其他組態。

文字和物件裝飾中也會發生特殊的變數替換。如需詳細資訊,請參閱 設定目的地宣告

設定目的地佇列

如果記錄因為暫時性連線問題無法串流到與下列目的地類型相關聯的 AWS 服務,KinesisStreamKinesisFirehoseCloudWatchLogs 目的地宣告可以選擇啟用記錄佇列。若要啟用佇列並在連線恢復時自動重試串流,請在目的地宣告中使用下列鍵/值對:

QueueType

指定要使用的佇列機制。唯一支援的值是 file,這表示記錄應該排入檔案佇列。若要啟用 Windows 版 Kinesis 代理程式的佇列功能,這個索引鍵/值組是必要的。如果未指定,則預設行為是僅會排入記憶體佇列,並在達到記憶體佇列限制時無法串流。

QueuePath

指定資料夾的路徑,該資料夾包含佇列記錄的檔案。這個鍵/值對是選用的。預設值是 %PROGRAMDATA%\KinesisTap\Queue\SinkId,其中 SinkId 是識別符 (您已指派為目的地宣告的 Id 值)。

QueueMaxBatches

將記錄排入串流佇列時,限制 Windows 專用 Kinesis Agent 可以使用的空間總數限制。空間量限制為此鍵/值對的值乘以每批次的最大位元組數。KinesisStreamKinesisFirehoseCloudWatchLogs 目的地類型的每批次最大位元組分別為 5 MB、4 MB 和 1 MB。當達到此限制時,任何串流失敗都無法排入佇列,且會回報為無法復原的失敗。這個鍵/值對是選用的。預設值為 10,000 個批次。

設定目的地的代理

若要針對所有存取 AWS 服務的 Kinesis 代理程式設定代理,請編輯位於%Program Files%\Amazon\KinesisTap\AWSKinesisTap.exe.config。如需說明,請參閱proxy中的章節適用於 .NET 的 AWS 開發套件組態檔案參考中的適用於 .NET 開發人員的 AWS 開發套件

在更多接收屬性中配置解析變數

下列範例顯示使用目的地組態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 區域端點

此功能只有在您在 Amazon EC2 上使用 KinesStap 並使用RoleARN屬性,以擔任外部 IAM 角色,以使用目的地 AWS 服務進行身份驗證。

透過設定UseSTSRegionalEndpointstrue,您可以指定代理程式使用區域端點 (例如https://sts.us-east-1.amazonaws.com) 而不是全域端點 (例如https://sts.amazonaws.com。使用區域 STS 端點可減少作業的往返延遲,並限制全域端點服務失敗的影響。

為 AWS 接收器設定 VPC 端點

您可以在接收器組態中指定 VPC 端點CloudWatchLogsCloudWatchKinesisStreams,以及KinesisFirehose接收器類型。VPC 端點可讓您不需要網際網路閘道、NAT 裝置、VPN 連線或 AWS Direct Connect 連線,即可將 VPC 私密連線至支援的 AWS 服務以及採用 AWS PrivateLink 技術的 VPC 端點服務。VPC 中的執行個體不需要公有 IP 地址,即可與服務中的資源通訊。VPC 與另一個服務之間的流量都會保持在 Amazon 網路的範圍內。如需詳細資訊,請參閱「」VPC 端點中的Amazon VPC 使用者指南

您可 VPC 使用ServiceURL屬性如下列範例所示,CloudWatchLogs接收器組態。將的值設定為ServiceURL設定為顯示在VPC 端點詳細資訊索 VPC 標籤。

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

設定代理伺服器的替代方式

此功能可讓您使用 AWS 開發套件 (而非 .NET) 內建的代理支援,在接收器組態中設定代理伺服器。以前,將代理程式設定為使用 Proxy 的唯一方法是使用 .NET 的原生功能,該功能會自動透過 Proxy 檔案中定義的 Proxy 路由所有 HTTP/S 要求。

如果您目前正在將代理程式與 Proxy 伺服器搭配使用,則不需要變更即可使用此方法。

您可以使用ProxyHostProxyPort內容以設定替代 Proxy,如下列範例所示。

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