🇲🇱 Как контролировать VMware ESXi с помощью Grafana и Telegraf

Мануал

Приветствую, ребята! Здесь я представляю вам наиболее эффективный и удивительный способ мониторинга инфраструктуры VMware ESXi с помощью Grafana, Telegraf и InfluxDB.

Настройка довольно проста, и вы должны визуализировать свои показатели VMware на Grafana менее чем за 30 минут.

Эта установка использует официальный плагин vSphere для Telegraf для извлечения метрик из vCenter.

Сюда входят показатели для вычислений хостов vSphere (RAM и CPU), сетей, хранилищ данных и виртуальных машин, работающих на гипервизорах vSphere.

Итак, начнем.

Шаг 1: Установите InfluxDB и Grafana

Все собранные метрики хранятся в базе данных InfluxDB.

Grafana подключится к InfluxDB для запроса и отображения метрик на своих инструментальных панелях.

Вам нужно установить оба инструмента – InfluxDB и Grafana перед продолжением.

Как установить InfluxDB на Ubuntu и CentOS

Как только InfluxDB и Grafana установлены, приступайте к установке и настройке Telegraf, который является мощным сборщиком метрик, написанным на Go.

Шаг 2. Установите и настройте Telegraf

Если вы использовали ссылки на шаге 1 для установки InfluxDB, был добавлен репозиторий, необходимый для установки Telegraf.

Просто используйте следующие команды для установки Telegraf.

# CentOS
sudo yum -y install telegraf

# Ubuntu
sudo apt-get -y install telegraf

После установки нам нужно настроить Telegraf на получение метрик мониторинга из vCenter.

Отредактируйте основной конфигурационный файл Telegraf:

sudo vim /etc/telegraf/telegraf.conf

1. Добавьте выходной сервер хранения InfluxDB, где будут храниться метрики.

# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
    urls = ["http://10.10.1.20:8086"]
    database = "vmware"
    timeout = "0s"
    username = "monitoring"
    password = "DBPassword"

Замените 10.10.1.20 IP-адресом вашего сервера InfluxDB. если у вас не включена аутентификация на InfluxDB, вы можете безопасно удалить строку имени пользователя и пароля в конфигурации.

2. Настройте входной плагин vsphere для Telegraf. Полная конфигурация должна выглядеть примерно так:

# Read metrics from VMware vCenter
 [[inputs.vsphere]]
 ## List of vCenter URLs to be monitored. These three lines must be uncommented
 ## and edited for the plugin to work.
 vcenters = [ "https://10.10.1.2/sdk" ]
    username = "administrator@vsphere.local"
    password = "AdminPassword"
 #
 ## VMs
 ## Typical VM metrics (if omitted or empty, all metrics 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
 #
 ## Hosts
 ## Typical host metrics (if omitted or empty, all metrics are collected)
 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",
    ]
 # host_metric_exclude = [] ## Nothing excluded by default
 # host_instances = true ## true by default
 #
 ## Clusters
 cluster_metric_include = [] ## if omitted or empty, all metrics are collected
 # cluster_metric_exclude = [] ## Nothing excluded by default
 # cluster_instances = false ## false by default
 #
 ## Datastores
 datastore_metric_include = [] ## if omitted or empty, all metrics are collected
 # datastore_metric_exclude = [] ## Nothing excluded by default
# datastore_instances = false ## false by default for Datastores only
#
## Datacenters
datacenter_metric_include = [] ## if omitted or empty, all metrics are collected
datacenter_metric_exclude = [ "*" ] ## Datacenters are not collected by default.
# datacenter_instances = false ## false by default for Datastores only
#
## Plugin Settings
## separator character to use for measurement and field names (default: "_")
# separator = "_"
#
## number of objects to retreive per query for realtime resources (vms and hosts)
## set to 64 for vCenter 5.5 and 6.0 (default: 256)
# max_query_objects = 256
#
## number of metrics to retreive per query for non-realtime resources (clusters and datastores)
## set to 64 for vCenter 5.5 and 6.0 (default: 256)
# max_query_metrics = 256
#
## number of go routines to use for collection and discovery of objects and metrics
# collect_concurrency = 1
# discover_concurrency = 1
#
## whether or not to force discovery of new objects on initial gather call before collecting metrics
## when true for large environments this may cause errors for time elapsed while collecting metrics
## when false (default) the first collection cycle may result in no or limited metrics while objects are discovered
# force_discover_on_init = false
#
## the interval before (re)discovering objects subject to metrics collection (default: 300s)
# object_discovery_interval = "300s"
#
## timeout applies to any of the api request made to vcenter
# timeout = "60s"
#
## Optional SSL Config
# ssl_ca = "/path/to/cafile"
# ssl_cert = "/path/to/certfile"
# ssl_key = "/path/to/keyfile"
## Use SSL but skip chain & host verification
 insecure_skip_verify = true

Единственные переменные, которые нужно изменить с вашей стороны:

  • 10.10.1.2 следует заменить на IP-адрес vCenter
  • administrator@vsphere.local должен соответствовать вашей учетной записи vCenter
  • AdminPassword паролем для аутентификации

Если ваш сервер vCenter имеет самоподписанный сертификат, убедитесь, что вы включили insecure_skip_verify flag на true

insecure_skip_verify = true

Запустите и включите услугу телеграф после внесения изменений.

sudo systemctl restart telegraf
sudo systemctl enable telegraf

Шаг 3: Проверьте показатели InfluxDB

Мы должны подтвердить, что наши показатели передаются в InfluxDB и что мы можем их видеть.

Откройте оболочку InfluxDB:

С аутентификацией:

$ influx -username 'username' -password 'StrongPassword'
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4

‘Username‘ – имя пользователя для аутентификации InfluxDB
SRong StrongPassword ‘- пароль InfluxDB

Без аутентификации:

$ influx
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4

Переключитесь на базу данных vmware, которую мы настроили на telegraf.

> USE vmware
Using database vmware

Проверьте, есть ли приток метрик временных рядов.

> SHOW MEASUREMENTS
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
vsphere_cluster_clusterServices
vsphere_cluster_mem
vsphere_cluster_vmop
vsphere_datacenter_vmop
vsphere_datastore_datastore
vsphere_datastore_disk
vsphere_host_cpu
vsphere_host_disk
vsphere_host_mem
vsphere_host_net
vsphere_host_power
vsphere_host_storageAdapter
vsphere_host_sys
vsphere_vm_cpu
vsphere_vm_mem
vsphere_vm_net
vsphere_vm_power
vsphere_vm_sys
vsphere_vm_virtualDisk
> 

Шаг 3: Добавить источник данных InfluxDB в Grafana

Войдите в Grafana и добавьте источник данных InfluxDB.

Укажите IP-адрес сервера, имя базы данных и учетные данные для аутентификации, если применимо.

Дайте ему имя, выберите тип, укажите IP-адрес сервера.

Укажите имя базы данных и учетные данные для аутентификации, если применимо.

Сохраните и проверьте настройки.

Шаг 4: Импорт информационных панелей Grafana

Мы настроили все зависимости и протестировали  работу.

Последнее действие – создать или импортировать информационные панели Grafana, которые будут отображать метрики vSphere.

 

Добавить комментарий

  1. Алексей

    Я правильно понял, что это все возможно только с vCenter? С ESXi напрямую это не работает?

    Ответить
    1. cryptoparty автор

      Скорее всего можно и через esxi, но опыта нету.

      Ответить