ThingsBoard ile PowerShell Kullanarak Sistem Durumu Verilerini İzleme
IoT (Nesnelerin İnterneti) uygulamaları, cihazlardan veri toplamak ve bu verileri analiz etmek için güçlü araçlar sunar. ThingsBoard, IoT çözümleri geliştirmek için kullanılan açık kaynaklı bir platformdur. Bu makalede, PowerShell kullanarak CPU sıcaklığı, bellek ve disk doluluk oranlarını ThingsBoard'a nasıl göndereceğimizi öğreneceğiz.
Powershell Script kısmında "Chatgpt" veya benzeri yapay zeka uygulamalarını kullanabilirsiniz.
CPU sıcaklığı, bellek ve disk doluluk oranlarını almak için PowerShell'deki WMI (Windows Management Instrumentation) nesnelerini kullanacağız. Aşağıdaki kod ile bu bilgileri alabilirsiniz:
# ThingsBoard cihaz tokeni ve URL'si
$deviceToken = "YOUR_DEVICE_TOKEN" # ThingsBoard'dan aldığınız cihaz tokenini buraya ekleyin
$thingsboardUrl = "http://YOUR_THINGSBOARD_URL/api/v1/$deviceToken/telemetry"
# CPU sıcaklığını ve diğer sistem bilgilerini almak için WMI nesnelerini kullan
$cpuTempCelsius = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" | ForEach-Object { ($_.CurrentTemperature / 10) - 273.15 } # CPU sıcaklığını Celcius cinsine çevir
$cpuUsage = Get-WmiObject -Class Win32_Processor | Measure-Object -Property LoadPercentage -Average | Select-Object -ExpandProperty Average # CPU kullanım oranı
$memoryInfo = Get-WmiObject -Class Win32_OperatingSystem # Bellek bilgisi
$freeMemory = $memoryInfo.FreePhysicalMemory / 1MB # Kullanılabilir bellek (MB)
$totalMemory = $memoryInfo.TotalVisibleMemorySize / 1MB # Toplam bellek (MB)
$usedMemory = $totalMemory - $freeMemory # Kullanılan bellek (MB)
$diskInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" # Disk bilgisi
$diskUsage = $diskInfo | ForEach-Object {
[PSCustomObject]@{
Drive = $_.DeviceID
UsedSpace = ($_.Size - $_.FreeSpace) / 1GB
TotalSpace = $_.Size / 1GB
FreeSpace = $_.FreeSpace / 1GB
}
}
# JSON formatında veri hazırlama
$telemetryData = @{
"cpuTemperature" = [math]::Round($cpuTempCelsius, 2) # CPU sıcaklığını iki ondalık basamağa yuvarla
"cpuUsage" = [math]::Round($cpuUsage, 2) # CPU kullanım oranını iki ondalık basamağa yuvarla
"usedMemory" = [math]::Round($usedMemory, 2) # Kullanılan bellek (MB)
"totalMemory" = [math]::Round($totalMemory, 2) # Toplam bellek (MB)
"freeMemory" = [math]::Round($freeMemory, 2) # Boş bellek (MB)
"diskUsage" = $diskUsage | ForEach-Object {
[PSCustomObject]@{
"Drive" = $_.Drive
"UsedSpaceGB" = [math]::Round($_.UsedSpace, 2)
"TotalSpaceGB" = [math]::Round($_.TotalSpace, 2)
"FreeSpaceGB" = [math]::Round($_.FreeSpace, 2)
}
}
} | ConvertTo-Json -Depth 4 # JSON içine iç içe objeleri eklemek için derinliği arttırdık
# HTTP POST isteğiyle veriyi ThingsBoard'a gönder
try {
$response = Invoke-RestMethod -Uri $thingsboardUrl -Method Post -Body $telemetryData -ContentType "application/json"
Write-Host "Veri ThingsBoard'a başarıyla gönderildi."
} catch {
Write-Host "Veri gönderim hatası: $_"
}
Topladığımız bu verileri Thingsboard ekranından izleyebilmek için Thingsboard dashbordumuzda ilgili widgetlara "datakey" lerimizi eklememiz gerekiyor. (Bu arada bazı verileri alabilmeniz için Powershell dosyasını "Administrator" hesabı ile çalıştırmayı unutmamanız gerekiyor.
IT Sistem yöneticileri olarak bizler sunucularımızın durumlarını hergün kontrol etmek zorundayız. Bizim için kritik önemi olan sunucularımızda bu powershell Scripti schedule olarak istediğiniz zaman aralığında çalıştırarak bu verilerin Thingsboard üzerinde izlenmesini sağlayabiliriz.
ThingsBoard üzerinde yeni cihaz ekle diyerek cihazımı ekledikden sonra yukarıdaki powershell script üzerinde gerekli yerlere token ve url bilgilerini giriyoruz. Powershell scriptimizi çalıştırıyoruz.
LinkedIn tarafından öneriliyor
Scriptimiz çalıştıktan sonra her şey doğru ise aşağıdaki gibi telemetry datalarımız thingsboard üzerinde görünecektir.
Daha sonra görmek istediğimiz data için widget üzerinde aşağıdaki gibi datakey imizi ekleyerek izlemeye başlayabiliriz.
Aşağıdaki gibi istenilen widgetlar ile nasıl bir görsel de izlenmek isteniyorsa o şekilde bir dashboard hazırlanabilir.
Bir sonraki yazımızda elde ettiğimiz bu verileri makine öğrenmesi ile anomali veya veri odaklı karar destek sistemini konuşuyor olacağız..
Bilgi Paylaştıkça Büyür.