Portál AbcLinuxu, 31. října 2025 03:38
Zdravim
Extrémisty, kteří se odhodlali vyzkoušet můj měřící soft pro iGW NetCount jiste vyděsil způsob ukládání dat. Nebudu to moc pitvat, je to strašné.
Rozhodl jsem se to přestavět na client-server řešení s použitím MySQL databáze. Měření bude možné na vícero iGW a zobrazovat se to bude na centrálním serveru. Data se budou po síti posílat přímo do databáze.
Potřeboval bych ovšem trochu poradit s návrhem databázové struktury. Data jsou měřena v 5 minutových intervalech a vždy při měření se čítač resetuje. Tohle řešení lze změnit, ale nenapadá mě jak změnit k lepšímu.
V současnosti se vždy po naměření sady hodnot aktuální data přičtou k datům pro dny, týdny, měsíce a roky a ty prvotní 5 minutová data se ještě uloží do RRD souboru, kde visí prakticky navěky.
Na ukládání dnů, týdnů, měsíců a roků zvlášt netrvám. Naopak si myslím že by bylo lepší tohle zrušit a počítat to až při konečném požadavku na zobrazení dat.
Napadlo mě tedy do databáze ukládat pouze ty 5 minutové přírůstky. Tedy takhle:
ip data-in data-out timestamt igw 10.193.120.14 4564 234 10-07-2006 14:25 1
Co je ip, data-in a data-out je jasne. Timestamp je taky jasny, jen by asi bylo vhodne zvolit nejaky typ timestampu, ktery se uvnitr mysql lepe zpracovava (bude velice potreba, viz nize). No a cislo iGW uz slouzi jen pro identifikaci pri zobrazeni dat. Vpodstate tam neni potreba. Tuto informaci si podle ip muzu vytahnout z jine tabulky (v mem pripade). Tatu funkcionalita tam však bude pro jiné uživatele.
Zobrazování dat by pak probíhalo způsobem, že bych stvořil dotaz, ve kterém bych chtěl součty data-in a data-out od-do určitých timestampů. Takže program by vlastně jen generoval potřebné timestampy od-do a databáze by dodala součet dat v tomto rozmezí.
Při zobrazování dat to sice bude vcelku dost počítání pro databázi, ale zase naopak ukládání dat je absolutně primitivní a to se provádí přecijen řádově častěji.
Takže o co mi vlastně jde: Chtěl bych znát váš názor, zda je to dobrý nápad to takhle udělat a nebo jestli to mám udělat jinak (jak).
Až to bude hotové, tak to bude myslím si soft co bude vcelku užitečný, protože žádný co jsem našel nebyl stavěný pro přímé měření více iGW v jedné síti najednou.
Takže díky všem.
Zdeněk
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    


 ), tentokrat vo forme sloboda vyberu.
 ), tentokrat vo forme sloboda vyberu.
 
             chceche
 chceche  u mysql
 u mysql  chceche
 chceche  a není problém data odmigrovat
 a není problém data odmigrovat  chceche
 chceche  možná u super jednoduchého projektu máte pravdu, ale pak už je to jenom nemístný optimismus z Vaší strany
možná u super jednoduchého projektu máte pravdu, ale pak už je to jenom nemístný optimismus z Vaší strany
            A teze, že se jí ujme skupina a bude tuto MySQL verzi udržovat považuji předem za nemístnou utopii.
Tak úplně nemístná utopie to není, třeba InterBase tohle štěstí měla. Ale také to nebylo úplně bez problémů a svou roli hrála i skutečnost, že se na tom podílela podstatná část klíčových vývojářů. V každém případě souhlasím, že to rozhodně nelze považovat za automatické a bezproblémové.
 11.7.2006 13:41
Luk             | skóre: 47
             | blog: Kacířské myšlenky
             | Kutná Hora
        11.7.2006 13:41
