Recopila registros de VMware ESXi

Compatible con:

Descripción general

Este analizador extrae campos de los registros de syslog y de formato JSON de VMware ESXi. Normaliza la variedad de formatos de registro de ESXi en una estructura común y, luego, propaga los campos de la UDM según los valores extraídos, lo que incluye el manejo de casos específicos para diferentes servicios de ESXi, como crond, named y sshd, con archivos de inclusión.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a VMWare ESX.
  • Asegúrate de tener un host de Windows 2012 SP2 o una versión posterior, o bien Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

  1. Para la instalación de Windows, ejecuta la siguiente secuencia de comandos: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Para la instalación de Linux, ejecuta la siguiente secuencia de comandos: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Puedes encontrar opciones de instalación adicionales en esta guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede a la máquina en la que está instalado BindPlane.
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: 
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Reinicia el agente de BindPlane para aplicar los cambios con el siguiente comando: sudo systemctl bindplane restart

Permite la regla de firewall de syslog de ESXi

  1. Ve a Herramientas de redes > Reglas de firewall.
  2. Busca syslog en la columna Nombre.
  3. Haz clic en Editar la configuración.
  4. Actualiza el puerto tcp o udp que configuraste en BindPlane.
  5. Haz clic en Guardar.
  6. Mantén seleccionada la línea de syslog.
  7. Selecciona Acciones > Habilitar.

Cómo exportar Syslog desde VMware ESXi con el cliente de vSphere

  1. Accede a tu host ESXi con el cliente de vSphere.
  2. Ve a Administrar > Sistema > Configuración avanzada.
  3. Busca la clave Syslog.global.logHost en la lista.
  4. Selecciona la clave y haz clic en Editar opción.
  5. Ingresa <protocol>://<destination_IP>:<port>
    • Reemplaza <protocol> por tcp (si configuraste BindPlane para usar UDP, escribe udp).
    • Reemplaza <destination_IP> por la dirección IP de tu agente de BindPlane.
    • Reemplaza <port> por el puerto configurado anteriormente en BindPlane.
  6. Haz clic en Guardar.

Opcional: Exporta Syslog desde VMware ESXi con SSH

  1. Conéctate a tu host ESXi con SSH.
  2. Usa el comando esxcli system syslog config set --loghost=<protocol>://<destination_IP>:<port>.
    • Reemplaza <protocol> por tcp (si configuraste BindPlane para usar UDP, escribe udp).
    • Reemplaza <destination_IP> por la dirección IP de tu agente de BindPlane.
    • Reemplaza <port> por el puerto configurado anteriormente en BindPlane.
  3. Para reiniciar el servicio de syslog, ingresa el comando /etc/init.d/syslog restart.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
