SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
1
Exploring the power of
OpenTelemetry on
Kubernetes
Pavol Loffay
Principal Software Engineer
Benedikt Bongartz
Senior Software Engineer
2
● Pavol Loffay
● Principal Software Engineer
● OpenTelemetry, Jaeger maintainer
● Follow me @ploffay
Bio
3
● Benedikt Bongartz
● Senior Software Engineer
● Working on OpenTelemetry
● Contact
○ @frzifus@fosstodon.org
○ frzifus:matrix.org
Bio
4
● History observability
● Intro to OpenTelemetry (OTEL)
○ Instrumentation
○ Collector
● OpenTelemetry Kubernetes operator
○ Instrumentation CR
○ Collector CR
● Data collection use-cases - Traces, Metrics, Logs
● What is next?
Agenda
A peek into history of OSS
observability
technology advancement and less vendor locking
6
OSS distributed tracing history
X-Trace
2007
Dapper paper
2010
Zipkin
2012
OpenTracing
2015
Jaeger
2017
OpenTelemetry
DataDog
2019 New Relic
2020
OpenCensus
2016
Hypetrace
Grafana
Tempo
2020
SigNoz
2021
Apache
SkyWalking
2015
Data
model
bespoke
APIs
SDK
Collector auto-instrumentation
Spec
API
Instrumentation
libraries
some
instrumentation
reusable
instrumentation
libraries
Agents/
auto-instrumentation
OpenTelemetry a.k.a. OTEL
Open-source data collection project
8
● Open source!
● Cloud Native Computing Foundation (CNCF)
● Vendor neutral telemetry data collection
● Specification, API, SDK, data model - OTLP, auto-instrumentation, collector
● Helm chart, Kubernetes operator
9
OpenTelemetry is only data collection
It is not platform, storage nor query API
OpenTelemetry instrumentation
How telemetry data is created
11
frontend
logger.log()
meter.record()
tracer.span().start()
driver
logger.log()
meter.record()
tracer.span().start()
collector
customer
logger.log()
meter.record()
tracer.span().start()
HTTP
Platform
(Prometheus/Jaeger/Loki)
Data collection
Platform
● Manual / Explicit
○ Better control
○ Might have better performance
○ Requires code change, recompilation, redeploy
● Direct integration in runtimes - e.g. Quarkus, Wildfly
● Auto-instrumentation / agent
○ Easy to roll out
○ Wide framework coverage
12
Instrumentation
java -javaagent:/opt/javaagent.jar -jar target/demo-0.0.1-SNAPSHOT.jar
tracing.enabled = true
io.opentelemetry:opentelemetry-api:1.22.0
io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:1.19.1
● Java
● C#
● NodeJS
● Python
● PHP
● Golang
13
OpenTelemetry auto-instrumentation
java -javaagent:/opt/javaagent.jar -jar target/demo-0.0.1-SNAPSHOT.jar
JAVA_TOOL_OPTIONS = -javaagent:/otel-auto-instrumentation/javaagent.jar
CORECLR_ENABLE_PROFILING, CORECLR_PROFILER_PATH, DOTNET_ADDITIONAL_DEPS, DOTNET_SHARED_STORE
NODE_OPTIONS = --require /otel-auto-instrumentation/autoinstrumentation.js
PYTHONPATH = /otel-auto-instrumentation/opentelemetry/instrumentation/auto_instrumentation//otel-auto-instrumentation
OpenTelemetry collector
How telemetry data is collected
and exported to a platform
● Written in Golang
● Docs - opentelemetry.io/docs/collector/
● Two distributions
○ Core - opentelemetry-collector-releases/distributions/otelcol
○ Contrib - opentelemetry-collector-releases/distributions/otelcol-contrib
○ Build your own
● Many components open-telemetry/opentelemetry-collector-contrib
● Distributed as: binary, container image, APK/DEB/RPM
15
OpenTelemetry collector
16
Instrumentation and collector
app/workload/pod
(auto) Instrumentation
API/SDK
RPC framework (e.g. servlet)
Jaeger
OpenTelemetry
Zipkin
OpenCensus
Batching
PII
filter
Re-labeling
Custom
Splunk
Kafka
Jaeger
Batching
Data
drop
Collector
Receivers Processors Exporters
OpenTelemetry Kubernetes Operator
Manages OpenTelemetry collector and Instrumentation
● https://github.com/open-telemetry/opentelemetry-operator
● Kubernetes operator Custom Resource Definitions (CRDs):
○ opentelemetrycollectors.opentelemetry.io / otelcol
○ instrumentation.opentelemetry.io / otelinst
● The operator can be installed via OLM, Helm chart or K8s manifests
18
OpenTelemetry operator
Collector CRD
● Deployment modes: .spec.mode
○ sidecar, deployment, daemonset, statefulset
● Auto scaling or kubectl scale --replicas=5 otelcols/simplest
● Expose outside of the cluster .spec.ingress
● Use custom collector image .spec.image
20
OpenTelemetry Operator - Collector Kind
21
OTEL-Collector configuration
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel
spec:
mode: deployment
config: |
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:14250
exporters:
logging:
loglevel: debug
service:
extensions: [headers_setter, ...]
pipelines:
traces:
processors: [batch,...]
receivers: [otlp]
exporters: [logging]
# Data src: traces, metrics, logs
processors: # <optional>
batch:
send_batch_size: 10000
timeout: 10s
resourcedetection/openshift:
detectors: openshift
timeout: 2s
override: false
extensions: # <optional>
headers_setter:
- key: X-Scope-OrgID
from_context: tenant_id
- key: User-ID
value: user_id
sidecar.opentelemetry.io/inject: "true"
22
OpenTelemetry Operator - Collector Kind
kubectl apply -f - <<EOF
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel
spec:
config: |
receivers:
otlp:
protocols:
grpc:
http:
jaeger:
protocols:
grpc:
thrift_compact:
processors:
exporters:
jaeger:
endpoint: jaeger-collector.headless:14250
service:
pipelines:
traces:
receivers: [otlp, jaeger]
processors: []
exporters: [jaeger]
EOF
sidecar.opentelemetry.io/inject: "true"
23
OpenTelemetry Operator - Collector Kind - Processor
processors:
k8sattributes: # Add k8s attributes
attributes: # Delete db.table attribute
actions:
- key: db.table
action: delete
resource: # Add k8s cluster name
attributes:
- key: k8s.cluster.name
from_attribute: k8s-cluster
action: insert
Other use cases:
● Tail base sampling
● Derive RED metrics from traces
Instrumentation CRD
25
OpenTelemetry Operator - Instrumentation Kind
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: my-instrumentation
spec:
exporter:
endpoint: http://otel-collector:4317
propagators:
- tracecontext
- baggage
- b3
sampler:
type: parentbased_traceidratio
argument: "0.25"
resource:
attributes:
k8s.cluster.name: test-1-23
instrumentation.opentelemetry.io/inject-java: "true"
instrumentation.opentelemetry.io/inject-python: "true"
instrumentation.opentelemetry.io/inject-nodejs: "true"
instrumentation.opentelemetry.io/inject-dotnet: "true"
instrumentation.opentelemetry.io/inject-sdk: "true"
instrumentation.opentelemetry.io/container-names: "app"
Collecting traces on
Kubernetes
27
OpenTelemetry Architecture - Tracing
Pod
Container 1
OTEL-Client
OpenTelemetry API
Instrumentation
Application
push
Platform
(Jaeger/Loki/Splunk…)
Platform
instrumentation.opentelemetry.io/inject-java: "true"
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: my–java-instrumentation
spec:
exporter:
. . .
28
29
30
31
Collecting metrics on
Kubernetes
33
Collector
Platform
(Prometheus/Thanos/Splunk…)
Platform
Pod 2
Node 1
OTEL-Collector configuration
Pod 1
Pull
Push
34
OTEL-Collector configuration
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel
spec:
targetAllocator:
enabled: true
allocationStrategy: least-weighted
replicas: 3
serviceAccount: ta
prometheusCR:
enabled: true
serviceMonitorSelector:
team: backend-1
config: |
receivers:
prometheus:
config:
scrape_configs:
- job_name: ‘otel-collector’
scrape_interval: 10s
static_configs: ...
35
OTEL-Collector configuration
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel
spec:
mode: statefulset
targetAllocator:
enabled: true
allocationStrategy: least-weighted
replicas: 3
serviceAccount: ta
prometheusCR: {}
config: |
receivers:
prometheus:
config:
scrape_configs:
- job_name: ‘otel-collector’
scrape_interval: 10s
static_configs:
- targets: [`0.0.0.0:8888`]
target_allocator:
endpoint: http://my-ta-svc
interval: 30s
collector_id: collector-1
36
OTEL-Collector configuration
…
receivers:
prometheus:
config:
global:
scrape_interval: 1m
scrape_timeout: 10s
evaluation_interval: 1m
scrape_configs:
- job_name: otel-collector
honor_timestamps: true
scrape_interval: 10s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
http_sd_configs:
- follow_redirects: false
url: http://metrics-ta-svc:80/jobs/otel-collector/targets?collector_id=$POD_NAME
spec.targetAllocator.enabeld: "true"
37
OTEL-Collector configuration
Be aware of:
● Prometheus does not support UTF-8 labels
[prometheus#11700] [grafana#42615]
Therefore OTEL-Prometheus-Remote-Write converts metrics to Prom
Naming convention. [otel#normalization]
● Other useful metric receiver
[host-metrics]
Collecting logs on
Kubernetes
39
● For metrics and traces OpenTelemetry takes the approach of a
clean-sheet design, specifies a new API and provides full
implementations of this API in multiple languages.
● Our approach with logs is somewhat different. For OpenTelemetry to be
successful in logging space we need to support existing legacy of logs
and logging libraries, while offering improvements and better integration
with the rest of observability world where possible.
OpenTelemetry logs
40
OpenTelemetry Operator - collecting logs
● File log receiver
○ Available in the “contrib” docker image
○ Example config - opentelemetry-collector-contrib/otel-collector-config.yml
○ Includes: /var/log/pods/*/*/*.log
○ Set of operators to parse data: json_parser, regex_parser, move…
○ Collectors resource attributes: namespace, pod name/UID/restarts, container name
● Fluentforwardreceiver - receive data from
41
DaemonSet
collector
Platform
(Loki/OpenSearch/Splunk…)
Platform
Pod 1
Node 1
Pod 2
Pod 3
DaemonSet
collector
Pod 1
Node 2
Pod 2
Pod 3
DaemonSet
collector
Pod 1
Node 3
Pod 2
Pod 3
Kubernetes cluster
42
OpenTelemetry Operator - collecting logs, CR
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel-logs
spec:
mode: daemonset
image:
ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.
69.0
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
volumeMounts:
- mountPath: /var/log
name: varlog
readOnly: true
- mountPath: /var/lib/docker/containers
name: varlibdockercontainers
readOnly: true
43
OpenTelemetry Operator - collecting logs, logging exporter 1
2023-01-19T16:28:48.675Z info ResourceLog #0
Resource SchemaURL:
Resource attributes:
-> k8s.namespace.name: Str(cert-manager)
-> k8s.pod.name: Str(cert-manager-cainjector-857ff8f7cb-xmr6p)
-> k8s.container.restart_count: Str(0)
-> k8s.pod.uid: Str(53574bad-1d91-4880-ab87-8f5a88bfffee)
-> k8s.container.name: Str(cert-manager)
ScopeLogs #0
ScopeLogs SchemaURL:
InstrumentationScope
LogRecord #0
ObservedTimestamp: 2023-01-19 16:28:48.674124625 +0000 UTC
Timestamp: 2023-01-18 12:58:21.446092114 +0000 UTC
SeverityText:
SeverityNumber: Unspecified(0)
Body: Str({"log":"I0118 12:58:21.445823 1 controller.go:178]
cert-manager/certificate/customresourcedefinition/controller/controller-for-certificate-customresourcede
finition "msg"="Starting EventSource" "source"="u0026{{%!s(*v1.Certificate=u0026{{ } { 0
{{0 0 u
003cnilu003e}} u003cnilu003e u003cnilu003e map[] map[] [] [] []} {u003cnilu003e
u003cnilu003e u003cnilu003e [] [] [] [] u003cnilu003e u003cnilu003e { } false []
u003cnilu003e u003cnilu003e u003cnilu003e []} {[] u003cnilu003e u003cnilu003e u003cnilu00
3e u003cnilu003e u003cnilu003e u003cnilu003e u003cnilu003e}})
%!s(*cache.informerCache=u0026{0xc000438380}) %!s(chan error=u003cnilu003e)
%!s(func()=u003cnilu003e)}}"n","stream":"stderr","time":"2023-01-18T12:58:21.446092114Z"})
44
OpenTelemetry Operator - collecting logs, logging exporter 2
Attributes:
-> log.file.path:
Str(/var/log/pods/cert-manager_cert-manager-cainjector-857ff8f7cb-xmr6p_53574bad-1d91-4880-ab
87-8f5a88bfffee/cert-manager/0.log)
-> log: Str(I0118 12:58:21.445823 1 controller.go:178]
cert-manager/certificate/customresourcedefinition/controller/controller-for-certificate-custo
mresourcedefinition "msg"="Starting EventSource" "source"="&{{%!s(*v1.Certificate=&{{ } {
0 {{0 0 <nil>}} <nil> <nil>
map[] map[] [] [] []} {<nil> <nil> <nil> [] [] [] [] <nil> <nil> { } false [] <nil>
<nil> <nil> []} {[] <nil> <nil> <nil> <nil> <nil> <nil> <nil>}})
%!s(*cache.informerCache=&{0xc000438380}) %!s(chan error=<nil>) %!s(func()=<nil>)}}"
)
-> time: Str(2023-01-18T12:58:21.446092114Z)
-> log.iostream: Str(stderr)
Trace ID:
Span ID:
Flags: 0
What is next?
● OpenTelemetry Operator
○ Auto-instrumentation for Webservers
● Profiling vision see 0212-profiling-vision.md
● OpAMP: Open Agent Management Protocol see open-telemetry/opamp-spec
46
What is next in OpenTelemetry?
Thank you
47
Pavol Loffay
@ploffay
Benedikt Bongartz
@frzifus

