Majordomo nesbírá data

Zdravím,

Majordomo mi z nějakého záhadného důvodu nesbírá data.
Fungoval, pravda po chvíli vždy přestal resolvovat ip daresy, ale sbíral aspoň data.
Teď ale mlčí. Když v konfiguraci změním adresář pro data na prázdný, nic s v něm neobjeví.
Jak ověřit kde je problém?
V logu jsem nic podezřelého k majordomo nenašel.
Kde začít?

dík za každý tip.

Nejde náhodou o plný disk, že ne? Majordomo takes up all space in /tmp and crashes DNS

Ahoj,

nene, o to se nejednalo.
Data mám na USB disku/kartě a ta je prázdná.

Problém jsem nakonec vyřešil kombinací updateru a dvou restartů.

Nicméně otázka směřovala k tomu, kde a jak hledat informace k provozu majordoma.
Předpokládám že je tam nějaké závislost na uCollectu, ale netuším v jakém logu, či kde hledat případné zprávy o problémech. Celá dokumentace k Majordomovi je v uživatelské rovině - neexistuje něco víc technického?

Michal

Majordomo je proces lcollect , který je (nejspíše) napojený na ucollect. Pokud lcollect nejede (ucollect musí jet vždy) nesbírá se nic do databáze. Jestli lcollect něco dává do logu to netuším.

Mohu jen popsat co jsem zjistil, jak se chová při běhu, když jsem zkoumal proč to nepřekládá IP adresy na jména.

Když běží vytváří se v /tmp soubor ucollect_majordomo ze kterého se co pět minut příkazem majordomo_db.sh downsize(viz /etc/cron.d/majordomo) připisují údaje do souboru /tmp/majordomo_downsize.
Z něho se potom každou hodinu příkazem majordomo_db.sh genhour zapisuje do složky databáze hodinový soubor, z nich potom ten samý příkaz vytváří (konsoliduje) i denní a měsíční soubor databáze.

Databázi se pokouší překládat (také každou hodinu) poslední příkaz majordomo_locked_precache.sh (v /etc/cron.d/majordomo), ale jelikož začíná s překladem denních souborů (vzestupně od nejstaršího), poté hodinových souborů (taktéž vzestupně od nejstaršího) a až nakonec by překládal měsíční soubory databáze (ty jsou vidět při pohlížení databáze v Luci jako první). K nim se bohužel už většinou nedostane, protože tento příkaz má časovač, který ho po 45 minutách zabije.

Já jsem překlad databáze vyřešil tak, že jsem zakázal poslední řádek majordomo v cronu (na začátek #) a vytvořil jiný soubor s tímto obsahem:

MAILTO=""
# m h  dom mon dow  user  command
4 0 1 * *    root    majordomo_cache.lua precache
#

, který mi překládá databázi jednou měsíčně (na flash/SSD všeho moc škodí). (Při mé celkové velikosti databáze cca 95 000 IP adres (za rok a něco), to trvá asi hodinu a půl. )

Na téma překladu databáze jsem vedl s podporou sáhodlohé rozhovory (jedna odpověď co dva týdny :wink: ) a bylo mi při tom řečeno, že pracují na nějakém lepším řešení (hlavně asi v oblasti zobrazování údajů z databáze v Luci).

1 Like

Díky moc za úžasný popis. Tohle je přesně to co jsem hledal.
Nějak jsem naivně čekal, že by tohle mohlo být k dispozici jako popis od autorů v dokumentaci.

Překládáním souborů myslíš (aspoň předpokládám) převod IP>Name.
Na to jsem rezignoval a vypnul ho.

Já si data z hodinových logů sypu do MySQL databáze a nad tím zpracovávám vlastní statistiky a agregace.
Paralelně k tomu si holt dělám i vlastní překlad IP>Name s tím, že si překlady pamatuji a nesahám pro ně znovu.

Díky za nasměrování na uCollect a lCollect výstupy v tmp, zkusím jestli bych se tak nedostal i ke zcela čerstvým datům.

Každopádně díky moc za super popis.

Není zač.
Ano překladem myslím doplnění k IP v databázi i DNS jméno. (IP adrese v databázi zůstává, v Luci se potom zobrazí jenom přeložené DNS jméno, což mi také není po chuti, protože pro Firewall potřebuje člověk IP adresu, kterou musí v Luci Majordomo zjistit zpětný překladem DNS jméno > IP adresa, nebo se podívat přímo do souborů databáze)

Apropós donedávna to i když člověk měl zakázáno překládání IP>DNS stále databázi překládalo, ale jak jsem zmínil víš nemělo čas ji přeložit celou.

Podle mě by stačilo překládat jenom ten poslední hodinový soubor (což jsem psal i na podporu) a při plnění příkazu majordomo_db.sh genhour se ty přeložená jména do databáze dostanou a není nutné pokaždé překládat všechny její soubory.