EttevÔte Oracle avaldas DTrace for Linux 2.0.0-1.14.

Esitleme eksperimentaalset DTrace dĂŒnaamika tĂ”rkeotsingu tööriista vĂ€ljaandele Linux 2.0.0-1.14, mis on rakendatud kasutajaruumi protsessinana, kasutades eBPF alamsĂŒsteemi ja Linuxi kernelist pakutavaid jĂ€lgimise mehhanisme. Funktsionaalsuse poolest on eBPF-pĂ”hine DTrace teostus sarnane esimesel DTrace rakendusel Linuxile, mis tehti kernelimoodulina. Projekti kood on litsentseeritud GPLv2 alusel.

Tööriista saab kasutada koos Linuxi ametlike kernelitega, mis toetavad BPF-i. Toimimiseks on vajalik libctf teek, mis rakendab CTF (Compact Type Format) tÔrkeformaadi tuge, mis on osa binutils paketist alates vÀljaandest 2.40, vÔi libdtrace-ctf teek, mis on portitud Solarisest. Valikuliselt on saadaval kaks 6.7 kerneliparandust, mis vÔimaldavad juurdepÀÀsu tÀiendavatele andmete omadustele, mis puudutavad mooduleid ja kernelit.

DTrace tehnoloogia loodi selleks, et lahendada dĂŒnaamilise jĂ€lgimise ĂŒlesandeid kernelis ja lĂ”pprakendustes Solaris operatsioonisĂŒsteemis. DTrace vĂ”imaldab kasutajal sĂŒstemaatiliselt jĂ€lgida sĂŒsteemi kĂ€itumist ja reaalajas tĂ”rkeotsingut teostada. TĂ”rkeotsingu kĂ€igus ei mĂ”juta DTrace uuritavate rakenduste tööd ega mĂ”juta nende jĂ”udlust, mistĂ”ttu on vĂ”imalik analĂŒĂŒsida töötavaid sĂŒsteeme reaalajas. DTrace tugevaimaks kĂŒljeks on kĂ”rgtaseme D keele olemasolu, mis sarnaneb AWK-ile, kuhu on tunduvalt lihtsam luua jĂ€lgimisskripte kui eBPF-i jaoks ette nĂ€htud tööriistade abil, mis kirjutavad töötlejat C, Python ja Lua keeles koos vĂ€liste teekidega.

PÔhifunktsioonid:

  • Saadaval olevad pakkujad:
    • cpc (CPU Performance Counter) — teabe saamine jĂ”udluse kohta.
    • dtrace — BEGIN, END ja ERROR töötlejad, mis kĂ€ivitatakse enne vĂ”i pĂ€rast muid teste, samuti vigade esinemisel.
    • fbt (Function Boundary Tracing) — jĂ€lgimine kernelifunktsioonide kutsumiste kohta.
    • lockstat — lukustuste oleku jĂ€lgimine.
    • pid — kasutajaruumi protsessides funktsioonide kutsumiste jĂ€lgimine.
    • proc — protsesside tegevuse jĂ€lgimine, nĂ€iteks kĂ€ivitamine ja sulgemine (fork, exec, exit, fault).
    • profile — jĂ”udluse statistika salvestamine kindlate ajavahemike jĂ€rel.
    • sdt, rawtp — staatiline kernelijĂ€lgimine (SDT — Statically Defined Tracing).
    • usdt: staatiline rakenduste jĂ€lgimine (USDT — Userspace Statically Defined Tracing).
    • sched — CPU ressursside jaotuse jĂ€lgimine.
    • sycall — sĂŒsteemikĂ”netesse sisenemise ja nendest vĂ€ljumise jĂ€lgimine.
  • Kogutud andmete kogumine: vĂ”imalus rakendada agregaatfunktsioone (avg, count, llquantize, lquantize, max, min, quantize, stddev ja sum) ning agregaattoiminguid (clear, normalize, printa). Tulemuste salvestamise tugi rakendatud agregaatfunktsioonide tavapĂ€rastesse ja assotsiatiivsetesse massiividesse.
  • Spetsulaarse jĂ€lgimise tugi, mis vĂ”imaldab kiiresti jĂ€lgida andmeid, otsustades, millised tuleb salvestada jĂ€lgimispuule ja millised tuleb kĂ”rvaldata. Saadaval on funktsioonid: speculation, speculate, commit ja discard.
  • Globaalsete ja kohalike muutujate, TLS (Thread-Local Storage), assotsiatiivsete massiivide ja stringide tugi.
  • Sisseehitatud muutujate pakkumine: 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.
  • Tegevuste tugi: 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.
  • Andmete loendurite olemasolu, mis ei satu jĂ€lgimispuudesse.
  • Tugi jĂ€lgimisskripti koostamiseks D keeles BPF-programmidena.
  • BPF-funktsioonide eelkompileerimine raamatukogu kutsumiste jaoks.
  • bpflog valik BPF-programmide laadimise logimise saamiseks.
  • DĂŒnaamiline koodi genereerimine ja eelkompileeritud koodi korduvkasutatavus BPF-programmides.

Uue versiooni muudatused:

  • Pakkuja pid, mida kasutatakse protsesside jĂ€lgimiseks kasutajaruumis, on lisatud toega instruktsioonide tĂ€itmise jĂ€lgimiseks nende offsetite pĂ”hjal koodis.
  • Toetatakse stack() ja ustack() funktsioonide kasutamist kogutud andmete agregaatimiseks.
  • VĂ”imalus eemaldada assotsiatiivsetest massiividest elemente mis tahes tĂŒĂŒpidest, mÀÀrates neile vÀÀrtuseks 0.
  • Lisatud print tegevus struktureeritud andmete tippimise ja tĂŒĂŒpide annotatsiooniga.
  • Uute sisseehitatud funktsioonide cleanpath(), d_path() ja link_ntop() lisamine.
  • Lisatud parameeter „-xcpu”, mis vĂ”imaldab siduda kontrollid kindlate CPU-dega.
  • Lisatud parameeter „-xlockmem” mĂ€lu suuruse piiramiseks.
  • Tagatud vĂ”imalus salvestada protsesside jĂ€lgimise andmeid (USDT) dtprobed taaskĂ€ivituste vahel.
  • Toetatud BTF (BPF Type Format) mehhanism, mis pakub teavet tĂŒĂŒpide kontrollimiseks BPF pseudokoodis.
  • VĂ”imalus kasutada configure skripti kokkupanekuks.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster