Parmi Notes Random short any article
Posted on
network

SNMP

Author

SNMP (Simple Network Management Protocol) adalah protokol standar untuk memantau dan mengelola perangkat jaringan seperti router, switch, server, dan perangkat IoT. SNMP memungkinkan administrator jaringan mengumpulkan informasi, memantau kinerja, dan mengontrol perangkat jarak jauh.


Versi SNMP dan Perbedaannya

  1. SNMPv1

    • Tahun Rilis: 1988
    • Kelebihan:
      • Sederhana dan mudah diimplementasikan.
      • Dukungan luas di perangkat jaringan lama.
    • Kekurangan:
      • Tidak ada enkripsi (menggunakan community string plaintext).
      • Tidak ada autentikasi yang kuat.
      • Rentan terhadap serangan (sniffing, spoofing).
  2. SNMPv2c

    • Tahun Rilis: 1993 (v2, tetapi v2c yang populer)
    • Kelebihan:
      • Memperbaiki performa (misalnya, GetBulk untuk mengambil data banyak sekaligus).
      • Masih menggunakan community string, tetapi lebih efisien.
    • Kekurangan:
      • Tetap tidak aman (tanpa enkripsi).
  3. SNMPv3

    • Tahun Rilis: 1998
    • Kelebihan:
      • Autentikasi (MD5/SHA) dan enkripsi (DES/AES).
      • Mendukung model keamanan berbasis pengguna (USM - User-based Security Model).
      • Perlindungan terhadap modifikasi data.
    • Kekurangan:
      • Konfigurasi lebih kompleks.
      • Membutuhkan lebih banyak sumber daya CPU.

Contoh Konfigurasi SNMP

Berikut contoh konfigurasi SNMPv3 di Cisco Router dan Linux (Net-SNMP):

1. Cisco Router (SNMPv3)

Router(config)# snmp-server group AdminGroup v3 priv
Router(config)# snmp-server user admin AdminGroup v3 auth sha password123 priv aes 256 encrypt456
Router(config)# snmp-server host 192.168.1.100 version 3 priv admin

2. Linux (Net-SNMP)

Edit /etc/snmp/snmpd.conf untuk SNMPv3:

createUser admin SHA "password123" AES "encrypt456"
rouser admin priv

Restart layanan:

sudo systemctl restart snmpd

3. SNMPv2c (Sederhana)

Contoh di Linux:

rocommunity public 192.168.1.0/24

Di Cisco:

Router(config)# snmp-server community public RO

Perbandingan Versi SNMP

Fitur SNMPv1 SNMPv2c SNMPv3
Keamanan Tidak aman Tidak aman Autentikasi + Enkripsi
Performa Dasar GetBulk GetBulk
Kompleksitas Sederhana Sederhana Kompleks
Dukungan Legacy Luas Modern

Kapan Memilih Versi SNMP?

  • SNMPv1/v2c: Hanya untuk jaringan tertutup/trusted (misalnya lab).
  • SNMPv3: Wajib untuk jaringan produksi yang membutuhkan keamanan.

Alat untuk SNMP

  • Monitoring: Zabbix, Nagios, PRTG.
  • CLI Tools: snmpwalk, snmpget (Linux).
    Contoh:
snmpwalk -v3 -u admin -l authPriv -a SHA -A password123 -x AES -X encrypt456 192.168.1.1

Kesimpulan

SNMPv3 adalah pilihan terbaik untuk keamanan, sementara SNMPv2c masih digunakan untuk perangkat lama. Pastikan untuk selalu membatasi akses SNMP dengan ACL dan menggunakan community string yang kuat jika memakai v1/v2c.

Pengertian SNMP Trap dan SNMP Trap Server

SNMP Trap adalah mekanisme dalam protokol SNMP yang memungkinkan perangkat jaringan (seperti router, switch, atau server) mengirim pesan asynchronous (tidak diminta) ke SNMP Trap Server ketika terjadi suatu event penting, seperti:
- Link down/up
- CPU overload
- Perubahan konfigurasi
- Kegagalan hardware

Berbeda dengan polling (get-request), trap dikirim secara otomatis oleh perangkat ketika ada kejadian tertentu, sehingga memungkinkan monitoring yang lebih real-time.