Más contenido relacionado

La actualidad más candente

Everything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed TracingEverything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed TracingAmuhinda Hungai
 
OpenTelemetry For Operators
OpenTelemetry For OperatorsOpenTelemetry For Operators
OpenTelemetry For OperatorsKevin Brockhoff
 
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Tonny Adhi Sabastian
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability LibraryTonny Adhi Sabastian
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuliano Costa
 
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.ioTHE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.ioDevOpsDays Tel Aviv
 
Meetup OpenTelemetry Intro
Meetup OpenTelemetry IntroMeetup OpenTelemetry Intro
Meetup OpenTelemetry IntroDimitrisFinas1
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)Lucas Jellema
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryDevOps.com
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...LibbySchulze
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryEric D. Schabell
 
Grafana Loki: like Prometheus, but for Logs
Grafana Loki: like Prometheus, but for LogsGrafana Loki: like Prometheus, but for Logs
Grafana Loki: like Prometheus, but for LogsMarco Pracucci
 
Observability on Kubernetes - High Availability on Prometheus
Observability on Kubernetes - High Availability on PrometheusObservability on Kubernetes - High Availability on Prometheus
Observability on Kubernetes - High Availability on PrometheusJulian Alarcon Alarcon
 
Improve monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss toolsImprove monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss toolsNilesh Gule
 
