The hub-stats.lua script vytvoří položku seznamu uživatelů podobnou botovi, která zobrazí aktuální statistiky centra. Hub může zobrazovat online uživatele, operátory, celkový podíl nebo kompaktní značku stavu, aniž by spouštěl samostatný proces externího robota.
Tento skript se zaměřuje pouze na zobrazení. Čte jednoduché čítače, staví krátký název jako např !_Stats_128U_4Ops a ponechává drahou práci mimo proces centra.
Co tento skript dělá
Skript vytvoří zobrazovaný název z nakonfigurovaných statistik centra.
Příklady zobrazovaných jmen:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Mezi běžné použití patří:
- Zobrazení aktuálních uživatelů online.
- Zobrazení operátorů online.
- Zobrazuje se celkový podíl hubu, když jej Lua API odhalí levně.
- Zobrazení špičkových uživatelů, když vaše sestavení odhalí tento čítač.
- Zobrazuje se registrovaným uživatelům, když vaše sestavení odhalí tento čítač.
- Vytvoření kompaktní značky stavu rozbočovače.
- Přidání záznamu živé statistiky do seznamu uživatelů.
Přesná dostupná počítadla závisí na Verlihub Lua plugin API vystaveném vaší verzí Verlihub.
Požadavky
Tento skript vyžaduje:
- Verlihub nainstalováno a spuštěno.
- Nainstalovaný plugin Verlihub Lua.
- Plugin Lua povolen v Verlihub.
- Oprávnění k načtení a uvolnění Lua skriptů.
- Adresář zapisovatelných skriptů pro Verlihub Lua soubory.
- Sestavení Verlihub Lua, které může vystavit data zobrazení seznamu uživatelů nebo volat funkci generování názvu z položky zobrazení.
Před načtením skriptu se ujistěte, že je aktivní plugin Lua:
!pluglist
Pokud plugin Lua není uveden, nejprve jej načtěte nebo povolte z článku o nadřazeném nastavení Lua.
Doporučené umístění souboru
Použijte vyhrazený adresář skriptů:
mkdir -p /PATH/TO/HUB/scripts
Umístěte skript na:
/PATH/TO/HUB/scripts/hub-stats.lua
U produkčních systémů by do tohoto adresáře měli zapisovat pouze důvěryhodní správci nebo uživatel služby Verlihub. Nepoužívejte světově zapisovatelná oprávnění.
Příkazy Načíst a Vyjmout
Načtěte skript:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Uvolněte skript:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Pokud skript upravíte, uvolněte jej a znovu načtěte:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Použijte úplnou absolutní cestu, pokud vaše konfigurace pluginu Verlihub Lua nepodporuje relativní cesty.
Kód skriptu
-- Script: hub-stats.lua
-- Purpose: Displays hub statistics as a bot-like user-list entry.
-- Scope: Lightweight display bot only.
-- Notes: Available statistics depend on the Verlihub Lua API exposed by your build.
name = ""
class = 3
description = "Hub Stats Bot"
speed = "100"
email = ""
share = "0"
prefix = "!_Stats_"
postfix = ""
interval = 60
counter = 0
show_users = true
show_ops = true
show_share = false
function SafeCall(callback, fallback)
local ok, result = pcall(callback)
if ok and result ~= nil then
return result
end
return fallback
end
function FormatShare(bytes)
local value = tonumber(bytes)
if value == nil then
return "0B"
end
if value >= 1099511627776 then
return string.format("%.1fTB", value / 1099511627776)
end
if value >= 1073741824 then
return string.format("%.1fGB", value / 1073741824)
end
if value >= 1048576 then
return string.format("%.1fMB", value / 1048576)
end
if value >= 1024 then
return string.format("%.1fKB", value / 1024)
end
return tostring(value) .. "B"
end
function GetUserCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
function GetStatsText()
local parts = {}
if show_users then
table.insert(parts, tostring(GetUserCount()) .. "U")
end
if show_ops then
table.insert(parts, tostring(GetOperatorCount()) .. "Ops")
end
if show_share then
table.insert(parts, FormatShare(GetTotalShare()))
end
if table.getn(parts) == 0 then
return "Online"
end
return table.concat(parts, "_")
end
function GetName()
return prefix .. GetStatsText() .. postfix
end
Možnosti konfigurace
name
name = ""
Hodnota základního názvu pro položku podobnou botě.
V tomto skriptu je viditelný název generován pomocí GetName(), takže name může obvykle zůstat prázdný.
class
class = 3
Ovládá zobrazenou úroveň třídy nebo profilu položky podobné botě.
Význam hodnot třídy závisí na konfiguraci hubu. Použijte hodnotu, která odpovídá tomu, jak by se měl záznam statistik objevit v seznamu uživatelů.
description
description = "Hub Stats Bot"
Popis zobrazený u záznamu podobného robotu.
Příklady:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
Hodnota rychlosti připojení zobrazená u položky podobné botě. Tohle je kosmetika. Neřídí, jak často se skript aktualizuje.
email = ""
Pole e-mailu zobrazené u záznamu podobného robotu. Nechejte pole prázdné, pokud nechcete zobrazit kontaktní adresu.
share
share = "0"
Velikost sdílené položky zobrazená u položky podobné botě. U robota pro zobrazení statistik 0 je vhodné, pokud nechcete, aby záznam ukazoval hodnotu dekorativního podílu.
prefix
prefix = "!_Stats_"
Text umístěný před vygenerovanou statistikou.
Příklady:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Vyberte předponu, která se jasně seřadí v seznamu uživatelů hubu.
postfix
postfix = ""
Text umístěný za vygenerované statistiky.
Příklady:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Řídí, jak často se má položka zobrazení aktualizovat.
Doporučené hodnoty:
| Hodnota | Význam |
|---|---|
30 | Větší odezva. Užitečné pro rušné uzly. |
60 | Doporučená výchozí hodnota. |
300 | Nižší aktivita. Užitečné pro tiché náboje. |
Vyhněte se nízkým hodnotám. Statistiky hubu se nemusí aktualizovat každou sekundu.
counter
counter = 0
Interní počítadlo používané skriptem. Toto neměňte, pokud neupravujete logiku skriptu.
show_users
show_users = true
Řídí, zda zobrazovaný název zahrnuje aktuální počet online uživatelů.
Příklad výstupu:
!_Stats_128U
show_ops
show_ops = true
Řídí, zda zobrazovaný název zahrnuje aktuální počet operátorů.
Příklad výstupu:
!_Stats_128U_4Ops
show_share
show_share = false
Řídí, zda zobrazovaný název zahrnuje celkové sdílení hubu.
Příklad výstupu:
!_Stats_128U_4Ops_24.5TB
Povolte to pouze tehdy, když vaše Verlihub Lua API odhaluje spolehlivou celkovou hodnotu sdílení.
Poznámky ke kompatibilitě API
Ukázkový skript používá tyto funkce:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
Vaše verze pluginu Verlihub Lua může odhalit různé názvy funkcí. Pokud se skript načte, ale vždy zobrazuje nulu, upravte volání API používaná funkcemi čítače.
Hlavní funkce, které je třeba upravit, jsou:
function GetUserCount()
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
Nahraďte tato volání funkcemi podporovanými vaší verzí pluginu Verlihub Lua.
Příklad konfigurace
Pouze počet uživatelů
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Příklad zobrazení:
!_Users_128U_Online
Uživatelé a operátoři
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Příklad zobrazení:
!_Stats_128U_4Ops
Zobrazení celkového podílu
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Příklad zobrazení:
!_Share_24.5TB
Stav kompaktního rozbočovače
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Příklad zobrazení:
!_Hub_128U_4Ops_24.5TB
Doporučená výrobní nastavení
U většiny hubů začněte pouze uživateli a operátory:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Díky tomu je displej dostatečně krátký pro běžné seznamy uživatelů.
Pokud je seznam uživatelů hubu přeplněný, použijte kratší zobrazení:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Pokud je výpočet celkového podílu ve vaší verzi Verlihub drahý nebo nespolehlivý, ponechte jej deaktivovaný:
show_share = false
Testování skriptu
Po načtení skriptu zkontrolujte v seznamu uživatelů hubu vygenerovaný záznam statistik.
Potvrďte, že:
- Záznam se objeví pouze jednou.
- Zobrazený počet uživatelů je správný.
- Zobrazený počet operátorů je správný.
- Celkový podíl se zobrazuje správně, pokud je povoleno.
- Název není příliš dlouhý pro seznam uživatelů.
- Interval aktualizace je rozumný.
- Po uvolnění skriptu záznam zmizí.
- Opětovné načtení skriptu nevytváří duplikáty.
Pokud se na displeji vždy zobrazuje nula, přečtěte si část o kompatibilitě rozhraní API.
Odstraňování problémů
Skript se nenačte
Zkontrolujte, zda je aktivní plugin Lua:
!pluglist
Zkontrolujte cestu k souboru:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Pokud relativní cesty nefungují, použijte absolutní cestu.
Statistiky vždy ukazují nulu
To obvykle znamená, že názvy funkcí API Lua neodpovídají vaší verzi pluginu Verlihub.
Zkontrolujte funkce používané v:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Pak nahraďte příklad VH:* volání s funkcemi podporovanými vaší instalací.
Název položky je příliš dlouhý
Vypněte některá pole nebo zkraťte předponu.
Příklad:
prefix = "!_S_"
show_share = false
Příliš často se zobrazují aktualizace
Zvyšte interval.
Doporučeno:
interval = 60
Pro tiché náboje:
interval = 300
Objeví se duplicitní záznamy
Uvolněte skript:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Poté jej znovu načtěte:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Pokud duplikáty přetrvávají, restartujte během období údržby plugin Lua nebo službu Verlihub.
Bezpečnostní poznámky
Tento skript by měl zůstat lehký. Nepřidávejte:
- Externí požadavky HTTP.
- Databázové dotazy při každé aktualizaci.
- Skenování souborů.
- Dlouhé smyčky.
- Blokování spánkových hovorů.
- Nákladné výpočty na uživatele.
Skripty zobrazení statistik by měly číst jednoduché čítače hubů a aktualizovat zobrazovaný název. Pokud je výpočet hodnoty drahý, uložte ji do mezipaměti mimo proces hubu.
Poznámky k údržbě
Před změnou skriptu si vytvořte zálohu:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Pokud používáte Git:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Při změně pouze prefixu, postfixu, intervalu nebo povolených statistik nejsou vyžadovány žádné logické změny.
Navrhovaná budoucí vylepšení
Možné pozdější verze mohou přidat:
- Zobrazení maximálního počtu uživatelů.
- Zobrazení počtu registrovaných uživatelů.
- Zobrazení doby provozuschopnosti hubu.
- Zobrazení celkového podílu podle jednotky.
- Oddělte položky zobrazení pro uživatele a sdílení.
- Příkaz statistik pouze pro operátora.
- Denní sledování značek vysoké vody.
- Protokolování statistik založených na souborech.
Přidejte pouze statistiky, které budou číst uživatelé nebo operátoři. Příliš mnoho informací ztěžuje skenování položky seznamu uživatelů.