Cara Kerja SNMP Trap

  1. Perangkat jaringan (agent) dikonfigurasi untuk mengirim trap ke Trap Server.
  2. Ketika terjadi event (misalnya, interface down), perangkat mengirimkan SNMP Trap ke alamat IP yang telah ditentukan.
  3. Trap Server (biasanya NMS seperti Zabbix, PRTG, atau SolarWinds) menerima dan memproses trap untuk notifikasi atau logging.

Contoh Konfigurasi SNMP Trap

1. Cisco Router (Mengirim Trap ke Server)

Router(config)# snmp-server host 192.168.1.100 traps version 3 priv admin  
Router(config)# snmp-server enable traps  
Router(config)# snmp-server enable traps bgp  # Contoh: Trap untuk BGP state change  

2. Linux (Net-SNMP Trap Receiver)

  • Install snmptrapd:
    bash sudo apt install snmptrapd # Debian/Ubuntu sudo yum install net-snmp # RHEL/CentOS
  • Edit /etc/snmp/snmpd.conf untuk menerima trap:
    ini authCommunity log,execute,net public traphandle default /usr/bin/logger # Log trap ke syslog
  • Jalankan snmptrapd:
    bash sudo systemctl start snmptrapd

3. Testing Mengirim Trap

Gunakan snmptrap dari CLI untuk simulasi:

snmptrap -v 2c -c public 192.168.1.100 '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 s "Warning: High CPU Usage"

Perbedaan SNMP Trap vs SNMP Polling

Fitur SNMP Trap SNMP Polling
Inisiasi Dikirim oleh perangkat (event-based) Diminta oleh server (request-based)
Latensi Real-time (cepat) Tergantung interval polling
Traffic Hanya saat ada event Terus-menerus
Contoh Peringatan link down Memantau penggunaan CPU setiap 5 menit

SNMP Trap Server (Trap Receiver)

Adalah server yang menerima dan memproses SNMP Trap, biasanya berupa:
- Network Monitoring System (NMS): Zabbix, Nagios, SolarWinds, PRTG.
- Syslog Server: Menerima trap dan menyimpannya sebagai log.
- Custom Script: Memproses trap dengan Python/Perl (contoh: snmptrapd + Bash script).


Kelebihan SNMP Trap

Real-time alerting (tidak perlu menunggu polling).
Mengurangi bandwidth (hanya mengirim saat ada event).
Mendukung otomatisasi (bisa trigger script otomatis).

Kekurangan SNMP Trap

Tidak menjamin delivery (UDP-based, bisa hilang di jaringan sibuk).
Konfigurasi lebih kompleks (harus setup trap receiver).
Bisa membanjiri server jika terlalu banyak trap.


Solusi untuk Trap yang Hilang (Loss)

  • Gunakan SNMP Inform (versi extended dari trap yang membutuhkan acknowledgment).
  • Implementasi buffer trap di perangkat.
  • Gunakan Transport TCP jika didukung (beberapa vendor mendukung SNMP over TCP).

Kesimpulan

  • SNMP Trap berguna untuk notifikasi event penting secara real-time.
  • SNMP Trap Server diperlukan untuk menerima dan memproses trap.
  • SNMPv3 lebih direkomendasikan untuk keamanan (enkripsi trap).
  • Alternatif: Syslog atau streaming telemetry (gRPC, NetFlow) untuk skala besar.

Berikut adalah konfigurasi SNMP Trap di Windows, baik sebagai Trap Receiver (Server) maupun sebagai Agent yang mengirim Trap:


1. Mengaktifkan SNMP Service di Windows (Agent)

Untuk mengirim/menerima Trap, Windows harus memiliki SNMP Service yang diinstal.

Langkah 1: Install SNMP Service

  • Buka Control PanelPrograms and FeaturesTurn Windows features on or off.
  • Centang Simple Network Management Protocol (SNMP).
  • Klik OK dan restart jika diperlukan.

Langkah 2: Konfigurasi SNMP Agent (Opsional)

  • Buka Services.msc → Cari SNMP Service.
  • Klik kanan → Properties → Tab Agent.
    • Centang layanan yang ingin dipantau (misalnya Physical, Applications, Internet).
  • Tab Traps:
    • Masukkan Nama Komunitas (misalnya public).
    • Tambahkan Alamat Trap Receiver (IP server monitoring, misalnya 192.168.1.100).
  • Tab Security:
    • Tambahkan Accepted community names (misalnya public dengan izin READ ONLY atau READ WRITE).
    • Jika memakai SNMPv3, konfigurasi user dengan autentikasi/enkripsi.

