Oracle avaldas DTrace for Linux 2.0.0-1.14

Esitati eksperimentaalne DTrace-i dĂŒnaamilise tĂ”rkeotsingu tööriist komplekt Linuxile 2.0.0-1.14, mis on rakendatud kasutaja ruumis töötava protsessina, kasutades eBPF alam sĂŒsteemi ja Linuxi tuuma pakutavaid jĂ€lgimis mehhanisme. DTrace eBPF baasil rakenduse funktsionaalsus on sarnane esimese DTrace rakendusega Linuxile, mis viidi ellu tuumamoodulina. Projekti kood on saadaval GPLv2 litsentsi alusel.

Tööriistakogu vÔib kasutada koos Linuxi tavaliste tuumadega, mis toetavad BPF-d. Tööks on vajalik raamatukogu libctf, mis toetab CTF (Compact Type Format) tÔrkevormingut, mis on saadaval binutils paketis alates versioonist 2.40, vÔi raamatukogu libdtrace-ctf, mis on Solarisest portitud. Valikuliselt on saadaval kaks plaastrit tuumale 6.7, mis vÔimaldavad kasutada tÀiustatud vÔimalusi tÀiendavate andmete kogumiseks moodulite ja tuuma kohta.

DTrace tehnoloogia arendati vĂ€lja tuuma ja lĂ”ppkasutusrakenduste dĂŒnaamiliseks jĂ€lgimiseks Solaris operatsioonisĂŒsteemis. DTrace annab kasutajale vĂ”imaluse detailselt jĂ€lgida sĂŒsteemi kĂ€itumist ja reaalajas probleeme diagnoosida. TĂ”rkeotsingu protsessis ei mĂ”juta DTrace uuritavate rakenduste töökorraldust ja see ei mĂ”juta nende jĂ”udlust, mis vĂ”imaldab korraldada töötavate sĂŒsteemide analĂŒĂŒsi lennult. DTrace tugevusena mĂ€rgitakse kĂ”rgetasemeline D keele, mis sarnaneb AWK-le, mille abil on tunduvalt lihtsam koostada jĂ€lgimisĂŒsteeme kui eBPF-i jaoks pakutavate töötluskeelte C, Python ja Lua koos vĂ€liste raamatukogude kasutamisega.

PÔhifunktsioonid:

  • Saadaval olevad pakkujad:
    • cpc (CPU Performance Counter) — teabe saamine jĂ”udluse kohta.
    • dtrace — töötlejad BEGIN, END ja ERROR, mis kĂ€ivituvad enne vĂ”i pĂ€rast muid kontrollimisi, samuti vigade korral.
    • fbt (Function Boundary Tracing) — jĂ€lgimine tuuma funktsioonide kutsumise korral.
    • lockstat — lukustuste seisundi jĂ€lgimine.
    • pid — jĂ€lgimine funktsioonide kutsumise korral protsessides, mis töötavad kasutaja ruumis.
    • proc — tegevuste jĂ€lgimine, mis on seotud protsessidega, nagu kĂ€ivitamine ja lĂ”petamine (fork, exec, exit, fault).
    • profile — jĂ”udluse statistika salvestamine mÀÀratud ajavahemike jĂ€rel.
    • sdt, rawtp — staatiline tuumajĂ€lgimine (SDT — Statically Defined Tracing).
    • usdt: staatiline rakenduse jĂ€lgimine (USDT — Userspace Statically Defined Tracing)
    • sched — CPU ressursside jaotuse jĂ€lgimine.
    • sycall — sĂŒsteemi kutsungite sisenemise ja vĂ€ljumise jĂ€lgimine.
  • Kogutud andmete agregatsioon: agregaatfunktsioonide (avg, count, llquantize, lquantize, max, min, quantize, stddev ja sum) ja agregaattoimingute (clear, normalize, normalize, printa) rakendamise vĂ”imalus. Tulemuste sĂ€ilitamine tavalistes ja assotsiatiivsetes massiivides.
  • Toetatakse spekulatiivset jĂ€lgimist, mis vĂ”imaldab mööduvalt jĂ€lgida andmeid, otsustades, milliseid neist salvestada jĂ€lgimisvahemikku ja milliseid kĂ”rvaldada. Saadaval on funktsioonid: speculation, speculate, commit ja discard.
  • Toetatakse globaalsete ja lokaalsete muutujate, TLS (Thread-Local Storage), assotsiatiivsete massiivide ja stringide kasutamist.
  • Pakutakse sisseehitatud muutujaid: arg0 — arg9, args[], caller, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs[], ustackdepth, walltimestamp.
  • Toetatakse toimingute tegemist: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack ja usym.
  • Sisseehitatud funktsioonide olemasolu: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_adaptive, mutex_type_spin, ntohl, ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Andmearuande olemasolu, mis ei satu jĂ€lgimisvahemikele.
  • Toetatakse skaipide jĂ€lgimise skripti kompileerimist D keeles BPF-programmide vormiks.
  • BPF-funktsioonide eelkompileerimine raamatukogu kutsete jaoks.
  • bpflog valik, et saada BPF-programmide laadimisel verifitseerimist logisid.
  • Koodi dĂŒnaamiline genereerimine ja koodi eelkompileerimine BPF-programmidele korduvkasutamiseks.

Uue versiooni muudatused:

  • pid pakkujasse lisati toetus protsesside nende koodis asukohtade jĂ€lgimiseks.
  • Toetatakse stack() ja ustack() funktsioonide kasutamist kogutud andmete agregatsiooniks.
  • VĂ”ime kĂ”rvaldada assotsiatiivsetest massiividest elemente, andes neile vÀÀrtuseks kirjeldava literali 0.
  • Toodud funktsioon print struktureeritud andmete vĂ€ljundiks tĂŒĂŒbi annotatsioonidega.
  • Uute sisseehitatud funktsioonide cleanpath(), d_path() ja link_ntop() olemasolu.
  • Lisatud parameeter „-xcpu“, mis vĂ”imaldab seotud kontrollid siduda teatud CPU-dega.
  • Lisatud parameeter „-xlockmem“ mĂ€lu suuruse piiramiseks.
  • Tagatud on vĂ”imalus salvestada protsesside jĂ€lgimise andmeid (USDT) dtprobed'i taaskĂ€ivituste vahel.
  • BTF (BPF Type Format) mehhanismi tugi, mis annab tĂŒĂŒbi kontrollimiseks teavet BPF pseudokoodis.
  • VĂ”imalus kasutada configure skripti koostamiseks.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster