Recopilando los LOGs de VMware vCSA en Elasticsearch y visualizándolos en Grafana

¡Venga! ¡otra de logs por favor! En esta ocasión veremos cómo explotar los Logs de nuestro querido entorno de VMware vSphere, desde el vCSA o vCenter Server Appliance redireccionaremos los logs a Logstash para ser procesados y almacenados en Elasticsearch, finalmente podremos visualizarlos de una manera más gráfica con Grafana. Así comprenderemos en tiempo real qué sucede o podremos tener informes con los datos de las últimas 24h, semana, mes… totalmente personalizable, gratis…

 

Bueno, qué decir de vCenter Server que no sepáis ya, sabemos que es el corazón de nuestras infraestructuras virtuales de VMware, que es el portal de acceso a la plataforma, que ahí pasan cosas, a veces raras, hay tareas, tenemos eventos… hay mucha salsa que se cuece y qué menos que sacarle juguillo. Por qué no mandar todos los Logs de vCSA a Logstash, ahí mediante filtros separaremos esos ficheros de texto feos como ellos mismos, tras separar en distintos campos que nos permitan consultar de manera más cómoda será el tiempo de que se almacenen en Elasticsearch para visualizarlos con Kibana o Grafana. Al gusto, como sabéis soy más partidario de este último, pero no tenéis que hacerme caso siempre 😉 Bueno, al tema, desde Grafana podremos ver de manera visual lo recopilado, para ver las alarmas que hayan sucedido, los intentos de logon a la plataforma, al igual que en vCenter podrás filtrar y conocer las Tareas o Eventos, hacer unas tablas cuquis con un campo para buscar algún texto alguna vez, como un usuario y saber qué hizo… 

 

Como es normal, primero obviamente tenemos que tener el Elastic Stack instalado, lo que viene siendo LogstashElasticsearch y Kibana; luego ya podremos ir a nuestro vCSA, a su web de gestión, recordar https://DIRECCION_IP_VCSA:5480, ahí podremos desde la sección de “Syslog” configurar para que saque los Logs a Logstash, así que indicamos la dirección IP a donde mandar los Logs y el puerto que nos interese.

 

input {
        tcp {
                type => "VCSA"
                port => "1515"
                tags => ["VMware,VCSA"]
        }
}

