Exemplos de DCR (regra de coleta de dados) no Azure Monitor
Este artigo inclui DCRs (regras de coleta de dados) de exemplo para cenários comuns de coleta de dados no Azure Monitor. Você pode modificar essas definições de DCR conforme necessário para seu ambiente e criar o DCR usando as diretrizes em Criar ou editar uma regra de coleta de dados. Você também pode usar e combinar as estratégias básicas nesses exemplos para criar DCRs para outros cenários.
Esses exemplos exigem conhecimento da estrutura de DCR conforme descrito em Estrutura de uma regra de coleta de dados no Azure Monitor. Vários podem ser configurados usando o portal do Azure sem qualquer conhecimento detalhado da estrutura do DCR. Use esses exemplos quando precisar trabalhar com a própria definição de DCR para executar configurações mais avançadas ou automatizar a criação de DCRs.
Cada um desses exemplos se concentra em uma fonte de dados específica, embora você possa combinar várias fontes de dados de tipos diferentes em um único DCR. Inclua um fluxo de dados para cada um enviar os dados para o destino apropriado. Não há diferença funcional entre combinar várias fontes de dados em um único DCR ou criar DCRs separadas para cada fonte de dados. A escolha depende de seus requisitos para gerenciar e monitorar a coleta de dados.
Observação
Esses exemplos mostrados neste artigo fornecem o JSON de origem necessário para criar o DCR. Após a criação, o DCR terá propriedades adicionais, conforme descrito em Estrutura de uma regra de coleta de dados no Azure Monitor.
DCRs para o agente do Azure Monitor
O agente do Azure Monitor é executado em máquinas virtuais, conjuntos de dimensionamento de máquinas virtuais e clusters do Kubernetes. Ele dá suporte a insights de VM e insights de contêiner e dá suporte a vários cenários de coleta de dados para VMs descritas na coleta de dados do agente do Azure Monitor.
Os exemplos a seguir mostram DCRs para coletar diferentes tipos de dados usando o agente do Azure Monitor.
Eventos do Windows
Os DCRs para eventos do Windows usam a fonte de dados windowsEventLogs
com o fluxo de entrada Microsoft-Event
. O esquema desse fluxo é conhecido, portanto, ele não precisa ser definido na seção dataSources
. Os eventos a serem coletados são especificados na propriedade xPathQueries
. Consulte Coletar eventos do Windows com o Agente do Azure Monitor para obter mais detalhes sobre como usar XPaths para filtrar os dados específicos que você deseja coletar. Para começar, você pode usar as diretrizes nesse artigo para criar um DCR usando o portal do Azure e inspecionar o JSON usando as diretrizes na definição de DCR.
Você pode adicionar uma transformação à propriedade dataFlows
para colunas calculadas e filtrar mais dados, mas deve usar XPaths para filtrar dados no agente o máximo possível para obter eficiência e evitar possíveis encargos de ingestão.
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta eventos de aplicativo e sistema do Windows com o nível de erro de Aviso, Erro ou Crítico.
- Envia dados para a tabela Evento no workspace.
- Usa uma transformação simples de um
source
que não faz nenhuma alteração nos dados de entrada.
{
"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"
}
]
}
}
Eventos de syslog
Os DCRs para eventos do Syslog usam a fonte de dados syslog
com o fluxo de entrada Microsoft-Syslog
. O esquema desse fluxo é conhecido, portanto, ele não precisa ser definido na seção dataSources
. Os eventos a serem coletados são especificados nas propriedades facilityNames
e logLevels
. Consulte Coletar eventos do Syslog com o Agente do Azure Monitor para obter mais detalhes. Para começar, você pode usar as diretrizes nesse artigo para criar um DCR usando o portal do Azure e inspecionar o JSON usando as diretrizes na definição de DCR.
Você pode adicionar uma transformação à propriedade dataFlows
para funcionalidade adicional e filtrar mais dados, mas você deve usar facilityNames
e logLevels
para filtrar o máximo possível para obter eficiência para evitar possíveis encargos de ingestão.
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta todos os eventos da instalação
cron
. - Coleta
Warning
e eventos mais altos de instalaçõessyslog
edaemon
.- Envia dados para a tabela Syslog no workspace.
- Usa uma transformação simples de um
source
que não faz nenhuma alteração nos dados de entrada.
{
"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"
}
]
}
}
Contadores de desempenho
Os DCRs para dados de desempenho usam a fonte de dados performanceCounters
com fluxos de entrada Microsoft-InsightsMetrics
e Microsoft-Perf
. Microsoft-InsightsMetrics
é usado para enviar dados para as Métricas do Azure Monitor, enquanto Microsoft-Perf
é usado para enviar dados para um workspace do Log Analytics. Você pode incluir ambas as fontes de dados no DCR se estiver enviando dados de desempenho para ambos os destinos. Os esquemas desses fluxos são conhecidos, portanto, eles não precisam ser definidos na seção dataSources
.
Os contadores de desempenho a serem coletados são especificados na propriedade counterSpecifiers
. Consulte Coletar contadores de desempenho com o Agente do Azure Monitor para obter mais detalhes. Para começar, você pode usar as diretrizes nesse artigo para criar um DCR usando o portal do Azure e inspecionar o JSON usando as diretrizes na definição de DCR.
Você pode adicionar uma transformação à propriedade dataFlows
para Microsoft-Perf
para funcionalidade adicional e filtrar mais dados, mas deve selecionar apenas os contadores necessários counterSpecifiers
para obter eficiência e evitar possíveis encargos de ingestão.
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta um conjunto de contadores de desempenho a cada 60 segundos e outro conjunto a cada 30 segundos.
- Envia dados para as Métricas do Azure Monitor e um workspace do Log Analytics.
- Usa uma transformação simples de um
source
que não faz nenhuma alteração nos dados de entrada.
{
"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"
}
]
}
}
Logs de texto
Os DCRs para logs de texto têm uma fonte de dados logfiles
com os detalhes dos arquivos de log que devem ser coletados pelo agente. Isso inclui o nome de um fluxo que deve ser definido em streamDeclarations
com as colunas dos dados de entrada. Atualmente, essa é uma lista de conjuntos, conforme descrito em Coletar logs de um arquivo de texto com o Agente do Azure Monitor.
Adicione uma transformação à propriedade dataFlows
para filtrar registros que você não deseja coletar e formatar os dados para corresponder ao esquema da tabela de destino. Um cenário comum é analisar um arquivo de log delimitado em várias colunas, conforme descrito em arquivos de log delimitados.
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta entradas de todos os arquivos com uma extensão da
.txt
na pastac:\logs
do computador do agente. - Usa uma transformação para dividir os dados de entrada em colunas com base em um delimitador de vírgula (
,
). Essa transformação é específica para o formato do arquivo de log e deve ser ajustada para arquivos de log com outros formatos. - Envia os logs coletados para uma tabela personalizada chamada
MyTable_CL
. Essa tabela já deve existir e ter a saída das colunas pela transformação. - Coleta
FilePath
eComputer
para o log de texto, conforme descrito no fluxo de entrada. Essas colunas também devem existir na tabela de destino.
{
"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"
}
]
}
}
Logs JSON
Os DCRs para logs Json têm uma fonte de dados logfiles
com detalhes dos arquivos de log que devem ser coletados pelo agente. Isso inclui o nome de um fluxo que deve ser definido em streamDeclarations
com as colunas dos dados de entrada. Consulte Coletar logs de um arquivo JSON com o Agente do Azure Monitor para obter mais detalhes.
Adicione uma transformação à propriedade dataFlows
para filtrar registros que você não deseja coletar e formatar os dados para corresponder ao esquema da tabela de destino.
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta entradas de todos os arquivos com uma extensão da
.json
na pastac:\logs
do computador do agente. O arquivo deve ser formatado em json e ter as colunas listadas na declaração de fluxo. - Envia os logs coletados para uma tabela personalizada chamada
MyTable_CL
. Essa tabela já deve existir e ter as mesmas colunas que o fluxo de entrada. Se as colunas não corresponderem, você precisará modificar a transformação na propriedadetransformKql
para formatar os dados da tabela de destino.
{
"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"
}
]
}
}
Enviar dados para Hubs de Eventos ou Armazenamento
Os DCRs que enviam dados para hubs de eventos ou contas de armazenamento usam as mesmas fontes de dados que outros DCRs que coletam dados com o AMA (agente do Azure Monitor), mas têm um ou mais dos destinos a seguir. Consulte Enviar dados para Hubs de Eventos e Armazenamento (versão prévia) para obter mais detalhes.
eventHubsDirect
storageBlobsDirect
storageTablesDirect
Observação
DCRs que enviam dados para hubs de eventos ou contas de armazenamento devem ter "kind": "AgentDirectToStore"
O DCR de exemplo a seguir executa as seguintes ações:
- Coleta contadores de desempenho e eventos do Windows de computadores Windows com o AMA (agente do Azure Monitor).
- Envia os dados para o hub de eventos, o armazenamento de blobs e o armazenamento de tabelas.
{
"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 de ingestão de logs
Os DCRs para a API de ingestão de logs devem definir o esquema do fluxo de entrada na seção streamDeclarations
da definição de DCR. Os dados de entrada devem ser formatados em JSON com um esquema que corresponda às colunas nessa definição. Nenhuma transformação será necessária se esse esquema corresponder ao esquema da tabela de destino. Se os esquemas não corresponderem, você deverá adicionar uma transformação à propriedade dataFlows
para formatar os dados. Consulte a API de Ingestão de Logs no Azure Monitor para obter mais detalhes.
O DCR de exemplo abaixo tem os seguintes detalhes:
- Envia dados para uma tabela chamada
MyTable_CL
em um workspace chamadomy-workspace
. Antes de instalar esse DCR, você precisaria criar a tabela com as seguintes colunas:- TimeGenerated
- Computador
- AdditionalContext
- ExtendedColumn (definido na transformação)
- Aplica uma transformação aos dados de entrada para formatar os dados da tabela de destino.
Importante
Este exemplo não inclui a propriedade dataCollectionEndpointId
, pois ela é criada automaticamente quando o DCR é criado. Você precisa do valor dessa propriedade, pois é a URL para a qual o aplicativo enviará dados. O DCR deve ter kind:Direct
para que essa propriedade seja criada. Confira Propriedades para obter mais detalhes.
{
"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 de transformação do workspace
Os DCRs de transformação do workspace têm uma seção vazia datasources
, pois as transformações são aplicadas a todos os dados enviados a tabelas com suporte no workspace. Ela deve incluir uma entrada e somente para workspaceResourceId
e uma entrada dataFlows
para cada tabela com uma transformação. Ela também deve ter "kind": "WorkspaceTransforms"
.
O DCR de exemplo abaixo tem os seguintes detalhes:
- Transformação para a tabela
LAQueryLogs
que filtra as consultas da própria tabela e adiciona uma coluna com o nome do workspace. - Transformação para a tabela
Event
que filtra eventos de informações e remove a colunaParameterXml
. Isso só se aplicará aos dados provenientes do agente preterido do Log Analytics e não ao agente do Azure Monitor, conforme explicado no DCR de transformação do Workspace.
{
"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"
}
]
}
}
Enviar dados para várias tabelas
Há vários motivos pelos quais talvez você queira enviar dados de uma única fonte de dados para várias tabelas no mesmo workspace do Log Analytics, incluindo o seguinte:
- Economize em custos de ingestão enviando registros usados para solução de problemas ocasionais para uma tabela de logs básicos.
- Envie registros ou colunas com dados confidenciais para uma tabela com permissões ou configurações de retenção diferentes.
Para enviar dados de uma única fonte de dados para várias tabelas, crie vários fluxos de dados no DCR com uma consulta de transformação exclusiva e uma tabela de saída para cada uma, conforme mostrado no diagrama a seguir.
Importante
Atualmente, as tabelas no DCR devem estar no mesmo workspace do Log Analytics. Para enviar para vários workspaces de uma única fonte de dados, use várias DCRs e configure seu aplicativo para enviar os dados para cada uma.
O exemplo a seguir filtra os registros enviados à tabela Eventos pelo agente do Azure Monitor. Somente eventos de aviso e erro são enviados para a tabela Evento. Outros eventos são enviados para uma cópia da tabela de eventos chamada Event_CL configurada para logs básicos.
Observação
Este exemplo requer uma cópia da tabela Evento criada no mesmo workspace chamado 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"
}
]
}
}