@fields.alias event.idm.read_only_udm.principal.cloud.project.alias Se asigna directamente desde el campo @fields.alias del registro JSON.
@fields.company_name event.idm.read_only_udm.principal.user.company_name Se asigna directamente desde el campo @fields.company_name del registro JSON.
@fields.facility event.idm.read_only_udm.principal.resource.type Se asigna directamente desde el campo @fields.facility del registro JSON.
@fields.host event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asigna directamente desde el campo @fields.host del registro JSON.
@fields.privatecloud_id event.idm.read_only_udm.principal.cloud.project.id Se asigna directamente desde el campo @fields.privatecloud_id del registro JSON.
@fields.privatecloud_name event.idm.read_only_udm.principal.cloud.project.name Se asigna directamente desde el campo @fields.privatecloud_name del registro JSON.
@fields.procid event.idm.read_only_udm.principal.process.pid Se asigna directamente desde el campo @fields.procid del registro JSON.
@fields.region_id event.idm.read_only_udm.principal.location.country_or_region Se asigna directamente desde el campo @fields.region_id del registro JSON.
@fields.severity event.idm.read_only_udm.security_result.severity Se asigna desde el campo @fields.severity del registro JSON. Si el valor es "info" o similar, se asigna a "INFORMATIONAL".
@timestamp event.idm.read_only_udm.metadata.event_timestamp Se analiza y se convierte en un objeto de marca de tiempo del campo @timestamp del registro con el filtro date.
adapter event.idm.read_only_udm.target.resource.name Se asignan directamente desde el campo adapter del registro sin procesar.
action event.idm.read_only_udm.security_result.action Se asignan directamente desde el campo action del registro sin procesar. Se usan valores como "ALLOW" y "BLOCK".
action event.idm.read_only_udm.security_result.action_details Se asignan directamente desde el campo action del registro sin procesar. Se usan valores como "Redirect".
administrative_domain event.idm.read_only_udm.principal.administrative_domain Se asignan directamente desde el campo administrative_domain del registro sin procesar.
agent.hostname event.idm.read_only_udm.intermediary.hostname Se asigna directamente desde el campo agent.hostname del registro JSON.
agent.id event.idm.read_only_udm.intermediary.asset.id Se asigna directamente desde el campo agent.id del registro JSON.
agent.name event.idm.read_only_udm.intermediary.asset.name Se asigna directamente desde el campo agent.name del registro JSON.
agent.type event.idm.read_only_udm.intermediary.asset.type Se asigna directamente desde el campo agent.type del registro JSON.
agent.version event.idm.read_only_udm.intermediary.asset.version Se asigna directamente desde el campo agent.version del registro JSON.
app_name event.idm.read_only_udm.principal.application Se asignan directamente desde el campo app_name del registro sin procesar.
app_protocol event.idm.read_only_udm.network.application_protocol Se asignan directamente desde el campo app_protocol del registro sin procesar. Si el valor coincide con "http" (sin distinción entre mayúsculas y minúsculas), se asigna a "HTTP".
application event.idm.read_only_udm.principal.application Se asigna directamente desde el campo program del registro JSON.
cmd event.idm.read_only_udm.target.process.command_line Se asignan directamente desde el campo cmd del registro sin procesar.
collection_time event.idm.read_only_udm.metadata.event_timestamp Los nanosegundos del campo collection_time se agregan a los segundos del campo collection_time para crear el event_timestamp.
data event.idm.read_only_udm.metadata.description Se analiza el mensaje de registro sin procesar y se extraen las partes relevantes para propagar el campo de descripción.
descrip event.idm.read_only_udm.metadata.description Se asignan directamente desde el campo descrip del registro sin procesar.
dns.answers.data event.idm.read_only_udm.network.dns.answers.data Se asigna directamente desde el campo dns.answers.data del registro JSON.
dns.answers.ttl event.idm.read_only_udm.network.dns.answers.ttl Se asigna directamente desde el campo dns.answers.ttl del registro JSON.
dns.answers.type event.idm.read_only_udm.network.dns.answers.type Se asigna directamente desde el campo dns.answers.type del registro JSON.
dns.questions.name event.idm.read_only_udm.network.dns.questions.name Se asigna directamente desde el campo dns.questions.name del registro JSON.
dns.questions.type event.idm.read_only_udm.network.dns.questions.type Se asigna directamente desde el campo dns.questions.type del registro JSON.
dns.response event.idm.read_only_udm.network.dns.response Se asigna directamente desde el campo dns.response del registro JSON.
ecs.version event.idm.read_only_udm.metadata.product_version Se asigna directamente desde el campo ecs.version del registro JSON.
event_message event.idm.read_only_udm.metadata.description Se asigna directamente desde el campo event_message del registro JSON.
event_metadata event.idm.read_only_udm.principal.process.product_specific_process_id El campo event_metadata se analiza para extraer el valor opID, que luego se antepone con "opID:" y se asigna a la UDM.
event_type event.idm.read_only_udm.metadata.event_type Se asigna directamente desde el campo event_type del registro JSON.
filepath event.idm.read_only_udm.target.file.full_path Se asignan directamente desde el campo filepath del registro sin procesar.
fields.company_name event.idm.read_only_udm.principal.user.company_name Se asigna directamente desde el campo fields.company_name del registro JSON.
fields.facility event.idm.read_only_udm.principal.resource.type Se asigna directamente desde el campo fields.facility del registro JSON.
fields.host event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asigna directamente desde el campo fields.host del registro JSON.
fields.privatecloud_id event.idm.read_only_udm.principal.cloud.project.id Se asigna directamente desde el campo fields.privatecloud_id del registro JSON.
fields.privatecloud_name event.idm.read_only_udm.principal.cloud.project.name Se asigna directamente desde el campo fields.privatecloud_name del registro JSON.
fields.procid event.idm.read_only_udm.principal.process.pid Se asigna directamente desde el campo fields.procid del registro JSON.
fields.region_id event.idm.read_only_udm.principal.location.country_or_region Se asigna directamente desde el campo fields.region_id del registro JSON.
fields.severity event.idm.read_only_udm.security_result.severity Se asigna desde el campo fields.severity del registro JSON. Si el valor es "info" o similar, se asigna a "INFORMATIONAL".
host.architecture event.idm.read_only_udm.principal.asset.architecture Se asigna directamente desde el campo host.architecture del registro JSON.
host.containerized event.idm.read_only_udm.principal.asset.containerized Se asigna directamente desde el campo host.containerized del registro JSON.
host.hostname event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asigna directamente desde el campo host.hostname del registro JSON.
host.id event.idm.read_only_udm.principal.asset.id Se asigna directamente desde el campo host.id del registro JSON.
host.ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Se asigna directamente desde el campo host.ip del registro JSON.
host.mac event.idm.read_only_udm.principal.mac, event.idm.read_only_udm.principal.asset.mac Se asigna directamente desde el campo host.mac del registro JSON.
host.name event.idm.read_only_udm.principal.asset.name Se asigna directamente desde el campo host.name del registro JSON.
host.os.codename event.idm.read_only_udm.principal.asset.os.codename Se asigna directamente desde el campo host.os.codename del registro JSON.
host.os.family event.idm.read_only_udm.principal.asset.os.family Se asigna directamente desde el campo host.os.family del registro JSON.
host.os.kernel event.idm.read_only_udm.principal.asset.os.kernel Se asigna directamente desde el campo host.os.kernel del registro JSON.
host.os.name event.idm.read_only_udm.principal.asset.os.name Se asigna directamente desde el campo host.os.name del registro JSON.
host.os.platform event.idm.read_only_udm.principal.asset.os.platform Se asigna directamente desde el campo host.os.platform del registro JSON.
host.os.version event.idm.read_only_udm.principal.asset.os.version Se asigna directamente desde el campo host.os.version del registro JSON.
iporhost event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asignan directamente desde el campo iporhost del registro sin procesar.
iporhost event.idm.read_only_udm.principal.ip Se asigna directamente desde el campo iporhost del registro sin procesar si es una dirección IP.
iporhost1 event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asignan directamente desde el campo iporhost1 del registro sin procesar.
kv_data1 event.idm.read_only_udm.principal.process.product_specific_process_id El campo kv_data1 se analiza para extraer el valor opID o sub, que luego se antepone con "opID:" o "sub:", respectivamente, y se asigna a la UDM.
kv_msg event.idm.read_only_udm.additional.fields El campo kv_msg se analiza como pares clave-valor y se agrega al array additional_fields en la UDM.
kv_msg1 event.idm.read_only_udm.additional.fields El campo kv_msg1 se analiza como pares clave-valor y se agrega al array additional_fields en la UDM.
lbdn event.idm.read_only_udm.target.hostname Se asignan directamente desde el campo lbdn del registro sin procesar.
log.source.address event.idm.read_only_udm.observer.hostname Se asigna directamente desde el campo log.source.address del registro JSON y solo se toma la parte del nombre de host.
log_event.original event.idm.read_only_udm.metadata.description Se asigna directamente desde el campo event.original del registro JSON.
log_level event.idm.read_only_udm.security_result.severity_details Se asigna directamente desde el campo log_level del registro JSON.
logstash.collect.host event.idm.read_only_udm.observer.hostname Se asigna directamente desde el campo logstash.collect.host del registro JSON.
logstash.collect.timestamp event.idm.read_only_udm.metadata.ingested_timestamp Se analiza y se convierte en un objeto de marca de tiempo del campo logstash.collect.timestamp del registro con el filtro date.
logstash.ingest.host event.idm.read_only_udm.intermediary.hostname Se asigna directamente desde el campo logstash.ingest.host del registro JSON.
logstash.ingest.timestamp event.idm.read_only_udm.metadata.ingested_timestamp Se analiza y se convierte en un objeto de marca de tiempo del campo logstash.ingest.timestamp del registro con el filtro date.
logstash.process.host event.idm.read_only_udm.intermediary.hostname Se asigna directamente desde el campo logstash.process.host del registro JSON.
logstash.process.timestamp event.idm.read_only_udm.metadata.ingested_timestamp Se analiza y se convierte en un objeto de marca de tiempo del campo logstash.process.timestamp del registro con el filtro date.
log_type event.idm.read_only_udm.metadata.log_type Se asignan directamente desde el campo log_type del registro sin procesar.
message event.idm.read_only_udm.metadata.description Se asigna directamente desde el campo message del registro JSON.
message_to_process event.idm.read_only_udm.metadata.description Se asignan directamente desde el campo message_to_process del registro sin procesar.
metadata.event_type event.idm.read_only_udm.metadata.event_type Se establece en "GENERIC_EVENT" inicialmente y, luego, es posible que se reemplace en función del service analizado o de otro contenido de registro. Pueden ser valores como PROCESS_LAUNCH, NETWORK_CONNECTION, USER_LOGIN, etcétera.
metadata.product_event_type event.idm.read_only_udm.metadata.product_event_type Se asignan directamente desde el campo process_id o prod_event_type del registro sin procesar.
metadata.product_log_id event.idm.read_only_udm.metadata.product_log_id Se asignan directamente desde el campo event_id del registro sin procesar.
metadata.product_name event.idm.read_only_udm.metadata.product_name Establece el valor en “ESX”.
metadata.product_version event.idm.read_only_udm.metadata.product_version Se asigna directamente desde el campo version del registro JSON.
metadata.vendor_name event.idm.read_only_udm.metadata.vendor_name Establece el valor en “VMWARE”.
msg event.idm.read_only_udm.metadata.description Se asignan directamente desde el campo msg del registro sin procesar.
network.application_protocol event.idm.read_only_udm.network.application_protocol Establece el valor en "DNS" si service es "named", "HTTPS" si el puerto es 443 o "HTTP" si app_protocol coincide con "http".
network.direction event.idm.read_only_udm.network.direction Se determina a partir de palabras clave en el registro sin procesar, como "IN", "OUT", "->". Puede ser INBOUND o OUTBOUND.
network.http.method event.idm.read_only_udm.network.http.method Se asignan directamente desde el campo method del registro sin procesar.
network.http.parsed_user_agent event.idm.read_only_udm.network.http.parsed_user_agent Se analiza desde el campo useragent con el filtro convert.
network.http.referral_url event.idm.read_only_udm.network.http.referral_url Se asignan directamente desde el campo prin_url del registro sin procesar.
network.http.response_code event.idm.read_only_udm.network.http.response_code Se asigna directamente desde el campo status_code del registro sin procesar y se convierte en un número entero.
network.http.user_agent event.idm.read_only_udm.network.http.user_agent Se asignan directamente desde el campo useragent del registro sin procesar.
network.ip_protocol event.idm.read_only_udm.network.ip_protocol Se determina a partir de palabras clave en el registro sin procesar, como "TCP" o "UDP".
network.received_bytes event.idm.read_only_udm.network.received_bytes Se asigna directamente desde el campo rec_bytes del registro sin procesar y se convierte en un número entero sin signo.
network.sent_bytes event.idm.read_only_udm.network.sent_bytes Se extrae del campo message_to_process del registro sin procesar.
network.session_id event.idm.read_only_udm.network.session_id Se asignan directamente desde el campo session del registro sin procesar.
pid event.idm.read_only_udm.target.process.parent_process.pid Se asignan directamente desde el campo pid del registro sin procesar.
pid event.idm.read_only_udm.principal.process.pid Se asigna directamente desde el campo pid del registro JSON.
pid event.idm.read_only_udm.target.process.pid Se asignan directamente desde el campo pid del registro sin procesar.
port event.idm.read_only_udm.target.port Se asigna directamente desde el campo port del registro JSON.
principal.application event.idm.read_only_udm.principal.application Se asignan directamente desde el campo app_name o service del registro sin procesar.
principal.asset.hostname event.idm.read_only_udm.principal.asset.hostname Se asignan directamente desde el campo principal_hostname o iporhost del registro sin procesar.
principal.asset.ip event.idm.read_only_udm.principal.asset.ip Se asignan directamente desde el campo syslog_ip del registro sin procesar.
principal.hostname event.idm.read_only_udm.principal.hostname Se asignan directamente desde el campo principal_hostname o iporhost del registro sin procesar.
principal.ip event.idm.read_only_udm.principal.ip Se asignan directamente desde el campo iporhost o syslog_ip del registro sin procesar.
principal.port event.idm.read_only_udm.principal.port Se asignan directamente desde el campo srcport del registro sin procesar.
principal.process.command_line event.idm.read_only_udm.principal.process.command_line Se asignan directamente desde el campo cmd del registro sin procesar.
principal.process.parent_process.pid event.idm.read_only_udm.principal.process.parent_process.pid Se asignan directamente desde el campo parent_pid del registro sin procesar.
principal.process.pid event.idm.read_only_udm.principal.process.pid Se asignan directamente desde el campo process_id del registro sin procesar.
principal.process.product_specific_process_id event.idm.read_only_udm.principal.process.product_specific_process_id Se extrae del campo message_to_process del registro sin procesar, que suele tener el prefijo "opID:".
principal.url event.idm.read_only_udm.principal.url Se asignan directamente desde el campo prin_url del registro sin procesar.
principal.user.company_name event.idm.read_only_udm.principal.user.company_name Se asigna directamente desde el campo fields.company_name del registro JSON.
principal.user.userid event.idm.read_only_udm.principal.user.userid Se asignan directamente desde el campo USER del registro sin procesar.
priority event.idm.read_only_udm.metadata.product_event_type Se asignan directamente desde el campo priority del registro sin procesar.
program event.idm.read_only_udm.principal.application Se asigna directamente desde el campo program del registro JSON.
qname event.idm.read_only_udm.network.dns.questions.name Se asignan directamente desde el campo qname del registro sin procesar.
response_data event.idm.read_only_udm.network.dns.answers.data Se asignan directamente desde el campo response_data del registro sin procesar.
response_rtype event.idm.read_only_udm.network.dns.answers.type Se asignan directamente desde el campo response_rtype del registro sin procesar. Se extrae el tipo de registro DNS numérico.
response_ttl event.idm.read_only_udm.network.dns.answers.ttl Se asignan directamente desde el campo response_ttl del registro sin procesar.
rtype event.idm.read_only_udm.network.dns.questions.type Se asignan directamente desde el campo rtype del registro sin procesar. Se extrae el tipo de registro DNS numérico.
security_result.action event.idm.read_only_udm.security_result.action Se determina a partir de palabras clave o el estado en el registro sin procesar. Puede ser ALLOW o BLOCK.
security_result.action_details event.idm.read_only_udm.security_result.action_details Se extrae del mensaje de registro sin procesar y proporciona más contexto sobre la acción que se realizó.
security_result.category event.idm.read_only_udm.security_result.category Establece en POLICY_VIOLATION si el registro indica que coincide con una regla de firewall.
security_result.description event.idm.read_only_udm.security_result.description Se extrae del mensaje de registro sin procesar y proporciona más contexto sobre el resultado de seguridad.
security_result.rule_id event.idm.read_only_udm.security_result.rule_id Se asignan directamente desde el campo rule_id del registro sin procesar.
security_result.severity event.idm.read_only_udm.security_result.severity Se determina a partir de palabras clave en el registro sin procesar, como "info", "warning", "error". Puede ser INFORMATIONAL, LOW, MEDIUM o HIGH.
security_result.severity_details event.idm.read_only_udm.security_result.severity_details Se asignan directamente desde el campo severity o log.syslog.severity.name del registro sin procesar.
security_result.summary event.idm.read_only_udm.security_result.summary Se extrae del mensaje de registro sin procesar y proporciona un resumen conciso del resultado de seguridad.
service event.idm.read_only_udm.principal.application Se asignan directamente desde el campo service del registro sin procesar.
source event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Se asignan directamente desde el campo source del registro sin procesar.
src.file.full_path event.idm.read_only_udm.src.file.full_path Se extrae del mensaje de registro sin procesar.
src.hostname event.idm.read_only_udm.src.hostname Se asignan directamente desde el campo src.hostname del registro sin procesar.
src_ip event.idm.read_only_udm.principal.ip Se asignan directamente desde el campo src_ip del registro sin procesar.
src_mac_address event.idm.read_only_udm.principal.mac Se asignan directamente desde el campo src_mac_address del registro sin procesar.
srcport event.idm.read_only_udm.principal.port Se asignan directamente desde el campo srcport del registro sin procesar.
srcip event.idm.read_only_udm.principal.ip Se asignan directamente desde el campo srcip del registro sin procesar.
subtype event.idm.read_only_udm.metadata.event_type Se asignan directamente desde el campo subtype del registro sin procesar.
tags event.idm.read_only_udm.metadata.tags Se asigna directamente desde el campo tags del registro JSON.
target.application event.idm.read_only_udm.target.application Se asignan directamente desde el campo target_application del registro sin procesar.
target.file.full_path event.idm.read_only_udm.target.file.full_path Se extrae del mensaje de registro sin procesar.
target.hostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Se asignan directamente desde el campo target_hostname o iporhost del registro sin procesar.
target.ip event.idm.read_only_udm.target.ip Se asignan directamente desde el campo target_ip del registro sin procesar.
target.mac event.idm.read_only_udm.target.mac Se asignan directamente desde el campo target_mac_address del registro sin procesar.
target.port event.idm.read_only_udm.target.port Se asignan directamente desde el campo target_port del registro sin procesar.
target.process.command_line event.idm.read_only_udm.target.process.command_line Se asignan directamente desde el campo cmd del registro sin procesar.
target.process.parent_process.pid event.idm.read_only_udm.target.process.parent_process.pid Se asignan directamente desde el campo parent_pid del registro sin procesar.
target.process.pid event.idm.read_only_udm.target.process.pid Se asignan directamente desde el campo pid del registro sin procesar.
target.process.product_specific_process_id event.idm.read_only_udm.target.process.product_specific_process_id Se extrae del campo message_to_process del registro sin procesar, que suele tener el prefijo "opID:".
target.resource.name event.idm.read_only_udm.target.resource.name Se asignan directamente desde el campo adapter del registro sin procesar.
target.resource.resource_type event.idm.read_only_udm.target.resource.resource_type Establece en VIRTUAL_MACHINE si el registro indica una operación de VM.
target.resource.type event.idm.read_only_udm.target.resource.type Se establece en SETTING si el registro indica una modificación de configuración.
target.user.userid event.idm.read_only_udm.target.user.userid Se asignan directamente desde el campo target_username o user1 del registro sin procesar.
timestamp event.timestamp Se analiza y se convierte en un objeto de marca de tiempo del campo timestamp o data del registro con el filtro date.
type event.idm.read_only_udm.additional.fields El campo type del registro se agrega al array additional_fields en la UDM con la clave "LogType".
user1 event.idm.read_only_udm.target.user.userid Se asignan directamente desde el campo user1 del registro sin procesar.
useragent event.idm.read_only_udm.network.http.user_agent Se asignan directamente desde el campo useragent del registro sin procesar.
vmw_cluster event.idm.read_only_udm.target.resource.name Se asignan directamente desde el campo vmw_cluster del registro sin procesar.
vmw_datacenter event.idm.read_only_udm.target.resource.name Se asignan directamente desde el campo vmw_datacenter del registro sin procesar.
vmw_host event.idm.read_only_udm.target.ip Se asignan directamente desde el campo vmw_host del registro sin procesar.
vmw_object_id event.idm.read_only_udm.target.resource.id Se asignan directamente desde el campo vmw_object_id del registro sin procesar.
vmw_product event.idm.read_only_udm.target.application Se asignan directamente desde el campo vmw_product del registro sin procesar.
vmw_vcenter event.idm.read_only_udm.target.cloud.availability_zone Se asignan directamente desde el campo vmw_vcenter del registro sin procesar.
vmw_vcenter_id event.idm.read_only_udm.target.cloud.availability_zone.id Se asignan directamente desde el campo vmw_vcenter_id del registro sin procesar.
vmw_vr_ops_appname event.idm.read_only_udm.target.application Se asignan directamente desde el campo vmw_vr_ops_appname del registro sin procesar.
vmw_vr_ops_clustername event.idm.read_only_udm.target.resource.name Se asignan directamente desde el campo vmw_vr_ops_clustername del registro sin procesar.
vmw_vr_ops_clusterrole event.idm.read_only_udm.target.resource.type Se asignan directamente desde el campo vmw_vr_ops_clusterrole del registro sin procesar.