filter {

        if [type] == "VCSA" {
                        grok {
                            match => { "message" => [
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \[%{GREEDYDATA:Tipo_tarea} %{WORD:Log_nivel} %{GREEDYDATA:Titulo} opId=\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} %{INT:Proceso_id} - -  Event \[%{INT:Evento_id}\] \[1-1\] \[%{TIMESTAMP_ISO8601:Log_fecha}\] \[%{GREEDYDATA:Titulo}\] \[%{WORD:Log_nivel}\] \[%{GREEDYDATA:Usuario}\] \[%{DATA:Sitio}\] \[%{INT:Evento_id}\] \[%{GREEDYDATA:Mensaje}\]",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GREEDYDATA:Originator} sub=%{GREEDYDATA:Titulo}\] %{TIMESTAMP_ISO8601:HTTP_fecha} %{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta} %{PROG:HTTP_version} %{INT:HTTP_codigo} %{PROG:HTTP_codigo_respuesta} - %{INT:HTTP_bytes_recibidos} %{INT:HTTP_bytes_enviados} %{INT:HTTP_duracion} %{INT:HTTP_tiempo_respuesta} %{INT:HTTP_req_forwarder} %{IPV4:HTTP_ip_origen1}:%{INT:HTTP_puerto_origen1} %{IPV4:HTTP_ip_destino1}:%{INT:HTTP_puerto_destino1} %{IPV4:HTTP_ip_origen2}:%{INT:HTTP_puerto_origen2} %{IPV4:HTTP_ip_destino2}:%{INT:HTTP_puerto_destino2}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GREEDYDATA:Originator} sub=%{GREEDYDATA:Titulo}\] %{TIMESTAMP_ISO8601:HTTP_fecha} %{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta} %{PROG:HTTP_version} %{INT:HTTP_codigo} %{PROG:HTTP_codigo_respuesta} - %{INT:HTTP_bytes_recibidos} %{INT:HTTP_bytes_enviados} %{INT:HTTP_duracion} %{INT:HTTP_tiempo_respuesta} %{INT:HTTP_req_forwarder} %{IPV4:HTTP_ip_origen1}:%{INT:HTTP_puerto_origen1} %{IPV4:HTTP_ip_destino1}:%{INT:HTTP_puerto_destino1} %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GREEDYDATA:Originator} sub=%{GREEDYDATA:Titulo} opId=%{PROG:Op_id}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \[%{PROG:Log_proceso}\] %{WORD:Log_nivel}\s+opId=%{DATA:Op_id} - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GREEDYDATA:Originator} sub=%{GREEDYDATA:Titulo}\] \[%{DATA:Tipo_unit}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GREEDYDATA:Originator} sub=%{GREEDYDATA:Titulo}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - \[%{HTTPDATE:Log_fecha}\] %{PROG:Log_proceso} \[%{WORD:HTTP_peticion}\] %{IPV4:HTTP_ip_origen1}:%{INT:HTTP_puerto_origen1} to %{HOSTNAME:HTTP_equipo_destino} %{INT:HTTP_puerto_destino1} - %{PROG:HTTP_version} %{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta}\s+\[%{WORD:HTTP_respuesta}\] %{INT:HTTP_codigo} - %{INT:HTTP_bytes} bytes\s+\[%{PROG:HTTP_log_proceso}\] process %{INT:Tiempo_total}ms / commit %{INT:Tiempo_conexion}ms / conn \[\+\]",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso} \[%{DATA:Log_proceso}\] \[opID=%{PROG:Op_id}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Log_proceso}\[%{DATA:Log_proceso}\] \[OpId=%{PROG:Op_id}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \|\s+%{WORD:Log_nivel} \| %{PROG:Log_proceso} \| %{DATA:Log_tarea} \| %{INT:Pid} \| %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \|\s+%{WORD:Log_nivel} \| %{PROG:Log_proceso} \| %{DATA:Log_tarea} \| %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+\[%{TIMESTAMP_ISO8601:Log_fecha}\] \[%{WORD:Log_nivel} \] %{PROG:Log_proceso} %{PROG:Tarea} %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \[%{PROG:Log_proceso}\s+%{WORD:Log_nivel} %{GREEDYDATA:Titulo} opId=%{PROG:Op_id}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \[%{PROG:Log_proceso}\s+%{WORD:Log_nivel} %{GREEDYDATA:Titulo} opId=%{PROG:Op_id} %{WORD:Nipu}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+\[%{TIMESTAMP_ISO8601:Log_fecha}\] %{WORD:Log_nivel}\[%{PROG:Log_proceso}\] - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} %{INT:Log_bytes} %{INT:Pid} %{PROG:Log_proceso} %{INT:HTTP_codigo} \"%{GREEDYDATA:Titulo}\" %{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta} %{PROG:HTTP_version}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} procstate - - - %{DATA:Usuario}\s+%{PROG:Log_pid}\s+%{DATA:CPU}\s+%{DATA:Memoria}\s+%{DATA:MemoriaVirtual}\s+%{DATA:MemoriaProceso}\s+%{DATA:TTY}\s+%{DATA:Stat}\s+%{DATA:Hora_inicio}\s+%{DATA:Tiempo}\s+%{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} sca - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} %{WORD:Log_nivel} %{PROG:Proceso} \[%{PROG:Pool}\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} applmgmt-audit - - - %{TIMESTAMP_ISO8601:Log_fecha}: %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} applmgmt - - - %{TIMESTAMP_ISO8601:Log_fecha} \[%{INT:Evento_id}\]%{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} procstate - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} sca-vmon.std - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vsan-health-main - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vum-log4cpp - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vmcad - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} eam-main - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} cis-license - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vmdird - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} sps-gc - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vstats - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vapi-runtime - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} vpxd-profiler - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} rsyslogd - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} trustmanagement-svcs - - - %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{SYSLOGTIMESTAMP:Fecha} %{PROG:Log_proceso}\[%{INT:Pid}\]: %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{TZ:Zona_horaria} %{PROG:Proceso} %{INT:Log_id}\s+LOG:\s+%{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha}\| %{PROG:Proceso}\| I005: %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{PROG:Proceso} %{WORD:Log_nivel} %{PROG:Tarea} %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} ui-access - - - %{IPV4:HTTP_ip_destino1} %{IPV4:HTTP_ip_origen1} - - \[%{HTTPDATE:Fecha}\] \"%{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta} %{PROG:HTTP_version}\" %{INT:HTTP_codigo} %{PROG:HTTP_codigo_respuesta} - %{DATA:HTTP_bytes_recibidos} %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} eam-access - - - %{IPV4:HTTP_ip_destino1} %{IPV4:HTTP_ip_origen1} - - \[%{HTTPDATE:Fecha}\] \[%{PROG:Log_proceso}\] \"%{WORD:HTTP_log_accion} %{UNIXPATH:HTTP_ruta} %{PROG:HTTP_version}\" %{INT:HTTP_codigo} %{PROG:HTTP_codigo_respuesta} \[Processing time %{INT:Tiempo} msec\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} \[%{PROG:Proceso}\]\[%{WORD:Log_nivel}\] %{PROG:Tarea}: %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} %{PROG:Proceso} %{WORD:Log_nivel} %{PROG:Tarea} %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - \[%{TIMESTAMP_ISO8601:Log_fecha}\] \[%{WORD:Log_nivel}\s+\] %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - - %{TIMESTAMP_ISO8601:Log_fecha} \| %{PROG:Log_proceso} \| %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} CROND %{INT:Pid} - - \(%{USERNAME:Usuario}\) CMD \(%{GREEDYDATA:Mensaje}\)",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} \|\s+%{WORD:Log_nivel} \| %{PROG:Evento_id}\ \| %{PROG:Proceso} \| %{DATA:Tarea} \| %{GREEDYDATA:Mensaje}",
                              "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Fecha} %{HOSTNAME:Servidor_VCSA} %{PROG:Nombre_log} - - -\s+%{TIMESTAMP_ISO8601:Log_fecha} %{PROG:Log_proceso} %{WORD:Log_nivel} %{PROG:Tarea} %{GREEDYDATA:Mensaje}"
                                       ]
                            }
                        }
        }
}

