다음을 통해 공유


Azure Monitor의 DCR(데이터 수집 규칙) 샘플

이 문서에는 Azure Monitor의 일반적인 데이터 수집 시나리오에 대한 샘플 DCR(데이터 수집 규칙) 이 포함되어 있습니다. 사용자 환경에 필요한 대로 이러한 DCR 정의를 수정하고 데이터 수집 규칙 만들기 또는 편집의 지침을 사용하여 DCR을 만들 수 있습니다. 이러한 샘플의 기본 전략을 사용하고 결합하여 다른 시나리오에 대한 DCR을 만들 수도 있습니다.

이러한 샘플에는 Azure Monitor의 데이터 수집 규칙 구조에 설명된 대로 DCR 구조에 대한 지식이 필요합니다. DCR 구조에 대한 자세한 지식 없이 Azure Portal을 사용하여 몇 가지를 구성할 수 있습니다. DCR 정의 자체를 사용하여 고급 구성을 수행하거나 DCR 생성을 자동화해야 하는 경우 이러한 샘플을 사용합니다.

이러한 각 샘플은 단일 DCR에서 서로 다른 형식의 여러 데이터 원본을 결합할 수 있지만 특정 데이터 원본에 중점을 둡니다. 데이터를 적절한 대상으로 보낼 각 데이터에 대한 데이터 흐름을 포함합니다. 단일 DCR에서 여러 데이터 원본을 결합하거나 각 데이터 원본에 대해 별도의 DCR을 만드는 것 사이에는 기능적 차이가 없습니다. 선택 항목은 데이터 수집을 관리하고 모니터링하기 위한 요구 사항에 따라 달라집니다.

참고 항목

이 문서에 나와 있는 이러한 샘플은 DCR을 만드는 데 필요한 원본 JSON을 제공합니다. 만든 후 DCR은 Azure Monitor의 데이터 수집 규칙 구조에 설명된 대로 추가 속성을 갖습니다.

Azure Monitor 에이전트용 DCR

Azure Monitor 에이전트가상 머신, 가상 머신 확장 집합 및 Kubernetes 클러스터에서 실행됩니다. VM 인사이트 및 컨테이너 인사이트를 지원하고 Azure Monitor 에이전트 데이터 수집에 설명된 VM에 대한 다양한 데이터 수집 시나리오를 지원합니다.

다음 샘플에서는 Azure Monitor 에이전트를 사용하여 다양한 종류의 데이터를 수집하기 위한 DCR을 보여 줍니다.

Windows 이벤트

Windows 이벤트용 DCR은 들어오는 스트림과 windowsEventLogs 함께 데이터 원본을 Microsoft-Event 사용합니다. 이 스트림의 스키마는 알려져 있으므로 섹션에서 정의 dataSources 할 필요가 없습니다. 수집할 이벤트는 속성에 xPathQueries 지정됩니다. 수집하려는 특정 데이터를 필터링하기 위해 XPath를 사용하는 방법에 대한 자세한 내용은 Azure Monitor 에이전트를 사용하여 Windows 이벤트 수집을 참조하세요. 시작하려면 해당 문서의 지침을 사용하여 Azure Portal을 사용하여 DCR을 만든 다음 DCR 정의지침을 사용하여 JSON을 검사할 수 있습니다.

계산 열의 속성에 변환을 dataFlows 추가하고 데이터를 추가로 필터링할 수 있지만 XPaths를 사용하여 에이전트의 데이터를 최대한 필터링하여 효율성을 높이고 잠재적인 수집 요금을 방지해야 합니다.

다음 샘플 DCR은 다음 작업을 수행합니다.

  • 오류 수준 경고, 오류 또는 위험으로 Windows 애플리케이션 및 시스템 이벤트를 수집합니다.
  • 작업 영역의 이벤트 테이블에 데이터를 보냅니다.
  • 들어오는 데이터를 변경하지 않는 간단한 변환 source 을 사용합니다.
{
    "location": "eastus",
    "properties": {
      "dataSources": {
        "windowsEventLogs": [
          {
            "name": "eventLogsDataSource",
            "streams": [
              "Microsoft-Event"
            ],
            "xPathQueries": [
              "System!*[System[(Level = 1 or Level = 2 or Level = 3)]]",
              "Application!*[System[(Level = 1 or Level = 2 or Level = 3)]]"
            ]
          }
        ]
    },
      "destinations": {
        "logAnalytics": [
          {
            "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
            "name": "centralWorkspace"
          }
        ]
      },
      "dataFlows": [
        {
          "streams": [
            "Microsoft-Event"
          ],
          "destinations": [
            "centralWorkspace"
          ],
            "transformKql": "source",
            "outputStream": "Microsoft-Event"
        }
      ]
    }
  }

Syslog 이벤트

Syslog 이벤트에 대한 DCR은 들어오는 Microsoft-Syslog 스트림과 syslog 함께 데이터 원본을 사용합니다. 이 스트림의 스키마는 알려져 있으므로 섹션에서 정의 dataSources 할 필요가 없습니다. 수집할 이벤트는 및 logLevels 속성에 facilityNames 지정됩니다. 자세한 내용은 Azure Monitor 에이전트를 사용하여 Syslog 이벤트 수집을 참조하세요. 시작하려면 해당 문서의 지침을 사용하여 Azure Portal을 사용하여 DCR을 만든 다음 DCR 정의지침을 사용하여 JSON을 검사할 수 있습니다.

추가 기능 및 추가 필터링 데이터를 위해 속성에 변환 dataFlows 을 추가할 수 있지만 잠재적인 수집 요금을 방지하기 위해 효율성을 위해 가능한 한 많이 사용하고 facilityNames logLevels 필터링해야 합니다.

다음 샘플 DCR은 다음 작업을 수행합니다.

  • 시설에서 모든 이벤트를 cron 수집합니다.
  • Warning 기능에서 syslog daemon 이벤트를 수집하고 더 많이 수집합니다.
    • 작업 영역의 Syslog 테이블에 데이터를 보냅니다.
    • 들어오는 데이터를 변경하지 않는 간단한 변환 source 을 사용합니다.
{
    "location": "eastus",
    "properties": {
      "dataSources": {
        "syslog": [
          {
            "name": "cronSyslog",
            "streams": [
              "Microsoft-Syslog"
            ],
            "facilityNames": [
              "cron"
            ],
            "logLevels": [
              "Debug",
              "Info",
              "Notice",
              "Warning",
              "Error",
              "Critical",
              "Alert",
              "Emergency"
            ]
          },
          {
            "name": "syslogBase",
            "streams": [
              "Microsoft-Syslog"
            ],
            "facilityNames": [
              "daemon",              
              "syslog"
            ],
            "logLevels": [
              "Warning",
              "Error",
              "Critical",
              "Alert",
              "Emergency"           
            ]
          }
        ]
      },
      "destinations": {
        "logAnalytics": [
          {
            "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
            "name": "centralWorkspace"
          }
        ]
      },
      "dataFlows": [
        {
          "streams": [
            "Microsoft-Syslog"
          ],
          "destinations": [
            "centralWorkspace"
          ],
            "transformKql": "source",
            "outputStream": "Microsoft-Syslog"
        }
      ]
    }
  }

성능 카운터

성능 데이터에 대한 DCR은 performanceCounters 들어오는 Microsoft-InsightsMetrics 스트림 및 Microsoft-Perf 스트림과 함께 데이터 원본을 사용합니다. Microsoft-InsightsMetrics 는 데이터를 Azure Monitor 메트릭으로 보내는 데 사용되며 Log Microsoft-Perf Analytics 작업 영역으로 데이터를 보내는 데 사용됩니다. 두 대상 모두에 성능 데이터를 보내는 경우 DCR에 두 데이터 원본을 모두 포함할 수 있습니다. 이러한 스트림의 스키마는 알려져 있으므로 섹션에서 정의 dataSources 할 필요가 없습니다.

수집할 성능 카운터는 속성에 counterSpecifiers 지정됩니다. 자세한 내용은 Azure Monitor 에이전트를 사용하여 성능 카운터 수집을 참조하세요. 시작하려면 해당 문서의 지침을 사용하여 Azure Portal을 사용하여 DCR을 만든 다음 DCR 정의지침을 사용하여 JSON을 검사할 수 있습니다.

추가 기능 및 추가 필터링 데이터를 위해 속성에 Microsoft-Perf 변환 dataFlows 을 추가할 수 있지만 잠재적인 수집 요금을 방지하기 위해 효율성을 위해 필요한 counterSpecifiers 카운터만 선택해야 합니다.

다음 샘플 DCR은 다음 작업을 수행합니다.

  • 60초마다 성능 카운터 집합을 수집하고 30초마다 다른 집합을 수집합니다.
  • Azure Monitor 메트릭 및 Log Analytics 작업 영역으로 데이터를 보냅니다.
  • 들어오는 데이터를 변경하지 않는 간단한 변환 source 을 사용합니다.
{
    "location": "eastus",
    "properties": {
      "dataSources": {
        "performanceCounters": [
          {
            "name": "perfCounterDataSource60",
            "streams": [
              "Microsoft-Perf",
              "Microsoft-InsightsMetrics"
            ],
            "samplingFrequencyInSeconds": 60,
            "counterSpecifiers": [
              "\\Processor(_Total)\\% Processor Time",
              "\\Memory\\Committed Bytes",
              "\\LogicalDisk(_Total)\\Free Megabytes",
              "\\PhysicalDisk(_Total)\\Avg. Disk Queue Length"
            ]
          },
          {
            "name": "perfCounterDataSource30",
            "streams": [
              "Microsoft-Perf"
            ],
            "samplingFrequencyInSeconds": 30,
            "counterSpecifiers": [
              "\\Process(_Total)\\Thread Count"
            ]
          }
        ]
      },
      "destinations": {
        "logAnalytics": [
          {
            "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
            "name": "centralWorkspace"
          }
        ],
        "azureMonitorMetrics": 
        {
            "name": "azureMonitorMetrics-default"
        }
      },
      "dataFlows": [
        {
            "streams": [
                "Microsoft-Perf"
            ],
            "destinations": [
                "centralWorkspace"
            ],
            "transformKql": "source",
            "outputStream": "Microsoft-Perf"
        },
        {
            "streams": [
                "Microsoft-Perf"
            ],
            "destinations": [
                "azureMonitorMetrics-default"
            ],
            "outputStream": "Microsoft-InsightsMetrics"
        }
      ]
    }
}

텍스트 로그

텍스트 로그의 DCR에는 logfiles 에이전트에서 수집해야 하는 로그 파일에 대한 세부 정보가 있는 데이터 원본이 있습니다. 여기에는 들어오는 데이터의 열로 streamDeclarations 정의해야 하는 스트림의 이름이 포함됩니다. 이 목록은 현재 Azure Monitor 에이전트를 사용하여 텍스트 파일에서 로그 수집에 설명된 대로 설정된 목록입니다.

수집하지 않으려는 레코드를 필터링하고 대상 테이블의 스키마와 일치하도록 데이터의 서식을 지정하는 변환 dataFlows 을 속성에 추가합니다. 일반적인 시나리오는 구분된 로그 파일에 설명 된 대로 구분된 로그 파일을 여러 열로 구문 분석하는 것입니다.