Luk             | skóre: 47
             | blog: Kacířské myšlenky
             | Kutná Hora
         
             Ostatne dokumentace u komercnich RDBMS na tom neni o nic lepe, spise hure, mam-li soudit napr. dle dokumentace k IBM DB2/AS400.
 Ostatne dokumentace u komercnich RDBMS na tom neni o nic lepe, spise hure, mam-li soudit napr. dle dokumentace k IBM DB2/AS400.
             
  
  
             )
)
            Na druhou stranu bych nebyl tak skeptický k životaschopnosti GPL-forku MySQL. Přeci jen je dost firem, které mají nad MySQL postavené své projekty (i když ten software je obvykle pouze pro vlastní potřebu a nikam se nešíří). Tyto firmy by asi byly ochotny udržení GPL-forku při životě podporovat. Souhlasím ale s názorem, že otázka dalšího vývoje by v takovém případě byla více než sporná.
a nebude vobec zalezat na tom, kto a kde si to chce ulozit, jedine, co bude musiet autor specifikovat, je vstup, ktory dostanu tie programceky.
<source>:<timestamp>:<name>:<value>\nkde:
tym padom vzniknu tabulky:
source id int (autoincrement/serial/ ...) name text name id int name text log id int source int references source on delete cascade, timestamp int name int references source on delete cascade, value int8/double
 10.7.2006 16:24
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 16:24
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        ip (inet) | data (bigint) | packets (bigint) | direction (BOOL/NUMERIC(1)) | timestamp (NUMERIC(11))
direction urcuje jestli jsou ty data prichozi ci odchozi. Nad tabulkou s hodinovymi soucty mam udelany pohled, ktery mi spoji prichozi a odchozi data k dane IP v danem case do jednoho radku. Nad timto pohledem mam pak vystavene generovani statistik.
Z nasbiranych 5ti minutovych souctu nacpu data do rrd databaze a z te pak pri pozadavku na informace o dane IP nageneruji graf.
typ numeric na timestamp asi nebude uplne idelani a nejspis snizuje vykon... No snad se dostanu k tomu to zmenit na neco rozumnejsiho.
DjAARA
             10.7.2006 16:30
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 16:30
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        ip (inet) | name (varchar(30))
             10.7.2006 16:53
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 16:53
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
         10.7.2006 17:12
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 17:12
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
         10.7.2006 17:36
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 17:36
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
         10.7.2006 17:38
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 17:38
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        
postgresql:
create function get_user_id (cidr) returns int immutable language 'sql' 'select id from user_ip where ip = $1'; insert into log (time, uid, value) values ($1, get_user_id($2), $3)50 userov/200 ip, 3000 insertov/s na prvy milion
Zpusob groupovani/ukladani do databaze si kazdy predstavuje trochu jinak.Ano, zalezi na pozadavcich co z toho budu potrebovat, k cemu to ma slouzit atp..
Ale i to co pisete ma neco do sebe. Nicmene rozhrani z ktereho to jde z logu StarOSu nejspis nepoznam.Logy StarOSu neznam. Kazdopadne kdyz jsem se o nej zajimal meli tam hezky backdoor, ktery snad uz odstranili nebo premistili jinam :) Jako interface jsem spis myslel logicky interface, ktery mam popsany ip adresou + mac adresou (v pripade, ze ji k necemu budu chtit pouzit).
A paterni router, ktery to pak posila na 2 ruzne linky do internetu je hlidany (monitorovany) samostatne.Pod monitoringem serveru/routeru si predstavuju spis trochu jine veci nez hlidani prutoku dat od jednotlivych uzivatelu.
Ja osobne potrebuji vedet ktera IP je v ramci HFN nejaktivnejsi a na pripadne zlobily pustit shaping.Melo by stacit znat ip daneho klienta a data in/out (pripadne pocty paketu). Bylo by mozne to jeste rozdelit na traffic uvnitr site, ven a podle nejakych pravidel vypocitat zda uz prekrocil hranici na to aby se jemu zapnul shapping. Pokud chci vedet s kym komunikoval tak uz holt potrebuju o cilovou ip navic cimz neumerne narusta pocet zaznamu.
No to je 1000dotazu/5 min na _jednu_ IP z vnitrni site, kdyz budete mit v siti 1000 IP (dobre my mame kolem 55 lidi on-line za den, ve spickach kolem 80-90 IP, celkem vedeme 237 IP), tak uz jsme na milionu dotazu za 5 min. Ne ze by to bylo nejak extremne mnoho.No neni potreba delat takove mnozstvi dotazu na kazdou ip. Jelikoz uz vlastnim log tak si jej preparsuju do svych struktur jak potrebuji, vyberu si z nej vsechny ip a aplikovat filtr, ktery me rika zda je to interni ip, externi[venkovni internetove] (muze pracovat v podstate na znalosti podsiti, ktere jsou uvnitr pouzivany), necht se stanou unikatnimi, provedu jeden dotaz do db, kterym vyberu idcka jim odpovidajci, nahradim ipcka u sebe jejich idckama, jednim/nekolika dotazy to ulozim. (pomerne rychle reseni, melo by to jit resit i na urovni sql dotazu[s trochu jinym prubehem], ale sql zas na tolik neumim :)) takze ve vysledku mam 1 select + 1 nebo nekolik insertu (je rychlejsi ukladat vice hodnot najednou)
 10.7.2006 17:54
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
        10.7.2006 17:54
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
        CREATE TABLE `prenosy` ( `ip` int(11) unsigned NOT NULL default '0', `upload` bigint(20) unsigned default '0', `download` bigint(20) unsigned default '0', `cas` bigint(20) unsigned NOT NULL default '0', `sonda` tinyint(4) unsigned NOT NULL default '0', KEY `ip` (`ip`), KEY `sonda` (`sonda`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;Přičemž ip adresy ukládám ve formátu, který tvoří ip2long().
Divné, když jsem dělal redakční systém, tak mi tu všichni doporučovali ať s tím skončím, že tu každý webdesigner dělá svůj vlastní radakční systém. Dnes zas asi každý dělá tenhle měřící systém.Sice je to pravda, ze si to dnes pise skoro kazdy jelikoz nic pouzitelneho a nolne dostupneho neexistuje, ale jak taky ty projekty dopadaji... Vetsinou dalsi kus toho sameho nepouzitelneho software..
Přičemž ip adresy ukládám ve formátu, který tvoří ip2long().
Jinak řečeno je konvertujete zpět do jejich skutečné podoby… :-)
 10.7.2006 19:21
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 19:21
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
         .
.
             10.7.2006 19:51
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
        10.7.2006 19:51
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
         
             Byl to sběr údajů z tisíciportového switche?
 Byl to sběr údajů z tisíciportového switche?  
             10.7.2006 22:48
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
        10.7.2006 22:48
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
         10.7.2006 22:27
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
        10.7.2006 22:27
DjAARA             | skóre: 32
            
             | Praha|Náklo|Olomouc
         ) se udelaji soucty za dany interval (asi do jine tabulky?). Pokud bude nekdo chtit zobrazit urcity interval, usetri se tim prace databazi - secist data od zvoleneho pocatku do nejblizsiho predpocitaneho, potom secist predpocitana data na nejvyssi urovni do nejblizsiho nepredpocitaneho (pokud bude vic urovni, tak po jednotlivych urovnich) a pak pricist zbyvajici data do konce pozadovaneho intervalu. Ale jestli se to vyplati, to zalezi na predpokladane zatezi serveru (poctu pozadavku na zobrazeni) a vyberu rozmezi a vubec
) se udelaji soucty za dany interval (asi do jine tabulky?). Pokud bude nekdo chtit zobrazit urcity interval, usetri se tim prace databazi - secist data od zvoleneho pocatku do nejblizsiho predpocitaneho, potom secist predpocitana data na nejvyssi urovni do nejblizsiho nepredpocitaneho (pokud bude vic urovni, tak po jednotlivych urovnich) a pak pricist zbyvajici data do konce pozadovaneho intervalu. Ale jestli se to vyplati, to zalezi na predpokladane zatezi serveru (poctu pozadavku na zobrazeni) a vyberu rozmezi a vubec .
Co se tyka db, ja bych spise sahnul po postgresql, spousta veci se tam da resit elegantne primo v databazi ... Ale mysql znam z rychliku a nove veci uz vubec ne, takze to neber tak vazne
.
Co se tyka db, ja bych spise sahnul po postgresql, spousta veci se tam da resit elegantne primo v databazi ... Ale mysql znam z rychliku a nove veci uz vubec ne, takze to neber tak vazne .
.
            libiptc) a parsováním výstupu příkazu iptables? Je jasné, že první varianta bude rychlejší, ale zajímalo by mne, jestli to stojí za to.
            ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.