Simple queue statistikalarini bir nechta fayllarga yozish

⏱ O‘qish vaqti: 3 daqiqa

Qisqacha

  • Queue sonini aniqlab, kerakli fayl sonini hisoblaydi.
  • Har bir faylga maksimal 10 ta queue yoziladi.
  • Fayllar stats$i.txt nomida yaratiladi.
  • Eski stats fayllari avtomatik o‘chiriladi.
  • Target-address va total-bytes ma’lumotlari faylga yoziladi.

RouterOS’da ko‘p miqdordagi simple queue’lar statistikalarini bir faylga jamlash qiyin bo‘lishi mumkin. Ushbu skript har bir queue’ning manzili va uzatish hajmini alohida fayllarga bo‘lib, tahlil qilishni osonlashtiradi. Fayllar avtomatik yaratiladi va eski stats fayllari tozalanadi.

Talablar

  • RouterOS terminaliga admin huquqi
  • Oddiy queue’lar nomlari .raqam bilan tugashi (masalan, «some text.1»)
  • Skriptni qo‘shish va bajarish imkoniyati

Sozlash bosqichlari

1. Queue nomlarini .raqam bilan belgilash

Skript queue nomining oxirida nuqta va raqam bo‘lishini kutadi. Masalan, «video.1», «voip.2» kabi nomlar bilan simple queue yaratib, keyingi bosqichga o‘tish mumkin.

2. Skriptni RouterOS terminaliga qo‘shish

Quyidagi kod blokini RouterOS terminaliga nusxa ko‘chiring. Skript entriesPerFile o‘zgaruvchisi orqali har bir faylga maksimal yozuvlar sonini belgilaydi.

Write simple queue stats in multiple files

Write simple queue stats in multiple files

Lets consider queue namings are "some text.1" so we can search queues by last number right after the dot.

:local entriesPerFile 10;
:local currentQueue 0;
:local queuesInFile 0;
:local fileContent "";

# determine needed file count
:local numQueues [/queue simple print count-only] ;
:local fileCount ($numQueues / $entriesPerFile);
:if ( ($fileCount * $entriesPerFile) != $numQueues) do={
   :set fileCount ($fileCount + 1);
}

# remove old files 
/file remove [find name~"stats"];
:put "fileCount=$fileCount";
:for i from=1 to=$fileCount do={

#create file
   /file print file="stats$i.txt";
   
#clear content
   /file set [find name="stats$i.txt"] contents="";

   :while ($queuesInFile < $entriesPerFile) do={
     :if ($currentQueue < $numQueues) do={
         :set currentQueue ($currentQueue +1);
         :put $currentQueue ;
         /queue simple
         :local internalID [find name~"\\.$currentQueue\$"];
         :put "internalID=$internalID";
         :set fileContent ($fileContent . [get $internalID target-address] . \
           " " . [get $internalID total-bytes] . "\r\n");
     }
     :set queuesInFile ($queuesInFile +1);
     
   } 
   
   /file set "stats$i.txt" contents=$fileContent;
   :set fileContent "";
   :set queuesInFile 0;
}
Credit: https://wiki.mikrotik.com

3. Skriptni bajarish

Skriptni qo‘shgandan so‘ng, terminalda to‘g‘ridan‑to‘g‘ri bajarish orqali ishga tushiring. Skript queue sonini hisoblab, kerakli fayl sonini aniqlaydi va ma’lumotlarni fayllarga yozadi.

4. Natijaviy fayllarni tekshirish

/file print buyrug‘i bilan yaratilgan stats fayllarini ko‘ring. Har bir fayl ichida target-address va total-bytes qiymatlari bo‘lishi kerak.

Tekshirish

Skript ishga tushganda fileCount qiymati konsolga chiqariladi; yaratilgan stats fayllarini /file print buyrug‘i bilan tasdiqlang.

Write simple queue stats in multiple files

Lets consider queue namings are "some text.1" so we can search queues by last number right after the dot.

:local entriesPerFile 10;
:local currentQueue 0;
:local queuesInFile 0;
:local fileContent "";

# determine needed file count
:local numQueues [/queue simple print count-only] ;
:local fileCount ($numQueues / $entriesPerFile);
:if ( ($fileCount * $entriesPerFile) != $numQueues) do={
   :set fileCount ($fileCount + 1);
}

# remove old files 
/file remove [find name~"stats"];
:put "fileCount=$fileCount";
:for i from=1 to=$fileCount do={

#create file
   /file print file="stats$i.txt";
   
#clear content
   /file set [find name="stats$i.txt"] contents="";

   :while ($queuesInFile < $entriesPerFile) do={
     :if ($currentQueue < $numQueues) do={
         :set currentQueue ($currentQueue +1);
         :put $currentQueue ;
         /queue simple
         :local internalID [find name~"\\.$currentQueue\$"];
         :put "internalID=$internalID";
         :set fileContent ($fileContent . [get $internalID target-address] . \
           " " . [get $internalID total-bytes] . "\r\n");
     }
     :set queuesInFile ($queuesInFile +1);
     
   } 
   
   /file set "stats$i.txt" contents=$fileContent;
   :set fileContent "";
   :set queuesInFile 0;
}
Credit: https://wiki.mikrotik.com

Diqqat:

  • Skript stats nomli barcha eski fayllarni o‘chiradi, shuning uchun boshqa muhim fayllaringizga ta’sir qilmasligini tekshiring.
  • Queue nomlari .raqam bilan tugashi shart, aks holda skript ularni topa olmaydi.
  • entriesPerFile qiymatini o‘zgartirish orqali har bir faylga yoziladigan queue sonini sozlashingiz mumkin.
  • Fayl nomi stats$i.txt formatida bo‘lgani sababli, mavjud stats prefiksli fayllar bilan nom to‘qnashuvi bo‘lishi mumkin.

Xulosa

Ushbu skript oddiy queue’larning statistik ma’lumotlarini bir nechta fayllarga bo‘lib, tahlil va monitoringni soddalashtiradi. Fayl soni va har bir fayldagi yozuvlar sonini o‘zingizga moslab sozlashingiz mumkin.

Manba: Write simple queue stats in multiple files — mikrotiktool.github.io

0 0 ovozlar
Article Rating
Obuna boʻling
Xabar berish
guest

0 Comments
Eng avvalgi
Eng yangi Eng ko'p ovoz berilgan