Uso de la extensión Diagnostics de Linux 3.0 para supervisar métricas y registros
Precaución
En este artículo se hace referencia a CentOS, una distribución de Linux con un estado de finalización del servicio (EOL). Tenga en cuenta su uso y planifique en consecuencia. Para más información, consulte la Guía de fin de ciclo de vida de CentOS.
En este documento se describen las versiones 3.0 y posteriores de la extensión Diagnostics de Linux (LAD).
Importante
Para obtener información acerca de la versión 2.3 y anteriores, consulte Supervisión de los datos de rendimiento y diagnóstico de una VM de Linux.
Introducción
La extensión Diagnostics de Linux ayuda a los usuarios a supervisar el mantenimiento de VM de Linux que se ejecuten en Microsoft Azure. Ofrece la siguiente funcionalidad:
- Recopila métricas de rendimiento del sistema de la máquina virtual y las almacena en una tabla específica de una cuenta de almacenamiento designada.
- Recupera eventos de registro de syslog y los almacena en una tabla específica de la cuenta de almacenamiento designada.
- Permite a los usuarios personalizar las métricas de datos que se recopilan y se cargan.
- Permite a los usuarios personalizar las utilidades de syslog y los niveles de gravedad de los eventos que se recopilan y se cargan.
- Permite a los usuarios cargar los archivos de registro especificados en la tabla de almacenamiento designada.
- Admite el envío de métricas y eventos de registro a puntos de conexión arbitrarios de Azure Event Hubs y blobs con formato JSON en la cuenta de almacenamiento designada.
Esta extensión funciona con los dos modelos de implementación de Azure.
Instalación de la extensión en una VM
Puede habilitar esta extensión mediante cmdlets de Azure PowerShell, scripts de la CLI de Azure, plantillas de Azure Resource Monitor (plantillas de ARM) o Azure Portal. Para obtener más información, consulte Características de extensiones.
Nota
Algunos componentes de la extensión de VM de LAD también se incluyen en la extensión de VM de Log Analytics. Gracias a esta arquitectura, se pueden producir conflictos si se crean instancias de las dos extensiones en la misma plantilla de ARM.
Para evitar estos conflictos en tiempo de instalación, use la dependsOn
directiva para asegurarse de que las extensiones se instalan de forma secuencial. Las extensiones se pueden instalar en cualquier orden.
Mediante estas instrucciones de instalación y una configuración de ejemplo descargable se configura LAD 3.0 para:
- Capturar y almacenar las mismas métricas que las proporcionadas por LAD 2.3.
- Capturar un conjunto útil de métricas del sistema de archivos. Esta funcionalidad es nueva en LAD 3.0.
- Capturar la recopilación predeterminada de syslog habilitada por LAD 2.3.
- Habilitar la experiencia de Azure Portal para la creación de gráficos y el desencadenamiento de alertas en métricas de VM.
La configuración descargable es solo un ejemplo. Modifíquela para satisfacer sus necesidades.
Requisitos previos
- Versión 2.2.0 o posterior del agente Linux de Azure. La mayoría de las imágenes de la galería de máquina virtual Linux de Azure incluyen la versión 2.2.7 o posterior. Ejecute
/usr/sbin/waagent -version
para confirmar la versión instalada en la máquina virtual. Si la VM está ejecutando una versión anterior, actualice el agente invitado. - LaCLI de Azure. Si fuera necesario, instale el entorno de la CLI de Azure en la máquina.
- El comando wget. Si aún no lo tiene, instálelo con el administrador de paquetes correspondiente.
- Una suscripción de Azure existente.
- Una cuenta de almacenamiento de uso general para almacenar los datos. Las cuentas de almacenamiento de uso general deben admitir el almacenamiento de tablas. No funcionará una cuenta de Blob Storage.
- Python 2.
Requisito de Python
La extensión Diagnostics de Linux requiere Python 2. Si la máquina virtual usa una distribución que no incluye Python 2 de manera predeterminada, debe instalarlo. Los siguientes comandos de ejemplo instalan Python 2 en varias distribuciones:
- Red Hat, CentOS, Oracle:
yum install -y python2
- Ubuntu, Debian:
apt-get install -y python2
- SUSE:
zypper install -y python2
El archivo ejecutable python2
debe tener el valor python como alias. Este es un método para establecer este alias:
Ejecute el siguiente comando para quitar los alias existentes.
sudo update-alternatives --remove-all python
Para crear el alias, ejecute el siguiente comando.
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
Instalación de ejemplo
La configuración de ejemplo descargada en los siguientes ejemplos recopila un conjunto de datos estándar y los envía a un almacenamiento de tabla. La dirección URL de la configuración de ejemplo y su contenido pueden modificarse.
En la mayoría de los casos, debe descargar una copia del archivo JSON de configuración del portal y personalizarlo en función de sus necesidades. A continuación, emplee plantillas o la automatización para usar una versión personalizada del archivo de configuración, en lugar de descargarlo desde la URL cada vez.
Nota
Para los siguientes ejemplos, rellene los valores correctos para las variables de la primera sección antes de ejecutar el código.
Ejemplo de la CLI de Azure
# Set your Azure VM diagnostic variables.
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show -g $my_resource_group -n $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vm-name $my_linux_vm --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Ejemplo de la CLI de Azure para la instalación de LAD 3.0 en la instancia del conjunto de escalado de máquinas virtuales
#Set your Azure Virtual Machine Scale Sets diagnostic variables.
$my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
$my_linux_vmss=<your_azure_linux_vmss_name>
$my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
# Login to Azure before you do anything else.
az login
# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>
# Download the sample public settings. (You could also use curl or any web browser.)
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json
# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
$my_vmss_resource_id=$(az vmss show -g $my_resource_group -n $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json
# Build the protected settings (storage account SAS token).
$my_diagnostic_storage_account_sastoken=$(az storage account generate-sas --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z --permissions wlacu --resource-types co --services bt -o tsv)
$my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"
# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json
Ejemplo de PowerShell
$storageAccountName = "yourStorageAccountName"
$storageAccountResourceGroup = "yourStorageAccountResourceGroupName"
$vmName = "yourVMName"
$VMresourceGroup = "yourVMResourceGroupName"
# Get the VM object
$vm = Get-AzVM -Name $vmName -ResourceGroupName $VMresourceGroup
# Get the public settings template from GitHub and update the templated values for storage account and resource ID
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)
# If you have customized public settings, you can inline those rather than using the preceding template: $publicSettings = '{"ladCfg": { ... },}'
# Generate a SAS token for the agent to use to authenticate with the storage account
$sasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName $storageAccountResourceGroup -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))
# Build the protected settings (storage account SAS token)
$protectedSettings="{'storageAccountName': '$storageAccountName', 'storageAccountSasToken': '$sasToken'}"
# Finally, install the extension with the settings you built
Set-AzVMExtension -ResourceGroupName $VMresourceGroup -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Actualización de la configuración de la extensión
Después de cambiar la configuración pública o protegida, ejecute el mismo comando para implementarla en la VM. Si se cambia alguna configuración, las actualizaciones se envían a la extensión. LAD recarga la configuración y se reinicia automáticamente.
Migración desde versiones anteriores de la extensión
La versión más reciente de la extensión es la 4.0.
Importante
En esta extensión se introducen importantes cambios de configuración. Uno de estos cambios mejora la seguridad de la extensión, por lo que no se pudo mantener la compatibilidad con versiones anteriores con la versión 2.x. Además, el publicador de esta extensión es diferente del de las versiones 2.x.
Para migrar de la version 2.x a la nueva versión, desinstale primero la extensión anterior (con el nombre del publicador anterior). A continuación, instale la versión 3.
Recomendaciones:
- Instale la extensión con la actualización de versión secundaria automática habilitada.
- En las VM con el modelo de implementación clásica, especifique la versión
3.*
si va a instalar la extensión mediante la CLI XPLAT de Azure o PowerShell. - En las VM con el modelo de implementación de Azure Resource Manager, incluya
"autoUpgradeMinorVersion": true
en la plantilla de implementación de VM.
- En las VM con el modelo de implementación clásica, especifique la versión
- Use una cuenta de almacenamiento nueva o diferente para LAD 3.0. Hay varias pequeñas incompatibilidades entre LAD 2.3 y LAD 3.0 que hacen que compartir una cuenta sea problemático:
- LAD 3.0 almacena los eventos de syslog en una tabla con un nombre diferente.
- Las cadenas de
counterSpecifier
para las métricasbuiltin
son diferentes en LAD 3.0.
Configuración protegida
Este conjunto de información de configuración contiene información confidencial que debería protegerse del acceso público. Contiene, por ejemplo, credenciales de almacenamiento. Esta configuración se transmite la extensión y es almacenada por esta de forma cifrada.
{
"storageAccountName" : "the storage account to receive data",
"storageAccountEndPoint": "the hostname suffix for the cloud for this account",
"storageAccountSasToken": "SAS access token",
"mdsdHttpProxy": "HTTP proxy settings",
"sinksConfig": { ... }
}
Nombre | Value |
---|---|
storageAccountName | Es el nombre de la cuenta de almacenamiento en la que la extensión escribe los datos. |
storageAccountEndPoint | (Opcional) Punto de conexión que identifica la nube en la que existe la cuenta de almacenamiento. Si no hubiera configuración, LAD selecciona la nube pública de Azure (https://core.windows.net ) de forma predeterminada. Para utilizar una cuenta de almacenamiento en Microsoft Azure Alemania, Azure Government o Microsoft Azure operado por 21Vianet, establezca este valor según sea necesario. |
storageAccountSasToken | Token de SAS de una cuenta para los servicios de blobs y tablas (ss='bt' ). Este token se aplica a contenedores y objetos (srt='co' ). Asimismo, concede permisos de incorporación, creación, enumeración, actualización y escritura (sp='acluw' ). No incluya el signo de interrogación principal (?). |
mdsdHttpProxy | (Opcional) Información del proxy HTTP que necesita la extensión para conectarse a la cuenta de almacenamiento y el punto de conexión especificados. |
sinksConfig | (Opcional) Es información sobre destinos alternativos a los que pueden enviarse métricas y eventos. En las secciones siguientes se abordan los detalles de cada receptor de datos compatible con la extensión. |
Para obtener un token de SAS en una plantilla de ARM, use la función listAccountSas
. Para ver una plantilla de ejemplo, consulte un ejemplo de función de lista.
Es posible construir el token de SAS necesario mediante Azure Portal:
- Seleccione la cuenta de almacenamiento de uso general en la que quiere que se escriba la extensión.
- En el menú de la izquierda, en Configuración, seleccione Firma de acceso compartido.
- Realice las selecciones tal como se describió anteriormente.
- Seleccione Generar SAS.
Copie el valor de SAS generado en el campo storageAccountSasToken
. Quite el signo de interrogación inicial (?).
sinksConfig
"sinksConfig": {
"sink": [
{
"name": "sinkname",
"type": "sinktype",
...
},
...
]
},
En esta sección opcional sinksConfig
se definen más destinos a los que la extensión envía la información que recopila. La matriz sink
contiene un objeto para cada receptor de datos adicional. El atributo type
determina los demás atributos del objeto.
Elemento | Value |
---|---|
name | Una cadena que hace referencia a este receptor en cualquier otra parte de la configuración de la extensión. |
type | Es el tipo de receptor que se va a definir. Determina los demás valores (si los hubiera) en instancias de este tipo. |
La versión 3.0 de LAD admite dos tipos de receptor: EventHub
y JsonBlob
.
Receptor de EventHub
"sink": [
{
"name": "sinkname",
"type": "EventHub",
"sasURL": "https SAS URL"
},
...
]
La entrada "sasURL"
contiene la URL completa, incluido el token de SAS, para el centro de eventos en el que deberían publicarse los datos. LAD necesita una SAS para definir una directiva que habilite la notificación Send.
Por ejemplo:
- Creación de un espacio de nombres de Azure Event Hubs denominado
contosohub
. - Cree un centro de eventos en el espacio de nombres llamado
syslogmsgs
. - Cree una directiva de acceso compartido en el centro de eventos que habilite la notificación Send. Nombre de la directiva
writer
.
Si la SAS está activa hasta la medianoche (UTC) del 1 de enero de 2018, el valor sasURL podría ser como este ejemplo:
https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer
Para obtener más información acerca de la generación y recuperación de información sobre tokens de SAS para Event Hubs, consulte Generación de un token de SAS.
Receptor de JsonBlob
"sink": [
{
"name": "sinkname",
"type": "JsonBlob"
},
...
]
Los datos dirigidos a un receptor de JsonBlob
se almacenan en blobs en Azure Storage. Cada instancia de LAD crea un blob cada hora para cada nombre de receptor. Todos los blobs siempre contienen una matriz de objetos JSON sintácticamente válida. Se agregan nuevas entradas a la matriz automáticamente.
Los blobs se almacenan en un contenedor que tiene el mismo nombre que el receptor. Las reglas de Azure Storage para los nombres de contenedores de blobs se aplican a los nombres de los receptores de JsonBlob
. El nombre deben tener entre 3 y 63 caracteres ASCII alfanuméricos en minúsculas o con guiones.
Configuración pública
La estructura de la configuración pública contiene varios bloques de valores de configuración que controlan la información que la extensión recopila. Cada valor de configuración es opcional. Si especifica ladCfg
, también debe especificar StorageAccount
.
{
"ladCfg": { ... },
"perfCfg": { ... },
"fileLogs": { ... },
"StorageAccount": "the storage account to receive data",
"mdsdHttpProxy" : ""
}
Elemento | Value |
---|---|
StorageAccount | Es el nombre de la cuenta de almacenamiento en la que la extensión escribe los datos. Debe ser el nombre que se especificó en la configuración protegida. |
mdsdHttpProxy | (Opcional) Es el mismo que en la Configuración protegida. El valor público reemplaza al privado, en caso de estar establecido. Coloque elementos de configuración de proxy que contengan un secreto, como una contraseña, en la Configuración protegida. |
En las secciones siguientes se proporcionan detalles acerca de los elementos restantes.
ladCfg
"ladCfg": {
"diagnosticMonitorConfiguration": {
"eventVolume": "Medium",
"metrics": { ... },
"performanceCounters": { ... },
"syslogEvents": { ... }
},
"sampleRateInSeconds": 15
}
La estructura ladCfg
es opcional. Esta controla la recopilación de métricas y registros para enviarlos al servicio de Métricas de Azure Monitor y otros receptores de datos. Debe especificar:
performanceCounters
,syslogEvents
o ambos.- La estructura
metrics
.
Elemento | Value |
---|---|
eventVolume | (Opcional) Controla el número de particiones creadas en la tabla de almacenamiento. Debe ser "Large" , "Medium" o "Small" . Si no se especifica, el valor predeterminado es "Medium" . |
sampleRateInSeconds | (Opcional) Intervalo predeterminado entre la recopilación de métricas sin procesar (sin agregar). La frecuencia de muestreo más pequeña admitida es de 15 segundos. Si no se especifica alguno, el valor predeterminado es 15 . |
Métricas
"metrics": {
"resourceId": "/subscriptions/...",
"metricAggregation" : [
{ "scheduledTransferPeriod" : "PT1H" },
{ "scheduledTransferPeriod" : "PT5M" }
]
}
Elemento | Value |
---|---|
resourceId | El id. de recurso de Azure Resource Manager de la VM o del conjunto de escalado al que pertenezca la VM. Esta configuración también debe especificarse en caso de usar cualquier receptor JsonBlob en la configuración. |
scheduledTransferPeriod | Frecuencia con la que se computan las métricas agregadas y se transfieren a las Métricas de Azure Monitor. La frecuencia se expresa como un intervalo de tiempo ISO 8601. El período de transferencia mínimo es de 60 segundos, es decir, PT1M. Especifique al menos un scheduledTransferPeriod . |
Se recopilan muestras de las métricas especificadas en la sección performanceCounters
cada 15 segundos o a la frecuencia de muestreo definida para el contador de manera explícita. Si aparecen varias frecuencias de scheduledTransferPeriod
, como en el ejemplo, cada agregación se procesa de manera independiente.
performanceCounters
"performanceCounters": {
"sinks": "",
"performanceCounterConfiguration": [
{
"type": "builtin",
"class": "Processor",
"counter": "PercentIdleTime",
"counterSpecifier": "/builtin/Processor/PercentIdleTime",
"condition": "IsAggregate=TRUE",
"sampleRate": "PT15S",
"unit": "Percent",
"annotation": [
{
"displayName" : "Aggregate CPU %idle time",
"locale" : "en-us"
}
]
}
]
}
La sección performanceCounters
opcional controla la recopilación de métricas. Se agregan muestras sin procesar para cada elemento scheduledTransferPeriod
a fin de generar estos valores:
- Media
- Mínima
- Máxima
- Último valor recopilado
- Número de muestras sin procesar que se usan para procesar el agregado
Elemento | Value |
---|---|
sinks | (Opcional) Lista separada por comas de nombres de receptores a los que LAD envía los resultados de las métricas agregadas. Todas las métricas agregadas se publican en cada receptor indicado. Ejemplo: "EHsink1, myjsonsink" . Para obtener más información, vea sinksConfig . |
type | Identifica el proveedor real de la métrica. |
class | Junto con "counter" , identifica la métrica específica en el espacio de nombres del proveedor. |
counter | Junto con "class" , identifica la métrica específica en el espacio de nombres del proveedor. |
counterSpecifier | Identifica la métrica específica en el espacio de nombres de Métricas de Azure Monitor. |
condición | (Opcional) Selecciona una instancia específica del objeto al que se aplica la métrica. O bien, selecciona la agregación en todas las instancias de ese objeto. |
sampleRate | Intervalo de ISO 8601 que establece la frecuencia de recopilación de muestras sin procesar de esta métrica. Si el valor no está establecido, el intervalo de recopilación se establece a partir del valor de sampleRateInSeconds . La frecuencia de muestreo más corta admitida es de 15 segundos (PT15S). |
unit | Define la unidad para la métrica. Debería ser una de estas cadenas: "Count" , "Bytes" , "Seconds" , "Percent" , "CountPerSecond" , "BytesPerSecond" o "Millisecond" . Los consumidores de los datos recopilados esperan que los valores de los datos recopilados coincidan con esta unidad. LAD omite este campo. |
DisplayName | Etiqueta que se agregará a los datos en Métricas de Azure Monitor. Esta etiqueta se establece en el idioma que se ha especificado mediante la configuración regional asociada. LAD omite este campo. |
El elemento counterSpecifier
es un identificador arbitrario. Los consumidores de métricas, como la característica de creación de gráficos y desencadenamiento de alertas de Azure Portal, usan counterSpecifier
como "clave" para identificar una métrica o instancia de una métrica.
Para las métricas builtin
, se recomienda usar valores counterSpecifier
que empiecen por /builtin/
. Si va a recopilar una instancia específica de una métrica, es recomendable adjuntar el identificador de la instancia al valor de counterSpecifier
.
A continuación se muestran algunos ejemplos:
/builtin/Processor/PercentIdleTime
: tiempo de inactividad promediado en todas las vCPU/builtin/Disk/FreeSpace(/mnt)
: espacio disponible para el sistema de archivos/mnt
/builtin/Disk/FreeSpace
: espacio libre del cual se ha realizado el promedio entre todos los sistemas de archivos montados
Ni LAD ni Azure Portal esperan que el valor de counterSpecifier
coincida con ningún patrón. Por lo tato, debe ser coherente con la forma en que se construyen los valores counterSpecifier
.
Si especifica performanceCounters
, LAD siempre escribe datos en una tabla en Azure Storage. Los mismos datos se pueden escribir en blobs de JSON o instancias de Event Hubs, o ambos. Sin embargo, no puede deshabilitar el almacenamiento de datos en una tabla.
Todas las instancias de LAD que usan el mismo nombre de cuenta de almacenamiento y el mismo punto de conexión agregan sus métricas y registros a la misma tabla. Si demasiadas VM escriben en la misma partición de tabla, Azure puede limitar las escrituras a dicha partición.
El valor eventVolume
hace que las entradas se repartan entre 1 (small), 10 (medium) o 100 (large) particiones. Normalmente, las particiones medianas son suficientes para evitar los límites de tráfico.
La característica Métricas de Azure Monitor de Azure Portal usa los datos de esta tabla para crear gráficos o desencadenar alertas. El nombre de tabla es la concatenación de las siguientes cadenas:
WADMetrics
"scheduledTransferPeriod"
para los valores agregados almacenados en la tablaP10DV2S
- Una fecha en formato "AAAAMMDD", que cambia cada 10 días
Algunos ejemplos son WADMetricsPT1HP10DV2S20170410
y WADMetricsPT1MP10DV2S20170609
.
syslogEvents
"syslogEvents": {
"sinks": "",
"syslogEventConfiguration": {
"facilityName1": "minSeverity",
"facilityName2": "minSeverity",
...
}
}
La sección syslogEvents
opcional controla la recopilación de eventos de registro de syslog. Si se omite la sección, no se captura ningún evento de syslog.
La recopilación de syslogEventConfiguration
tiene una entrada para cada recurso de syslog de interés. Si el valor de minSeverity
es "NONE"
para un recurso en particular, o si el recurso no aparece en el elemento, no se captura ningún evento de dicho recurso.
Elemento | Value |
---|---|
sinks | Es una lista separada por comas de nombres de receptores en los que se publican los eventos de registros individuales. Todos los eventos de registro que coincidan con las restricciones de syslogEventConfiguration se publican en cada receptor indicado. Ejemplo: "EHforsyslog" |
facilityName | Nombre de instalación de syslog, como "LOG_USER" o "LOG\LOCAL0" . Para obtener más información, consulte la sección "Facility" de la página man de syslog. |
minSeverity | Nivel de gravedad de syslog (como "LOG_ERR" o "LOG_INFO" ). Para obtener más información, consulte la sección "Level" de la página man de syslog. La extensión captura eventos enviados al recurso al nivel especificado o uno superior. |
Al especificar syslogEvents
, LAD siempre escribe datos en una tabla denominada LinuxSyslogVer2v0 en Azure Storage. Los mismos datos se pueden escribir en blobs de JSON o instancias de Event Hubs, o ambos. Sin embargo, no puede deshabilitar el almacenamiento de datos en una tabla.
perfCfg
La sección perfCfg
es opcional. Controla la ejecución de consultas arbitrarias de Open Management Infrastructure (OMI).
"perfCfg": [
{
"namespace": "root/scx",
"query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
"table": "LinuxOldMemory",
"frequency": 300,
"sinks": ""
}
]
Elemento | Value |
---|---|
espacio de nombres | (Opcional) Es el espacio de nombres OMI en el que la consulta debería ejecutarse. Si no se especifica, se usa el valor predeterminado "root/scx" . Lo implementan los proveedores multiplataforma de System Center. |
Query | Consulta de OMI que se va a ejecutar. |
table | (Opcional) Es la tabla de Azure Storage, en la cuenta de almacenamiento designada. Para obtener más información, consulte la Configuración protegida. |
frequency | (Opcional) Número de segundos entre las ejecuciones de consulta. El valor predeterminado es 300 (5 minutos). El valor mínimo es de 15 segundos. |
sinks | (Opcional) Lista de nombres separada por comas de más receptores en los que deberían publicarse los resultados de las métricas de muestra sin procesar. Ni la extensión ni las Métricas de Azure Monitor computan ninguna agregación de estos ejemplos sin procesar. |
Debe especificarse "table"
o "sinks"
, o ambos.
fileLogs
La sección fileLogs
controla la captura de los archivos de registro. LAD captura las líneas de texto nuevas a medida que se escriben en el archivo. A continuación, las escribe en filas de la tabla o en cualquier receptor especificado (como JsonBlob
y EventHub
).
Nota
Los elementos fileLogs
se capturan mediante un subcomponente de LAD denominado omsagent
. Para recopilar fileLogs
, asegúrese de que el usuario omsagent
tiene permisos de lectura en los archivos que haya especificado. El usuario también debe tener permisos de ejecución en todos los directorios de la ruta de acceso a ese archivo. Después de instalar LAD, puede comprobar los permisos mediante la ejecución de sudo su omsagent -c 'cat /path/to/file'
.
"fileLogs": [
{
"file": "/var/log/mydaemonlog",
"table": "MyDaemonEvents",
"sinks": ""
}
]
Elemento | Value |
---|---|
archivo | Ruta de acceso completa del archivo de registro que va a inspeccionarse y capturarse. El nombre de la ruta de acceso debe dar nombre a un único archivo. No puede nombrar un directorio ni puede contener caracteres comodín. La cuenta de usuario omsagent debe tener acceso de lectura a la ruta de acceso del archivo. |
table | (Opcional) Tabla de Azure Storage en la que se escriben nuevas líneas de la "cola" del archivo. La tabla debe estar en la cuenta de almacenamiento designada, tal como se especificó en la configuración protegida. |
sinks | (Opcional) Lista de nombres separada por comas de receptores adicionales a los que se envían líneas de registro. |
Debe especificarse "table"
o "sinks"
, o ambos.
Métricas admitidas por el proveedor de builtin
El proveedor de métricas builtin
es una fuente de las métricas más interesantes para una gran cantidad de usuarios. Estas métricas se dividen en cinco clases amplias:
- Procesador
- Memoria
- Red
- Sistema de archivos
- Disco
Métricas builtin para la clase Processor
La clase de métricas Processor proporciona información sobre el uso del procesador en la máquina virtual. Cuando se agregan porcentajes, el resultado es el promedio de todas las CPU.
En una VM con dos vCPU, si una está ocupada al 100 % y la otra está inactiva al 100 %, el valor de PercentIdleTime
notificado es 50. Si la actividad de cada vCPU es del 50 % durante el mismo período, el resultado indicado también es de 50. En una VM de cuatro vCPU, cuando una está ocupada al 100 % y las otras están inactivas, el valor de PercentIdleTime
notificado es 75.
Contador | Significado |
---|---|
PercentIdleTime | Porcentaje de tiempo del período de agregación durante el que los procesadores ejecutaron el bucle de inactividad del kernel. |
PercentProcessorTime | Porcentaje de tiempo durante el que se ejecutó un subproceso no inactivo. |
PercentIOWaitTime | Porcentaje de tiempo durante el que se esperó la finalización de operaciones de E/S. |
PercentInterruptTime | Porcentaje de tiempo durante el que se ejecutaron interrupciones de hardware o software y DPC (llamadas a procedimiento aplazadas). |
PercentUserTime | Del tiempo no inactivo durante el período de agregación, el porcentaje que se empleó en el modo de usuario en prioridad normal. |
PercentNiceTime | Del tiempo no inactivo, el porcentaje empleado en prioridad disminuida (nice) |
PercentPrivilegedTime | Del tiempo no inactivo, el porcentaje empleado en modo privilegiado (kernel) |
Los cuatro primeros contadores deberían sumar un 100 %. Los tres últimos contadores también suman un 100 %. Estos tres contadores subdividen la suma de PercentProcessorTime
, PercentIOWaitTime
y PercentInterruptTime
.
Para agregar una única métrica de todos los procesadores, establezca "condition": "IsAggregate=TRUE"
. Para obtener una métrica para un procesador específico, como el segundo procesador lógico de una máquina virtual de cuatro vCPU, establezca "condition": "Name=\\"1\\""
. Los números de procesador lógico se encuentran en el rango [0..n-1]
.
Métricas builtin para la clase Memory
La clase de métricas Memory proporciona información sobre el uso, paginación e intercambio de memoria.
Contador | Significado |
---|---|
AvailableMemory | Memoria física disponible en MiB |
PercentAvailableMemory | Memoria física disponible en forma de porcentaje del total de memoria. |
UsedMemory | Memoria física en uso (MiB) |
PercentUsedMemory | Memoria física en uso en forma de porcentaje del total de memoria. |
PagesPerSec | Paginación total (lectura y escritura) |
PagesReadPerSec | Páginas leídas del almacén de respaldo, como el archivo de intercambio, el archivo de programa y el archivo asignado. |
PagesWrittenPerSec | Páginas escritas en el almacén de respaldo, como el archivo de intercambio y el archivo asignado. |
AvailableSwap | Espacio de intercambio sin usar (MiB) |
PercentAvailableSwap | Espacio de intercambio sin usar en forma de porcentaje del total de intercambio. |
UsedSwap | Espacio de intercambio (MiB) en uso |
PercentUsedSwap | Espacio de intercambio en uso en forma de porcentaje del total de intercambio. |
Esta clase de métrica tiene solo una instancia. El atributo "condition"
no tiene valores de configuración útiles y debería omitirse.
Métricas builtin para la clase Network
La clase de métricas Network proporciona información sobre la actividad de red de una interfaz de red individual desde el inicio.
LAD no expone métricas de ancho de banda. Estas se pueden obtener a partir de las métricas de host.
Contador | Significado |
---|---|
BytesTransmitted | Total de bytes enviados desde el inicio. |
BytesReceived | Total de bytes recibidos desde el inicio. |
BytesTotal | Total de bytes enviados o recibidos desde el inicio.estrella. |
PacketsTransmitted | Total de paquetes enviados desde el inicio. |
PacketsReceived | Total de paquetes recibidos desde el inicio. |
TotalRxErrors | Número de errores de recepción desde el inicio. |
TotalTxErrors | Número de errores de transmisión desde el inicio. |
TotalCollisions | Número de colisiones notificadas por los puertos de red desde el inicio. |
Aunque la clase Network está instanciada, LAD no admite la captura de agregados de métricas Network de todos los dispositivos de red. Para obtener las métricas de una interfaz instanciada, como eth0, establezca "condition": "InstanceID=\\"eth0\\""
.
Métricas "builtin" para la clase del sistema de archivos.
La clase de métricas del sistema de archivos proporciona información acerca del uso del sistema de archivos. Los valores absolutos y porcentuales se notifican tal como se mostrarían a un usuario normal (no raíz).
Contador | Significado |
---|---|
FreeSpace | Espacio disponible en disco en bytes |
UsedSpace | Espacio usado en disco en bytes |
PercentFreeSpace | Porcentaje de espacio libre |
PercentUsedSpace | Porcentaje de espacio usado |
PercentFreeInodes | Porcentaje de nodos de índice sin usar (inodes). |
PercentUsedInodes | Porcentaje de inodes asignados (en uso) sumado de todos los sistemas de archivos. |
BytesReadPerSecond | Bytes leídos por segundo |
BytesWrittenPerSecond | Bytes escritos por segundo |
BytesPerSecond | Bytes leídos o escritos por segundo |
ReadsPerSecond | Operaciones de lectura por segundo |
WritesPerSecond | Operaciones de escritura por segundo |
TransfersPerSecond | Operaciones de lectura o escritura por segundo |
Puede obtener valores agregados de todos los archivos del sistema si establece "condition": "IsAggregate=True"
. Obtenga los valores para un sistema de archivos montado específico, como "/mnt"
; para ello, establezca "condition": 'Name="/mnt"'
.
Nota
Si usa Azure Portal en lugar de JSON, el formato correcto para el campo de condición es Name='/mnt'
.
Métricas builtin para la clase Disk
La clase de métricas Disk proporciona información sobre el uso de dispositivos de disco. Estas estadísticas se aplican a toda la unidad.
Cuando un dispositivo tiene varios sistemas de archivos, los contadores para dicho dispositivo se agregan, de hecho, en todos los sistemas de archivos.
Contador | Significado |
---|---|
ReadsPerSecond | Operaciones de lectura por segundo |
WritesPerSecond | Operaciones de escritura por segundo |
TransfersPerSecond | Total de operaciones por segundo |
AverageReadTime | Promedio de segundos por operación de lectura |
AverageWriteTime | Promedio de segundos por operación de escritura |
AverageTransferTime | Promedio de segundos por operación |
AverageDiskQueueLength | Promedio de operaciones de disco en cola |
ReadBytesPerSecond | Número de bytes leídos por segundo |
WriteBytesPerSecond | Número de bytes escritos por segundo |
BytesPerSecond | Número de bytes leídos o escritos por segundo |
Puede obtener valores agregados de todos los disco si establece "condition": "IsAggregate=True"
. Para obtener información para un dispositivo en concreto (por ejemplo, /dev/sdf1
), establezca "condition": "Name=\\"/dev/sdf1\\""
.
Instalación y configuración de LAD 3.0
Azure CLI
Si la configuración protegida se encuentra en el archivo ProtectedSettings.json y la información de configuración pública está en PublicSettings.json, ejecute este comando.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic --version 3.0 --resource-group <resource_group_name> --vm-name <vm_name> --protected-settings ProtectedSettings.json --settings PublicSettings.json
El comando supone que se está usando el modo de Azure Resource Manager de la CLI de Azure. Si quiere configurar LAD para las VM con el modelo de implementación clásica, cambie al modo "asm" (azure config mode asm
) y omita el nombre del grupo de recursos en el comando.
Para obtener más información, consulte la documentación de la CLI multiplataforma.
PowerShell
Si la configuración protegida se encuentra en la variable $protectedSettings
y la información de configuración pública está en la variable $publicSettings
, ejecute este comando:
Set-AzVMExtension -ResourceGroupName <resource_group_name> -VMName <vm_name> -Location <vm_location> -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0
Configuración de LAD 3.0 de ejemplo
Conforme a las definiciones anteriores, esta sección incluye un ejemplo de configuración de la extensión LAD 3.0 y una explicación. Para aplicar este ejemplo a su caso, use su propio nombre de cuenta de almacenamiento, token de SAS de cuenta y tokens de SAS de Event Hubs.
Nota
Dependiendo de si usa la CLI de Azure o PowerShell para instalar LAD, el método para proporcionar la configuración pública y protegida es diferente:
- Si está usando la CLI de Azure, guarde la siguiente configuración en ProtectedSettings.json y PublicSettings.json para usarla con el comando de ejemplo anterior.
- Si está usando PowerShell, guarde la siguiente configuración en
$protectedSettings
y$publicSettings
mediante la ejecución de$protectedSettings = '{ ... }'
.
Configuración protegida
La configuración protegida define:
- Una cuenta de almacenamiento.
- Un token de SAS de cuenta coincidente.
- Varios receptores (
JsonBlob
oEventHub
con tokens de SAS).
{
"storageAccountName": "yourdiagstgacct",
"storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
"sinksConfig": {
"sink": [
{
"name": "SyslogJsonBlob",
"type": "JsonBlob"
},
{
"name": "FilelogJsonBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuJsonBlob",
"type": "JsonBlob"
},
{
"name": "MyJsonMetricsBlob",
"type": "JsonBlob"
},
{
"name": "LinuxCpuEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
},
{
"name": "MyMetricEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
},
{
"name": "LoggingEventHub",
"type": "EventHub",
"sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
}
]
}
}
Configuración pública
Los valores públicos hacen que LAD:
- Cargue métricas de porcentaje de tiempo de procesador y espacio usado en disco en la tabla
WADMetrics*
. - Cargue mensajes de la instalación de syslog
"user"
y la gravedad"info"
en la tablaLinuxSyslog*
. - Cargue los resultados de la consulta OMI sin procesar (
PercentProcessorTime
yPercentIdleTime
) en la tabla denominadaLinuxCPU
. - Cargue líneas anexadas en el archivo
/var/log/myladtestlog
en la tablaMyLadTestLog
.
En cualquier caso, también se cargan datos en:
- Azure Blob Storage. El nombre del contenedor es el que se definió en el receptor
JsonBlob
. - El punto de conexión de Event Hubs, tal y como se especificó en el receptor
EventHub
.
{
"StorageAccount": "yourdiagstgacct",
"ladCfg": {
"sampleRateInSeconds": 15,
"diagnosticMonitorConfiguration": {
"performanceCounters": {
"sinks": "MyMetricEventHub,MyJsonMetricsBlob",
"performanceCounterConfiguration": [
{
"unit": "Percent",
"type": "builtin",
"counter": "PercentProcessorTime",
"counterSpecifier": "/builtin/Processor/PercentProcessorTime",
"annotation": [
{
"locale": "en-us",
"displayName": "Aggregate CPU %utilization"
}
],
"condition": "IsAggregate=TRUE",
"class": "Processor"
},
{
"unit": "Bytes",
"type": "builtin",
"counter": "UsedSpace",
"counterSpecifier": "/builtin/FileSystem/UsedSpace",
"annotation": [
{
"locale": "en-us",
"displayName": "Used disk space on /"
}
],
"condition": "Name=\"/\"",
"class": "Filesystem"
}
]
},
"metrics": {
"metricAggregation": [
{
"scheduledTransferPeriod": "PT1H"
},
{
"scheduledTransferPeriod": "PT1M"
}
],
"resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
},
"eventVolume": "Large",
"syslogEvents": {
"sinks": "SyslogJsonBlob,LoggingEventHub",
"syslogEventConfiguration": {
"LOG_USER": "LOG_INFO"
}
}
}
},
"perfCfg": [
{
"query": "SELECT PercentProcessorTime, PercentIdleTime FROM SCX_ProcessorStatisticalInformation WHERE Name='_TOTAL'",
"table": "LinuxCpu",
"frequency": 60,
"sinks": "LinuxCpuJsonBlob,LinuxCpuEventHub"
}
],
"fileLogs": [
{
"file": "/var/log/myladtestlog",
"table": "MyLadTestLog",
"sinks": "FilelogJsonBlob,LoggingEventHub"
}
]
}
El elemento resourceId
de la configuración debe coincidir con el de la VM o el del conjunto de escalado de máquinas virtuales.
- La característica de creación de gráficos y desencadenamiento de alertas de métricas de la plataforma de Azure conoce el elemento
resourceId
de la VM en la que se esté trabajando. Espera encontrar los datos de la VM mediante el elementoresourceId
de la clave de búsqueda. - Si usa la escalabilidad automática de Azure, el elemento
resourceId
de la configuración de escalabilidad automática debe coincidir con elresourceId
que usa LAD. - El elemento
resourceId
está integrado en los nombres de los blobs JSON que ha escrito LAD.
Ver los datos
Use Azure Portal para consultar los datos de rendimiento o establecer alertas:
Los datos de performanceCounters
siempre se almacenan en una tabla de Azure Storage. Las API de Azure Storage están disponibles para múltiples lenguajes y plataformas.
Los datos enviados a los receptores de JsonBlob
se almacenan en blobs de la cuenta de almacenamiento a los que se dio nombre en la configuración protegida. Puede consumir los datos de blob mediante cualquier API de Azure Blob Storage.
También puede usar las siguientes herramientas de la interfaz de usuario para acceder a los datos de Azure Storage:
- Explorador de servidores de Visual Studio
- Explorador de Azure Storage
La siguiente captura de pantalla de una sesión del Explorador de Azure Storage muestra las tablas y los contenedores de Azure Storage generados a partir de una extensión de LAD 3.0 configurada correctamente en una VM de prueba. La imagen no coincide exactamente con la configuración de ejemplo de LAD 3.0.
Para obtener más información acerca de cómo consumir mensajes publicados en un punto de conexión de Event Hubs, consulte la documentación de Event Hubs pertinente.
Pasos siguientes
- En Azure Monitor, cree alertas para las métricas que recopile.
- Cree gráficos de supervisión para las métricas.
- Cree un conjunto de escalado de máquinas virtuales con sus propias métricas para controlar la escalabilidad automática.