SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Prometheus as exposition
format for eBPF programs
running on k8s
Leonardo Di Donato. Open Source Software Engineer @ Sysdig.
2019.05.18 - Cloud_Native Rejekts EU - Barcelona, Spain
whoami
Leonardo Di Donato.
Maintainer of Falco.
Creator of kubectl-trace and go-syslog.
Reach me out @leodido.
@leodido
• Old buzzword.
• Is this SNMP? 😂
• Focus on collecting, persisting, and alerting
on just any data!
• It might also become simply garbage.
• Data lake.
• Doing it well requires a strategy.
• Uninformed monitoring equals hope.
Monitoring
The missing buzzwords
Wait, another really cool buzzword is Tracing!
• Ability of a system to give to humans
insights.
• Humans can observe, understand, and act on
the presented state of an observable system.
• Ability to make deductions about internal
state only looking at boundaries (inputs vs
outputs).
• Never truly achieved. Ongoing process and
mindset.
• Avoid black box data. Extract fine-grained
and meaningful data.
Observability
@leodido
• Monitoring landscape very fragmented
• Many solutions
• with ancient tech
• Proprietary data formats
• often not completely impl. or undocumented or ...
• Hierarchical data models
• Metrics? W00t?
Before Prometheus
But there’s a thing ...
• De-facto standard
• Cloud-native metric monitoring
• Ease of use
• Explosion of /metrics endpoints
After Prometheus
The journey so far
What if we could exploit Prometheus
(or OpenMetrics) exposition format’s
awesomeness without having to
punctually instrument applications?
Can we avoid to clog our applications
through eBPF superpowers?
eBFP superpowers
@leodido
What eBPF is
You can now write mini programs that run on events like disk I/O
which are run in a safe virtual machine in the kernel.
In-kernel verifier refuses to load eBPF programs with invalid
pointer dereferences, exceeding maximum call stack, or with loop
without an upper bound.
Imposes a stable Application Binary Interface (ABI).
BPF on steroids 🚀
A core part of the Linux kernel.
@leodido
@leodido
userspace
program
bpf() syscall
eBPF program ...
user-space
kernel
eBPF map
BPF_MAP_CREATE
BPF_MAP_LOOKUP_ELEM
BPF_MAP_UPDATE_ELEM
BPF_MAP_DELETE_ELEM
BPF_MAP_GET_NEXT_KEY
http://bit.ly/bpf_map_types 📎
BPF_PROG_TYPE_SOCKET_FILTER
BPF_PROG_TYPE_KPROBE
BPF_PROG_TYPE_TRACEPOINT
BPF_PROG_TYPE_RAW_TRACEPOINT
BPF_PROG_TYPE_XDP
BPF_PROG_TYPE_PERF_EVENT
BPF_PROG_TYPE_CGROUP_SKB
BPF_PROG_TYPE_CGROUP_SOCK
BPF_PROG_TYPE_SOCK_OPS
BPF_PROG_TYPE_SK_SKB
BPF_PROG_TYPE_SK_MSG
BPF_PROG_TYPE_SCHED_CLS
BPF_PROG_TYPE_SCHED_ACT
📎 http://bit.ly/bpf_prog_types
eBPF program
How does eBFP work?
• fully programmable
• can trace everything in a system
• not limited to a specific application
• unified tracing interface for both kernel and
userspace
• [k,u]probes, (dtrace)tracepoints and so on
are also used by other tools
• minimal (negligible) performance impact
• attach JIT native compiled instrumentation
code
• no long suspensions of execution
Advantages
• requires a fairly recent kernel
• definitely not for debugging
• no knowledge of the calling higher level
language implementation
• not fully running in user space
• kernel-user context (usually negligible)
switch when eBPF instrument a user process
• still not portable as other tracers
• VM primarily developer in the Linux kernel
(work-in-progress portings btw)
Disadvantages
Why use eBPF at all to trace userspace processes?
@leodido
BFP operator for
Kubernetes
Why don’t we make eBPF programs look
more YAML ✌✌✌
📎 http://bit.ly/k8s_crd
An extension of the
K8S API that let you
store and retrieve
structured data.
Custom resources
📎 http://bit.ly/k8s_shared_informers
The actual control
loop that watches the
shared state using the
workqueue.
Shared informers
📎
http://bit.ly/k8s_custom_controllers
It declares and
specifies the desired
state of your resource
continuously trying to
match it with the
actual state.
Controllers
Customize all the things
@leodido
BPF
runner
bpf()
syscall
eBPF
program
...
user-space
kernel
eBPF
map
eBPF
program
...
BPF
runner
bpf()
syscall
eBPF
program
...
user-space
kernel
eBPF
map
eBPF
program
BPF
CRD
Here’s the evil plan
:9387/metrics :9387/metrics
@leodido
Did y’all say
Y’AML?!
let’s put some ELF magic
in it...
🧝‍♂🤯🧙‍♂
@leodido
Count packets by protocol Count sys_enter_write by process ID
macro to generate sections inside the object file (later interpreted by the ELF BPF loader)
@leodido
Compile and inspect
This is important because communicates to set the
current running kernel version!
Tricky and controversial legal thing about
licenses ...
The bpf_prog_load() wrapper also has a license
parameter to provide the license that applies to
the eBPF program being loaded.
Not GPL-compatible license?
Kernel won’t load you eBPF!
Exceptions applies...
eBPF
Maps
@leodido
@leodido
@leodido
Demo time
Doing all the BPF things, with YAML 💦
@leodido
📎 asciinema
@leodido
# HELP test_packets No. of packets per protocol (key), node
# TYPE test_packets counter
test_packets{key="00001",node="127.0.0.1"} 8
test_packets{key="00002",node="127.0.0.1"} 1
test_packets{key="00006",node="127.0.0.1"} 551
test_packets{key="00008",node="127.0.0.1"} 1
test_packets{key="00017",node="127.0.0.1"} 15930
test_packets{key="00089",node="127.0.0.1"} 9
test_packets{key="00233",node="127.0.0.1"} 1
# EOF
It is a WIP project but already open source! 🎺
Check it out @ gh:bfptools/kube-bpf 🔗
ip-10-12-0-136.ec2.internal:9387/metrics
# <- ICMP
# <- IGMP
# <- TCP
# <- EGP
# <- UDP
# <- OSPF
# <- ?
@leodido
# HELP test_dummy No. sys_enter_write calls per PID (key), node
# TYPE test_dummy counter
test_dummy{key="00001",node="127.0.0.1"} ...
test_dummy{key="00001",node="127.0.0.1"} 8
test_dummy{key="00295",node="127.0.0.1"} 1
test_dummy{key="01278",node="127.0.0.1"} 1158
test_dummy{key="04690",node="127.0.0.1"} 209
test_dummy{key="04691",node="127.0.0.1"} 889
# EOF
It is a WIP project but already open source! 🎺
Check it out @ gh:bfptools/kube-bpf 🔗
ip-10-12-0-122.ec2.internal:9387/metrics
@leodido
It is a WIP project but already open source! 🎺
Check it out @ gh:bfptools/kube-bpf 🔗
@leodido
kubectl-trace
More eBPF + k8s
Run bpftrace program (from file)
Ctrl-C tells the
program to
plot the results
using hist()
The output histogram
Maps
@leodido
• Prometheus exposition format is here to stay given how simple it is 📊
• OpenMetrics will introduce improvements on such giant shoulders 📈
• We cannot monitor and observe everything from inside our applications 🎯
• We might want to have a look at the orchestrator (context) our apps live
and die in 🕸
• Kubernetes can be extended to achieve such levels of integrations 🔌
• ELF is cool 🧝
• We look for better tools (eBPF) for grabbing our metrics and even more 🔮
• Almost nullify footprint ⚡
• Enable a wider range of available data 🌊
• Do not touch our applications directly 👻
• There is a PoC doing some magic at gh:bfptools/kube-bpf 🧞
Key takeaways
Thanks.
Reach me out @leodido on twitter & github!
SEE Y’ALL AROUND AT KUBECON
http://bit.ly/prometheus_ebpf_k8s

