Ana içeriğe geç

VM envanteri, ölçümler ve yapılandırma doğrulama

Bu sayfadaki yöntemler hiçbir şeyi değiştirmez. Dört soruyu yanıtlarlar: kümede hangi VM'lerin bulunduğu, belirli bir VM'nin nasıl yapılandırıldığı, ona ne olduğu ve şu anda nasıl durumda olduğu. Yapılandırma doğrulama ayrıdır: çalışan VM'yi vStack Center'ın tuttuğu yetkili yapılandırmayla karşılaştırır.

Tüm yöntemlerin görünürlük kapsamı aynıdır: Cluster master rolü kümenin tamamını görür; diğer kullanıcılar yalnızca rol atandıkları VDC'lerdeki (sanal veri merkezleri) VM'leri görür.

Web arayüzünde aynı veriler All Virtual Machines listesinde görünür: ID, Name, IP, OS, State, Health, vCPU class, CPU (Cores), RAM (GB) ve Storage (GB) sütunları, Search in table araması ve CSV dışa aktarımı. VM kartında CPU, Disks, Networks ve Memory geçişlerini içeren bir Perfdata bölümü ile ID, Action, Method, Status, Report, Start Time, End time ve Duration s sütunlarını içeren bir Event history bölümü bulunur.

VM kartı: genel özellikler, ağlar, diskler, anlık görüntüler, ölçümler ve olay geçmişi

vm-list​

VM listesi. Erişim:

  • Cluster master: kümedeki tüm VM'ler; yanıt ek node ve rstart alanlarını içerir.
  • Sıradan bir kullanıcı: yalnızca rol atandığı VDC'lerdeki VM'ler; node ve rstart döndürülmez.

Her VM yanıtta tam olarak bir kez görünür. 3.2.0'dan önce bir VM, kullanıcının o VM'nin VDC'sinde sahip olduğu rol sayısı kadar görünüyordu; bu nedenle bu listeden envanter oluşturan harici sistemler yinelenen kayıtlar alıyordu. Düzeltme, listenin hangi VM'leri içerdiğini değiştirmedi; yalnızca yinelenenleri kaldırdı.

ParametreTürZorunluAçıklama
objectiveHerhangiHayırAlan herhangi bir değerle mevcutsa yanıt, dizi yerine vm_id anahtarlı bir eşlemedir (map)
vdcSayıHayırVDC'ye göre filtre; en az 1
{
"jsonrpc": "2.0",
"method": "vm-list",
"params": {},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": [
{
"vdc_id": 2,
"vm_id": 1,
"vm_name": "vm-1",
"vm_status": 3,
"admin_status": 1,
"oper_status": 3,
"oper_status_ts": 1700000000,
"os_type": 1,
"os_profile": "8f14e45f-ceea-467a-9c1e-2d3b7a0f5c61",
"cpu_count": 2,
"memory_count": 1073741824,
"hw_version": 3,
"locked": 1,
"create_completed": 1,
"nvme": true,
"storage_provisioned": 10737418240,
"address": "192.0.2.1",
"address_v6": ["2001:db8::10", "2001:db8::11"],
"pool": "1000",
"vcpu_class": 1,
"service": 0,
"GI_object": 0,
"modified": 1700000000,
"incarnation": 17000000000,
"node": 5,
"rstart": 0
}
]
}
}

Alan ayrıntıları: address, ilk bağlantı noktasının (en düşük yuvaya göre) IPv4 adresidir veya IPv4 adresi atanmamışsa null olur; address_v6, aynı bağlantı noktasının IPv6 dizisidir veya adres yoksa boş bir dizidir; nvme disk modunu gösterir ve böylece VM'nin nerede başlatılabileceğini belirler.

Hata: -7 listenin okunamadığı anlamına gelir.

vm-get​

Tanımlayıcıya göre tam VM kartı: ana alanlar, network_ports ve disks dizileri, hv_faults nesnesi ve ölçümler kullanılabiliyorsa bellek kullanımını içeren bir guest nesnesi.

ParametreTürZorunluAçıklama
idSayıEvetVM tanımlayıcısı; en az 1
{
"jsonrpc": "2.0",
"method": "vm-get",
"params": { "id": 42 },
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Aygıtları içeren yanıt alıntısı:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"id": 42,
"name": "vm-42",
"cpus": 2,
"ram": 1073741824,
"hw_version": 4,
"status": 3,
"admin_status": 1,
"oper_status": 3,
"oper_status_ts": 1700000050,
"locked": 0,
"create_completed": 1,
"nvme": true,
"node": 3,
"pool": "123456789",
"root_dataset_name": "z01/.vm_V4/000000042",
"vdc": 5,
"network_ports": [
{
"network_id": 100,
"port_id": 1,
"address": "192.0.2.5",
"address_v6": ["2001:db8::10"],
"mac": "00:11:22:33:44:55",
"ip_guard": 1,
"mac_guard": 0,
"ratelimit_mbits": 1000,
"slot": 14
}
],
"disks": [
{
"guid": "111222333",
"label": "data-disk",
"size": 10737418240,
"slot": 1,
"iops_limit": 5000,
"mbps_limit": 200,
"sector_size": { "logical": 512, "physical": 4096 },
"pool_name": "z01"
}
],
"guest": {
"ram_used": 536870912,
"ram_balloon_requested": null,
"ram_balloon_performed": null
}
}
}
}

