AutomationVMware

VMware vCloud Usage Meter – Product Credential Monitoring

vCloud Usage Meter vCenter Server üzerine kurulan sanal bir uygulamadır. vCloud Usage Meter desteklenen ürünlerde tüketim verilerini toplar ve raporlar oluşturur. Bu ürün VMware Cloud Provider Program a dahil olan müşteriler tarafından kullanılabilmektedir. Bu yazımda sizlere vCloud Usage Meter da bulunan ürünlerde ilgili servis credential larını Python ile nasıl izleyebileceğimizi anlatacağım. Python üzerinde ilgili hatalı verileri topladıktan sonra diğer makalelerimde olduğu gibi Slack kanalından bildirim alacağız. Buradaki use-case imiz aslında ilgili ürünlerde collection hatalarına sebebiyet verecek credential değişikliklerinde (şifre güncellemesi vb.) Usage Meter kullanım raporlarının etkilenmemesi adına en kısa sürede bu durumun bildirimini almak. Bunun için ürün içerisinde Product Collection Errors ile ilgili e-mail üzerinden bildirim almanız mümkün. Ancak Slack üzerinden de ilgili ekiplere bildirim göndermek istiyorsanız aşağıda bunu nasıl yapabileceğimizden bahsedeceğim.

Buradan VMware vCloud Usage Meter API dökümanına ulaşabilirsiniz.

Aşağıdaki değişkenler ile Usage Meter bağlantısını yaptıktan sonra tüm product listesindeki hesapların durumlarını kontrol edip hataları bulguları Slack kanalına ileteceğiz.

Python
import requests
import json
from slack_sdk.webhook import WebhookClient
vcloudUM_URL = "https://vcloud-um.vmbro.local/login" # Usage Meter URL for Slack hyperlinked message
slack_emoji = ":warning:" # Slack Emoji
slackURL = 'https://hooks.slack.com/services/TTTTT535353' # Slack channel webhook URL
url = "https://vcloud-um.vmbro.local:443/api/v1/" # Usage Meter URL
UMUsername = "usagemeter" # Usage Meter username
UMPassword = "Password" # Usage Meter password
loginUrl   = url + "login"
errorState = False

Aşağıda Usage Meter URL ve hesap bilgileri ile session oluşturuyoruz.

Python
headers = {
	"Content-Type": "application/json"
}
payload = {
	"user": f"{UMUsername}",
        "password": f"{UMPassword}"
}
response = requests.post(loginUrl, json=payload, headers=headers, verify=False)  
sessionID = response.json()["sessionid"]

Session bilgisini aldıktan sonra ProductURL i ile birlikte tüm product listesini görebiliyoruz.

Python
productResponseJson = requests.get(productUrl, headers=headers, verify=False)  
productResponse = productResponseJson.json()
formatted_json = json.dumps(productResponseJson.json(), indent=4)
print(formatted_json)
products = json.loads(formatted_json)

Burada Aria Operations ürününe özel örnek json çıktısını görebilirsiniz. Status altındaki değerlerde ilgili vROPS ürünündeki hatalı durumu görebiliyoruz.

JSON
[
    {
        "lastChanged": 1695226504400,
        "vcHosts": [
            "vcenter.vmbro.local"
        ],
        "active": true,
        "fullName": "VMware Aria Operations",
        "inventory": [
            {
                "id": 4,
                "vc_instance_uuid": "7332bffa-3022-4611-f33c-caffd0ffcf3dc"
            }
        ],
        "version": "8.12.1",
        "port": 443,
        "host": "ariaops-manager.vmbro.local",
        "metered": true,
        "id": 5,
        "user": "usage-meter.svc",
        "productType": "VROPS",
        "status": {
            "code": "Err",
            "level": "Err",
            "lastChanged": 16336512838,
            "text": "Credential verification failure",
            "statusCode": "PM_TEST_CRED"
        }
    }
]

Son olarak for döngüsü içerisinde tüm ürünlerde sırasıyla statusCode değerlerini karşılaştırıp, hata içeren ürünlerde Slack kanalında bildirim almak için sendSlack() fonksiyonuna gönderiyoruz.

Python
for product in products:
    if product["status"]["statusCode"] != "COLLECT_OK":
        productType = product["productType"]
        productUser = product["user"]
        productInstance = product["host"]
        productStatusText = product["status"]["text"]
        productStatusCode = product["status"]["statusCode"]
        sendSlack(productType, productUser, productInstance, productStatusText, productStatusCode)

sendSlack() fonksiyonu çalıştıktan sonra Slack kanalında aşağıdaki gibi bir bildirim alacaksınız. Scripti istediğiniz gibi schedule edebilir, düzenli olarak Usage Meter ürünlerinizi izleyebilirsiniz.

Makale içerisindeki kullanılan scripte Github profilimden ulaşabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir