koyabu/snmpclient

SNMP Client for v2/v3

Installs: 10

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/koyabu/snmpclient

dev-master 2025-12-27 10:00 UTC

This package is auto-updated.

Last update: 2025-12-27 10:01:05 UTC


README

Koyabu\SnmpClient adalah library PHP ringan untuk mengambil informasi server atau perangkat jaringan menggunakan SNMP (Simple Network Management Protocol).

Library ini cocok untuk:

  • monitoring server Linux
  • dashboard server / VPS
  • sistem monitoring internal
  • belajar SNMP dengan cara yang lebih sederhana

Mendukung SNMP v2c dan SNMP v3, serta sudah dirancang agar aman, stabil, dan mudah digunakan.

✨ Fitur Utama

  • ✅ Mendukung SNMP v2c & v3
  • ✅ Ambil data sistem, CPU, RAM, disk, jaringan
  • ✅ Ambil daftar IP address server
  • ✅ Ambil port TCP yang sedang LISTEN
  • ✅ Hitung traffic jaringan (RX / TX delta)
  • ✅ Error handling jelas dengan Exception
  • ✅ Logging otomatis
  • ✅ Kode modern, rapi, dan efisien

📋 Persyaratan

  • PHP 7.4 atau lebih baru
  • Ekstensi PHP: php-snmp
  • Composer

Pastikan SNMP aktif di server target (biasanya snmpd di Linux).

📦 Instalasi

Jika library tersedia via Composer:

composer require koyabu/snmpclient

Jika ini library lokal, pastikan autoload di composer.json sudah benar.

Jangan lupa load autoloader:

require 'vendor/autoload.php';

🚀 Cara Menggunakan

1️⃣ Inisialisasi SnmpClient

🔹 SNMP v2c (paling umum & mudah)

use Koyabu\SnmpClient\SnmpClient;

$snmp = new SnmpClient(
    '192.168.1.1',
    2,
    ['community' => 'public']
);

🔹 SNMP v3 (lebih aman)

use Koyabu\SnmpClient\SnmpClient;

$authV3 = [
    'sec_name'   => 'snmpuser',
    'sec_level'  => 'authPriv',
    'auth_proto' => 'SHA',
    'auth_pass'  => 'passwordAuth',
    'priv_proto' => 'AES',
    'priv_pass'  => 'passwordPriv'
];

$snmp = new SnmpClient('192.168.1.1', 3, $authV3);

📊 Mengambil Data

🖥️ Informasi Sistem

print_r($snmp->systemInfo());

Contoh hasil:

[
  'hostname' => 'server-01',
  'os'       => 'Linux Ubuntu 22.04',
  'location' => 'Data Center',
  'uptime'   => '3 days, 04:12:55'
]

⚙️ Beban CPU

print_r($snmp->cpuLoad());
[
  '1min'  => 0.25,
  '5min'  => 0.30,
  '15min' => 0.28
]

🧠 Memori (RAM & Swap)

Semua nilai dalam KB

print_r($snmp->memory());
[
  'physical' => [
    'total' => 8192000,
    'used'  => 4200000,
    'free'  => 3992000
  ],
  'swap' => [
    'total' => 2048000,
    'used'  => 128000,
    'free'  => 1920000
  ]
]

💽 Disk

print_r($snmp->disks());
[
  [
    'mount'    => '/',
    'total_kb' => 512000000,
    'used_kb'  => 256000000
  ],
  [
    'mount'    => '/home',
    'total_kb' => 1024000000,
    'used_kb'  => 307200000
  ]
]

🌐 Interface Jaringan

print_r($snmp->interfaces());
[
  2 => [
    'device'    => 'eth0',
    'rx_bytes'  => 987654321,
    'tx_bytes'  => 123456789
  ]
]

🧾 Daftar IP Address Server

Mengembalikan semua IP yang terdaftar di server (LAN, Docker, VPN, dsb).

print_r($snmp->ipAddresses());
[
  [
    'ip' => '103.150.191.56',
    'interface_index' => 2,
    'device' => 'eth0',
    'netmask' => '255.255.254.0'
  ],
  [
    'ip' => '172.22.0.1',
    'interface_index' => 178,
    'device' => 'ztdiyuprfr',
    'netmask' => '255.255.0.0'
  ]
]

⚠️ Catatan:

  • IP Docker / VPN akan ikut terbaca
  • Ini normal dan bukan bug

🔐 Port TCP yang Sedang LISTEN

print_r($snmp->listeningPorts());
[22, 80, 443, 3306]

📌 Hanya port TCP LISTEN, bukan UDP.

📈 Hitung Traffic Jaringan (RX / TX)

$first  = $snmp->interfaces();
sleep(60);
$second = $snmp->interfaces();

$delta = SnmpClient::trafficDelta($first, $second);

print_r($delta);

Hasil (dalam byte per interval):

[
  2 => [
    'device' => 'eth0',
    'rx_bps' => 102400,
    'tx_bps' => 204800
  ]
]

Jika ingin bit per detik (bps):

$iface['rx_bps'] = ($iface['rx_bps'] * 8) / 60;

❌ Penanganan Error

Semua error akan melempar SnmpException.

use Koyabu\SnmpClient\SnmpException;

try {
    $snmp->systemInfo();
} catch (SnmpException $e) {
    echo "SNMP Error: " . $e->getMessage();
}

📝 Logging

Default log:

/var/log/snmp-monitor.log

Custom log:

use Koyabu\SnmpClient\SnmpLogger;

$logger = new SnmpLogger(__DIR__ . '/snmp.log');

$snmp = new SnmpClient(
    '192.168.1.1',
    2,
    ['community' => 'public'],
    $logger
);

✅ Penutup

Library ini dirancang agar:

  • mudah dipakai user awam
  • cukup kuat untuk produksi
  • tidak ribet SNMP raw

Silakan dikembangkan lebih lanjut sesuai kebutuhan monitoring Anda.