Contenu connexe

Similaire à Prometheus as exposition format for eBPF programs running on Kubernetes

Flash security past_present_future_final_en
Flash security past_present_future_final_enFlash security past_present_future_final_en
Flash security past_present_future_final_en
Sunghun Kim
 
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
Mike Harris
 

Similaire à Prometheus as exposition format for eBPF programs running on Kubernetes (20)

Cats And Dogs Living Together: Langsec Is Also About Usability
Cats And Dogs Living Together: Langsec Is Also About UsabilityCats And Dogs Living Together: Langsec Is Also About Usability
Cats And Dogs Living Together: Langsec Is Also About Usability
 
Audit
AuditAudit
Audit
 
Programando o ESP8266 com Python
Programando o ESP8266 com PythonProgramando o ESP8266 com Python
Programando o ESP8266 com Python
 
PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat
PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat
PyParis 2017 / Writing a C Python extension in 2017, Jean-Baptiste Aviat
 
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
NanoSec Conference 2019: Code Execution Analysis in Mobile Apps - Abdullah Jo...
 
DEF CON 27- BRIZENDINE STROSCHEIN - the jop rocket
DEF CON 27- BRIZENDINE STROSCHEIN - the jop rocketDEF CON 27- BRIZENDINE STROSCHEIN - the jop rocket
DEF CON 27- BRIZENDINE STROSCHEIN - the jop rocket
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnel
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
 
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015
 