output {

        if ([type]=="VCSA"){

                elasticsearch {
                   index => "vmware_vcsa-%{+YYYY.MM.dd}"
                   hosts => "DIRECCION_IP_ELASTICSEARCH:9200"
                }

        }
}

Ahora ya será el momento de crear el fichero de configuración en Logstash para recibir, tratar y sacar los Logs a Elasticsearch, mismamente le podemos llamar ‘/etc/logstash/conf.d/vmware-vcsa.conf’, donde en el input tendremos el puerto de escucha donde recibirá del vCSA los logs. Luego ya vienen los filtros que como siempre pido disculpas a los sabios, pero son filtros válidos y muy mejorables, pero nos permitirán tratar los logs de un vCSA con versión 7.x. Al final le daremos salida a Elasticsearch, indicamos la IP de destino para almacenar ahí los datos, y seguidos de unos credenciales, no seáis como yo que no indico los parámetros de ‘username’ y ‘password’.

 

Una vez creado el fichero de configuración, recordaremos reiniciar el servicio de Logstash para recargar la nueva configuración. Después, iremos a Kibana y una vez los datos estén entrando ya podremos ir a “Management” > “Stack management” > “Kibana” > “Index Patterns” > “Create index pattern” para crear el patrón del índice, lo dicho, como habitualmente (en este caso y sin las comillas) ‘vmware_vcsa-*’ y tendremos los datos ya en Elasticsearch almacenados de manera correcta. Ahora podríamos conectarnos desde “Discover” a nuestro índice de VMware vCSA y visualizar que está recogiendo datos, que empezamos a tener registros del vCenter…

 

Tras crear el índice en Kibana, ahora en Grafana deberíamos crear un “Data Source” que apunte contra nuestro Elasticsearch y el índice recién creado de VMware vCSA. Luego ya es dejar volar la imaginación, hacer un Dashboard con distintos Paneles, con distintos datos a visualizar, ver los tipos de los Logs, gráficas con recepción por tipo, en tablas para ver datos concretos de por ejemplo los intentos de accesos, correctos, incorrectos, últimas Alarmas, registros del DRS, Eventos, Tareas… umapamundi con las conexiones entrantes si es que eres un valiente que lo tiene público en Internet… un panel de estilo Sankey para ver IPs/usuarios origen/destino… hacer un top con los logs de errores e intentar solucionarlos…

Así que eso, el rollo de siempre, todo esto para intentar ayudar, inspirar… si necesitáis, para coger ideas y mejorarlas, así que con esto podréis ver qué pasa en vuestra plataforma virtual de VMware vSphere, todo lo que suceda en vCenter, en tiempo real, poniendo un refresco automático cada 10 segundos queda muy guay, también nos servirá para analizar el resumen del último día, o conocer cuando algo extraño sucede… Gracias a todos y a más a los que movéis este tipo de contenidos en redes sociales!!! 😉