UniFi Eski Verileri Kaldırma

UniFi – Eski Verileri Kaldırma (Budama) ve Mongo Veritabanı Boyutunu Ayarlama

UniFi, bağlı cihazlar, uygulama yapılandırması, istemciler ve istatistikler hakkında ilgili bilgileri depolamak için MongoDB’yi kullanır. UniFi Network uygulaması, veritabanını uygulamanın içinden sıkıştırma seçeneği sunar. UniFi Network uygulamasında oturum açabildiğinizi varsayarsak, bu makaledeki manuel budama talimatlarını izlemek yerine lütfen Ayarlar > Bakım bölümündeki  Hizmetler bölümünün altındaki kompakt veritabanı düğmesini kullanın.

Kompakt veritabanı seçeneği, verileri veritabanından kaldırmaz, yalnızca şu anda veritabanında bulunanın dataSize boyutunu küçültür. Veritabanını sıkıştırma, birleştirmeyi içerir, ancak hata düzeltmeyi içermez. Veritabanınızda şüpheli geçersiz veya bozuk girişler varsa, lütfen aşağıdaki talimatları izleyin.

Windows’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama

1. mongo’yu indirin. Windows UniFi yükleyici, mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve MongoDB günlüğünde görüldüğü gibi veya Topluluktaki uygulama sürüm notlarında belirtildiği gibi, işletim sisteminize ve UniFi Network uygulama sürümünüzün kullandığına uyan MongoDB’ye karşılık gelen .zip sürümünü indirin. .

 2. Mongo’yu çıkarın. \bin\mongo.exe dosyasını istediğiniz bir çalışma dizinine çıkarın. Bu örnekte, biz C:\prune\ kullanılmıştır. Pakette bulunan diğer tüm dosyaları yok sayabilirsiniz.

3. Komut Dosyasını İndirin. Komut dosyasını buraya tıklayarak sunucuya indirin ve çalışma dizininize kaydedin.

4. Komut İstemi’ni açın. WINDOWS + R tuşlarına basarak komut istemini açın. Açılır pencerede cmd yazın ve ENTER tuşuna basın.

5. Çalışma Dizinine girin. Komut isteminde, aşağıdaki komutu yazıp enter tuşuna basarak çalışma dizininize geçin:

cd C:\kuru erik\

6. Test Çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalıştığından emin olmak içindir. Aşağıdaki komutu yazın ve enter tuşuna basın:

mongo.exe --port 27117 < mongo_prune_js.js

Çıktı şuna benzer görünmelidir:

7. “Kuru çalıştırmayı” devre dışı bırakın. Kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını değiştirmek ve kaydetmek için  Notepad++ veya benzeri bir düz metin düzenleyici kullanın. Gizli karakterler ekleyebilen ve satır sonlarına uymayan Wordpad veya Word gibi zengin metin düzenleyicileri kullanmayın.

Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var  dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için.

8. Veritabanını Budayın. Değişiklikler yapıldıktan ve kaydedildikten sonra, değiştirilmiş komut dosyasını çalıştırın, bu sefer veritabanını gerçekten temizleyin:

mongo.exe --port 27117 < mongo_prune_js.js
NOT:Veritabanı fiilen değiştirilmekte olduğundan, bu adım test (kuru) çalışmasına kıyasla çok daha uzun sürebilir. Güle güle yazan bir mesaj alana kadar işlemi kesmeyin .

9. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:

10. Temizleme. Oluşturduğunuz dizini ve içindeki dosyaları tekrar kullanmayı düşünmüyorsanız silin.

MacOS’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama

1. Bir Çalışma Dizini oluşturun. Bilgisayarda bir çalışma dizini oluşturun. Bu makalenin amacı için /prune adında bir dizin oluşturacağız.

2. mongo’yu indirin. macOS UniFi yükleyici, mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve sunucunuzun CPU mimarisine karşılık gelen .tgz sürümünü indirin. Doğru MongoDB sürümü, Topluluğumuzda bulunan UniFi Network uygulamasının sürüm notlarında görünecektir .

3. Mongo’yu çıkarın. İndirilen paketi çalışma dizininize taşıyın ve çift tıklayarak veya istediğiniz uygulamayı kullanarak çıkartın.

4. mongo’yu Çalışma Dizinine taşıyın. bin/mongo ikili dosyasını bulun ve çalışma dizininize kopyalayın. Bu noktada, indirilen .tgz paketi ve ekstra çıkarılan dosyalar sadece mongo ikili dosyasına ihtiyacımız olduğu için silinebilir.

5. Çalışma Dizinine girin. Bir Terminal penceresi açın ve aşağıdaki komutla Adım 1’de oluşturulan çalışma dizinindeki dizinleri değiştirin:

cd / kuru erik

6. Komut Dosyasını İndirin. Budama komut dosyasını aşağıdaki komutla indirin:

curl -kO "https://help.ui.com/hc/article_attachments/115024095828/mongo_prune_js.js" -o "mongo_prune_js.js"

7. Test Çalıştırmasını gerçekleştirin. Komut dosyasının bir test çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalışmasını sağlar:

./mongo --port 27117 < mongo_prune_js.js