다음 샘플 DCR은 다음 작업을 수행합니다.

  • 에이전트 컴퓨터의 폴더에 확장 .txt c:\logs 이 있는 모든 파일에서 항목을 수집합니다.
  • 변환을 사용하여 들어오는 데이터를 쉼표(,) 구분 기호에 따라 열로 분할합니다. 이 변환은 로그 파일의 형식에 따라 지정되며 다른 형식의 로그 파일에 맞게 조정해야 합니다.
  • 수집된 로그를 .라는 MyTable_CL사용자 지정 테이블로 보냅니다. 이 테이블은 이미 존재해야 하며 변환에 의해 출력되는 열이 있어야 합니다.
  • 들어오는 스트림에 설명된 FilePath Computer 대로 텍스트 로그 및 텍스트 로그를 수집합니다. 이러한 열은 대상 테이블에도 있어야 합니다.
{
    "location": "eastus",
    "properties": {
        "dataCollectionEndpointId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Insights/dataCollectionEndpoints/my-dce",
        "streamDeclarations": {
            "Custom-MyLogFileFormat": {
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime"
                    },
                    {
                        "name": "RawData",
                        "type": "string"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "Computer",
                        "type": "string"
                    }
                ]
            }
        },
        "dataSources": {
            "logFiles": [
                {
                    "streams": [
                        "Custom-MyLogFileFormat"
                    ],
                    "filePatterns": [
                        "C:\\logs\\*.txt"
                    ],
                    "format": "text",
                    "settings": {
                        "text": {
                            "recordStartTimestampFormat": "ISO 8601"
                        }
                    },
                    "name": "myLogFileFormat-Windows"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
                    "name": "MyDestination"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Custom-MyLogFileFormat"
                ],
                "destinations": [
                    "MyDestination"
                ],
                "transformKql": "source | project d = split(RawData,\",\") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])",
                "outputStream": "Custom-MyTable_CL"
            }
        ]
    }
}

Json 로그

Json 로그용 DCR에는 logfiles 에이전트에서 수집해야 하는 로그 파일에 대한 세부 정보가 있는 데이터 원본이 있습니다. 여기에는 들어오는 데이터의 열로 streamDeclarations 정의해야 하는 스트림의 이름이 포함됩니다. 자세한 내용은 Azure Monitor 에이전트를 사용하여 JSON 파일에서 로그 수집을 참조하세요.

수집하지 않으려는 레코드를 필터링하고 대상 테이블의 스키마와 일치하도록 데이터의 서식을 지정하는 변환 dataFlows 을 속성에 추가합니다.

다음 샘플 DCR은 다음 작업을 수행합니다.

  • 에이전트 컴퓨터의 폴더에 확장 .json c:\logs 이 있는 모든 파일에서 항목을 수집합니다. 파일의 형식은 json이어야 하며 스트림 선언에 열이 나열되어 있어야 합니다.
  • 수집된 로그를 .라는 MyTable_CL사용자 지정 테이블로 보냅니다. 이 테이블은 이미 존재해야 하며 들어오는 스트림과 동일한 열을 가지고 있어야 합니다. 열이 일치하지 않는 경우 속성의 변환 transformKql 을 수정하여 대상 테이블의 데이터 형식을 지정해야 합니다.
{
    "location": "eastus",
    "properties": {
        "dataCollectionEndpointId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.Insights/dataCollectionEndpoints/my-dce",
        "streamDeclarations": {
            "Custom-Json-stream": {
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "Code",
                        "type": "int"
                    },
                    {
                        "name": "Module",
                        "type": "string"
                    },
                    {
                        "name": "Message",
                        "type": "string"
                    }
                ]
            }
        },
        "dataSources": {
            "logFiles": [
                {
                    "streams": [
                        "Custom-Json-stream"
                    ],
                    "filePatterns": [
                        "C:\\logs\\*.json"
                    ],
                    "format": "json",
                    "name": "MyJsonFile"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
                    "name": "MyDestination"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Custom-Json-stream"
                ],
                "destinations": [
                    "MyDestination"
                ],
                "transformKql": "source",
                "outputStream": "Custom-MyTable_CL"
            }
        ]
    }
}

Event Hubs 또는 Storage로 데이터 보내기

이벤트 허브 또는 스토리지 계정에 데이터를 보내는 DCR은 AMA(Azure Monitor 에이전트)를 사용하여 데이터를 수집하는 다른 DCR과 동일한 데이터 원본을 사용하지만 다음 대상 중 하나 이상을 포함합니다. 자세한 내용은 Event Hubs 및 Storage로 데이터 보내기(미리 보기)를 참조하세요.

  • eventHubsDirect
  • storageBlobsDirect
  • storageTablesDirect

참고 항목

이벤트 허브 또는 스토리지 계정에 데이터를 보내는 DCR에는 "kind": "AgentDirectToStore"

