Artikel ini membahas tentang cara menginstall SNMP Exporter untuk Network Monitoring System. Software ini digunakan untuk menarik data SNMP dan menerjemahkannya ke format yang dapat dibaca oleh Prometheus. Karena by-default Prometheus tidak dapat membaca data SNMP secara langsung.
Pre-requisites
- Pemahaman dasar dalam menggunakan Linux
- Pemahaman dasar mengenai MIB (Management Information Base) dan SNMP (Simple Network Management Protocol)
- Mengetahui fungsi Grafana dan Prometheus
- Tutorial ini dan lanjutannya tentang Prometheus dan Grafana akan menggunakan server:
– Ubuntu24.04.3 LTS (Minimized Version)- Pastikan waktu pada server sudah akurat dan System clock synchronized: yes.
– Cek menggunakan command:bash timedatectl- Tutorial ini dibuat dengan asumsi SNMP pada Router/Switch dapat diakses dari server.
– Cek menggunakan command:bash snmpwalk -v2c -c community_name ip_target
Instalasi SNMP Exporter
# Download SNMP Exporter.
# Versi terbaru dapat dilihat di https://github.com/prometheus/snmp_exporter/releases
grafana@grafana-ternoted:~$ cd /tmp
grafana@grafana-ternoted:/tmp$ wget https://github.com/prometheus/snmp_exporter/releases/download/v0.29.0/snmp_exporter-0.29.0.linux-amd64.tar.gz
# Ekstrak dan pindahkan file snmp_exporter ke /usr/local/bin
grafana@grafana-ternoted:/tmp$ tar -xvf snmp_exporter-0.29.0.linux-amd64.tar.gz
grafana@grafana-ternoted:/tmp$ cd snmp_exporter-0.29.0.linux-amd64
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ ls
LICENSE NOTICE snmp.yml snmp_exporter
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo mv snmp_exporter /usr/local/bin
# Buat directory untuk file snmp.yml dan pindahkan file snmp.yml ke sana
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo mkdir -p /etc/prometheus/snmp_exporter/
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo mv snmp.yml /etc/prometheus/snmp_exporter/
# Buat user yang akan digunakan untuk systemd SNMP Exporter dan Prometheus
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo useradd --system --no-create-home --shell /usr/sbin/nologin prometheus
# Ganti ownership config directory (/etc/prometheus/*) ke user prometheus
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo chown prometheus:prometheus /etc/prometheus/*
# Buat file systemd untuk snmp_exporter
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo nano /etc/systemd/system/snmp_exporter.service
# Isi file systemd snmp_exporter.service sebagai berikut kemudian save:
[Unit]
Description=SNMP Exporter
After=network-online.target
# This assumes you are running snmp_exporter under the user "grafana"
[Service]
User=prometheus
Restart=on-failure
ExecStart=/usr/local/bin/snmp_exporter --config.file=/etc/prometheus/snmp_exporter/snmp.yml
[Install]
WantedBy=multi-user.target
# Jalankan systemd snmp_exporter.service yang sudah dibuat
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo systemctl daemon-reload
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo systemctl enable snmp_exporter
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo systemctl start snmp_exporter
# Cek status systemd tersebut. Jika berhasil, maka outputnya akan seperti ini:
grafana@grafana-ternoted:/tmp/snmp_exporter-0.29.0.linux-amd64$ sudo systemctl status snmp_exporter
● snmp_exporter.service - SNMP Exporter
Loaded: loaded (/etc/systemd/system/snmp_exporter.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-08-17 13:43:29 WIB; 2s ago
Main PID: 2939 (snmp_exporter)
Tasks: 10 (limit: 9434)
Memory: 25.2M (peak: 26.4M)
CPU: 204ms
CGroup: /system.slice/snmp_exporter.service
└─2939 /usr/local/bin/snmp_exporter --config.file=/etc/prometheus/snmp_exporter/snmp.yml
Kemudian akses UI SNMP Exporter melalui browser melalui IP_server:9116. IP server pada tutorial ini adalah 192.168.100.188.

Instalasi SNMP Exporter Config Generator
Config file SNMP Exporter adalah snmp.yml yang ada di /etc/prometheus/snmp_exporter/. Ini adalah config file bawaan yang ada di dalam file snmp_exporter.tar.gz yang di-download sebelumnya. File ini sudah memuat module yang umum digunakan untuk memonitor perangkat seperti Router, Switch, Server, atau UPS. Akan tetapi untuk penggunaan yang lebih spesifik, kita bisa membuat file config snmp.yml sendiri menggunakan generator yang disediakan. Sehingga snmp.yml yang kita gunakan menjadi lebih “rapi” dan hanya menarik data SNMP yang kita butuhkan saja.
# Install packages yang dibutuhkan
grafana@grafana-ternoted:~$ sudo apt-get install unzip build-essential libsnmp-dev
# Install git
grafana@grafana-ternoted:~$ sudo apt install git -y
# Download dan install Go
grafana@grafana-ternoted:~$ wget https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
grafana@grafana-ternoted:~$ sudo tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
# Tambahkan baris
# export PATH=$PATH:/usr/local/go/bin
# ke
# $HOME/.profile
grafana@grafana-ternoted:~$ source $HOME/.profile
# Pastikan Go sudah terinstall dengan command
# go version
grafana@grafana-ternoted:~$ go version
go version go1.25.0 linux/amd64
# Clone snmp_exporter.git dan build generator
grafana@grafana-ternoted:~$ git clone https://github.com/prometheus/snmp_exporter.git
grafana@grafana-ternoted:~$ cd snmp_exporter/generator/
grafana@grafana-ternoted:~/snmp_exporter/generator$ make generator mibs
Selanjutnya kita akan membuat file snmp.yml baru menggunakan generator. Sebagai contoh, kita akan membuat module untuk memonitor penggunaan CPU, temperatur, status PSU, uptime, dan penggunaan RAM pada perangkat Router Mikrotik CCR 2116.
Mencari MIB (Management Information Base) yang Dibutuhkan
Kita bisa menggunakan software MIB Browser untuk untuk mengeksplorasi MIB apa saja yang bisa kita dapatkan dari perangkat target. Informasi MIB yang digunakan oleh masing-masing vendor perangkat bisa ditemukan di internet. Misalnya untuk Mikrotik CCR bisa menggunakan SNMPv2-SMI, dan spesifiknya bisa menggunakan MIKROTIK-MIB.
Konfigurasi File Generator
Selanjutnya kita akan membuat file generator untuk meng-“generate” file snmp.yml:
grafana@grafana-ternoted:~/snmp_exporter/generator$ sudo nano generator_custom.yml
# Isi file generator_custom.yml dengan format sepert ini:
auths:
public_v2:
version: 2
community: public
modules:
mikrotik:
walk:
- sysDescr #MIB Nama/deskripsi perangkat
- sysUpTime #MIB Uptime perangkat
- hrSystemDate #MIB Jam dan tanggal pada perangkat
- hrProcessorLoad #MIB Penggunaan CPU
- mtxrGaugeTable #MIB Sensor-sensor suhu dan exhaust fan
lookups:
- source_indexes: [mtxrGaugeIndex]
lookup: mtxrGaugeName
- source_indexes: [mtxrGaugeIndex]
lookup: mtxrGaugeValue
drop_source_indexes: false
overrides:
ignore_true: &ignore
ignore: true
mtxrGaugeUnit:
type: EnumAsInfo
mtxrGaugeValue: *ignore
mtxrGaugeName: *ignore
# Eksekusi generator untuk membuat file snmp.yml
grafana@grafana-ternoted:~/snmp_exporter/generator$ ./generator generate -m mibs/ -g generator_custom.yml -o /etc/prometheus/snmp_exporter/snmp.yml
# -m = Directory mibs yang ter-download saat instalasi SNMP Exporter Generator
# -g = File generator yang dibuat
# -o = Output dari generator (snmp.yml) (Disarankan untuk meletakkan output ke directory berbeda terlebih dahulu sebelum dipindahkan ke directory config snmp_exporter)
# Output snmp.yml akan seperti ini:
# WARNING: This file was auto-generated using snmp_exporter generator, manual changes will be lost.
auths:
public_v2:
community: public
security_level: noAuthNoPriv
auth_protocol: MD5
priv_protocol: DES
version: 2
modules:
mikrotik:
walk:
- 1.3.6.1.2.1.25.3.3.1.2
- 1.3.6.1.4.1.14988.1.1.3.100
get:
- 1.3.6.1.2.1.1.1.0
- 1.3.6.1.2.1.1.3.0
- 1.3.6.1.2.1.25.1.2.0
metrics:
- name: sysDescr
oid: 1.3.6.1.2.1.1.1
type: DisplayString
help: A textual description of the entity - 1.3.6.1.2.1.1.1
- name: sysUpTime
oid: 1.3.6.1.2.1.1.3
type: gauge
help: The time (in hundredths of a second) since the network management portion
of the system was last re-initialized. - 1.3.6.1.2.1.1.3
- name: hrSystemDate
oid: 1.3.6.1.2.1.25.1.2
type: DateAndTime
help: The host's notion of the local date and time of day. - 1.3.6.1.2.1.25.1.2
- name: hrProcessorLoad
oid: 1.3.6.1.2.1.25.3.3.1.2
type: gauge
help: The average, over the last minute, of the percentage of time that this
processor was not idle - 1.3.6.1.2.1.25.3.3.1.2
indexes:
- labelname: hrDeviceIndex
type: gauge
- name: mtxrGaugeIndex
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.1
type: gauge
help: ' - 1.3.6.1.4.1.14988.1.1.3.100.1.1'
indexes:
- labelname: mtxrGaugeIndex
type: gauge
lookups:
- labels:
- mtxrGaugeIndex
labelname: mtxrGaugeName
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.2
type: DisplayString
- labels:
- mtxrGaugeIndex
labelname: mtxrGaugeValue
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.3
type: gauge
- name: mtxrGaugeUnit
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.4
type: EnumAsInfo
help: units - 1.3.6.1.4.1.14988.1.1.3.100.1.4
indexes:
- labelname: mtxrGaugeIndex
type: gauge
lookups:
- labels:
- mtxrGaugeIndex
labelname: mtxrGaugeName
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.2
type: DisplayString
- labels:
- mtxrGaugeIndex
labelname: mtxrGaugeValue
oid: 1.3.6.1.4.1.14988.1.1.3.100.1.3
type: gauge
enum_values:
1: celsius
2: rpm
3: dV
4: dA
5: dW
6: status
Hasil Akhir
Apabila file snmp.yml sudah dipindah ke directory config /etc/prometheus/snmp_exporter/snmp.yml, selanjutnya restart service snmp_exporter.
grafana@grafana-ternoted:~/snmp_exporter/generator$ sudo systemctl restart snmp_exporter
Lalu akses UI SNMP Exporter melalui browser dengan URL seperti berikut:
http://192.168.100.188:9116/snmp?target=192.168.100.13&auth=public_v2&module=mikrotik
# http://192.168.100.188:9116 = IP dan port server
# target=192.168.100.13 = IP perangkat yang ingin dimonitor
# auth=public_v2 = Authentication name. Default-nya adalah ini untuk perangkat dengan SNMPv2 (tercantum di snmp.yml)
# module=mikrotik = nama module (tercantum di snmp.yml)

Gambar di atas menunjukkan bahwa server berhasil menarik data SNMP sysDescr, sysUptime, hrSystemDate, hrProcessorLoad, dan mtrGaugeTable dari perangkat target.
Penutup
Di akhir tutorial ini kita telah berhasil dalam menginstall SNMP Exporter beserta generator-nya. Kemudian SNMP Exporter juga sudah berhasil menarik data SNMP dari target. Di artikel selanjutnya kita akan membahas tentang Prometheus dan Grafana. Karena tujuan utama kita adalah memvisualisasikan metric-metric SNMP ini dengan grafik yang enak dipandang dan mudah dipahami menggunakan Grafana. Sedangkan Prometheus akan berfungsi sebagai data source untuk Grafana.