Çıktı şuna benzer görünmelidir:

8. “Kuru çalıştırmayı” devre dışı bırakın. Her şey doğru görünüyorsa, kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını aşağıdaki gibi değiştirmek için nano veya benzer bir düzenleyici kullanın:

nano mongo_prune_js.js

Dosyayı düzenlemek için nano kullandığınızı varsayarsak, metinde gezinmek için ok tuşlarını kullanın. Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için. Hazır olduğunuzda, dosyayı kaydetmek için CTRL + O tuşlarına basın (onaylamak için Enter tuşlarına basın) ve çıkmak için CTRL + X tuşlarına basın.

9. Veritabanını Budayın. Bu sefer veritabanını temizleyerek değiştirilmiş komut dosyasını çalıştırın:

./mongo --port 27117 < mongo_prune_js.js
NOT:Veritabanı fiilen değiştirilmekte olduğundan, bu adım test (kuru) çalışmasına kıyasla çok daha uzun sürebilir. Güle güle yazan bir mesaj alana kadar işlemi kesmeyin .

10. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:

11. Oturumu Bitirin. Aşağıdaki komutu yazıp enter tuşuna basarak Terminal oturumunu sonlandırın. Ardından Terminal penceresini kapatın.

çıkış

12.   Temizleme. Tekrar kullanmayı düşünmüyorsanız, çalışma dizinini kaldırın.

Kullanıcı İpucu:Şunu yazan bir hata görürseniz:
UYARI: kabuk ve sunucu sürümleri eşleşmiyor

Lütfen mongoDB’nin daha eski bir sürümünü indirin. Mevcut sürüm yerine v3.4.x’i deneyin:

https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.4.24.tgz

Linux’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama (Ubuntu, Debian ve Cloud Key)

Komut dosyasını çalıştırmadan önce Ağ uygulaması çalışıyor olmalıdır. Çalışmıyorsa, lütfen aşağıdaki adımları gerçekleştirmeden önce uygulamayı başlatın ve Adım 2: Çalışma Dizinine girin.

sudo hizmeti unifi başlangıcı

1. Bağlantı Kurun. Tercih ettiğiniz istemciyi kullanarak sunucunuza SSH üzerinden bağlanın ve kimlik doğrulaması yapın. Makalenin bu bölümündeki ekran görüntüleri Windows’ta PuTTY’den alınmıştır. Bir Linux veya Mac istemcisi kullanıyorsanız, yerleşik Terminal uygulamasını kullanarak sunucuya bağlanabilirsiniz.

2. Çalışma Dizinine girin. Ev dizininize geçin veya seçtiğiniz bir çalışma dizini oluşturun. Bu makale için ana dizini kullanılacaktır.

cd ~

3. Komut Dosyasını İndirin. Budama komut dosyasını sunucunuza indirin:

curl -kO https://help.ui.com/hc/article_attachments/115024095828/mongo_prune_js.js

4. Test Çalıştırmasını gerçekleştirin. Komut dosyasının bir test çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalıştığını doğrular:

mongo --port 27117 < mongo_prune_js.js

Çıktı şuna benzer görünmelidir:

5. “Kuru çalıştırmayı” devre dışı bırakın. Kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını aşağıdaki gibi değiştirmek için nano veya benzer bir düzenleyici kullanın:

nano mongo_prune_js.js

Dosyayı düzenlemek için nano kullandığınızı varsayarsak, metinde gezinmek için ok tuşlarını kullanın. Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için. Hazır olduğunuzda, dosyayı kaydetmek için CTRL + O tuşlarına basın (onaylamak için Enter tuşlarına basın) ve çıkmak için CTRL + X tuşlarına basın.

NOT: Nano’nun kurulu olmadığını belirten bir hata alırsanız, aşağıdaki komutla yükleyebilir, ardından önceki komutu tekrar çalıştırabilirsiniz:
sudo apt-get update && sudo apt-get -y install nano

6. Budama Veritabanı. Değiştirilen komut dosyasını çalıştırın, bu sefer veritabanını gerçekten temizleyin:

mongo --port 27117 < mongo_prune_js.js
NOT:Veritabanı fiilen değiştirilmekte olduğundan, bu adım test (kuru) çalışmasına kıyasla çok daha uzun sürebilir. Güle güle yazan bir mesaj alana kadar işlemi kesmeyin .

7. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:

8.   Temizleme. Komut dosyasını tekrar kullanmayı düşünmüyorsanız, ana dizininizden kaldırın:

rm mongo_prune_js.js

9. Oturumu Bitirin. Terminal oturumunu sonlandırın:

çıkış

UniFi OS’de Barındırılan Bir UniFi Ağ Uygulamasını Budama (UDM-Pro)

1. Kabuğa girin ve komut dosyasını indirin:

unifi-os kabuk 
kıvrılması https: //help.ui .com/hc/ makale _attachments/115024095828/mongo_prune_js.js -o /tmp/mongo_prune_js.js