2. Menggunakan Windows sebagai SNMP Trap Receiver

Windows tidak memiliki built-in Trap Receiver yang kuat, tetapi kita bisa menggunakan: - SolarWinds SNMP Trap Receiver (Tools gratis). - PRTG Network Monitor (Versi gratis hingga 100 sensor). - Snmptrapd dengan WSL (Windows Subsystem for Linux).

Contoh: Menggunakan SolarWinds Trap Receiver

  1. Download SolarWinds SNMP Trap Receiver (Free Tool) dari situs resmi.
  2. Install dan jalankan aplikasi.
  3. Konfigurasi Listen Port (default: 162 UDP).
  4. Tambahkan Filter Trap (opsional) berdasarkan OID atau komunitas.
  5. Trap yang diterima akan muncul di log.

3. Mengirim Trap dari Windows (Testing)

Kita bisa menggunakan PowerShell atau Net-SNMP untuk Windows untuk mengirim Trap uji coba.

Metode 1: Menggunakan PowerShell

# Pastikan SNMP Service sudah berjalan
Send-SnmpTrap -ComputerName "192.168.1.100" -Community "public" -Oid "1.3.6.1.2.1.1.1.0" -Message "Test Trap from Windows"

(Catatan: Modul SNMP harus diinstal terlebih dahulu, atau gunakan alternatif Net-SNMP.)

Metode 2: Menggunakan Net-SNMP untuk Windows

  1. Download Net-SNMP untuk Windows dari situs resmi.
  2. Ekstrak dan jalankan perintah berikut di CMD: cmd snmptrap.exe -v 2c -c public 192.168.1.100 "" 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 s "Test Trap"

4. Memonitor Trap di Windows Event Viewer

  • Buka Event Viewer (eventvwr.msc).
  • Buka Applications and Services LogsSNMPOperational.
  • Jika SNMP Trap diterima, log akan muncul di sini (tergantung konfigurasi SNMP Service).

5. Solusi Masalah Umum

  • Trap tidak diterima?
    • Pastikan firewall Windows membuka port UDP 162.
    • Periksa konfigurasi komunitas SNMP (harus sama antara sender dan receiver).
  • SNMP Service tidak muncul di Windows?
    • Pada Windows 10/11, fitur SNMP mungkin perlu diinstal via Optional Features.
  • Ingin logging lebih baik?
    • Gunakan WSL + Net-SNMP atau tools seperti Kiwi Syslog Server.

Kesimpulan

  • Windows bisa berperan sebagai SNMP Trap Sender (Agent) atau Receiver (dengan bantuan tools eksternal).
  • Untuk lingkungan produksi, disarankan menggunakan NMS seperti Zabbix/PRTG sebagai Trap Receiver.
  • SNMPv3 lebih aman jika digunakan di Windows (konfigurasi via Registry Editor atau PowerShell).

Berikut adalah panduan lengkap mengintegrasikan SNMP Trap dari Windows ke Zabbix/Nagios, termasuk konfigurasi di Windows, Zabbix, dan Nagios.


A. Konfigurasi di Windows (Mengirim SNMP Trap)

1. Aktifkan SNMP Service di Windows

  • Buka Control Panel → Programs → Turn Windows features on or off.
  • Centang Simple Network Management Protocol (SNMP).
  • Buka Services.msc, cari SNMP Service, lalu konfigurasi:
    • Tab Agent: Centang layanan yang ingin dipantau (Physical, Applications, dll).
    • Tab Traps:
    • Community name: Misal public.
    • Trap destinations: Masukkan IP server Zabbix/Nagios (contoh: 192.168.1.100).
    • Tab Security: Izinkan komunitas public (READ ONLY).

2. Uji Kirim Trap Manual (Opsional)

Gunakan Net-SNMP untuk Windows (Download di sini) untuk mengirim trap uji coba:

snmptrap -v 2c -c public 192.168.1.100 "" 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 s "CPU Overload Warning"

(Pastikan firewall Windows membuka port UDP 162).


B. Integrasi dengan Zabbix

