BumbleBee - ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ eBPF

Solo.io, компанија која Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ Π·Π° водСњС ΠΎΠ±Π»Π°ΠΊ систСми, микросСрвиси, ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΈ Π±Π΅Π· сСрвСр, Π³ΠΎ објави BumbleBee, ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ Π°Π»Π°Ρ‚ΠΊΠΈ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ˜Π° Ρ†Π΅Π» Π΅ Π΄Π° ја поСдностави ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π°, Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ eBPF ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π²ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина Π²Π½Π°Ρ‚Ρ€Π΅. ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Linux ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° пристапот ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ систСмитС. ΠšΠΎΠ΄ΠΎΡ‚ Π΅ напишан Π²ΠΎ Go ΠΈ сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° Apache 2.0.

BumbleBee ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС ΠΏΠ°ΠΊΡƒΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° eBPF ΠΊΠ°ΠΊΠΎ слика Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ OCI (Open Container Initiative), кој ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° Π½Π° кој Π±ΠΈΠ»ΠΎ систСм Π±Π΅Π· ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π²ΠΎ корисничкиот простор. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° со ΠΊΠΎΠ΄ΠΎΡ‚ eBPF Π²ΠΎ Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΊΠΎΠΈ Π΄ΠΎΠ°Ρ“Π°Π°Ρ‚ ΠΎΠ΄ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ Π½Π° eBPF, ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ° BumbleBee, кој автоматски Π³ΠΈ ΠΈΠ·Π²Π΅Π·ΡƒΠ²Π° ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, хистограми ΠΈΠ»ΠΈ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈ, Π΄ΠΎ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС пристапи, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° Π½Π°Π²ΠΈΠ²Π°ΠΌ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΎΡ‚ пристап ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π΄Π° сС фокусира Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ eBPF ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π½Π΅ сС ΠΎΠ΄Π²Π»Π΅ΠΊΡƒΠ²Π° со ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со овој ΠΊΠΎΠ΄ ΠΎΠ΄ корисничкиот простор, ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΠΈ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚.

Π—Π° Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‚Π΅ со ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ eBPF, сС Π½ΡƒΠ΄ΠΈ Π°Π»Π°Ρ‚ΠΊΠ° β€žΠΏΡ‡Π΅Π»Π°β€œ Π²ΠΎ стилот Π½Π° Docker, со која ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСднаш Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ eBPF ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ ΠΎΠ΄ интСрСс ΠΎΠ΄ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ систСм. ΠšΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ со Π°Π»Π°Ρ‚ΠΊΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°ΠΌΠΊΠ° Π·Π° ΠΊΠΎΠ΄ Π²ΠΎ C Π·Π° Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° eBPF Π½Π° ΠΈΠ·Π±Ρ€Π°Π½Π° Ρ‚Π΅ΠΌΠ° (Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² сС ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ само Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ прСсрСтнуваат ΠΏΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ Π΄ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ стСк ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ систСми). Π’Ρ€Π· основа Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π°Ρ‚Π° Ρ€Π°ΠΌΠΊΠ°, Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π±Ρ€Π·ΠΎ Π΄Π° ја ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° функционалноста Π·Π° која Π΅ заинтСрСсиран.

Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ BCC (BPF ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΡΠΊΠ° ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΡ˜Π°), BumbleBee Π½Π΅ Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡƒΠ²Π° цСлосно ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ Π·Π° сСкоја Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Linux (BCC користи ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° ΠΏΡ€ΠΈ Π»Π΅Ρ‚ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Clang сСкогаш ΠΊΠΎΠ³Π° ќС сС стартува ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° eBPF). Π—Π° Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ со прСносливост, сС Ρ€Π°Π·Π²ΠΈΠ²Π°Π°Ρ‚ Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ CO-RE ΠΈ libbpf, ΠΊΠΎΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ само Сднаш ΠΈ Π΄Π° користитС ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π΅Π½ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π΅Π½ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°Ρ‡ кој ја ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π° Π²Ρ‡ΠΈΡ‚Π°Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π½Π° Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ‚ ΠΊΠ΅Ρ€Π½Π΅Π» ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ BTF. BumbleBee Π΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ Π½Π° libbpf ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π·Π° автоматско Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°ΡšΠ΅ ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π»ΠΎΡ†ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ стандарднитС структури Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈ eBPF RingBuffer ΠΈ HashMap.

Π—Π° Π΄Π° ја ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° eBPF ΠΈ Π΄Π° ја Π·Π°Ρ‡ΡƒΠ²Π°Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ OCI слика, само ΠΈΠ·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žbee build file_with_code name:versionβ€œ ΠΈ Π·Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žbee run name:versionβ€œ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, настанитС Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ ΠΎΠ΄ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ ќС сС Π΅ΠΌΠΈΡ‚ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†, Π½ΠΎ Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° помошни ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ curl ΠΈΠ»ΠΈ wget Π΄ΠΎ ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎΠ²Ρ€Π·Π°Π½Π° со ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚. Π Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС дистрибуираат ΠΏΡ€Π΅ΠΊΡƒ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ со OCI, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ΅Π½ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ ghcr.io (GitHub Container Registry), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žbee run ghcr.io/solo-io/bumblebee/tcpconnect: $ (Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° ΠΏΡ‡Π΅Π»ΠΈ)β€œ. Π—Π° Π΄Π° сС постави ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žbee pushβ€œ ΠΈ Π·Π° Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° β€žbee tagβ€œ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€