Cambios

2024-06-03

  • Se agregó compatibilidad con un nuevo patrón de registros JSON.

2024-05-09

  • Se agregó compatibilidad con el nuevo patrón de registros “snmpd” y “Rhttpproxy”.
  • Se asignó "prod_event_type" a "metadata.product_event_type".
  • Se asignó "context" a "additional.fields".

2024-02-07

  • Corrección de errores:
  • Se agregaron nuevos patrones de Grok para admitir los registros de SYSLOG que se descartan.
  • Se asignaron "newVersion" y "filter" a "security_result.detection_fields".
  • Se asignó "description" a "security_result.description".

2023-10-10

  • Se modificaron los siguientes nombres de claves JSON con la función gsub:
  • "service" a "serv".
  • "event" a "log_event".
  • De "@timestamp" a "timestamp".
  • De "@version" a "version".
  • Se agregaron nuevos patrones de Grok para controlar los registros JSON con campos nuevos.
  • Se hizo coincidir el campo "timestamp" con los formatos "RFC 3339" y "TIMESTAMP_ISO8601".
  • Se asignó "host.hostname" a "principal.hostname".
  • Se asignó "host.ip" a "principal.ip".
  • Se asignaron "type", "serv.type", "log.syslog.facility.code", "log.syslog.facility.name", "log.syslog.severity.code", "log.syslog.severity.name" y "log.syslog.priority" a "additional.fields".
  • Se asignó "process.name" a "service".
  • Se asignó "version" a "metadata.product_version".
  • Se asignó "severity" a "security_result.severity".