1. Konfigurasi Zabbix Server sebagai Trap Receiver

  • Edit file konfigurasi Zabbix server (/etc/zabbix/zabbix_server.conf): ini StartSNMPTrapper=1 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
  • Buat direktori dan set permissions: bash sudo mkdir -p /var/log/snmptrap sudo chown zabbix:zabbix /var/log/snmptrap
  • Restart Zabbix server: bash sudo systemctl restart zabbix-server

2. Konfigurasi snmptrapd di Zabbix Server

  • Install snmptrapd: bash sudo apt install snmptrapd # Debian/Ubuntu sudo yum install net-snmp # RHEL/CentOS
  • Edit /etc/snmp/snmptrapd.conf: ini authCommunity log,execute,net public traphandle default /usr/bin/zabbix_trap_receiver.pl
  • Buat script Perl untuk parsing trap (/usr/bin/zabbix_trap_receiver.pl): perl #!/usr/bin/perl use strict; open(my $fh, '>>', '/var/log/snmptrap/snmptrap.log'); print $fh "$ARGV[0]\n"; close $fh;
  • Berikan izin eksekusi: bash sudo chmod +x /usr/bin/zabbix_trap_receiver.pl sudo systemctl restart snmptrapd

3. Buat Item dan Trigger di Zabbix

  • Buka Zabbix Web → Configuration → Hosts:
    • Pilih host Windows atau buat host baru.
  • Tambah Item:
    • Name: SNMP Trap Logs
    • Type: Zabbix trapper
    • Key: snmptrap[public]
  • Buat Trigger:
    • Expression: {host:snmptrap[public].str(CPU Overload Warning)}=1
    • Severity: Warning

C. Integrasi dengan Nagios

1. Konfigurasi Nagios sebagai Trap Receiver

  • Install snmptrapd di server Nagios: bash sudo apt install snmptrapd # Debian/Ubuntu
  • Edit /etc/snmp/snmptrapd.conf: ini authCommunity log,execute,net public traphandle default /usr/local/bin/nagios_trap_handler.sh
  • Buat script handler (/usr/local/bin/nagios_trap_handler.sh): bash #!/bin/bash echo "$(date) - Trap received: $@" >> /var/log/nagios/snmptrap.log # Kirim notifikasi ke Nagios (contoh via NSCA) echo "WindowsHost;CPU_Alert;2;CPU Overload Detected" | send_nsca -H localhost -c /etc/nagios/send_nsca.cfg
  • Berikan izin eksekusi: bash sudo chmod +x /usr/local/bin/nagios_trap_handler.sh sudo systemctl restart snmptrapd

2. Konfigurasi Service di Nagios

  • Edit /usr/local/nagios/etc/objects/localhost.cfg: ini define service { service_description CPU_Alert host_name WindowsHost check_command check_dummy!2 "SNMP Trap Alert: CPU Overload" event_handler notify-by-email }
  • Restart Nagios: bash sudo systemctl restart nagios

D. Verifikasi Integrasi

1. Di Windows

  • Gunakan snmptrap untuk mengirim trap uji coba: cmd snmptrap -v 2c -c public 192.168.1.100 "" 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 s "CPU Overload Warning"

2. Di Zabbix/Nagios

  • Zabbix: Cek Monitoring → Latest Data untuk melihat trap.
  • Nagios: Cek /var/log/nagios/snmptrap.log atau dashboard Nagios.

E. Solusi Masalah Umum

  • Trap tidak muncul di Zabbix/Nagios?

    • Pastikan snmptrapd berjalan (sudo systemctl status snmptrapd).
    • Periksa firewall di Windows dan server Zabbix/Nagios (buka UDP 162).
    • Cek log:
    tail -f /var/log/snmptrap/snmptrap.log  # Zabbix
    tail -f /var/log/nagios/snmptrap.log    # Nagios
    
  • Ingin parsing OID khusus?

    • Gunakan MIB files di Zabbix/Nagios untuk mapping OID ke deskripsi.

F. Kesimpulan

  • Windows bisa mengirim SNMP Trap ke Zabbix/Nagios dengan konfigurasi SNMP Service atau Net-SNMP.
  • Zabbix menggunakan Zabbix trapper untuk menerima trap.
  • Nagios memproses trap via snmptrapd + custom script.
  • SNMPv3 lebih direkomendasikan untuk autentikasi/enkripsi.

Berikut adalah panduan lengkap untuk konfigurasi custom OID mapping di SNMP Trap, termasuk cara parsing OID khusus di Zabbix/Nagios, membuat MIB custom, dan contoh penggunaan untuk monitoring aplikasi Windows.


1. Membuat Custom OID untuk Aplikasi Windows

Langkah 1: Tentukan OID Khusus

  • OID (Object Identifier) adalah struktur hierarkis unik untuk identifikasi variabel SNMP.
  • Contoh OID untuk aplikasi custom: 1.3.6.1.4.1.99999.1.0 (Enterprise OID → .1.3.6.1.4.1.[Private-Enterprise-Number].custom)
    • 99999 adalah Private Enterprise Number (daftar di IANA).
    • .1.0 adalah ID custom untuk aplikasi Anda.

Langkah 2: Buat File MIB Custom

  • Buat file MIB (Management Information Base) untuk mendefinisikan OID.
  • Contoh: CUSTOM-APP-MIB.txt

    CUSTOM-APP-MIB DEFINITIONS ::= BEGIN
    IMPORTS
    OBJECT-TYPE, NOTIFICATION-TYPE FROM SNMPv2-SMI;
    
    customApp OBJECT IDENTIFIER ::= { enterprises 99999 }
    
    cpuOverload NOTIFICATION-TYPE
    OBJECTS { sysLocation }
    STATUS current
    DESCRIPTION "High CPU usage detected on Windows host"
    ::= { customApp 1 }
    END
    
  • Simpan di direktori MIB server (Zabbix/Nagios):
    • Zabbix: /usr/share/snmp/mibs/
    • Nagios: /usr/share/snmp/mibs/

2. Konfigurasi Windows untuk Mengirim Custom Trap

Metode 1: Menggunakan PowerShell + Net-SNMP

  • Install Net-SNMP untuk Windows (Download).
  • Kirim trap dengan OID custom: powershell snmptrap.exe -v 2c -c public 192.168.1.100 "" 1.3.6.1.4.1.99999.1.0 1.3.6.1.4.1.99999.1.1 s "CPU Load 95%"
    • 1.3.6.1.4.1.99999.1.0 = OID trap custom.
    • 1.3.6.1.4.1.99999.1.1 = OID variabel tambahan.

Metode 2: Menggunakan Script Python (Opsional)

  • Gunakan library pysnmp untuk mengirim trap dinamis:

    from pysnmp.hlapi import *
    
    errorIndication, errorStatus, errorIndex, varBinds = next(
      sendNotification(
          SnmpEngine(),
          CommunityData('public'),
          UdpTransportTarget(('192.168.1.100', 162)),
          ContextData(),
          'trap',
          NotificationType(
              ObjectIdentity('1.3.6.1.4.1.99999.1.0')
          ).addVarbind(
              ObjectIdentity('1.3.6.1.4.1.99999.1.1'),
              OctetString('High Memory Usage')
          )
      )
    )
    

3. Parsing Custom OID di Zabbix

Langkah 1: Load MIB di Zabbix Server

  • Tambahkan MIB custom ke konfigurasi Zabbix: bash sudo cp CUSTOM-APP-MIB.txt /usr/share/snmp/mibs/
  • Edit /etc/zabbix/zabbix_server.conf: ini SNMPTrapperFile=/var/log/snmptrap/snmptrap.log StartSNMPTrapper=1 LoadModulePath=/usr/lib/zabbix/snmptraps/ LoadModule=libzbxsnmptrapper.so

Langkah 2: Buat Item dan Trigger untuk Custom OID

  • Buka Zabbix Web → Configuration → Hosts:
    • Pilih host Windows.
  • Tambah Item:
    • Name: Custom App CPU Trap
    • Type: Zabbix trapper
    • Key: snmptrap["public", "1.3.6.1.4.1.99999.1.0"]
  • Buat Trigger:
    • Expression: {host:snmptrap["public", "1.3.6.1.4.1.99999.1.0"].strlen()}>0
    • Severity: High

Langkah 3: Testing

  • Kirim trap dari Windows: cmd snmptrap -v 2c -c public 192.168.1.100 "" 1.3.6.1.4.1.99999.1.0 1.3.6.1.4.1.99999.1.1 s "CPU 95%"
  • Cek di Zabbix → Monitoring → Latest Data.

4. Parsing Custom OID di Nagios

