Cari tahu nama filr rrd dari graph lama yang ingin dilanjutkan
Pergi ke menu Management > Graphs, klik Graph Lama yang ingin dilanjutkan lalu klik Edit Data Source

Salin nama rrd setelah <path_rra>/

Buat graph baru

Cari tahu nama file rrd dari graph baru yang ingin melanjutkan
Pergi ke menu Management > Graphs, klik Graph Lama yang ingin dilanjutkan lalu klik Edit Data Source

Salin nama rrd setelah <path_rra>/

SSH ke server cacti dan pergi ke web root directory cacti
cd /path/webroot/cacti
pergi ke directory rra
cd rra/
Salin rrd lama ke rrd baru
cp oldname.rrd newname.rrd
Test dan monitoring graph yang baru dibuat apakah sudah memiliki data history dari graph lama.
Sampai tahap ini memindahkan graph lama ke graph baru sudah selesai
(Opsional) Selanjutnya silakan hapus graph lama (jika diperlukan)
Cara menggabungkan graph lama dengan graph baru
Jika kita sudah terlalu lama membuat graph baru dan ingin menggabungkan dengan graph lama caranya sebagai berikut:
Cari tahu nama file rrd graph lama dan file rrd graph baru, caranya sama dengan langkah diatas
Install paket python rrd
apt-get install python3-rrdtool -y
Cari tahun kapan tanggal dan jam cutoff (graph lama berhenti), lalu ubah kedalam format Unix Epoch Timestamp:
date -d "2026-08-03 23:30:00" +%s
# Hasil contoh: 1785774600
Buat script helper menggunakan python
nano /tmp/merge_rrd.py
Masukkan baris berikut:
#!/usr/bin/env python3
import sys
import os
import subprocess
def merge_rrds(old_rrd, new_rrd, out_rrd, cutoff_timestamp):
print(f"[*] Mengonversi RRD ke XML...")
old_xml = "/tmp/old_data.xml"
new_xml = "/tmp/new_data.xml"
out_xml = "/tmp/out_data.xml"
# 1. Dump RRD ke XML
subprocess.run(f"rrdtool dump {old_rrd} > {old_xml}", shell=True, check=True)
subprocess.run(f"rrdtool dump {new_rrd} > {new_xml}", shell=True, check=True)
print(f"[*] Memproses data XML dengan batas timestamp: {cutoff_timestamp}...")
# 2. Baca kedua file XML
with open(old_xml, 'r') as f:
old_lines = f.readlines()
with open(new_xml, 'r') as f:
new_lines = f.readlines()
# Ekstrak data historis MikroTik (sebelum cutoff)
old_data_map = {}
for line in old_lines:
if '<row>' in line and '<v>' in line:
# Format baris: <!-- YYYY-MM-DD HH:MM:SS WIT / 1726617600 --> <row><v> ... </v></row>
if '<!--' in line and '-->' in line:
try:
ts = int(line.split('/')[1].split('-->')[0].strip())
if ts <= cutoff_timestamp:
# Ambil tag <row> sampai </row>
row_content = line[line.find('<row>'):]
old_data_map[ts] = row_content
except (IndexError, ValueError):
continue
# 3. Timpa baris sebelum cutoff pada file XML baru dengan data lama MikroTik
final_lines = []
for line in new_lines:
if '<row>' in line and '<v>' in line and '<!--' in line:
try:
ts = int(line.split('/')[1].split('-->')[0].strip())
if ts <= cutoff_timestamp and ts in old_data_map:
# Ganti data RRD baru dengan data RRD lama MikroTik
comment_part = line[:line.find('<row>')]
line = comment_part + old_data_map[ts]
except (IndexError, ValueError):
pass
final_lines.append(line)
# 4. Tulis hasil ke XML akhir
with open(out_xml, 'w') as f:
f.writelines(final_lines)
print(f"[*] Merestore XML ke file RRD baru: {out_rrd}...")
# 5. Restore XML menjadi file RRD
subprocess.run(f"rrdtool restore {out_xml} {out_rrd} -f", shell=True, check=True)
# Bersihkan file temporary
for tmp_file in [old_xml, new_xml, out_xml]:
if os.path.exists(tmp_file):
os.remove(tmp_file)
print("[+] Proses penggabungan RRD selesai dengan sukses!")
if __name__ == "__main__":
if len(sys.argv) < 5:
print("Penggunaan: python3 merge_rrd.py <old_rrd> <new_rrd> <out_rrd> <cutoff_timestamp>")
print("Contoh: python3 merge_rrd.py mikrotik.rrd bird.rrd combined.rrd 1726617600")
sys.exit(1)
old_rrd = sys.argv[1]
new_rrd = sys.argv[2]
out_rrd = sys.argv[3]
cutoff = int(sys.argv[4])
merge_rrds(old_rrd, new_rrd, out_rrd, cutoff)
Berikan izin eksekusi:
chmod +x /tmp/merge_rrd.py
Eksekusi script python yang telah dibuat dalam format berikut
python3 /tmp/merge_rrd.py \
<path file rrd lama> \
<path file rrd baru> \
<path file output> \
<tgl jam cutoff Unix Epoch>
Contoh:
python3 /tmp/merge_rrd.py \
/path/webroot/cacti/rra/old.rrd \
/path/webroot/cacti/rra/new.rrd \
/tmp/output_combined.rrd \
1785774600
Salin hasil output combined ke graph baru
cp /tmp/output_combined.rrd /path/webroot/cacti/rra/new.rrd