Performance Optimization of SPH Algorithms for Multi/Many-Core Architectures
Performance Optimization of SPH Algorithms for Multi/Many-Core ArchitecturesPerformance Optimization of SPH Algorithms for Multi/Many-Core Architectures
Performance Optimization of SPH Algorithms for Multi/Many-Core Architectures
 
Practicing Python 3
Practicing Python 3Practicing Python 3
Practicing Python 3
 
Tips And Tricks For Bioinformatics Software Engineering
Tips And Tricks For Bioinformatics Software EngineeringTips And Tricks For Bioinformatics Software Engineering
Tips And Tricks For Bioinformatics Software Engineering
 
Big data made easy with a Spark
Big data made easy with a SparkBig data made easy with a Spark
Big data made easy with a Spark
 
Flash security past_present_future_final_en
Flash security past_present_future_final_enFlash security past_present_future_final_en
Flash security past_present_future_final_en
 
Library Operating System for Linux #netdev01
Library Operating System for Linux #netdev01Library Operating System for Linux #netdev01
Library Operating System for Linux #netdev01
 
OSXCollector: Automated forensic evidence collection & analysis for OS X (Bru...
OSXCollector: Automated forensic evidence collection & analysis for OS X (Bru...OSXCollector: Automated forensic evidence collection & analysis for OS X (Bru...
OSXCollector: Automated forensic evidence collection & analysis for OS X (Bru...
 
Surge2012
Surge2012Surge2012
Surge2012
 
BUD17-300: Journey of a packet
BUD17-300: Journey of a packetBUD17-300: Journey of a packet
BUD17-300: Journey of a packet
 
Python and Zope: An introduction (May 2004)
Python and Zope: An introduction (May 2004)Python and Zope: An introduction (May 2004)
Python and Zope: An introduction (May 2004)
 
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
 

Plus de Leonardo Di Donato

Sistema Rilevamento Transiti (SRT) - Software Analysis and Design
Sistema Rilevamento Transiti (SRT) - Software Analysis and DesignSistema Rilevamento Transiti (SRT) - Software Analysis and Design
Sistema Rilevamento Transiti (SRT) - Software Analysis and Design
Leonardo Di Donato
 
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
Leonardo Di Donato
 

Plus de Leonardo Di Donato (8)

From logs to metrics
From logs to metricsFrom logs to metrics
From logs to metrics
 
Continuous Time Bayesian Network Classifiers, M.Sc Thesis
Continuous Time Bayesian Network Classifiers, M.Sc ThesisContinuous Time Bayesian Network Classifiers, M.Sc Thesis
Continuous Time Bayesian Network Classifiers, M.Sc Thesis
 
Topic Modeling for Information Retrieval and Word Sense Disambiguation tasks
Topic Modeling for Information Retrieval and Word Sense Disambiguation tasksTopic Modeling for Information Retrieval and Word Sense Disambiguation tasks
Topic Modeling for Information Retrieval and Word Sense Disambiguation tasks
 
Guida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social NetworkGuida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social Network
 
Virtual Worlds
Virtual WorldsVirtual Worlds
Virtual Worlds
 
A Location Based Mobile Social Network
A Location Based Mobile Social NetworkA Location Based Mobile Social Network
A Location Based Mobile Social Network
 
Sistema Rilevamento Transiti (SRT) - Software Analysis and Design
Sistema Rilevamento Transiti (SRT) - Software Analysis and DesignSistema Rilevamento Transiti (SRT) - Software Analysis and Design
Sistema Rilevamento Transiti (SRT) - Software Analysis and Design
 
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
CRADLE: Clustering by RAndom minimization Dispersion based LEarning - Un algo...
 

Dernier

Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
gajnagarg
 
Computer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdfComputer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdf
SayantanBiswas37
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
nirzagarg
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
gajnagarg
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Bertram Ludäscher
 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
nirzagarg
 
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
HyderabadDolls
 
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
HyderabadDolls
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
wsppdmt
 
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
Health
 
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
gajnagarg
 

Dernier (20)

DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24  Building Real-Time Pipelines With FLaNKDATA SUMMIT 24  Building Real-Time Pipelines With FLaNK
DATA SUMMIT 24 Building Real-Time Pipelines With FLaNK
 
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Indore [ 7014168258 ] Call Me For Genuine Models We...
 
Computer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdfComputer science Sql cheat sheet.pdf.pdf
Computer science Sql cheat sheet.pdf.pdf
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Tumkur [ 7014168258 ] Call Me For Genuine Models We...
 
Dubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls DubaiDubai Call Girls Peeing O525547819 Call Girls Dubai
Dubai Call Girls Peeing O525547819 Call Girls Dubai
 
Statistics notes ,it includes mean to index numbers
Statistics notes ,it includes mean to index numbersStatistics notes ,it includes mean to index numbers
Statistics notes ,it includes mean to index numbers
 
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
Charbagh + Female Escorts Service in Lucknow | Starting ₹,5K To @25k with A/C...
 
Gomti Nagar & best call girls in Lucknow | 9548273370 Independent Escorts & D...
Gomti Nagar & best call girls in Lucknow | 9548273370 Independent Escorts & D...Gomti Nagar & best call girls in Lucknow | 9548273370 Independent Escorts & D...
Gomti Nagar & best call girls in Lucknow | 9548273370 Independent Escorts & D...
 
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With OrangePredicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
Predicting HDB Resale Prices - Conducting Linear Regression Analysis With Orange
 
Discover Why Less is More in B2B Research
Discover Why Less is More in B2B ResearchDiscover Why Less is More in B2B Research
Discover Why Less is More in B2B Research
 
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In bhavnagar [ 7014168258 ] Call Me For Genuine Models...
 
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...Reconciling Conflicting Data Curation Actions:  Transparency Through Argument...
Reconciling Conflicting Data Curation Actions: Transparency Through Argument...
 
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In Satna [ 7014168258 ] Call Me For Genuine Models We ...
 
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
Sealdah % High Class Call Girls Kolkata - 450+ Call Girl Cash Payment 8005736...
 
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
Jodhpur Park | Call Girls in Kolkata Phone No 8005736733 Elite Escort Service...
 
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
如何办理英国诺森比亚大学毕业证(NU毕业证书)成绩单原件一模一样
 
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
+97470301568>>weed for sale in qatar ,weed for sale in dubai,weed for sale in...
 
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
Top profile Call Girls In dimapur [ 7014168258 ] Call Me For Genuine Models W...
 
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
TrafficWave Generator Will Instantly drive targeted and engaging traffic back...
 

Prometheus as exposition format for eBPF programs running on Kubernetes

  • 1. Prometheus as exposition format for eBPF programs running on k8s Leonardo Di Donato. Open Source Software Engineer @ Sysdig. 2019.05.18 - Cloud_Native Rejekts EU - Barcelona, Spain
  • 2. whoami Leonardo Di Donato. Maintainer of Falco. Creator of kubectl-trace and go-syslog. Reach me out @leodido.
  • 3. @leodido • Old buzzword. • Is this SNMP? 😂 • Focus on collecting, persisting, and alerting on just any data! • It might also become simply garbage. • Data lake. • Doing it well requires a strategy. • Uninformed monitoring equals hope. Monitoring The missing buzzwords Wait, another really cool buzzword is Tracing! • Ability of a system to give to humans insights. • Humans can observe, understand, and act on the presented state of an observable system. • Ability to make deductions about internal state only looking at boundaries (inputs vs outputs). • Never truly achieved. Ongoing process and mindset. • Avoid black box data. Extract fine-grained and meaningful data. Observability
  • 4. @leodido • Monitoring landscape very fragmented • Many solutions • with ancient tech • Proprietary data formats • often not completely impl. or undocumented or ... • Hierarchical data models • Metrics? W00t? Before Prometheus But there’s a thing ... • De-facto standard • Cloud-native metric monitoring • Ease of use • Explosion of /metrics endpoints After Prometheus The journey so far
  • 5. What if we could exploit Prometheus (or OpenMetrics) exposition format’s awesomeness without having to punctually instrument applications? Can we avoid to clog our applications through eBPF superpowers? eBFP superpowers @leodido
  • 6. What eBPF is You can now write mini programs that run on events like disk I/O which are run in a safe virtual machine in the kernel. In-kernel verifier refuses to load eBPF programs with invalid pointer dereferences, exceeding maximum call stack, or with loop without an upper bound. Imposes a stable Application Binary Interface (ABI). BPF on steroids 🚀 A core part of the Linux kernel. @leodido
  • 7. @leodido userspace program bpf() syscall eBPF program ... user-space kernel eBPF map BPF_MAP_CREATE BPF_MAP_LOOKUP_ELEM BPF_MAP_UPDATE_ELEM BPF_MAP_DELETE_ELEM BPF_MAP_GET_NEXT_KEY http://bit.ly/bpf_map_types 📎 BPF_PROG_TYPE_SOCKET_FILTER BPF_PROG_TYPE_KPROBE BPF_PROG_TYPE_TRACEPOINT BPF_PROG_TYPE_RAW_TRACEPOINT BPF_PROG_TYPE_XDP BPF_PROG_TYPE_PERF_EVENT BPF_PROG_TYPE_CGROUP_SKB BPF_PROG_TYPE_CGROUP_SOCK BPF_PROG_TYPE_SOCK_OPS BPF_PROG_TYPE_SK_SKB BPF_PROG_TYPE_SK_MSG BPF_PROG_TYPE_SCHED_CLS BPF_PROG_TYPE_SCHED_ACT 📎 http://bit.ly/bpf_prog_types eBPF program How does eBFP work?
  • 8. • fully programmable • can trace everything in a system • not limited to a specific application • unified tracing interface for both kernel and userspace • [k,u]probes, (dtrace)tracepoints and so on are also used by other tools • minimal (negligible) performance impact • attach JIT native compiled instrumentation code • no long suspensions of execution Advantages • requires a fairly recent kernel • definitely not for debugging • no knowledge of the calling higher level language implementation • not fully running in user space • kernel-user context (usually negligible) switch when eBPF instrument a user process • still not portable as other tracers • VM primarily developer in the Linux kernel (work-in-progress portings btw) Disadvantages Why use eBPF at all to trace userspace processes?
  • 9. @leodido BFP operator for Kubernetes Why don’t we make eBPF programs look more YAML ✌✌✌
  • 10. 📎 http://bit.ly/k8s_crd An extension of the K8S API that let you store and retrieve structured data. Custom resources 📎 http://bit.ly/k8s_shared_informers The actual control loop that watches the shared state using the workqueue. Shared informers 📎 http://bit.ly/k8s_custom_controllers It declares and specifies the desired state of your resource continuously trying to match it with the actual state. Controllers Customize all the things
  • 12. @leodido Did y’all say Y’AML?! let’s put some ELF magic in it... 🧝‍♂🤯🧙‍♂
  • 13. @leodido Count packets by protocol Count sys_enter_write by process ID macro to generate sections inside the object file (later interpreted by the ELF BPF loader)
  • 14. @leodido Compile and inspect This is important because communicates to set the current running kernel version! Tricky and controversial legal thing about licenses ... The bpf_prog_load() wrapper also has a license parameter to provide the license that applies to the eBPF program being loaded. Not GPL-compatible license? Kernel won’t load you eBPF! Exceptions applies... eBPF Maps
  • 17. @leodido Demo time Doing all the BPF things, with YAML 💦
  • 19. @leodido # HELP test_packets No. of packets per protocol (key), node # TYPE test_packets counter test_packets{key="00001",node="127.0.0.1"} 8 test_packets{key="00002",node="127.0.0.1"} 1 test_packets{key="00006",node="127.0.0.1"} 551 test_packets{key="00008",node="127.0.0.1"} 1 test_packets{key="00017",node="127.0.0.1"} 15930 test_packets{key="00089",node="127.0.0.1"} 9 test_packets{key="00233",node="127.0.0.1"} 1 # EOF It is a WIP project but already open source! 🎺 Check it out @ gh:bfptools/kube-bpf 🔗 ip-10-12-0-136.ec2.internal:9387/metrics # <- ICMP # <- IGMP # <- TCP # <- EGP # <- UDP # <- OSPF # <- ?
  • 20. @leodido # HELP test_dummy No. sys_enter_write calls per PID (key), node # TYPE test_dummy counter test_dummy{key="00001",node="127.0.0.1"} ... test_dummy{key="00001",node="127.0.0.1"} 8 test_dummy{key="00295",node="127.0.0.1"} 1 test_dummy{key="01278",node="127.0.0.1"} 1158 test_dummy{key="04690",node="127.0.0.1"} 209 test_dummy{key="04691",node="127.0.0.1"} 889 # EOF It is a WIP project but already open source! 🎺 Check it out @ gh:bfptools/kube-bpf 🔗 ip-10-12-0-122.ec2.internal:9387/metrics
  • 21. @leodido It is a WIP project but already open source! 🎺 Check it out @ gh:bfptools/kube-bpf 🔗
  • 22. @leodido kubectl-trace More eBPF + k8s Run bpftrace program (from file) Ctrl-C tells the program to plot the results using hist() The output histogram Maps
  • 23. @leodido • Prometheus exposition format is here to stay given how simple it is 📊 • OpenMetrics will introduce improvements on such giant shoulders 📈 • We cannot monitor and observe everything from inside our applications 🎯 • We might want to have a look at the orchestrator (context) our apps live and die in 🕸 • Kubernetes can be extended to achieve such levels of integrations 🔌 • ELF is cool 🧝 • We look for better tools (eBPF) for grabbing our metrics and even more 🔮 • Almost nullify footprint ⚡ • Enable a wider range of available data 🌊 • Do not touch our applications directly 👻 • There is a PoC doing some magic at gh:bfptools/kube-bpf 🧞 Key takeaways
  • 24. Thanks. Reach me out @leodido on twitter & github! SEE Y’ALL AROUND AT KUBECON http://bit.ly/prometheus_ebpf_k8s