2.   Verilerin tutulacağı günleri tanımlayın.  Verilerin tutulacağı gün miktarını değiştirmek için aşağıdaki komutları verin. Aşağıdaki örnek, ‘verilerin tutulacağı günleri’ 14 gün olarak ayarlar; varsayılan değer 7’dir. Örneğin, days_to_keep=”14″ öğesini days_to_keep=”21″ olarak değiştirerek, ‘verilerin tutulacağı günleri’ 21 olarak ayarlarsınız ve 21 günden eski tüm veriler budanır.

current_days=$(awk '/var günler/{print$2}' /tmp/mongo_prune_js.js | sed -e 's/days=//g' -e 's/;//g') 
days_to_keep ="14" 
sed -i "s/days=${current_days}/days=${ days_to_keep }/g" /tmp/mongo_prune_js.js

3. Bir test çalıştırması gerçekleştirin.  Bir “kuru çalıştırma” çalıştırmak için aşağıdaki komutları verin:

sed -i 's/dryrun=yanlış/dryrun=true/g' /tmp/mongo_prune_js.js 
mongo --port 27117 < /tmp/mongo_prune_js.js

4. Komut dosyasını çalıştırın. Bu, betiği “kuru çalıştırma” olmadan çalıştıracaktır.

sed -i 's/dryrun=true/dryrun=yanlış/g' /tmp/mongo_prune_js.js 
mongo --port 27117 < /tmp/mongo_prune_js.js

5. Komut dosyasını kaldırın ve kabuktan çıkın:

rm /tmp/mongo_prune_js.js 
çıkışı

Referans için Budama Komut Dosyası

Bu, başvuru için budama komut dosyasıdır veya bunu makalenin altındaki eklerden indirebilirsiniz:

// N günlük veriyi 
koru var days=7; 

// komut dosyasının eski kayıtları 
veritabanından gerçekten hariç tutmasını sağlamak için false olarak değiştirin. Doğru olsa da, DB'de hiçbir değişiklik yapılmayacaktır 
var dryrun=true; 

var şimdi = new Date().getTime(), 
time_criteria = şimdi - gün * 86400 * 1000, 
time_criteria_in_seconds = time_criteria / 1000; 

print((dryrun ? "[dryrun] " : "") + "budama verileri " + gün + " günden (" + time_criteria + ")... "); 

as kullan; 
var collectionNames = db.getCollectionNames(); 
for (i=0; i<collectionNames.length; i++) { 
var name = collectionNames[i]; 
var sorgu = boş; 

if (isim === 'olay' || isim === 'alarm'

} 

// haydut ap 
if (ad === 'haydut') { 
sorgu = {son_görülen: {$lt:time_criteria_in_seconds}}; 
} 

// '$gün'den daha önce sona eren kuponları kaldırır 
// aktif ve kullanılmayan kuponlara dokunulmaz 
if (isim === 'kupon') { 
sorgu = {end_time: {$lt:time_criteria_in_seconds}}; 
} 

// misafir yetkilendirme 
if (name === 'misafir') { 
sorgu = {son: {$lt:time_criteria_in_seconds}}; 
} 

// bir kullanıcı yalnızca BİR KEZ görüldüyse, $last_seen tanımlanmaz 
// bu nedenle, $last_seen tanımlanmadıysa, bunun yerine $ilk_seen kullanalım 
// ayrıca $blocked veya $use_fixedip'in ayarlanıp ayarlanmadığını kontrol edin. Doğruysa, TEMİZLEMEYİN
// giriş kaç yaşında olursa olsun. Blocked/fixed_ip kullanıcılarının devam etmesini istiyoruz 
//blocked/fixed_ip. Ayrıca belirtilen kullanıcılar silinmemelidir. 
if (name === 'user') { 
sorgu = { engellendi: { $ne: true}, use_fixedip: { $ne: true}, not: { $ne: true}, $or: [ 
{last_seen: {$ lt:time_criteria_in_seconds} }, 
{son_seen: {$exists: false}, first_seen: {$lt:time_criteria_in_saniye} } 
] 
}; 
} 

if (sorgu) { 
sayı1 = db.getCollection(ad).count(); 
sayı2 = db.getCollection(ad).find(sorgu).count(); 
print((dryrun ? "[dryrun] " : "") + "budama " + sayı2 + " girişler (toplam " + sayı1 + ") " + ad + "... "); 
if (!dryrun) { 
db.
db.runCommand({ kompakt: isim }); 
} 
} 
} 

if (!dryrun) db.repairDatabase(); 

ace_stat kullanın; 
var collectionNames = db.getCollectionNames(); 
for (i=0; i<collectionNames.length; i++) { 
var name = collectionNames[i]; 
var sorgu = boş; 

// geçmiş istatistikler (stat.*) 
if (name.indexOf('stat')==0) { 
sorgu = {time: {$lt:time_criteria}}; 
} 

if (sorgu) { 
sayı1 = db.getCollection(ad).count(); 
sayı2 = db.getCollection(ad).find(sorgu).count(); 
print((dryrun ? "[dryrun] " : "") + "budama " + sayı2 + " girişler (toplam " + sayı1 + ") " + ad + "... "); 
if (!dryrun) { 
db.
db.runCommand({ kompakt: isim }); 
} 
} 
} 

if (!dryrun) db.repairDatabase();