다음 샘플 DCR은 다음 작업을 수행합니다.

  • AMA(Azure Monitor 에이전트)를 사용하여 Windows 머신에서 성능 카운터 및 Windows 이벤트를 수집합니다.
  • 이벤트 허브, Blob Storage 및 테이블 스토리지에 데이터를 보냅니다.
{
    "location": "eastus",
    "kind": "AgentDirectToStore",
    "properties": {
        "dataSources": {
            "performanceCounters": [
                {
                "streams": [
                    "Microsoft-Perf"
                ],
                "samplingFrequencyInSeconds": 10,
                "counterSpecifiers": [
                    "\\Process(_Total)\\Working Set - Private",
                    "\\Memory\\% Committed Bytes In Use",
                    "\\LogicalDisk(_Total)\\% Free Space",
                    "\\Network Interface(*)\\Bytes Total/sec"
                ],
                "name": "perfCounterDataSource"
                }
            ],
            "windowsEventLogs": [
                {
                "streams": [
                    "Microsoft-Event"
                ],
                "xPathQueries": [
                    "Application!*[System[(Level=2)]]",
                    "System!*[System[(Level=2)]]"
                ],
                "name": "eventLogsDataSource"
                }
            ]
        },
        "destinations": {
            "eventHubsDirect": [
                {
                "eventHubResourceId": "/subscriptions/71b36fb6-4fe4-4664-9a7b-245dc62f2930/resourceGroups/my-resource-group/providers/Microsoft.EventHub/namespaces/my-eventhub-namespace/eventhubs/my-eventhub",
                "name": "myEh"
                }
            ],
            "storageBlobsDirect": [
                {
                "storageAccountResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
                "containerName": "myperfblob",
                "name": "PerfBlob"
                },
                {
                "storageAccountResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
                "containerName": "myeventblob",
                "name": "EventBlob"
                }
            ],
            "storageTablesDirect": [
                {
                "storageAccountResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
                "containerName": "myperftable",
                "name": "PerfTable"
                },
                {
                "storageAccountResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
                "containerName": "mymyeventtable",
                "name": "EventTable"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                "Microsoft-Perf"
                ],
                "destinations": [
                "myEh",
                "PerfBlob",
                "PerfTable"
                ]
            },
            {
                "streams": [
                "Microsoft-Event"
                ],
                "destinations": [
                "myEh",
                "EventBlob",
                "EventTable"
                ]
            },
        ]
    }
}

로그 수집 API

로그 수집 API에 대한 DCR은 DCR 정의 섹션에서 들어오는 스트림 streamDeclarations 의 스키마를 정의해야 합니다. 들어오는 데이터는 이 정의의 열과 일치하는 스키마를 사용하여 JSON으로 서식을 지정해야 합니다. 이 스키마가 대상 테이블의 스키마와 일치하는 경우에는 변환이 필요하지 않습니다. 스키마가 일치하지 않는 경우 속성에 변환 dataFlows 을 추가하여 데이터 형식을 지정해야 합니다. 자세한 내용은 Azure Monitor의 로그 수집 API를 참조하세요.

아래 샘플 DCR에는 다음과 같은 세부 정보가 있습니다.

  • 라는 작업 영역에서 my-workspace호출 MyTable_CL 된 테이블로 데이터를 보냅니다. 이 DCR을 설치하기 전에 다음 열을 사용하여 테이블을 만들어야 합니다.
    • TimeGenerated
    • 컴퓨터
    • AdditionalContext
    • ExtendedColumn(변환에 정의됨)
  • 들어오는 데이터에 변환을 적용하여 대상 테이블의 데이터 형식을 지정합니다.

Important

DCR을 dataCollectionEndpointId 만들 때 자동으로 생성되므로 이 샘플에는 속성이 포함되지 않습니다. 애플리케이션에서 데이터를 보낼 URL이므로 이 속성의 값이 필요합니다. 이 속성을 만들려면 DCR이 있어야 합니다 kind:Direct . 자세한 내용은 속성을 참조하세요.

{
    "location": "eastus",
    "kind": "Direct",
    "properties": {
        "streamDeclarations": {
            "Custom-MyTable": {
                "columns": [
                    {
                        "name": "Time",
                        "type": "datetime"
                    },
                    {
                        "name": "Computer",
                        "type": "string"
                    },
                    {
                        "name": "AdditionalContext",
                        "type": "string"
                    }
                ]
            }
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/cefingestion/providers/microsoft.operationalinsights/workspaces/my-workspace",
                    "name": "LogAnalyticsDest"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Custom-MyTable"
                ],
                "destinations": [
                    "LogAnalyticsDest"
                ],
                "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, ExtendedColumn=tostring(jsonContext.CounterName)",
                "outputStream": "Custom-MyTable_CL"
            }
        ]
    }
}

작업 영역 변환 DCR

작업 영역 변환 DCR에는 변환이 작업 영역에서 지원되는 테이블로 전송되는 모든 데이터에 적용되므로 빈 datasources 섹션이 있습니다. 변환이 있는 각 테이블에 대한 workspaceResourceId 항목과 항목 dataFlows 만 포함해야 합니다. 또한 .가 "kind": "WorkspaceTransforms"있어야 합니다.

아래 샘플 DCR에는 다음과 같은 세부 정보가 있습니다.

{
    "kind": "WorkspaceTransforms",
    "location": "eastus",
    "properties": {
        "dataSources": {},
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
                    "name": "clv2ws1"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-Table-LAQueryLogs"
                ],
                "destinations": [
                    "clv2ws1"
                ],
                "transformKql": "source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Workspace_CF = tostring(Context['workspaces'][0]) | project-away RequestContext, Context"
            },
            {
                "streams": [
                    "Microsoft-Table-Event"
                ],
                "destinations": [
                    "clv2ws1"
                ],
                "transformKql": "source | where EventLevelName in ('Error', 'Critical', 'Warning') | project-away ParameterXml"
            }
        ]
    }
}

여러 테이블로 데이터 보내기

다음을 포함하여 단일 데이터 원본에서 동일한 Log Analytics 작업 영역의 여러 테이블로 데이터를 보낼 수 있는 여러 가지 이유가 있습니다.

단일 데이터 원본에서 여러 테이블로 데이터를 보내려면 다음 다이어그램과 같이 각각에 대한 고유한 변환 쿼리 및 출력 테이블을 사용하여 DCR에 여러 데이터 흐름을 만듭니다.

Important

현재 DCR의 테이블은 동일한 Log Analytics 작업 영역에 있어야 합니다. 단일 데이터 원본에서 여러 작업 영역으로 보내려면 여러 DCR을 사용하고 각각에 데이터를 보내도록 애플리케이션을 구성합니다.

데이터를 여러 테이블로 전송하는 변환을 보여 주는 다이어그램.

다음 샘플은 Azure Monitor 에이전트가 이벤트 테이블로 보낸 레코드를 필터링합니다. 경고 및 오류 이벤트만 이벤트 테이블로 전송됩니다. 다른 이벤트는 기본 로그에 대해 구성된 Event_CL 이벤트 테이블의 복사본으로 전송됩니다.

참고 항목

이 샘플에는 Event_CL이라는 동일한 작업 영역에서 만든 이벤트 테이블의 복사본이 필요합니다.

{
    "location": "eastus",
    "properties": {
        "dataSources": {
            "windowsEventLogs": [
              {
                "name": "eventLogsDataSource",
                "streams": [
                  "Microsoft-Event"
                ],
                "xPathQueries": [
                  "System!*[System[(Level = 1 or Level = 2 or Level = 3)]]",
                  "Application!*[System[(Level = 1 or Level = 2 or Level = 3)]]"
                ]
              }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
                    "name": "MyDestination"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft-Event"
                ],
                "destinations": [
                    "MyDestination"
                ],
                "transformKql": "source | where EventLevelName in ('Error', 'Warning')",
                "outputStream": "Microsoft-Event"
            },
            {
                "streams": [
                    "Microsoft-Event"
                ],
                "destinations": [
                    "MyDestination"
                ],
                "transformKql": "source | where EventLevelName !in ('Error', 'Warning')",
                "outputStream": "Custom-Event_CL"
            }
        ]
    }
}

다음 단계