Vmware vRealize (Aria)Operations Python API

Mert Kışlakçı
Turk Telekom Bulut Teknolojileri
4 min read4 days ago
VROPS

VROps

VMware tarafından geliştirilen VMware vRealize (Aria) Operations, IT altyapısını izleme, yönetme ve optimize etme yetenekleri sunan bir operasyon yönetimi ve kapasite planlama platformudur. Bu yazılım, büyük ve karmaşık sanal ve bulut altyapılarındaki performansı ve verimliliği izlemek ve iyileştirmek için tasarlanmıştır.

vRealize Operations’ın Temel Özellikleri

  1. Performans İzleme ve Analiz: Sanal makineler, depolama, ağ ve uygulamaların performansını izler ve analiz eder. Bu sayede performans sorunları hızla tespit edilerek çözüm önerilerinde bulunulur.
  2. Kapasite Planlama: Gelecekteki altyapı ihtiyaçlarını tahmin etmek için kapasite analizi yapar. Bu, kaynakların etkili bir şekilde kullanılmasını sağlar ve gereksiz donanım maliyetlerini azaltır.
  3. Otomasyon ve Yönetim Entegrasyonu: vRealize Operations, diğer VMware ürünleri ve üçüncü taraf sistemlerle entegre olabilir. Otomasyon yetenekleri, iş süreçlerini optimize etmeye ve sorunları otomatik olarak çözmeye yardımcı olur.
  4. Anlık Görünürlük: Sanal ve fiziksel altyapıdaki varlıkların anlık durumu hakkında detaylı bilgiler sağlar. Bu sayede hızlı kararlar alınabilir.
  5. Anomali Algılama ve Alarm Yönetimi: Sistem normal davranışları öğrenir ve sapmaları tespit ederek anında uyarılar ve alarm bildirimleri sağlar.
  6. Raporlama ve Veri Görselleştirme: Kapsamlı raporlama ve görselleştirme araçları, altyapının durumu, performansı ve kullanımı hakkında anlamlı bilgiler sunar.

vRealize Operations (vROps) Raporlarını Python API ile İndirme

vROps raporlarını Python API kullanarak indirmek, sistem yöneticileri ve operasyon ekipleri için verimliliği artırmak açısından önemlidir. Bu süreci başarılı bir şekilde gerçekleştirmek için aşağıdaki adımları takip edebilirsiniz.

Gerekli Kütüphanelerin Yüklenmesi

Öncelikle, vROps Python API’larını kullanmak için gerekli kütüphaneleri yüklemelisiniz. Bu adım, Python ortamınızı vROps ile iletişim kurmaya hazır hale getirmek için gereklidir.

Raporların Listelenmesi

vROps üzerinde bulunan raporları listelemek için API’yi kullanabilirsiniz. Bu adım, mevcut raporları görüntülemenize ve istediğiniz raporu seçmenize olanak tanır.

Raporların İndirilmesi

Raporları indirmek için, seçtiğiniz raporun benzersiz bir kimliğini veya adını belirlemeniz gerekir. Ardından, bu raporu Python kodunuzda belirttiğiniz dosya formatında (CSV, PDF gibi) indirebilirsiniz. İndirme işlemlerini otomatikleştirmek istiyorsanız, zamanlanmış görevler veya başka bir otomasyon mekanizması kullanabilirsiniz.

Sorunların Tespiti ve Çözümü

Bu süreçte karşılaşabileceğiniz olası sorunları öngörmek ve bunlara çözümler sunmak önemlidir. Hata ayıklama yetenekleri, sorunları hızlı bir şekilde tespit etmenize ve çözmenize yardımcı olacaktır.

API ile Rapor Alma ve İndirme Adımları

  1. vROps Üzerinden Rapor Verilerinin Elde Edilmesi
  • VROPS ekranınızda bulunan Report > Manage alanından API ile çıktısını almak istediğiniz bir raporun üzerine sağ tıklayın ve açılan menüden “İncele” seçeneğine tıklayın.
  • İnceleme kısmından Network sekmesine gidin. Bu sayfa açıkken raporu oluşturun ve en altta çıkan router kısmına tıklayın ve buradaki bilgileri aşağıda bulunan report_creation_data.jsondosyasındaki yerlere girin. Bu bilgileri raporu run ettikten sonra en aşağıdaki router bilgisinden alın.
  • Raporu oluşturmak için rapor adının yanındaki üç noktaya tıkladıktan sonra “Run” seçeneğine basın.
  • Network ekranında bulunan router isteğine ait bilgileri aşağıdaki dosyada gerekli yerlere doldurup bu dosyayı report_creation_data.json adıyla kodunuzla aynı klasöre koyun.
{
"reportId": "",
"reportDefinitionId": "",
"reportName": "",
"resourceId": "",
"resourceName": "",
"creationTime": "",
"formattedCreationTime": "",
"completionState": "",
"owner": "",
"subjectTypes": [
{
"object": {
"minType": "",
"subject": {
"adapterKind": "",
"resourceKind": ""
},
"type": "",
"filter": null
},
"localizedValue": ""
}
],
"hasCsvData": true,
"hasPdfData": true,
"links": [
{
"imgUrl": "",
"downloadUrl": "",
"tooltip": "Download as PDF"
},
{
"imgUrl": "",
"downloadUrl": "",
"tooltip": "Download as CSV"
}
],
"creationDateFormatted": ""
}