Langkah 1: Load MIB di Nagios Server

  • Simpan MIB di /usr/share/snmp/mibs/.
  • Edit /etc/snmp/snmptrapd.conf: ini authCommunity log,execute,net public mibdirs +/usr/share/snmp/mibs/ traphandle 1.3.6.1.4.1.99999.1.0 /usr/local/bin/handle_custom_trap.sh

Langkah 2: Buat Script Handler

  • /usr/local/bin/handle_custom_trap.sh:

    #!/bin/bash
    trap_msg=$(cat -)
    echo "$(date) - Custom Trap: $trap_msg" >> /var/log/nagios/custom_trap.log
    
    # Kirim alert ke Nagios
    echo "WindowsHost;Custom_CPU_Trap;2;$trap_msg" | send_nsca -H localhost -c /etc/nagios/send_nsca.cfg
    
  • Berikan izin eksekusi: bash sudo chmod +x /usr/local/bin/handle_custom_trap.sh sudo systemctl restart snmptrapd

Langkah 3: Konfigurasi Service di Nagios

  • Edit /usr/local/nagios/etc/objects/localhost.cfg: ini define service { service_description Custom_CPU_Trap host_name WindowsHost check_command check_dummy!2 "Custom Trap Received" event_handler notify-by-email }
  • Restart Nagios: bash sudo systemctl restart nagios

5. Contoh Use Case: Monitoring Aplikasi Windows

Kasus: Memantau SQL Server via SNMP Trap

  1. Buat OID Khusus: 1.3.6.1.4.1.99999.2.0 (SQL Server Error)
  2. Kirim Trap Saat Error:
    • Gunakan SQL Server Alert untuk trigger SNMP Trap via PowerShell.
  3. Konfigurasi di Zabbix/Nagios:
    • Buat item/trigger untuk OID 1.3.6.1.4.1.99999.2.0.

6. Troubleshooting

  • Trap tidak terproses?
    • Cek log: bash tail -f /var/log/snmptrap/snmptrap.log # Zabbix tail -f /var/log/nagios/custom_trap.log # Nagios
    • Pastikan MIB sudah diload: bash snmptranslate -Tp -IR customApp
  • OID tidak dikenali?
    • Tambahkan path MIB ke environment: bash export MIBS=+CUSTOM-APP-MIB

7. Kesimpulan

  • Custom OID memungkinkan monitoring aplikasi/event spesifik di Windows.
  • Zabbix mendukung parsing OID via Zabbix trapper.
  • Nagios memproses trap dengan snmptrapd + script handler.
  • MIB file diperlukan untuk mendefinisikan OID custom.

Berikut adalah panduan kompleks untuk memonitor service Windows via SNMP, termasuk konfigurasi OID custom, trigger berbasis event, dan integrasi dengan Zabbix/Nagios:


1. Menyiapkan SNMP Service di Windows untuk Monitoring Service

Langkah 1: Aktifkan SNMP dan Konfigurasi Service Monitoring

  • Buka Registry Editor (regedit) untuk menambahkan OID custom: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents
    • Tambahkan string value baru dengan nama ServiceMonitor dan nilai: SOFTWARE\CustomSNMP\ServiceMonitor
  • Buat key baru di: HKEY_LOCAL_MACHINE\SOFTWARE\CustomSNMP\ServiceMonitor
    • Tambahkan DWORD Enabled = 1.

Langkah 2: Buat Script PowerShell untuk Generate Trap

Simpan sebagai C:\Scripts\ServiceMonitor.ps1:

