Monitoring Disk Usage
GET ID Location
Klik nama lokasi yang ingin di monitoring di aplikasi, ambil ID dari URL
http://103.175.220.168/locations/01J0ZBWXWZB54NCYYMYCFZ9ZCT/edit <-- URL
01J0ZBWXWZB54NCYYMYCFZ9ZC <-- ID Lokasi
Windows 10/11
PowerShell + Invoke-RestMethod
Invoke-RestMethod
๐ง Script PowerShell:
# Ambil info disk C:
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID = 'C:'" #ubah partisi tempat mysql data
$locationId = "ID Location" #ubah id lokasi didapat dari aplikasi
$mountPoint = "C:" #ubah partisi sesuai DeviceID
$size = "{0:N2}" -f ($disk.Size / 1GB)
$used = "{0:N2}" -f (($disk.Size - $disk.FreeSpace) / 1GB)
$available = "{0:N2}" -f ($disk.FreeSpace / 1GB)
$usagePercent = "{0:N0}" -f ((($disk.Size - $disk.FreeSpace) / $disk.Size) * 100)
# Buat payload JSON
$payload = @{
location_id = $locationId
mount_point = $mountPoint
size = $size
used = $used
available = $available
usage_percent = $usagePercent
} | ConvertTo-Json
# Kirim ke Laravel API
Invoke-RestMethod -Uri "http://103.175.220.168/api/disk-usages" `
-Method Post `
-Body $payload `
-ContentType "application/json"
Buat script .ps1
lalu jalankan otomatis via Task Scheduler
.ps1
lalu jalankan otomatis via Task SchedulerSimpan script di file, misalnya:
Send-DiskUsage.ps1
Jalankan otomatis:
Buka Task Scheduler
Create Basic Task
Trigger: daily/hourly
Action: Start a program โ
powershell.exe
Add arguments:
-File C:\path\to\Send-DiskUsage.ps1
Untuk menjalankan file PowerShell (Send-DiskUsage.ps1
) secara manual, ikuti langkah-langkah berikut:
โ
Langkah 1: Pastikan file siap
Misalnya kamu simpan file Send-DiskUsage.ps1
di:
C:\Scripts\Send-DiskUsage.ps1
โ
Langkah 2: Buka PowerShell sebagai Administrator
Klik Start
Cari "PowerShell"
Klik kanan > Run as Administrator
โ
Langkah 3: Jalankan script
Ketik perintah ini di jendela PowerShell:
& "C:\Scripts\Send-DiskUsage.ps1"
Atau jika file berada di folder saat ini:
.\Send-DiskUsage.ps1
โ ๏ธ Jika muncul error script is disabled
, ubah execution policy:
script is disabled
, ubah execution policy:Ketik:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Lalu ketik A
jika diminta konfirmasi.
โ
Hasil
Kalau script benar dan URL API aktif, data akan terkirim dan kamu akan lihat output seperti:
message data
------- ----
Successfully Create Resource @{location_id=01J0ZBWXWWN8ER56NQTTHZNKDP; usage_percent=96; used=113.71; available=4...
CentOS
Bash
๐ ๏ธ 1. Masuk ke Terminal CentOS
Pastikan kamu login ke server CentOS, sebagai user yang memiliki hak untuk menjalankan cron dan mengakses disk.
๐ 2. Buat File Script
Gunakan nano
untuk membuat file script, misalnya di /usr/local/bin/send-disk.sh
:
sudo nano /usr/local/bin/send-disk.sh
๐งพ 3. Isi Script Berikut
#!/bin/bash
# Parameter 1 = mount point (default: /)
MOUNT_POINT=${1:-/}
LOCATION_ID="ID Location"
API_URL="http://103.175.220.168/api/disk-usages"
# Ambil nilai dalam byte
read size used available percent mount <<< $(df --block-size=1 "$MOUNT_POINT" | awk 'NR==2 {print $2, $3, $4, $5, $6}')
# Hapus tanda persen
percent=${percent%\%}
# Konversi ke GB (pembulatan 2 angka di belakang koma)
size_gb=$(awk "BEGIN {printf \"%.2f\", $size/1073741824}")
used_gb=$(awk "BEGIN {printf \"%.2f\", $used/1073741824}")
available_gb=$(awk "BEGIN {printf \"%.2f\", $available/1073741824}")
# Kirim ke API
curl -s -X POST "$API_URL" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"location_id": "'$LOCATION_ID'",
"mount_point": "'$mount'",
"size": "'$size_gb'",
"used": "'$used_gb'",
"available": "'$available_gb'",
"usage_percent": "'$percent'"
}'
๐พ 4. Simpan dan Keluar dari Nano
Tekan:
CTRL + O
โ Enter (untuk menyimpan)CTRL + X
โ (untuk keluar dari nano)
๐ 5. Beri Izin Eksekusi
sudo chmod +x /usr/local/bin/send-disk.sh
๐งช 6. Tes Script Manual
Jalankan script secara manual untuk tes:
/usr/local/bin/send-disk.sh
Atau untuk partisi lain:
/usr/local/bin/send-disk.sh /home
๐ 7. Tambahkan ke Cronjob
Jalankan:
crontab -e
Tambahkan baris berikut untuk menjalankan setiap hari :
0 0 * * * /usr/local/bin/send-disk.sh
โ
8. Cek Cron Log (Opsional)
Untuk melihat apakah cron berhasil jalan:
grep CRON /var/log/cron
Last updated
Was this helpful?