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

๐Ÿ”ง 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

  1. Simpan script di file, misalnya: Send-DiskUsage.ps1

  2. 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:

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?