Creación de reglas de recopilación de datos (DCR) en Azure Monitor
Hay varios métodos para crear una regla de recopilación de datos (DCR) en Azure Monitor. En algunos casos, Azure Monitor creará y administrará el DCR según los valores que configure en el portal de Azure. Es posible que ni siquiera se dé cuenta de que está trabajando con un DCR en algunos de estos casos. Sin embargo, para otros escenarios, es posible que tenga que crear sus propios DCR o editar los existentes trabajando directamente con su definición en JSON. En este artículo se describen los distintos métodos para crear un DCR y recomendaciones sobre la edición y solución de problemas.
Nota:
En este artículo se describe cómo crear y editar el propio DCR. Para crear y editar asociaciones de reglas de recopilación de datos, consulte Crear y administrar asociaciones de reglas de recopilación de datos.
Permisos
Necesita los siguientes permisos para crear DCR y asociaciones DCR:
Rol integrado | Ámbitos | Motivo |
---|---|---|
Colaborador de supervisión |
|
Cree o edite DCR, asigne reglas a la máquina e implemente asociaciones. |
Colaborador de la máquina virtual Administrador de recursos de Azure Connected Machine |
|
Implemente extensiones de agente en la VM (máquina virtual). |
Cualquier rol que incluya la acción Microsoft.Resources/deployments/* |
|
Implementación de las plantillas de Azure Resource Manager. |
Importante
Cree el DCR de dominio en la misma región que el área de trabajo de Log Analytics de destino o el área de trabajo de Azure Monitor. Puede asociar el DCR a máquinas o contenedores desde cualquier suscripción o grupo de recursos del inquilino. Para enviar datos entre inquilinos, primero debe habilitar Azure Lighthouse.
Creación o edición de un DCR de dominio mediante Azure Portal
Azure Portal proporciona una experiencia simplificada para crear un DCR para escenarios concretos. Con este método, no es necesario comprender la estructura de un DCR, aunque es posible que esté limitado en la configuración que puede realizar y es posible que tenga que editar posteriormente la definición de DCR para implementar una característica avanzada, como una transformación. La experiencia variará para cada escenario, por lo que consulte la documentación del escenario específico con el que trabaja, tal como se describe en la tabla siguiente.
Escenario | Descripción |
---|---|
Habilitación de VM Insights | Al habilitar VM Insights en una máquina virtual, se instala el agente de Azure Monitor y se crea una DCR y se asocia a la máquina virtual. Esta DCR recopila un conjunto predefinido de contadores de rendimiento y no debe modificarse. Consulte Habilitación de VM Insights. |
Recopilación de datos de cliente de la máquina virtual | Cree un DCR en Azure Portal mediante una interfaz guiada para seleccionar orígenes de datos diferentes del sistema operativo cliente de una máquina virtual. Entre los ejemplos se incluyen eventos de Windows, eventos de Syslog y registros de texto. El agente de Azure Monitor se instala automáticamente si es necesario y se crea una asociación entre DCR y cada máquina virtual que seleccione. Consulte Recopilación de datos con el agente de Azure Monitor. |
Exportación de métricas | Cree un DCR de dominio en Azure Portal mediante una interfaz guiada para seleccionar métricas de diferentes tipos de recursos que se van a recopilar. Se crea una asociación entre el DCR de dominio y cada recurso que seleccione. Consulte Creación de una regla de recopilación de datos (DCR) para la exportación de métricas. |
Creación de tabla | Al crear una nueva tabla en un área de trabajo de Log Analytics mediante Azure Portal, se cargan datos de ejemplo que Azure Monitor usa para crear un DCR, incluida una transformación, que se puede usar con la API de ingesta de registros. No puede modificar este DCR en Azure Portal, pero puede modificarlo mediante cualquiera de los métodos descritos en este artículo. Consulte Creación de una tabla personalizada. |
Supervisión de Kubernetes | Para supervisar un clúster de Kubernetes, habilite Container Insights para registros y Prometheus para las métricas. Se crea un DCR para cada uno y se asocia a la versión en contenedor del agente de Azure Monitor en el clúster. Es posible que tenga que modificar el DCR de Container Insights para agregar una transformación. Consulte Habilitación de la supervisión de clústeres de Kubernetes y Transformaciones de datos en Container Insights. |
DCR de transformación del área de trabajo | Los DCR de transformación del área de trabajo proporcionan transformaciones para escenarios de recopilación de datos que aún no usan DCR. Puede crear este DCR mediante Azure Portal para crear una transformación para una tabla determinada. Consulte Crear DCR de transformación del área de trabajo. |
Definición de DCR
Independientemente de cómo se cree, cada DCR tiene una definición que sigue un esquema JSON estándar. Para crear o editar un DCR mediante un método distinto de Azure Portal, debe trabajar directamente con su definición JSON. En algunos escenarios, debe trabajar con la definición de JSON porque Azure Portal no proporciona una manera de configurar el DCR de dominio según sea necesario.
Puede ver el JSON de un DCR en el Azure Portal haciendo clic en Vista JSON en el menú Información general.
Compruebe que la versión más reciente de la API está seleccionada en la lista desplegable versión de API. Si no es así, es posible que no se muestre parte del código JSON.
También puede recuperar el JSON de DCR mediante una llamada a la API de REST de DCR. Por ejemplo, el siguiente script de PowerShell recupera el JSON de un DCR y lo guarda en un archivo.
$ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
$FilePath = "<FilePath>" # File to store DCR content
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File -FilePath $FilePath
Nota:
Puede obtener los detalles de un DCR de dominio mediante el cmdlet Get-AzDataCollectionRule
en PowerShell o el comando az monitor data-collection rule show
en la CLI de Azure, pero no proporcionan el JSON en el formato que necesita para su edición. En su lugar, use PowerShell o la CLI para llamar a la API de REST, como se muestra en el ejemplo.
Creación o edición de un DCR mediante JSON
Además de editar un DCR existente, puede crear uno nuevo mediante uno de los DCR de ejemplo que proporcionan el JSON para varios escenarios comunes. Use la información en Estructura de una regla de recopilación de datos de Azure Monitor para modificar el archivo JSON para su entorno y requisitos concretos.
Una vez que tenga la definición de DCR, puede implementarla en Azure Monitor mediante Azure Portal, la CLI, PowerShell, la API o las plantillas de ARM.
Creación o edición de DCR con la CLI
Use el comando az monitor data-collection rule create para crear una DCR a partir del archivo JSON. Puede usar este mismo comando para actualizar un DCR existente.
az monitor data-collection rule create --location 'eastus' --resource-group 'my-resource-group' --name 'my-dcr' --rule-file 'C:\MyNewDCR.json' --description 'This is my new DCR'
Nota:
Aunque puede optar por usar los comandos de PowerShell o la CLI para crear y editar un DCR, la API y los métodos ARM proporcionarán mensajes de error más detallados si hay errores de compilación.
En el ejemplo siguiente, DCR especifica un nombre de tabla que no existe en el área de trabajo de Log Analytics de destino. El comando de PowerShell devuelve un mensaje de error genérico, pero la llamada API devolverá un mensaje de error detallado que especifica el error exacto.
Estrategias para editar y probar un DCR
Al crear o editar un DCR mediante su definición JSON, a menudo tendrá que realizar varias actualizaciones para lograr la funcionalidad que desee. Necesita un método eficaz para actualizar el DCR, solucionarlo si no obtiene los resultados esperados y, a continuación, realizar actualizaciones adicionales. Esto es especialmente cierto si va a agregar una transformación al DCR, ya que tendrá que validar que la consulta funciona según lo previsto. Dado que no se puede editar el JSON directamente en Azure Portal, a continuación se muestran algunas estrategias que puede usar.
Uso del archivo local como origen de DCR
Si usa un archivo JSON local como origen de las DCR que crea y edita, tendrá la seguridad de que siempre tendrá acceso a la versión más reciente de la definición de DCR. Esto es ideal si desea usar herramientas de control de versiones como GitHub o Azure DevOps para administrar los cambios. También puede usar un editor como VS Code para realizar cambios en DCR y, a continuación, usar herramientas de línea de comandos para actualizar el DCR en Azure Monitor, como se ha descrito anteriormente.
A continuación se muestra un script de PowerShell de ejemplo que puede usar para insertar cambios en un DCR desde un archivo de origen. Esto valida que el archivo fuente es JSON válido antes de enviarlo a Azure Monitor.
param (
[Parameter(Mandatory = $true)][string]$ResourceId, # Resource ID of the DCR
[Parameter(Mandatory = $true)][string]$FilePath # Path to the DCR JSON file to upload
)
# Read the DCR content from the file
Write-Host "Reading new DCR content from: $FilePath" -ForegroundColor Green
$DCRContent = Get-Content $FilePath -Raw
# Ensure the DCR content is valid JSON
try {
$ParsedDCRContent = $DCRContent | ConvertFrom-Json
} catch {
Write-Host "Invalid JSON content in file: $FilePath" -ForegroundColor Red
exit 1
}
# Create or update the DCR in the specified resource group
Write-Host "Deploying DCR $ResourceId ..." -ForegroundColor Green
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
Guardar contenido de DCR en un archivo temporal
Si no tiene la definición de DCR en un archivo local, puede recuperar la definición de Azure Monitor y guardarla en un archivo temporal. Después, puede editar el archivo mediante un editor como VS Code antes de insertar las actualizaciones en Azure Monitor.
A continuación se muestra un script de PowerShell de ejemplo que puede usar para editar un DCR existente en Azure Monitor. El script recuperará la definición de DCR y la guardará en un archivo temporal antes de iniciar VS Code. Una vez que indique al script que ha guardado los cambios, el DCR de dominio se actualiza con el nuevo contenido y se elimina el archivo temporal.
param ([Parameter(Mandatory=$true)] $ResourceId)
# Get DCR content and save it to a local file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath
# Open DCR in code editor
code $FilePath | Wait-Process
{
#write DCR content back from the file
$DCRContent = Get-Content $FilePath -Raw
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent
}
#Delete temporary file
Remove-Item $FilePath
Uso de una plantilla de ARM para editar un DCR en su lugar
Si quiere realizar las modificaciones completamente en Azure Portal, puede usar la característica Exportar plantilla para recuperar la plantilla de ARM para un DCR. Después, puede modificar la definición en JSON y volver a implementarla en Azure Portal.
Seleccione el DCR de dominio que desea modificar en Azure Portal y seleccione Exportar plantilla. A continuación, haga clic en Implementar para volver a implementar la misma plantilla.
Haga clic en Editar plantilla para abrir una versión editable del JSON para DCR. No cambie los valores de parámetro.
Realice los cambios necesarios en DCR y, a continuación, haga clic en Guardar.
Si desea crear un controlador de dominio nuevo, cambie el parámetro name. De lo contrario, deje los parámetros sin cambios. Haga clic en Revisar y crear para implementar la plantilla modificada y Crear para crear el controlador de dominio nuevo.
Si el DCR es válido sin errores, la implementación se realizará correctamente y el DCR se actualizará con la nueva configuración. Haga clic en Ir al recurso para abrir el DCR modificado.
Si el DCR tiene errores de compilación, recibirá un mensaje que indica que se produjo un error en la implementación. Haga clic en Detalles del error y Detalles de la operación para ver los detalles del error. Haga clic en Volver a implementar y, a continuación, vuelva a Editar plantilla para realizar los cambios necesarios en el DCR y, a continuación, guardarlo e implementarlo de nuevo.
Comprobación y solución de problemas de recopilación de datos
Una vez que instale el DCR, los cambios pueden tardar varios minutos en surtir efecto y los datos que se recopilarán con el DCR actualizado. Si no ve ningún dato que se recopila, puede ser difícil determinar la causa principal del problema. Use las características de supervisión de DCR, que incluyen métricas y registros para ayudar a solucionar problemas.
Las métricas de DCR se recopilan automáticamente para todas las DCR y puede analizarlas mediante un explorador de métricas como las métricas de plataforma para otros recursos de Azure. Habilite registros de errores de DCR para obtener información detallada sobre errores cuando el procesamiento de datos no se realiza correctamente.
Si no ve los datos que se recopilan, siga estos pasos básicos para solucionar el problema.
- Compruebe las métricas como
Logs Ingestion Bytes per Min
yLogs Rows Received per Min
para asegurarse de que los datos llegan a Azure Monitor. De lo contrario, compruebe el origen de datos para asegurarse de que envía datos según lo previsto. - Compruebe
Logs Rows Dropped per Min
para ver si se quitan filas. Es posible que esto no indique un error, ya que una transformación podría quitar las filas. Pero si las filas quitadas son las mismas queLogs Rows Dropped per Min
, no se ingerirán datos en el área de trabajo. ExamineLogs Transformation Errors per Min
para ver si hay errores de transformación. - Compruebe
Logs Transformation Errors per Min
para determinar si hay errores de las transformaciones aplicadas a los datos entrantes. Esto podría deberse a cambios en la estructura de datos o en la propia transformación. - Compruebe la tabla
DCRLogErrors
si hay errores de ingesta que se hayan registrado. Esto puede proporcionar detalles adicionales para identificar la causa principal del problema.