Lições do Kubernetes e da nuvem devem orientar a revolução da IA
24 de maio de 2024Uma camada de cache de banco de dados ainda é necessária?
24 de maio de 2024- Escrevi recentemente sobre como você pode facilmente levantar uma pilha TICK em seu ambiente rodando sobre contêineres Docker que podem ser provisionados como uma pilha usando o código docker compose rodando em um host de contêiner Docker em um sistema operacional Linux.
- Em seguida, podemos simplesmente adicionar o Grafana no topo da pilha TICK para ter uma maneira de visualizar os dados coletados monitorando VMware vCenter, ESXi, máquinas virtuais, armazenamentos de dados e outros componentes no ambiente VMware.
- Existem muitas ferramentas caras de monitoramento do VMware vSphere de fornecedores corporativos que funcionam muito bem e têm muitos recursos para monitorar hosts VMware ESXi, máquinas virtuais, vCenter Server e monitoramento do vSphere em geral.
Existem muitas ferramentas caras de monitoramento do VMware vSphere de fornecedores corporativos que funcionam muito bem e têm muitos recursos para monitorar hosts VMware ESXi, máquinas virtuais, vCenter Server e monitoramento do vSphere em geral. No entanto, você pode monitorar VMware gratuitamente usando ferramentas gratuitas e de código aberto que estão prontamente disponíveis. Vejamos o monitoramento VMware gratuitamente com Telegraf, InfluxDB e Grafana e veja como você pode facilmente ativar isso para monitoramento de desempenho VMware em seu ambiente.
Crie uma pilha TICK
Escrevi recentemente sobre como você pode facilmente levantar uma pilha TICK em seu ambiente rodando sobre contêineres Docker que podem ser provisionados como uma pilha usando o código docker compose rodando em um host de contêiner Docker em um sistema operacional Linux. Você pode ler minha postagem no blog cobrindo esse tópico aqui:
TICK significa os componentes que contém, incluindo Telegraf, InfluxDB, Chronograf e Kapacitor. Aumentar a pilha fornece o lado de monitoramento dos componentes. Em seguida, podemos simplesmente adicionar o Grafana no topo da pilha TICK para ter uma maneira de visualizar os dados coletados monitorando VMware vCenter, ESXi, máquinas virtuais, armazenamentos de dados e outros componentes no ambiente VMware.
Componentes de um ambiente VMware vSphere
Vamos obter uma visão geral de alto nível dos componentes do vSphere, pois precisaremos entender os vários pontos de discórdia para entender como podemos monitorar melhor o ambiente. Os componentes que queremos monitorar incluem:
- Servidor vCenter
- Anfitriões ESXi
- Instâncias de máquinas virtuais
- CPU, memória, rede
Queremos ser capazes de capturar métricas de desempenho dos vários componentes do ambiente, incluindo recursos do sistema para hosts e as cargas de trabalho que eles executam. Além disso, datastores vCenter, hosts vCenter como parte de clusters vSphere, mas também hosts ESXi independentes no ambiente virtual.
O que nós precisamos?
A seguir estão os itens que você precisará para sustentar seu ambiente de monitoramento:
- Um host de contêiner docker instalado com Docker e Docker Compose
- Código Docker Compose (Telegraf, InfluxDB, Chronograf e Kapacitor, mas também Grafana)
- O plug-in Telegraf para vSphere
Presumiremos que você já tenha um host Docker Container instalado com Docker e Docker Compose para o restante do tutorial. Depois de ter o host do contêiner Docker pronto, precisamos apenas ativar os contêineres necessários usando o código Docker Compose.
Código de composição do Docker para pilha TICK e Grafana
Abaixo está um exemplo de código para aumentar a pilha TICK junto com o Grafana. Como observação, você deve alterar a rede Docker para corresponder ao que você tem em seu ambiente. Novamente, consulte minha postagem no blog sobre a pilha TICK em geral para obter configurações adicionais necessárias aqui: Exemplo de pilha TICK com Docker Compose.
version: '3.8'
services:
grafana:
image: grafana/grafana
container_name: grafana
user: "1001"
restart: always
ports:
- 3000:3000
networks:
- nginxproxy
volumes:
- "~/homelabservices/grafana/grafana-volume:/var/lib/grafana"
user: "1001"
telegraf:
image: "telegraf:latest"
hostname: "telegraf"
container_name: telegraf
volumes:
- "~/homelabservices/telegraf/etc/telegraf.conf:/etc/telegraf/telegraf.conf"
networks:
- nginxproxy
influxdb:
image: influxdb:latest
container_name: influxdb
restart: always
ports:
- 8086:8086
- 8089:8089/udp
networks:
- nginxproxy
volumes:
- "~/homelabservices/influxdb/influxdb-volume:/var/lib/influxdb"
chronograf:
image: "chronograf:latest"
hostname: "chronograf"
container_name: chronograf
user: "1001"
ports:
- "8888:8888"
volumes:
- "~/homelabservices/chronograf/chronograf-data:/var/lib/chronograf"
networks:
- nginxproxy
kapacitor:
image: "kapacitor:latest"
hostname: "kapacitor"
container_name: "kapacitor"
user: "1000"
volumes:
- "~/homelabservices/kapacitor/kapacitor-data:/var/lib/kapacitor"
- "~/homelabservices/kapacitor/kapacitor-data/etc/kapacitor.conf:/etc/kapacitor/kapacitor.conf"
networks:
- nginxproxy
Depois de definir o código, basta executar o seguinte:
docker-compose up -d
Isso “aumentará” a pilha de contêineres Docker para monitoramento e visualização do ambiente VMware.
Plug-in de telegrama
Depois de provisionar seu host Docker com os cinco contêineres mencionados acima, podemos provisionar o plug-in Telegraf para monitoramento do vSphere. Permite apontar para uma instância do vCenter e extrair as métricas sobre os recursos VMware no ambiente.
Suporta as seguintes versões do ambiente vSphere: Versão 6.5, 6.7, 7.0 e 8.0. Pode funcionar com as versões 5.1, 5.5 e 6.0, mas não é suportado como tal.
O que ele monitora?
Ele permite monitorar diversas métricas no ambiente VMware, incluindo:
- Clusters do vCenter
- Serviços de cluster: CPU, memória, failover
- CPU: total, uso
- Memória: consumida, total, vmmemctl
- Operações de VM: # alterações, clonar, criar, implantar, destruir, ligar, reinicializar, reconfigurar, registrar, redefinir, desligar, espera, vmotion
- Estatísticas do anfitrião:
- CPU: total, uso, custo, MHz
- Armazenamento de dados: iops, latência, bytes de leitura/gravação, número de leituras/gravações
- Disco: comandos, latência, leituras/gravações do kernel, # leituras/gravações, filas
- Memória: total, uso, ativa, latência, troca, compartilhada, vmmemctl
- Rede: transmissão, bytes, descartados, erros, multicast, pacotes, uso
- Potência: energia, uso, capacidade
- Res CPU: ativo, máximo, em execução
- Adaptador de armazenamento: comandos, latência, # leituras/gravações
- Caminho de armazenamento: comandos, latência, # leituras/gravações
- Recursos do sistema: CPU ativa, CPU máxima, CPU em execução, uso da CPU, mem alocado, mem consumido, mem compartilhado, swap
- Sistema: tempo de atividade
- Módulo Flash: VMDKs ativos
- Estatísticas da máquina virtual:
- CPU: demanda, uso, prontidão, custo, MHz
- Armazenamento de dados: latência, número de leituras/gravações
- Disco: comandos, latência, número de leituras/gravações, provisionado, uso
- Memória: concedida, uso, ativa, troca, vmmemctl
- Rede: transmissão, bytes, descartados, multicast, pacotes, uso
- Potência: energia, uso
- Res CPU: ativo, máximo, em execução
- Sistema: tempo de atividade do sistema operacional, tempo de atividade
- Disco Virtual: buscas, # leituras/gravações, latência, carga
- Estatísticas do armazenamento de dados:
- Disco: Capacidade de armazenamento, provisionado, usado
O URL do projeto Github está localizado aqui: telegraf/plugins/inputs/vsphere/README.md em master · influxdata/telegraf.
Como você instala o plug-in vSphere Monitoring para Telegraf?
Esta parte é bastante fácil. Ao contrário de alguns outros aplicativos onde estamos acostumados a copiar arquivos em algum tipo de diretório de plugins, a funcionalidade do plugin já está incorporada no Telegraf. Só precisamos habilitá-lo no arquivo telegraf.conf.
Abaixo está um arquivo telegraf.conf em execução no ambiente do meu laboratório doméstico. Ele está usando a autenticação InfluxDB v2 usando o token, que deixei para que você possa ver o formato e para onde vão as coisas.
Fora da configuração geral específica do telegraf, você verá que o código do plugin começa com a seção ((entradas.vsphere)). A conexão do servidor vCenter é colocada na parte superior com o nome de usuário e a senha.
# Global tags can be specified here in key="value" format.
(global_tags)
# Example: environment="dev"
# Configuration for telegraf agent
(agent)
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "0s"
precision = ""
debug = false
quiet = false
logfile = ""
# Input Plugins
((inputs.cpu))
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
((inputs.mem))
# no configuration
((inputs.swap))
# no configuration
((inputs.system))
# no configuration
((inputs.disk))
ignore_fs = ("tmpfs", "devtmpfs", "devfs")
((inputs.net))
# no configuration
((inputs.vsphere))
vcenters = ("https://vcsa.cloud.local/sdk")
username = "(email protected)"
password = "password"
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",
)
host_metric_include = ("*")
cluster_metric_include = ("*")
collect_concurrency = 3
force_discover_on_init = true
insecure_skip_verify = true
# Output Plugin InfluxDB
((outputs.influxdb_v2))
urls = ("http://influxdb:8086")
token = "9pXZk5K9YkZuIAgWWqaOdOdoFpw03XWsZdSVS1N6lvw0D1q5ifUJgLrJZ_qVxu5itDrTrSrQ3Sg=="
organization = "CloudLocal"
bucket = "tickstack"
Apontando Grafana para InfluxDB
Como vimos no arquivo de configuração telegraph.confestamos apontando o Telegraf para o InfluxDB para armazenar os dados da série temporal. Então, só precisamos apontar o Grafana para nossa instância do InfluxDB para criar painéis. Debaixo de Conexões cardápio.
Como os contêineres estão no mesmo host e na mesma rede isolada no Docker, podemos simplesmente apontar a conexão para a string curta da URL HTTP://influxdb:8086. Observe como estamos usando Fluxo como a linguagem de consulta. Precisamos mudar para Flux, pois isso nos permitirá usar a autenticação V2.
Além disso, com a autenticação V2, precisamos inserir o Organização, Tokene a Balde padrão.
Painéis Grafana
Jorge de la Cruz fez um excelente trabalho na criação de painéis Grafana específicos do VMware vSphere para a comunidade. Isso elimina todo o trabalho pesado de criar painéis manualmente usando os dados do InfluxDB.
Você pode conferir seus painéis do Grafana aqui: Visão geral de Jorge de la Cruz | Laboratórios Grafana. Os números dos dashboards que nos interessam são os seguintes: 8159, 8165, 8168, 8162
Importando os painéis
Agora, vamos dar uma olhada no processo de importação dos painéis. Clique em Painéis > Novo > Importar.
Agora, inserimos os números dos painéis Grafana disponíveis publicamente. Clique Carregar.
Abaixo, já adicionei o dashboard, então está me dizendo que tem um com o mesmo UID. No entanto, nomeie o painel e selecione a fonte de dados InfluxDB de origem que criamos no arquivo Conexões menu anteriormente.
Após importar o painel, vemos belas visualizações Grafana dos dados do InfluxDB.
Solução de problemas
Para começar, você pode ter problemas com a pilha TICK. Confira minha postagem no blog com link acima para solucionar problemas específicos desse aspecto do projeto. No entanto, em geral, observe os logs do Docker para ver quaisquer mensagens de erro que você precise resolver, como arquivos de configuração ou erros de permissão, pois esses dois são muito comuns.
Se você não vir nenhum dado entrando no InfluxDB, será necessário solucionar o problema de conexão do Telegraf com o InfluxDB.
Grafana também pode ter suas peculiaridades. Se você notar no código Docker Compose acima, especifiquei um ID de usuário para executar o contêiner. Grafana é muito exigente quanto ao contexto do usuário em que o contêiner é executado. Portanto, se você tiver problemas de permissão com o contêiner, brinque com o usuário sob o qual o contêiner é executado.
Você pode encontrar facilmente o ID do usuário no Linux usando o comando:
id -u
Empacotando
Embora existam muitas soluções pagas excelentes para monitoramento do VMware vSphere, você pode usar uma pilha TICK e Grafana para ter uma ótima solução de monitoramento para ajudar a encontrar áreas problemáticas no ambiente e visualizar métricas de desempenho para vários componentes, incluindo vCenter Server, hosts ESXi, servidores virtuais máquinas, CPU, RAM e rede. Deixe-me saber se você está usando uma abordagem semelhante ao monitoramento VMware em seu laboratório doméstico ou mesmo em produção.