API istemcileri için önemli biçim ayrıntıları:

  • os_profile, imaj UUID'sini içeren bir dize veya null olarak döndürülür. Kısa sayısal imaj tanımlayıcısı 3.0.5'te bir UUID ile değiştirildi; bu, duyurulmuş geriye dönük uyumsuz bir değişikliktir.
  • GI_object, locked, create_completed, ip_guard ve mac_guard; 0, 1 veya null olarak serileştirilir.
  • pool bir dizedir; root_dataset bir sayıdır.
  • Bir disk için sector_size.logical varsayılan olarak 512, physical ise 4096'dır.
  • guest nesnesi, değerlerin kendisi null olsa bile ölçüm deposu kullanılabilir olduğunda bulunur; ölçümler kullanılamıyorsa alan yoktur.

Hatalar: -78 okuma hatası; -3001 VM'nin çağıranın görünürlük kapsamında bulunamadığı anlamına gelir.

vm-statuses​

VM durum başvurusu: koddan ada bir eşleme. Parametre yoktur.

{
"jsonrpc": "2.0",
"method": "vm-statuses",
"params": {},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Belirli bir kümede vm-list ve vm-get yöntemlerinden gelen sayısal durumları yorumlamak için kullanın. Hata: -7.

vm-history​

Bir VM'nin durum değişiklikleri geçmişi.

ParametreTürZorunluVarsayılanSınır
vm_idSayıEvet—En az 1
linesSayıHayır50000İzin verilen aralık 1..999
ts_startSayıHayırnull1531924200 değerinden önce olamaz
ts_finishSayıHayırnull1531924200 değerinden önce, 2222222222 değerinden sonra olamaz; ts_start değerinden büyük olmalıdır
{
"jsonrpc": "2.0",
"method": "vm-history",
"params": {
"vm_id": 42,
"lines": 100,
"ts_start": 1700000000,
"ts_finish": 1700100000
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": [
{ "ts": 1700000000, "ts_nano": 1700000000000000, "status": 3, "progress": 100 },
{ "ts": 1700000100, "ts_nano": 1700000100000000, "status": 5, "progress": 0 }
]
}
}

Zamana göre filtreleme yalnızca her iki aralık parametresi de verildiğinde çalışır. Aralık verilmezse lines ile sınırlı olarak en son kayıtlar döndürülür.

Hatalar: -9305 lines değerinin aralık dışında olduğu; -9320 ve -9325 aralık sınırlarının çok eski olduğu; -9326 üst sınırın çok büyük olduğu; -9327 ts_finish değerinin ts_start değerinden büyük olmadığı; -7 okuma hatası anlamına gelir.

vm-perfdata​

VM performans ölçümleri. Erişim: Cluster master herhangi bir VM'ye erişebilir; sıradan bir kullanıcı, role_id ≤ 3 olan bir role sahip olduğu VDC'deki VM'lere erişebilir.

Üç mod:

ModNasıl çağrılırDöndürdüğü
PanoYalnızca vm_idSon 25 saniyenin CPU, ağ, disk ve RAM verileri
Bir süre için grafikmetric + intervalGeçerli zamandan interval kadar geriye uzanan bir seri
Bir aralık için grafikmetric + begin_time + end_timeBelirtilen sınırlar içindeki bir seri
ParametreTürVarsayılanSınır
vm_idSayı—Zorunlu; en az 1
metricDizenullcpu, disk, net, ram, balloon, all
intervalDize"1h"Bir veya iki rakam ve bir birim: s, m, h, d, w
sliceDize"30s"Bir veya iki rakam ve bir birim: s, m, h; gruplama aralığı
begin_time, end_timeSayınull10 basamaklı zaman damgaları; yalnızca çift olarak kullanılır
{
"jsonrpc": "2.0",
"method": "vm-perfdata",
"params": {
"vm_id": 42,
"metric": "cpu",
"interval": "1h",
"slice": "30s"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"results": [
{
"statement_id": 0,
"series": [
{
"name": "bhyve_cpu",
"columns": ["time", "cpu", "vm_cpus"],
"values": [[1700000030, 5.2, 4]]
}
]
}
]
}
}
}

Ölçüm deposunun yanıtı istemciye dönüştürülmeden iletilir; zaman damgaları epoch saniyesi cinsindendir. Hatalar: -4930 böyle bir VM olmadığı; -403 VDC'de rol olmadığı veya erişimin reddedildiği; -4907, -4911, -4912, -4915 ve -4916 sırasıyla geçersiz metric, interval, slice, begin_time ve end_time; -4925 ve -4923 ölçümlerin alınamadığı anlamına gelir.

vm-check-configuration​

Çalışan VM'nin hipervizördeki yapılandırmasını vStack Center'ın sakladığı yetkili yapılandırmayla karşılaştırır ve kısa bir sonuç döndürür. Ham hipervizör verileri istemciye gönderilmez.

Yetki, VDC kapsamlı Check VM Configuration (1114) yetkisidir. Cluster master, VDC yöneticisi, VDC kullanıcısı ve VDC gözlemcisi rollerine atanmıştır; yöntem Resource viewer rolünü -403 ile reddeder.

ParametreTürZorunluAçıklama
vm_idSayıEvetVM tanımlayıcısı; en az 1
{
"jsonrpc": "2.0",
"method": "vm-check-configuration",
"params": { "vm_id": 42 },
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Eşleşme sonucu:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"status": "match",
"mismatch_count": 0,
"meta": { "fetched_at": 1780669931 }
}
}
}

Uyuşmazlık durumunda status değeri mismatch olur ve mismatch_count farklı olan yapılandırma anahtarlarının sayısını gösterir. Anahtar adlarının ve değerlerinin kendisi yanıta veya günlüğe dahil edilmez.

Şunları göz önünde bulundurun:

  • Yöntem eşzamansızdır: önce ara bir yanıt gelir ve son yanıt task aracılığıyla alınır.
  • VM'nin çalışıyor olması gerekir. Durdurulmuş veya askıya alınmış bir VM için yöntem, düğümle iletişim kurmadan -4941 döndürür.
  • Başarılı bir sonuç VM tanımlayıcısına göre 10 saniye önbelleğe alınır: bu süre içindeki başka bir çağrı düğümle iletişim kurmadan aynı sonucu döndürür. Önbellek, VM yapılandırmasını değiştiren herhangi bir işlemden sonra temizlenir.
  • Bazı anahtarlar, yapılandırmanın anlamını değiştirmeden hipervizör başlatmaları arasında değiştikleri için uyuşmazlık sayısından hariç tutulur. Bunlar gc., uefi.vars, pci.0.29.0.tcp önekleri ile .password, .secret veya .key ile biten anahtarlardır.
  • 2000'den fazla anahtar içeren bir ajan yanıtı çok büyük olduğu için reddedilir.
  • Değişiklik olmadan yapılan başka bir çağrı aynı status ve mismatch_count değerlerini döndürür; yalnızca meta.fetched_at güncellenir.
YanıtAnlamı
-403Yetki eksik veya VM rolün kapsamı dışında
-4940VM mevcut değil veya görünürlük kapsamı tarafından gizleniyor
-4941VM çalışmıyor
-4942VM'nin düğümü kullanılamıyor
-4943Düğüm ajanı, VM çalışırken yapılandırmayı döndüremiyor
-4944Ajan yanıtı çok fazla anahtar içeriyor
-4945Dahili doğrulama hatası

Doğrulama sonucu güvenlik günlüğüne kaydedilir: tamamlanan denetim için her zaman bir olay kaydedilir ve mismatch sonucu ayrıca alert düzeyinde bir bütünlük ihlali olayı oluşturur. İhlal olayı yalnızca yeni bir sonuç için kaydedilir; önbellekten gelen bir sonuç denetim olayında görünür.

vm-inventory​

Kümenin VM envanteri: vStack Center ajanları sorgular ve kendi verilerini düğümlerin gördükleriyle karşılaştırır. Yöntem eşzamansızdır ve parametresi yoktur; etkin bir oturum yeterlidir.

{
"jsonrpc": "2.0",
"method": "vm-inventory",
"params": {},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}
{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"discrepancy": [
[42, null],
[null, 99]
],
"VMs": {
"42": 3,
"50": 1,
"99": 5
}
}
}
}

Yanıt nasıl okunur: discrepancy, "vStack Center tarafı — düğüm tarafı" biçiminde çiftler içerir. [42, null] çifti, VM 42'nin kümede kayıtlı olduğu ancak hiçbir ajanın onu görmediği anlamına gelir; [null, 99] ise tersini ifade eder. Boş bir dizi tutarsızlık olmadığı anlamına gelir. VMs, ajan verilerine dayanan bir VM tanımlayıcısından duruma eşlemedir. Tanımlayıcısı 30'un altında olan servis VM'leri hariç tutulur.

Mod küme ayarına bağlıdır: havuza göre sorgulamada yanıt discrepancy ve VMs içerir; düğüme göre sorgulamada bu alanlar yoktur. Hatalar: -200 düğüm durumlarının alınamadığı; -78 okuma hatası anlamına gelir.

Ayrıca bkz.​