2023-09-25

  • Se agregaron nuevos patrones de Grok para controlar el nuevo tipo de SYSLOG para VMware ESXi.
  • Se asignó "app_name" a "principal.application".
  • Se asignó "severity" a "security_result.severity".

2023-07-17

  • Bug_fix: Se asignó "username" a "target.user.userid".
  • Se asignó "pid" a "principal.process.pid".
  • Se asignó "description" a "metadata.description".

12-06-2023

  • Bug_fix: Se modificó la asignación de "session" para el tipo "vmauthd". Se asignó a "network.session_id".

2022-09-01

  • Bug_fix: Se quitó el espacio de nombres principal de su valor hard-coded.

2022-08-24

  • Mejora: Se agregó un nuevo tipo de fecha para analizar fechas con el formato "aaaa-mm-ddHH:mm:s".

2022-08-03

  • Mejora: Se agregaron los patrones de Grok para controlar los registros con el servicio :- hostd, vmon y vrops.

2022-07-26

  • Mejora:
  • Donde "service" es igual a "Rhttpproxy"
  • Se modificó la asignación de "principal.namespace" de "namespace" a "WALMART".
  • Se asignó "namespace" a "additional.fields".
  • Donde "service" es igual a "crond"
  • Se asignó "parent_pid" a "target.process.parent_process.pid".

2022-07-05

  • Se corrigió un error: Se actualizó el analizador para que coincida con la marca de tiempo en el formato “aaaa-MM-ddThh:mm:ss.SSSS”.

2022-06-13

  • Mejora: Se modificaron o agregaron los patrones de Grok para controlar los registros con el servicio: hostd, sendmail, sshd, sudo, vmcad, vmon, vpxd y vrops.
  • Se corrigió el error "metadata.event_type" para los registros de "vmauthd" de "USER_LOGIN" a "GENERIC_EVENT".

2022-05-02

  • Se corrigió un error: Según el requisito del usuario, la asignación de target.hostname cambió a principal.ip para los registros que tienen el servicio como "Hostd".

2022-04-13

  • Mejora: Se analizaron los registros con los siguientes nombres de servicio: hostd-probe, vmkernel, vmkwarning, Fdm, netcpa, root, hpHelper, snmpd, etcétera.
  • Se asignó logstash.ingest.timestamp a metadata.ingested_timestamp.
  • logstash.ingest.host y logstash.process.host a intermediary.hostname
  • logstash.collect.host a observer.hostname.