Andmete klasterdamise algoritm s - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Andmete klasterdamise algoritm s

Description:

Title: Mustrite otsimine logifailidest Last modified by: ristov Document presentation format: Custom Other titles: Times New Roman Nimbus Roman No9 L HG Mincho Light ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 25
Provided by: ioc8
Category:

less

Transcript and Presenter's Notes

Title: Andmete klasterdamise algoritm s


1
Andmete klasterdamise algoritm sündmuste logidest
mustrite kaevandamiseks
  • Risto Vaarandi
  • risto.vaarandi_at_eyp.ee

2
Mustrite otsimine logifailidest
  • Logid ja nende monitooring
  • Lähteülesanne milleks otsida mustreid logidest?
  • Võimalik lahendus andmekaevandamine
  • Klasterdamisalgoritm
  • SLCT (Simple Logfile Clustering Tool)

3
Logid ja nende monitooring
  • Logid ja nende monitooring mängivad infosüsteemi
    halduses ja monitooringus olulist rolli
  • Sündmuste logimine on osa tootmissüsteemide
    headest tavadest rõhuv enamus
    süsteemirakendusi, operatsioonisüsteeme ja
    võrguseadmeid on võimelised logima oma töös
    ettetulevaid sündmusi ja/või oma staatusinfot kas
    kohalikku või logiserveris asuvasse logifaili.
    Seetõttu on logifailid väärtuslik (ja tihti
    ainus) allikas süsteemi töös esinevate vigade
    avastamiseks.
  • Logimisstandardite olemasolu BSD syslog
    logimisprotokolli toetavad kõik suuremad
    süsteemitarkvara, serverite ja võrguseadmete
    tootjad (Sun, IBM, HP, Cisco, Nortel, jne.). See
    lihtsustab märgatavalt tsentraliseeritud
    logisüsteemi ehitamist - kõik süsteemi sõlmedes
    tekkivad logid kogutakse kesksele logiserverile,
    kus toimub analüüs ja sündmuste korrelatsioon.
  • Logide monitooringut võimaldavate programmmide
    olemasolu Swatch, Logsurfer, LogWatch, jt. (vt.
    http//www.loganalysis.org).

4
Näide logifailist
  • Dec 18 084726 myhost sshd15172 connect from
    10.2.211.19
  • Dec 18 084726 myhost sshd15172 log
    Connection from 10.2.211.19 port 1304
  • Dec 18 084739 myhost sshd15172 log Password
    authentication for alex accepted.
  • Dec 18 084828 myhost sshd15226 connect from
    10.2.211.110
  • Dec 18 084828 myhost sshd15226 log
    Connection from 10.2.211.110 port 1413
  • Dec 18 084835 myhost sshd15226 log Password
    authentication for sloj accepted.
  • Dec 18 085009 myhost vmunix /var/tmp file
    system full
  • Dec 18 085010 myhost imapd15399 imap service
    init from 10.2.213.2
  • Dec 18 085010 myhost imapd15399 Login
    userristo hostristo2 10.2.213.2

5
Traditsiooniline logide monitooring
  • Traditsiooniline logifailide monitooring
    antakse ette vigu tähistavad mustrid, millele
    vastava rea lisandumisel logifaili genereerib
    monitooringusüsteem (logifaili monitor) alarmi.
  • watchfor /file system full/ exec/opt/local/bi
    n/qpage -f \"\" cns \"Duty Disk space exhausted
    on 4. --swatch\" mail it-server throttle
    48000
  • watchfor /dma errorDMA error/
    exec/opt/local/bin/qpage -f \"\" cns \"Duty
    RAM problems on 4. --swatch\" mail it-server
    throttle 48000
  • Variatsioon huvipakkuvad sündmused suunatakse
    sündmuste korrelaatorisse, avastamaks
    metasündmusi (lihtsündmuste kombinatsioone, mis
    esinevad teatud ajalises aknas).

6
Mudelipõhine monitooring ning lähteülesanne
  • Traditsiooniline logifailide monitooring
    antakse ette vigu tähistavad mustrid, millele
    vastava rea lisandumisel logifaili genereerib
    monitooringusüsteem (logifaili monitor) alarmi.
    Puudus ei avastata uusi, senitundmatuid vigu
  • Mudelipõhine monitooring lisaks veamustritele
    on ette antud süsteemi tavapärase käitumise
    profiil. Kui logisse ilmub rida, mis ei sobi
    profiiliga ning mis ei ole viga, loetakse teade
    anomaalseks ning suunatakse ta edasisse töötlusse
    (näit. genereeritakse alarm). Puudus logifaili
    mudeli loomine on töömahukas ning aeganõudev
  • Ülesanne vaja on tarkvara, mis hõlbustaks
    logifaili mudeli loomist (ehk tarkvara, mis
    aitaks leida nii süsteemi tavapärast käitumist
    kajastavad mustreid kui vigu esindavaid mustreid).

7
Võimalikud lahendused
  • Andmekaevandamisalgoritmid
  • Assotsiatsioonireeglite leidmise algoritmid
  • Üritavad leida korrelatsioone andmebaasi kirje
    elementide vahel (näit. kirjes esineb element X
    gt kirjes esineb 99 tõenäosusega element Y)
  • Siiani on neid kasutatud peamiselt ajaliste
    mustrite leidmiseks (näit. sündmustele A ja B
    järgneb 1m jooksul 95 tõenäosusega sündmus C)
  • Leiavad vaid piisavalt tihti esinevate sündmuste
    mustreid, kuid meie jaoks sageli on huvipakkuvad
    ka harvaesinevad sündmused (näit.
    veasituatsioonid on reeglina huvipakkuvad, kuid
    samas ei ole need normaalses süsteemis
    sagedased!)
  • Klasterdamisalgoritmid - üritavad etteantud
    andmehulga jagada gruppideks (klastriteks), kus
    igasse klastrisse kuuluvad sarnased elemendid.

8
Klasterdamisalgoritmid
Punktid x, y ? Rn d(x, y) - kaugusfunktsioon
9
Klasterdamisalgoritmide puudused
  • Tänapäeval on suur hulk andmeid tekstilised, ning
    andmepunktidel võib olla erinev arv atribuute
  • log Connection from 192.168.1.1 port 1468
  • log RSA key generation complete.
  • connect from 172.26.10.12
  • Kui ruumi dimensioon n on suurem, siis
    kaugusfunktsioon kaotab oma tähenduse (n 10
    korral muutub probleem küllalt tõsiseks)
  • Nendel põhjustel on viimastel aastatel leiutatud
    mõned Apriori-põhised klasterdamisalgoritmid
    (CLIQUE ja MAFIA), mis ei kasuta
    kaugusfunktsioone, vaid üritavad leida ruumis
    tihedaid regioone ning formeerida neist
    regioonidest klastreid.

10
Apriori-põhine klasterdamine
Nõutav tihedus 3
Probleem eksponentsiaalne keerukus!
11
Logifailide omadused
  • Mängivad klasterdamisalgoritmi loomisel olulist
    rolli
  • Rõhuv enamus sõnu esineb logifailis väga harva
    (tüüpiliselt alla 5 korra). Suur osa sõnu esineb
    vaid ühel korral. Teisalt on vaid vähesed sõnad
    sagedased (näit. esinevad vähemalt korra iga
    10,000 logirea kohta). Sama fenomeni on
    täheldatud loomulike keelte korral, kus sõnade
    esinemissagedused alluvad Zipf'i jaotusele.
  • Logifailides on paljude sagedasti esinevate
    sõnade vahel tugev korrelatsioon, mis muudab
    Apriori meetodi kasutamise mõttetuks. Põhjus
    teated vormindatakse enne logimist mingi
    formaatstringi alusel, näiteks sprintf(message,"lo
    g Connection from s port d", ipaddress, port)

12
Logifailide klasterdamine
  • Algoritm võtab arvesse logifailide omadusi ning
    üritab iga klastri luua nii, et see vastaks
    teatud mustrile (näit. connection from closed).
  • Igas klastris peab olema vähemalt N rida, kus
    parameetri N väärtuse annab ette kasutaja.
  • Logiread, mis ei sobi ühessegi leitud klastrisse,
    paigutatakse omaette nn. kõrvalejääjate
    klastrisse.

13
Algoritm logifailide klasterdamiseks
  • Vaadata andmehulk läbi ning leida kõik sagedased
    sõnad (sõnad, mis esinevad antud positsioonil
    rohkem arv kordi kui kasutaja poolt etteantud
    lävi N).
  • Vaadata andmehulk teist korda läbi ning
    formeerida klastrikandidaadid. Iga rea puhul,
    millel esinevad sagedased sõnad, formeeritakse
    nendest sõnadest kandidaat. Näiteks kui sõnad
    Connection, from ja port on sagedased, siis rea
    Connection from 192.168.1.1 port 2014 puhul
    formeeritakse kandidaat Connection from port.
    Kui formeeritud kandidaati pole kandidaatide
    tabelis, paigutada ta sinna loenduri väärtusega
    1, vastasel korral liita loendurile 1.
  • Defragmenteerimine (optional) iga kandidaadi K
    puhul leida kandidaadid, mis esindavad
    spetsiifilisemaid mustreid, ning lisada nende
    loendurite väärtused K omale (väldib väga paljude
    ebapiisava suurusega klastrikandidaatide teket,
    lubades samas klastrite ühisosasid).
  • Lugeda klastriteks need kandidaadid, mille
    loenduri väärtus ületab kasutaja poolt etteantud
    läve N (ehk need kandidaadid, mis sisaldavad
    vähemalt N rida).
  • Vaadata andmehulk veelkord läbi ning leida
    kõrvalejääjate klaster.

14
Võrdlus Aprioriga
  • Erinevalt Apriori meetodist genereeritakse
    kandidaadid andmete ühe läbivaatusega
  • niimoodi välditakse eksponentsiaalset
    keerukust, kus iga k-mustrini jõudmiseks
    läbitakse 2k-2 üldisemat mustrit.
  • kuna logifaili sagedaste sõnade vahel on tihti
    tugevad korrelatsioonid, on mõttetu testida
    kõikvõimalikke kombinatsioone sagedastest
    sõnadest.
  • - Apriori algoritm avastab mustreid, mida
    klasterdamisalgoritm ei avasta. Näiteks kui A, B
    ja C on sageli esinevad sõnad, mis esinevad
    tekstis kombinatsioonidena AB, AC ja BC,
    kusjuures ükski kombinatsioon eraldivõetuna ei
    ole sageli esinev, siis klasterdamisalgoritm ei
    pea mustreid A, B ja C klastriteks.

15
Apriori vs. klasterdamisalgoritm
Lävi 50 Lävi 25 Lävi 10 Lävi 5 Lävi 1
Klaster A (180KB) 1s 1s 1s 2s 2s
Apriori A (180KB) 2s 16s 96s 145s 5650s
Klaster B (1814KB) 5s 5s 5s 6s 6s
Apriori B (1814KB) 9s 28s 115s 206s 2770s
Klaster C (4005KB) 10s 10s 12s 12s 13s
Apriori C (4005KB) 182s 182s 18950s 29062s 427791s
16
Probleemid
  • Probleem1 algoritmi esimese sammu jaoks
    (sõnastiku ehitamine) ei pruugi jätkuda mälu,
  • Probleem2 kuigi tänu sagedaste sõnade
    vahelistele korrelatsioonidele ei ole
    kandidaatide tabel võrreldes sagedaste sõnade
    arvuga väga suur, võib see olukord ülimadala läve
    korral muutuda. See toob kaasa- suure
    mälukulu- kuna defragmenteerimise keerukus on
    O(n2), siis ka suure ajakulu

17
Sõnastiku ehitamine
  • Enne sõnastiku ehitamist luuakse kõigist sõnadest
    n loenduriga summaarne vektor (c0,...,cn-1),
    mille kõik loendurid seatakse töö algul võrdseks
    nulliga. Tavaliselt n ltlt erinevate sõnade arv.
  • Andmed vaadatakse läbi ning iga sõna viiakse
    kiire räsifunktsiooniga (shift-add-xor)
    täisarvude lõiku 0,...,n-1. Kui sõna puhul
    saadakse tulemuseks väärtus i, siis suurendatakse
    vektori i-ndat loendurit 1 võrra.
  • Kui vektor on loodud, ehitatakse sõnastik, kuid
    sõnastikku paigutatakse vaid need sõnad, millele
    vastav vektori loendur ületab läve N. Kuna enamus
    sõnu esineb failis väga harva, on enamus vektori
    loendureid lävest N väiksema väärtusega, mistõttu
    sõnastiku maht väheneb oluliselt. Vektor ise
    palju mälu ei nõua.

18
Sõnastiku vektorfilter
A, 1
B, 3
C, 1
D, 15
E, 1
F, 1
G, 4
I, 2
H, 1
C0 5
C2 7
C1 17
Kui lävi N 10, siis saavad ainult sõnad D, E ja
F olla sagedased, ülejäänud sõnu pole aga mõtet
nende sageduse mõõtmiseks sõnastikku
salvestada. Üks räsifunktsioonide omadusi ühtlus
- kui erinevaid sõnu on W tükki ning vektori
suurus on m, siis iga vektori loendur vastab W /
m sõnale. Kuna enamus sõnu on harvaesinevad ning
sagedasi sõnu on väga vähe, siis ei ületa suurem
osa vektori loenduritest läve ning sõnastikku
sisestatakse palju vähem sõnu kui muidu. Kuna
vektor ise nõuab küllalt vähe mälu, on
mälu kokkuhoid reeglina märkimisväärne.
19
Kandidaatide tabel
  • Kui tabel nõuab liiga palju mälu, saab tabelisse
    kantud kandidaatide arvu vähendamiseks rakendada
    vektor-filtrit (defragmenteerimise puhul see
    meetod ei sobi).
  • Defragmenteerimine on keerukusega O(n2) (kuna iga
    kandidaati K peab võrdlema kõigi ülejäänutega)
    ning suurema tabeli korral on ajakulu
    märkimisväärne. Selle vältimiseks jagatakse tabel
    osadeks, kus igas osas leiduvate kandidaatide
    fikseeritud sõnu kirjeldab bitivektor. Kui
    bitivektor ei sisalda kõiki neid sõnu, millest
    koosneb kandidaat K, siis pole mõtet kandidaati K
    antud tabeli osas paiknevate kandidaatidega
    võrrelda.

20
Bitivektorid kandidaatide tabelile
  • Tähistame sagedased sõnad naturaalarvudega 1..W,
    sagedasele sõnale M vastab bitivektoris
    positsioon M. Bitivektori suurus on int(W / 8)
    1 baiti.
  • Kui tabeli osas on näiteks kandidaadid Login for
    failed ja log , ning Login1, for5, failed9
    ja log2, siis antud tabeliosa jaoks on
    bitivektoriks 110010001 (s.t. positsioonid
    1,2,5,9 on seatud).
  • Analoogilisel viisil saab igale üksikule
    kandidaadile seada vastavusse bitivektori.
  • Kui kandidaadi K bitivektor on K ja tabeliosa T
    vektor on T, ning K AND T ? K, siis pole
    mõtet kandidaati K tabeliosa T kandidaatidega
    võrrelda.

21
SLCT simple logfile clustering tool
  • Kirjutatud C-keeles, testitud RedHat8.0 ja
    Solaris8 platvormidel
  • Koduleht http//kodu.neti.ee/risto/slct/,
    litsents GNU GPL
  • Sõnade eraldaja saab ette anda regulaaravaldisena
    - vaikimisi on sõnade eraldajaks \t (üks või
    rohkem tühikut või tab-sümbolit)
  • Ainult teatud tüüpi ridade töötlemiseks saab ette
    anda regulaaravaldisest filtri, peale filtri
    rakendumist võib rea teisendada uuele kujule (1,
    2, ... muutujate abil)kui filter on
    sshd\0-9\ (.) ja template on 1,
    siissshd2781 connect from 10.1.1.1 ? connect
    from 10.1.1.1
  • Mustrites sisalduvaid metsikuid sümboleid saab
    "lihvida" konstantsete prefiksite ja sufiksite
    otsimise abil ( gt sshd)

22
SLCT tabelid ja räsifunktsioon
  • Sõnastiku ja kandidaatide tabeli realiseerimiseks
    on kasutusel ettenihutamisega paisktabel
    (move-to-front hash table). Erinevalt tavalisest
    paisktabelist on tabeli positsioonide arv palju
    väiksem tabelisse paigutatavate elementide
    arvust. Tabeli loomisel tekib iga positsiooni
    juurde seetõttu pikk välisahel. Iga kord, kui
    tabelist otsitakse või tabelisse lisatakse
    element X, tõstetakse element X välisahela
    esimeseks elemendiks. Selline paisktabel sobib
    eriti hästi selliste andmehulkade jaoks, kus vaid
    vähesed elemendid esinevad sageli, kuna siis
    sagedased elemendid viibivad peaaegu kogu aeg
    välisahelate alguses ning nad leitakse kiiresti.
  • Räsifunktsioonina on kasutusel Zobeli ja
    Ramakrishna kiire funktsioon, kus on tehetena
    kasutusel vaid liitmine, bitikaupa nihutamine ja
    bitikaupa XOR (puudub kulukas jagamistehe!).

23
SLCT iteratiivne rakendamine
Logi
24
SLCT näiteid leitud mustritest
  • Dec 18 myhost.mydomain sshd connect from
    10.1.1.17
  • Dec 18 myhost.mydomain sshd log Connection
    from 10.1.1.17 port
  • Dec 18 myhost.mydomain sshd fatal Did not
    receive ident string.
  • Dec 18 myhost.mydomain log
  • Dec 18 myhost.mydomain sshd connect from
    10.
  • Dec 18 myhost.mydomain sshd log Connection
    from 10. port
  • Dec 18 myhost.mydomain sshd log
    authentication for accepted.
  • Dec 18 myhost.mydomain sshd log Closing
    connection to 10.
Write a Comment
User Comments (0)
About PowerShow.com