$service = Get-Service -Name "MSSQLSERVER"  # Ganti dengan nama service yang dimonitor
if ($service.Status -ne "Running") {
    & "C:\net-snmp\bin\snmptrap.exe" -v 2c -c public 192.168.1.100 "" `
    "1.3.6.1.4.1.99999.3.1" "1.3.6.1.4.1.99999.3.1.1" s "SQL Service Down"
}

Langkah 3: Jadwalkan Task Scheduler

  • Buka Task SchedulerCreate Task:
    • Trigger: Setiap 1 menit.
    • Action: Jalankan powershell.exe -File "C:\Scripts\ServiceMonitor.ps1".
    • Run as: SYSTEM.

2. Custom OID dan MIB untuk Windows Service

File MIB (WINDOWS-SERVICE-MIB.txt):

WINDOWS-SERVICE-MIB DEFINITIONS ::= BEGIN
IMPORTS
  OBJECT-TYPE, NOTIFICATION-TYPE FROM SNMPv2-SMI;

windowsService OBJECT IDENTIFIER ::= { enterprises 99999 }

serviceDown NOTIFICATION-TYPE
  OBJECTS { sysUpTime, sysName }
  STATUS current
  DESCRIPTION "Windows service stopped"
  ::= { windowsService 1 }
END
  • Simpan di /usr/share/snmp/mibs/ di server Zabbix/Nagios.

3. Konfigurasi Zabbix untuk Monitoring Service

Langkah 1: Buat Item untuk Trap Custom

  • Type: Zabbix trapper
  • Key: snmptrap["public", "1.3.6.1.4.1.99999.3.1"]
  • Preprocessing:
    • Regular expression: "SQL Service Down" untuk ekstraksi pesan.

Langkah 2: Buat Trigger

{host:snmptrap["public", "1.3.6.1.4.1.99999.3.1"].str("SQL Service Down")}="SQL Service Down"
  • Severity: High
  • Action: Kirim notifikasi email/telegram.

4. Konfigurasi Nagios untuk Monitoring Service

Langkah 1: Buat Script Trap Handler

Simpan sebagai /usr/local/bin/handle_service_trap.sh:

#!/bin/bash
trap_msg=$(cat -)
if [[ "$trap_msg" == *"SQL Service Down"* ]]; then
  echo "WindowsHost;SQL_Service;2;CRITICAL: SQL Service Down" | send_nsca -H localhost -c /etc/nagios/send_nsca.cfg
fi
  • Berikan izin:
    bash chmod +x /usr/local/bin/handle_service_trap.sh

Langkah 2: Edit snmptrapd.conf

traphandle 1.3.6.1.4.1.99999.3.1 /usr/local/bin/handle_service_trap.sh

5. Testing dan Simulasi

Manual Test dari Windows:

# Stop service SQL Server
net stop MSSQLSERVER

# Cek trap terkirim (lihat di Zabbix/Nagios)

Otomatis dengan Event Log Trigger:

  • Gunakan Windows Event Viewer untuk memantau event ID 7036 (service state change).
  • Trigger script PowerShell saat event terjadi.

6. Advanced: Monitoring Multiple Services

PowerShell Script (C:\Scripts\MultiServiceMonitor.ps1):

$services = @("MSSQLSERVER", "W3SVC", "Spooler")  # Daftar service yang dimonitor
foreach ($service in $services) {
    $status = (Get-Service -Name $service).Status
    if ($status -ne "Running") {
        & "C:\net-snmp\bin\snmptrap.exe" -v 2c -c public 192.168.1.100 "" `
        "1.3.6.1.4.1.99999.3.1" "1.3.6.1.4.1.99999.3.1.1" s "$service Service Down"
    }
}

Zabbix Discovery Rule:

  • Buat Low-Level Discovery untuk otomatis deteksi service: json { "data": [ { "{#SERVICE.NAME}": "MSSQLSERVER" }, { "{#SERVICE.NAME}": "W3SVC" } ] }

7. Troubleshooting

  • Service tidak terdeteksi?
    • Pastikan SNMP Service berjalan di Windows (services.msc).
    • Cek Task Scheduler apakah script PowerShell berjalan.
  • Trap tidak sampai?
    • Verifikasi firewall (buka UDP 162).
    • Cek log:
      bash tail -f /var/log/snmptrap/snmptrap.log # Zabbix journalctl -u snmptrapd -f # Nagios (systemd)

8. Referensi OID Standar Windows

Service OID Keterangan
CPU Usage 1.3.6.1.2.1.25.3.3.1.2 Processor load
Memory 1.3.6.1.2.1.25.2.3.1.6 RAM usage
Disk 1.3.6.1.2.1.25.2.3.1.4 Storage utilization

Kesimpulan

  • SNMP + PowerShell memungkinkan monitoring service Windows secara real-time.
  • Custom OID diperlukan untuk event spesifik (e.g., service down).
  • Zabbix/Nagios bisa parsing trap dan trigger alert otomatis.
  • Untuk skala besar, pertimbangkan SNMPv3 dan database timeseries (e.g., InfluxDB + Grafana).