2. Python Kodu ile Rapor Oluşturma ve İndirme

import ssl
import time
import json
import urllib3
import requests
from datetime import datetime

# SSL sertifika doğrulamasını devre dışı bırak
ssl._create_default_https_context = ssl._create_unverified_context
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

class VRopsClient:
headers = {"Accept": "application/json", "Content-Type": "application/json"}

def __init__(self, url_base, username=None, password=None):
self.url_base = url_base + "/suite-api/api"
credentials = json.dumps({"username": username, "password": password})
result = requests.post(url=self.url_base + "/auth/token/acquire",
data=credentials,
verify=False, headers=self.headers)
result.raise_for_status()
json_data = json.loads(result.content)
self.token = json_data["token"]
self.headers["Authorization"] = "vRealizeOpsToken " + self.token

def get(self, url):
return requests.get(url=self.url_base + url,
headers=self.headers,
verify=False)

def post(self, url, data):
return requests.post(url=self.url_base + url,
headers=self.headers,
data=json.dumps(data),
verify=False)

def delete(self, url):
return requests.delete(url=self.url_base + url,
headers=self.headers,
verify=False)

class VRopsService:
def __init__(self, url, user, password, output_file):
self.vrops = VRopsClient(url, user, password)
self.output_file = output_file

# VROPS üzerinden rapor oluştur
def report_create(self):
# report_creation_data.json dosyasını oluşturmanız gerekmektedir.
file_path = "report_creation_data.json"
with open(file_path, "r") as json_file:
report_creation_data = json.load(json_file)

try:
create_response = self.vrops.post('/reports', data=report_creation_data)
create_response.raise_for_status()
print("Report created successfully.")
self.created_report_id = create_response.json()["id"]
except requests.exceptions.RequestException as e:
print(f"Failed to create report. {e}")

def wait_for_report_ready(self, timeout=600, interval=10):
start_time = datetime.now()
while (datetime.now() - start_time).seconds < timeout:
try:
if self.created_report_id:
status_response = self.vrops.get(f'/reports/{self.created_report_id}')
status_response.raise_for_status()
status_data = status_response.json()
print(f"Report status data: {status_data}")

# Kontrol etmek için status_data içeriğini yazdırın
if 'status' in status_data:
if status_data['status'] == 'COMPLETED':
print("Report is ready for download.")
return True
elif status_data['status'] == 'FAILED':
print("Report creation failed.")
return False
else:
print("Unexpected status data structure: missing 'status' key.")
else:
print("Report ID is missing.")
except requests.exceptions.RequestException as e:
print(f"Error checking report status: {e}")
time.sleep(interval)
print("Report creation timed out.")
return False

# Oluşturulan raporu VROPS üzerinden indir
def report_download(self):
try:
if self.created_report_id:
download_response = self.vrops.get(f'/reports/{self.created_report_id}/download?format=csv')
download_response.raise_for_status()
print("Report downloaded successfully.")
with open(self.output_file, "wb") as f:
f.write(download_response.content)
except requests.exceptions.RequestException as e:
print(f"Failed to download report. {e}")

# Rapor oluşturulduktan sonra VROPS ekranından sil
def report_delete(self):
try:
if self.created_report_id:
delete_response = self.vrops.delete(f'/reports/{self.created_report_id}')
delete_response.raise_for_status()
print("Report deleted successfully.")
except requests.exceptions.RequestException as e:
print(f"Failed to delete report. {e}")

# Giriş bilgilerinizi bu alana giriniz.
if __name__ == '__main__':
url = "https://"
user = ""
password = ""
output_file = "output_file.csv"

vrops_service = VRopsService(url, user, password, output_file)
vrops_service.report_create()
if vrops_service.wait_for_report_ready():
vrops_service.report_download()
vrops_service.report_delete()

Bu rehber, vROps raporlarını Python API kullanarak otomatik indirme yoluyla ekiplere kolaylık sağlamayı amaçlamaktadır.

--

--

Mert Kışlakçı
Turk Telekom Bulut Teknolojileri

#Cloud Computing #vmware #virtualization #redhat #EdgeComputing #DataScience #AI #IoT #ComputerVision #Python #OpenCV #C #Virtualization