Saludos amigos, os he contado en el pasado cómo monitorizar vuestro entorno de VMware usando InfluxDB, Telegraf y Grafana, y según el dashboard de Grafana, lo estáis usando unas 4300 personas en vuestros Datacenters. Todo esto es genial, y os agradezco mucho todo el apoyo y que tantas personas tengáis la solución desplegada.
Ahora bien, he leído durante mucho tiempo que en algunos casos estabáis teniendo incidencias a la hora de poder monitorizar los datastores de manera correcta, lo cuál generaba que en el Dashboard no se mostrará de manera correcta, creando mucha frustración, pero esta entrada os asegurará tener todo configurado de manera correcta.
vSphere vCenter – métricas en tiempo real
VMware recolecta información cada 20 segundos desde los ESXi y almacena esta información en memoria RAM del vCenter. Lo cuál hace que sea realmente sencillo y rápido de acceder a esta información mediante telegraf o cualquier otro recolector de información. Toda esta información se almacena solamente durante una hora en el vCenter, en el diagrama seríamos el número 3, accediendo directamente al Performance Manager:
Esta información está limitada sin embargo a los recursos que podemos obtener de los Host ESXi y las VMs, que son los siguientes:
## Hosts
host_metric_include = [
"cpu.coreUtilization.average",
"cpu.costop.summation",
"cpu.demand.average",
"cpu.idle.summation",
"cpu.latency.average",
"cpu.readiness.average",
"cpu.ready.summation",
"cpu.swapwait.summation",
"cpu.usage.average",
"cpu.usagemhz.average",
"cpu.used.summation",
"cpu.utilization.average",
"cpu.wait.summation",
"disk.deviceReadLatency.average",
"disk.deviceWriteLatency.average",
"disk.kernelReadLatency.average",
"disk.kernelWriteLatency.average",
"disk.numberReadAveraged.average",
"disk.numberWriteAveraged.average",
"disk.read.average",
"disk.totalReadLatency.average",
"disk.totalWriteLatency.average",
"disk.write.average",
"mem.active.average",
"mem.latency.average",
"mem.state.latest",
"mem.swapin.average",
"mem.swapinRate.average",
"mem.swapout.average",
"mem.swapoutRate.average",
"mem.totalCapacity.average",
"mem.usage.average",
"mem.vmmemctl.average",
"net.bytesRx.average",
"net.bytesTx.average",
"net.droppedRx.summation",
"net.droppedTx.summation",
"net.errorsRx.summation",
"net.errorsTx.summation",
"net.usage.average",
"power.power.average",
"storageAdapter.numberReadAveraged.average",
"storageAdapter.numberWriteAveraged.average",
"storageAdapter.read.average",
"storageAdapter.write.average",
"sys.uptime.latest",
]
## VMs
## Typical VM metrics (if omitted or empty, all metrics are collected)
# vm_include = [ "/*/vm/**"] # Inventory path to VMs to collect (by default all are collected)
vm_metric_include = [
"cpu.demand.average",
"cpu.idle.summation",
"cpu.latency.average",
"cpu.readiness.average",
"cpu.ready.summation",
"cpu.run.summation",
"cpu.usagemhz.average",
"cpu.used.summation",
"cpu.wait.summation",
"mem.active.average",
"mem.granted.average",
"mem.latency.average",
"mem.swapin.average",
"mem.swapinRate.average",
"mem.swapout.average",
"mem.swapoutRate.average",
"mem.usage.average",
"mem.vmmemctl.average",
"net.bytesRx.average",
"net.bytesTx.average",
"net.droppedRx.summation",
"net.droppedTx.summation",
"net.usage.average",
"power.power.average",
"virtualDisk.numberReadAveraged.average",
"virtualDisk.numberWriteAveraged.average",
"virtualDisk.read.average",
"virtualDisk.readOIO.latest",
"virtualDisk.throughput.usage.average",
"virtualDisk.totalReadLatency.average",
"virtualDisk.totalWriteLatency.average",
"virtualDisk.write.average",
"virtualDisk.writeOIO.latest",
"sys.uptime.latest",
]
# vm_metric_exclude = [] ## Nothing is excluded by default
# vm_instances = true ## true by default
Conociendo ahora esta información, los Ingenieros de InfluxDB han logrado conseguir métricas de hasta 7000VMs en unos 20 segundos, con lo que estoy seguro que vosotros podréis desplegar esta solución en vuestros entornos sin problemas.
vSphere vCenter – métricas históricas
Estas métricas se almacenan en la Base de Datos de VMware vCenter, y son mucho más pesadas y costosas de realizar, además de tardar más tiempo en devolver la respuesta, etc. Estas métricas se almacenan en intervalos de 5 minutos, 30 minutos, 2 horas, y 24 horas. Pero nosotros usaremos el rango de cada 5 minutos para tener información actualizada. En el diagrama, lo que queremos aquí es acceder a la información del número 2:
Esta información está limitada a las métricas que podemos obtener de los Clúster, Datacenter y Datastores. Como podemos ver, si no modificamos la configuración de telegraf, no vamos a poder monitorizar como se debe estos dos intervalos que son diferentes y limitados a diferentes recursos.
Configuración recomendada de telegraf para vuestros entornos de VMware vSphere
Vista la teoría. y conociendo ahora los diferentes elementos a monitorizar, os recomiendo como siempre no tocar el telegraf.conf, mejor crear un fichero en la ruta de telegraf, algo así – /etc/telegraf/telegraf.d/vsphere-monitor.conf y dentro lo siguiente:
## Monitorizacion en tiempo real, ESXi y VMs [[inputs.vsphere]] ## List of vCenter URLs to be monitored. These three lines must be uncommented ## and edited for the plugin to work. interval = "20s" vcenters = [ "https://someaddress/sdk" ] username = "[email protected]" password = "secret" vm_metric_include = [] host_metric_include = [] datastore_metric_exclude = ["*"] max_query_metrics = 256 timeout = "60s" insecure_skip_verify = true ## Monitorizacion historica, Datacenter, Cluster y Datastore [[inputs.vsphere]] interval = "300s" vcenters = [ "https://someaddress/sdk" ] username = "[email protected]" password = "secret" datastore_metric_include = [ "disk.capacity.latest", "disk.used.latest", "disk.provisioned.latest" ] cluster_metric_include = [] datacenter_metric_include = [] insecure_skip_verify = true force_discover_on_init = true host_metric_exclude = ["*"] # Exclude realtime metrics vm_metric_exclude = ["*"] # Exclude realtime metrics max_query_metrics = 256 collect_concurrency = 3
Si nos fijamos en la configuración, del primer intervalo, más corto, tendremos información en grupos de 20 segundos sobre VMs y Hosts, y excluimos todo lo demás como son Datacenters, Datastores y Cluster.
En la segunda parte, lo que hacemos es excluir los elementos como son la VM y los hosts, y monitorizar los elementos con las estadísticas en la base de datos, además de subir las tareas de colección a tres para acelerar el proceso.
Resultado final
El resultado final desde hace ya unas semanas es que no dejo de recibir información sobre los Datastores, ni otros elementos de mi VMware cuando los monitorizo con Telegraf, y el resultado se puede ver aquí:
vSphere Overview Dashboard
vSphere Hosts Overview Dashboard
Nada más amigos, espero que os guste, y me gustaría dejaros la serie completa aquí:
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte I (Instalando InfluxDB, Telegraf y Grafana)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte II (Instalar agente Telegraf en Nodos remotos Linux)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte III Integración con PRTG
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IV (Instalar agente Telegraf en Nodos remotos Windows)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte V (Activar inputs específicos, Red, MySQL/MariaDB, Nginx)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VI (Monitorizando Veeam)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VII (Monitorizar vSphere)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VIII (Monitorizando Veeam con Enterprise Manager)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IX (Monitorizando Zimbra Collaboration)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte X (Grafana Plugins)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XI
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XII – Plugin nativo de Telegraf para vSphere
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIII – Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIV – Veeam Availability Console
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XV – Monitorización IPMI de nuestros Hosts ESXi
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVI – Rendimiento y seguridad avanzada de Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVII – Mostrando los Dashboards en dos monitores usando Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVIII – Monitorizar temperatura y estado de Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIX (Monitorizando Veeam con Enterprise Manager) Shell Script



Buenas,
Una sugerencia de modificacion de los paneles de Overview y Hosts y es que en las variables definidas de ESXi Server y VM añadas una condicion más, para que si tienes varios clusters, y seleccionas u o varios, sólo te muestre las VMs de dichos cluster. Esto sería solo añadiendo en las querys lo siguiente al final:
and “clustername” =~ /$clustername/
Buenas Jorge de nuevo!
Como siempre, me encantan tus post. 🙂
Hace unos meses quise monitorizar modificando en el archivo de configuracion original, pero el resultado no tuvo exito.
Esta vez he seguido tus consejos creando un archivo de configuración.
Resultado:
VSA: 6.5 Update 1: Muestra todos los datos pero VM solo unas 20 máquinas y DS faltan algunos datos
VSA: 6.5 Update 2: Muestra todos los datos pero VM ningún dato, no detecta nada y DS faltan algunos datos
¿Porque puede no estar pillando las métricas de las VM?
El telegraf muestra overflow en las metricas.
¿como puedo redcuir las metricas? ¿podria excluir las metricas de los DS por ejemplo ya que se monitorizan con la cabina?¿Con poner datastore_metric_exclude = [“*”] en la parte historica seria suficiente?
¿Se te ocurre algo más?
Muchas gracias como siempre!
Saludos Antonio,
Muchas gracias! Esta haciendo overflow, tienes que aumentar el buffer para pillar todo, tengo pendiente depurar el script y coger solo lo que uso en los dashboards, pero por ahora aumenta el buffer.
Buenas,
Al final lo conseguí, era debido a unas expresiones regulares que tenias puestas que afectaba.
Por otro lado, sigo teniendo el error de:
This operation is restricted by the administrator – ‘vpxd.stats.maxQueryMetrics’
Esta es la configuración que tengo:
Como ves hay muy pocas métricas y aun así sale el error. Esa consulta tiene 45 VM y 27 ESXi.
Y por último, en la consulta de VM Summary, veo que si creas una máquina y no la enciendes sigue detectando como si no existiera. No se si se trata de un fallo o es que realmente lo querías así.
De no ser un fallo, ¿se te ocurre alguna forma de detectar las máquinas que están apagadas?
Muchas gracias y agradecerte el trabajo que haces.
Un abrazo!