Observability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing PrimerObservability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing PrimerVMware Tanzu
 
OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)Sebastian Poxhofer
 
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Vietnam Open Infrastructure User Group
 
Kubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best PracticesKubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best PracticesAjeet Singh Raina
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to PrometheusJulien Pivotto
 

La actualidad más candente (20)

Everything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed TracingEverything You wanted to Know About Distributed Tracing
Everything You wanted to Know About Distributed Tracing
 
OpenTelemetry For Operators
OpenTelemetry For OperatorsOpenTelemetry For Operators
OpenTelemetry For Operators
 
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
Adopting Open Telemetry as Distributed Tracer on your Microservices at Kubern...
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability Library
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
 
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.ioTHE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
THE STATE OF OPENTELEMETRY, DOTAN HOROVITS, Logz.io
 
Meetup OpenTelemetry Intro
Meetup OpenTelemetry IntroMeetup OpenTelemetry Intro
Meetup OpenTelemetry Intro
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)
 
Observability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetryObservability in Java: Getting Started with OpenTelemetry
Observability in Java: Getting Started with OpenTelemetry
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...Intro to open source observability with grafana, prometheus, loki, and tempo(...
Intro to open source observability with grafana, prometheus, loki, and tempo(...
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Grafana Loki: like Prometheus, but for Logs
Grafana Loki: like Prometheus, but for LogsGrafana Loki: like Prometheus, but for Logs
Grafana Loki: like Prometheus, but for Logs
 
Observability on Kubernetes - High Availability on Prometheus
Observability on Kubernetes - High Availability on PrometheusObservability on Kubernetes - High Availability on Prometheus
Observability on Kubernetes - High Availability on Prometheus
 
Improve monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss toolsImprove monitoring and observability for kubernetes with oss tools
Improve monitoring and observability for kubernetes with oss tools
 
Observability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing PrimerObservability, Distributed Tracing, and Open Source: The Missing Primer
Observability, Distributed Tracing, and Open Source: The Missing Primer
 
OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)
 
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
Room 1 - 4 - Phạm Tường Chiến & Trần Văn Thắng - Deliver managed Kubernetes C...
 
Kubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best PracticesKubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best Practices
 
Observability
ObservabilityObservability
Observability
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 

Similar a Exploring the power of OpenTelemetry on Kubernetes

KCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdfKCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdfRui Liu
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfJose Manuel Ortega Candel
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kevin Lynch
 
Patroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionPatroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionAlexander Kukushkin
 
Using eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthUsing eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthScyllaDB
 
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC
 
Kubernetes for java developers - Tutorial at Oracle Code One 2018
Kubernetes for java developers - Tutorial at Oracle Code One 2018Kubernetes for java developers - Tutorial at Oracle Code One 2018
Kubernetes for java developers - Tutorial at Oracle Code One 2018Anthony Dahanne
 
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...GetInData
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using GoCloudOps2005
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKevin Lynch
 
OpenTelemetry 101 FTW
OpenTelemetry 101 FTWOpenTelemetry 101 FTW
OpenTelemetry 101 FTWNGINX, Inc.
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusEmily Jiang
 
Managing Container Clusters in OpenStack Native Way
Managing Container Clusters in OpenStack Native WayManaging Container Clusters in OpenStack Native Way
Managing Container Clusters in OpenStack Native WayQiming Teng
 
20180503 kube con eu kubernetes metrics deep dive
20180503 kube con eu   kubernetes metrics deep dive20180503 kube con eu   kubernetes metrics deep dive
20180503 kube con eu kubernetes metrics deep diveBob Cotton
 
Monitoring in Big Data Platform - Albert Lewandowski, GetInData
Monitoring in Big Data Platform - Albert Lewandowski, GetInDataMonitoring in Big Data Platform - Albert Lewandowski, GetInData
Monitoring in Big Data Platform - Albert Lewandowski, GetInDataGetInData
 
Kubernetes Networking 101
Kubernetes Networking 101Kubernetes Networking 101
Kubernetes Networking 101Kublr
 
Integrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsIntegrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsLuca Mazzaferro
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsKernel TLV
 
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017Bob Cotton
 

Similar a Exploring the power of OpenTelemetry on Kubernetes (20)

KCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdfKCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdf
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdf
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
 
Patroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionPatroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companion
 
Docker Monitoring Webinar
Docker Monitoring  WebinarDocker Monitoring  Webinar
Docker Monitoring Webinar
 
Using eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster HealthUsing eBPF to Measure the k8s Cluster Health
Using eBPF to Measure the k8s Cluster Health
 
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companionPGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
PGConf APAC 2018 - Patroni: Kubernetes-native PostgreSQL companion
 
Kubernetes for java developers - Tutorial at Oracle Code One 2018
Kubernetes for java developers - Tutorial at Oracle Code One 2018Kubernetes for java developers - Tutorial at Oracle Code One 2018
Kubernetes for java developers - Tutorial at Oracle Code One 2018
 
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
 
OpenTelemetry 101 FTW
OpenTelemetry 101 FTWOpenTelemetry 101 FTW
OpenTelemetry 101 FTW
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
 
Managing Container Clusters in OpenStack Native Way
Managing Container Clusters in OpenStack Native WayManaging Container Clusters in OpenStack Native Way
Managing Container Clusters in OpenStack Native Way
 
20180503 kube con eu kubernetes metrics deep dive
20180503 kube con eu   kubernetes metrics deep dive20180503 kube con eu   kubernetes metrics deep dive
20180503 kube con eu kubernetes metrics deep dive
 
Monitoring in Big Data Platform - Albert Lewandowski, GetInData
Monitoring in Big Data Platform - Albert Lewandowski, GetInDataMonitoring in Big Data Platform - Albert Lewandowski, GetInData
Monitoring in Big Data Platform - Albert Lewandowski, GetInData
 
Kubernetes Networking 101
Kubernetes Networking 101Kubernetes Networking 101
Kubernetes Networking 101
 
Integrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperationsIntegrating Puppet and Gitolite for sysadmins cooperations
Integrating Puppet and Gitolite for sysadmins cooperations
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance Tools
 
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017
Kubernetes Colorado - Kubernetes metrics deep dive 10/25/2017
 

Más de Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsRed Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkRed Hat Developers
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkRed Hat Developers
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkRed Hat Developers
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Red Hat Developers
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkRed Hat Developers
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Red Hat Developers
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...Red Hat Developers
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Red Hat Developers
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech TalkRed Hat Developers
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...Red Hat Developers
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkRed Hat Developers
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Red Hat Developers
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Red Hat Developers
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Red Hat Developers
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkRed Hat Developers
 
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...Red Hat Developers
 

Más de Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
Friends don't let friends do dual writes: Outbox pattern with OpenShift Strea...
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Exploring the power of OpenTelemetry on Kubernetes

  • 1. 1 Exploring the power of OpenTelemetry on Kubernetes Pavol Loffay Principal Software Engineer Benedikt Bongartz Senior Software Engineer
  • 2. 2 ● Pavol Loffay ● Principal Software Engineer ● OpenTelemetry, Jaeger maintainer ● Follow me @ploffay Bio
  • 3. 3 ● Benedikt Bongartz ● Senior Software Engineer ● Working on OpenTelemetry ● Contact ○ @frzifus@fosstodon.org ○ frzifus:matrix.org Bio
  • 4. 4 ● History observability ● Intro to OpenTelemetry (OTEL) ○ Instrumentation ○ Collector ● OpenTelemetry Kubernetes operator ○ Instrumentation CR ○ Collector CR ● Data collection use-cases - Traces, Metrics, Logs ● What is next? Agenda
  • 5. A peek into history of OSS observability technology advancement and less vendor locking
  • 6. 6 OSS distributed tracing history X-Trace 2007 Dapper paper 2010 Zipkin 2012 OpenTracing 2015 Jaeger 2017 OpenTelemetry DataDog 2019 New Relic 2020 OpenCensus 2016 Hypetrace Grafana Tempo 2020 SigNoz 2021 Apache SkyWalking 2015 Data model bespoke APIs SDK Collector auto-instrumentation Spec API Instrumentation libraries some instrumentation reusable instrumentation libraries Agents/ auto-instrumentation
  • 7. OpenTelemetry a.k.a. OTEL Open-source data collection project
  • 8. 8 ● Open source! ● Cloud Native Computing Foundation (CNCF) ● Vendor neutral telemetry data collection ● Specification, API, SDK, data model - OTLP, auto-instrumentation, collector ● Helm chart, Kubernetes operator
  • 9. 9 OpenTelemetry is only data collection It is not platform, storage nor query API
  • 12. ● Manual / Explicit ○ Better control ○ Might have better performance ○ Requires code change, recompilation, redeploy ● Direct integration in runtimes - e.g. Quarkus, Wildfly ● Auto-instrumentation / agent ○ Easy to roll out ○ Wide framework coverage 12 Instrumentation java -javaagent:/opt/javaagent.jar -jar target/demo-0.0.1-SNAPSHOT.jar tracing.enabled = true io.opentelemetry:opentelemetry-api:1.22.0 io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:1.19.1
  • 13. ● Java ● C# ● NodeJS ● Python ● PHP ● Golang 13 OpenTelemetry auto-instrumentation java -javaagent:/opt/javaagent.jar -jar target/demo-0.0.1-SNAPSHOT.jar JAVA_TOOL_OPTIONS = -javaagent:/otel-auto-instrumentation/javaagent.jar CORECLR_ENABLE_PROFILING, CORECLR_PROFILER_PATH, DOTNET_ADDITIONAL_DEPS, DOTNET_SHARED_STORE NODE_OPTIONS = --require /otel-auto-instrumentation/autoinstrumentation.js PYTHONPATH = /otel-auto-instrumentation/opentelemetry/instrumentation/auto_instrumentation//otel-auto-instrumentation
  • 14. OpenTelemetry collector How telemetry data is collected and exported to a platform
  • 15. ● Written in Golang ● Docs - opentelemetry.io/docs/collector/ ● Two distributions ○ Core - opentelemetry-collector-releases/distributions/otelcol ○ Contrib - opentelemetry-collector-releases/distributions/otelcol-contrib ○ Build your own ● Many components open-telemetry/opentelemetry-collector-contrib ● Distributed as: binary, container image, APK/DEB/RPM 15 OpenTelemetry collector
  • 16. 16 Instrumentation and collector app/workload/pod (auto) Instrumentation API/SDK RPC framework (e.g. servlet) Jaeger OpenTelemetry Zipkin OpenCensus Batching PII filter Re-labeling Custom Splunk Kafka Jaeger Batching Data drop Collector Receivers Processors Exporters
  • 17. OpenTelemetry Kubernetes Operator Manages OpenTelemetry collector and Instrumentation
  • 18. ● https://github.com/open-telemetry/opentelemetry-operator ● Kubernetes operator Custom Resource Definitions (CRDs): ○ opentelemetrycollectors.opentelemetry.io / otelcol ○ instrumentation.opentelemetry.io / otelinst ● The operator can be installed via OLM, Helm chart or K8s manifests 18 OpenTelemetry operator
  • 20. ● Deployment modes: .spec.mode ○ sidecar, deployment, daemonset, statefulset ● Auto scaling or kubectl scale --replicas=5 otelcols/simplest ● Expose outside of the cluster .spec.ingress ● Use custom collector image .spec.image 20 OpenTelemetry Operator - Collector Kind
  • 21. 21 OTEL-Collector configuration apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: mode: deployment config: | receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:14250 exporters: logging: loglevel: debug service: extensions: [headers_setter, ...] pipelines: traces: processors: [batch,...] receivers: [otlp] exporters: [logging] # Data src: traces, metrics, logs processors: # <optional> batch: send_batch_size: 10000 timeout: 10s resourcedetection/openshift: detectors: openshift timeout: 2s override: false extensions: # <optional> headers_setter: - key: X-Scope-OrgID from_context: tenant_id - key: User-ID value: user_id sidecar.opentelemetry.io/inject: "true"
  • 22. 22 OpenTelemetry Operator - Collector Kind kubectl apply -f - <<EOF apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: config: | receivers: otlp: protocols: grpc: http: jaeger: protocols: grpc: thrift_compact: processors: exporters: jaeger: endpoint: jaeger-collector.headless:14250 service: pipelines: traces: receivers: [otlp, jaeger] processors: [] exporters: [jaeger] EOF sidecar.opentelemetry.io/inject: "true"
  • 23. 23 OpenTelemetry Operator - Collector Kind - Processor processors: k8sattributes: # Add k8s attributes attributes: # Delete db.table attribute actions: - key: db.table action: delete resource: # Add k8s cluster name attributes: - key: k8s.cluster.name from_attribute: k8s-cluster action: insert Other use cases: ● Tail base sampling ● Derive RED metrics from traces
  • 25. 25 OpenTelemetry Operator - Instrumentation Kind apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: my-instrumentation spec: exporter: endpoint: http://otel-collector:4317 propagators: - tracecontext - baggage - b3 sampler: type: parentbased_traceidratio argument: "0.25" resource: attributes: k8s.cluster.name: test-1-23 instrumentation.opentelemetry.io/inject-java: "true" instrumentation.opentelemetry.io/inject-python: "true" instrumentation.opentelemetry.io/inject-nodejs: "true" instrumentation.opentelemetry.io/inject-dotnet: "true" instrumentation.opentelemetry.io/inject-sdk: "true" instrumentation.opentelemetry.io/container-names: "app"
  • 27. 27 OpenTelemetry Architecture - Tracing Pod Container 1 OTEL-Client OpenTelemetry API Instrumentation Application push Platform (Jaeger/Loki/Splunk…) Platform instrumentation.opentelemetry.io/inject-java: "true" apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: my–java-instrumentation spec: exporter: . . .
  • 28. 28
  • 29. 29
  • 30. 30
  • 31. 31
  • 34. 34 OTEL-Collector configuration apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: targetAllocator: enabled: true allocationStrategy: least-weighted replicas: 3 serviceAccount: ta prometheusCR: enabled: true serviceMonitorSelector: team: backend-1 config: | receivers: prometheus: config: scrape_configs: - job_name: ‘otel-collector’ scrape_interval: 10s static_configs: ...
  • 35. 35 OTEL-Collector configuration apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel spec: mode: statefulset targetAllocator: enabled: true allocationStrategy: least-weighted replicas: 3 serviceAccount: ta prometheusCR: {} config: | receivers: prometheus: config: scrape_configs: - job_name: ‘otel-collector’ scrape_interval: 10s static_configs: - targets: [`0.0.0.0:8888`] target_allocator: endpoint: http://my-ta-svc interval: 30s collector_id: collector-1
  • 36. 36 OTEL-Collector configuration … receivers: prometheus: config: global: scrape_interval: 1m scrape_timeout: 10s evaluation_interval: 1m scrape_configs: - job_name: otel-collector honor_timestamps: true scrape_interval: 10s scrape_timeout: 10s metrics_path: /metrics scheme: http follow_redirects: true http_sd_configs: - follow_redirects: false url: http://metrics-ta-svc:80/jobs/otel-collector/targets?collector_id=$POD_NAME spec.targetAllocator.enabeld: "true"
  • 37. 37 OTEL-Collector configuration Be aware of: ● Prometheus does not support UTF-8 labels [prometheus#11700] [grafana#42615] Therefore OTEL-Prometheus-Remote-Write converts metrics to Prom Naming convention. [otel#normalization] ● Other useful metric receiver [host-metrics]
  • 39. 39 ● For metrics and traces OpenTelemetry takes the approach of a clean-sheet design, specifies a new API and provides full implementations of this API in multiple languages. ● Our approach with logs is somewhat different. For OpenTelemetry to be successful in logging space we need to support existing legacy of logs and logging libraries, while offering improvements and better integration with the rest of observability world where possible. OpenTelemetry logs
  • 40. 40 OpenTelemetry Operator - collecting logs ● File log receiver ○ Available in the “contrib” docker image ○ Example config - opentelemetry-collector-contrib/otel-collector-config.yml ○ Includes: /var/log/pods/*/*/*.log ○ Set of operators to parse data: json_parser, regex_parser, move… ○ Collectors resource attributes: namespace, pod name/UID/restarts, container name ● Fluentforwardreceiver - receive data from
  • 41. 41 DaemonSet collector Platform (Loki/OpenSearch/Splunk…) Platform Pod 1 Node 1 Pod 2 Pod 3 DaemonSet collector Pod 1 Node 2 Pod 2 Pod 3 DaemonSet collector Pod 1 Node 3 Pod 2 Pod 3 Kubernetes cluster
  • 42. 42 OpenTelemetry Operator - collecting logs, CR apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel-logs spec: mode: daemonset image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0. 69.0 volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers volumeMounts: - mountPath: /var/log name: varlog readOnly: true - mountPath: /var/lib/docker/containers name: varlibdockercontainers readOnly: true
  • 43. 43 OpenTelemetry Operator - collecting logs, logging exporter 1 2023-01-19T16:28:48.675Z info ResourceLog #0 Resource SchemaURL: Resource attributes: -> k8s.namespace.name: Str(cert-manager) -> k8s.pod.name: Str(cert-manager-cainjector-857ff8f7cb-xmr6p) -> k8s.container.restart_count: Str(0) -> k8s.pod.uid: Str(53574bad-1d91-4880-ab87-8f5a88bfffee) -> k8s.container.name: Str(cert-manager) ScopeLogs #0 ScopeLogs SchemaURL: InstrumentationScope LogRecord #0 ObservedTimestamp: 2023-01-19 16:28:48.674124625 +0000 UTC Timestamp: 2023-01-18 12:58:21.446092114 +0000 UTC SeverityText: SeverityNumber: Unspecified(0) Body: Str({"log":"I0118 12:58:21.445823 1 controller.go:178] cert-manager/certificate/customresourcedefinition/controller/controller-for-certificate-customresourcede finition "msg"="Starting EventSource" "source"="u0026{{%!s(*v1.Certificate=u0026{{ } { 0 {{0 0 u 003cnilu003e}} u003cnilu003e u003cnilu003e map[] map[] [] [] []} {u003cnilu003e u003cnilu003e u003cnilu003e [] [] [] [] u003cnilu003e u003cnilu003e { } false [] u003cnilu003e u003cnilu003e u003cnilu003e []} {[] u003cnilu003e u003cnilu003e u003cnilu00 3e u003cnilu003e u003cnilu003e u003cnilu003e u003cnilu003e}}) %!s(*cache.informerCache=u0026{0xc000438380}) %!s(chan error=u003cnilu003e) %!s(func()=u003cnilu003e)}}"n","stream":"stderr","time":"2023-01-18T12:58:21.446092114Z"})
  • 44. 44 OpenTelemetry Operator - collecting logs, logging exporter 2 Attributes: -> log.file.path: Str(/var/log/pods/cert-manager_cert-manager-cainjector-857ff8f7cb-xmr6p_53574bad-1d91-4880-ab 87-8f5a88bfffee/cert-manager/0.log) -> log: Str(I0118 12:58:21.445823 1 controller.go:178] cert-manager/certificate/customresourcedefinition/controller/controller-for-certificate-custo mresourcedefinition "msg"="Starting EventSource" "source"="&{{%!s(*v1.Certificate=&{{ } { 0 {{0 0 <nil>}} <nil> <nil> map[] map[] [] [] []} {<nil> <nil> <nil> [] [] [] [] <nil> <nil> { } false [] <nil> <nil> <nil> []} {[] <nil> <nil> <nil> <nil> <nil> <nil> <nil>}}) %!s(*cache.informerCache=&{0xc000438380}) %!s(chan error=<nil>) %!s(func()=<nil>)}}" ) -> time: Str(2023-01-18T12:58:21.446092114Z) -> log.iostream: Str(stderr) Trace ID: Span ID: Flags: 0
  • 46. ● OpenTelemetry Operator ○ Auto-instrumentation for Webservers ● Profiling vision see 0212-profiling-vision.md ● OpAMP: Open Agent Management Protocol see open-telemetry/opamp-spec 46 What is next in OpenTelemetry?