SlideShare a Scribd company logo
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

More Related Content

What's hot

Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana
Syah Dwi Prihatmoko
 
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdfOSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
NETWAYS
 
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
DevOpsDays Tel Aviv
 
Meetup OpenTelemetry Intro
Meetup OpenTelemetry IntroMeetup OpenTelemetry Intro
Meetup OpenTelemetry Intro
DimitrisFinas1
 
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
NETWAYS
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For Developers
Kevin Brockhoff
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
Julien Pivotto
 
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
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
Arvind Kumar G.S
 
Monitoring with prometheus
Monitoring with prometheusMonitoring with prometheus
Monitoring with prometheus
Kasper Nissen
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdf
Jose Manuel Ortega Candel
 
Prometheus Overview
Prometheus OverviewPrometheus Overview
Prometheus Overview
Brian Brazil
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
Agile Testing Alliance
 
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
 
Fall in Love with Graphs and Metrics using Grafana
Fall in Love with Graphs and Metrics using GrafanaFall in Love with Graphs and Metrics using Grafana
Fall in Love with Graphs and Metrics using Grafana
torkelo
 
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
Marco Pracucci
 
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
 
OpenTelemetry For Operators
OpenTelemetry For OperatorsOpenTelemetry For Operators
OpenTelemetry For Operators
Kevin Brockhoff
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
Shiao-An Yuan
 
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
HostedbyConfluent
 

What's hot (20)

Getting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and GrafanaGetting Started Monitoring with Prometheus and Grafana
Getting Started Monitoring with Prometheus and Grafana
 
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdfOSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
OSMC 2022 | OpenTelemetry 101 by Dotan Horovit s.pdf
 
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
 
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
OSMC 2022 | The Power of Metrics, Logs & Traces with Open Source by Emil-Andr...
 
OpenTelemetry For Developers
OpenTelemetry For DevelopersOpenTelemetry For Developers
OpenTelemetry For Developers
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 
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(...
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
 
Monitoring with prometheus
Monitoring with prometheusMonitoring with prometheus
Monitoring with prometheus
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdf
 
Prometheus Overview
Prometheus OverviewPrometheus Overview
Prometheus Overview
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
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)
 
Fall in Love with Graphs and Metrics using Grafana
Fall in Love with Graphs and Metrics using GrafanaFall in Love with Graphs and Metrics using Grafana
Fall in Love with Graphs and Metrics using Grafana
 
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
 
OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)OpenTelemetry: From front- to backend (2022)
OpenTelemetry: From front- to backend (2022)
 
OpenTelemetry For Operators
OpenTelemetry For OperatorsOpenTelemetry For Operators
OpenTelemetry For Operators
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
 

Similar to Exploring the power of OpenTelemetry on Kubernetes

KCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdfKCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdf
Rui Liu
 
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
 
Kubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best PracticesKubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best Practices
Ajeet Singh Raina
 
Patroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionPatroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companion
Alexander Kukushkin
 
Docker Monitoring Webinar
Docker Monitoring  WebinarDocker Monitoring  Webinar
Docker Monitoring Webinar
Sematext Group, Inc.
 
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
ScyllaDB
 
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
PGConf 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 2018
Anthony 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 Go
CloudOps2005
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kevin Lynch
 
OpenTelemetry 101 FTW
OpenTelemetry 101 FTWOpenTelemetry 101 FTW
OpenTelemetry 101 FTW
NGINX, 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 nexus
Emily 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 Way
Qiming 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 dive
Bob 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, GetInData
GetInData
 
Kubernetes Networking 101
Kubernetes Networking 101Kubernetes Networking 101
Kubernetes Networking 101
Kublr
 
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
Luca 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 Tools
Kernel 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/2017
Bob Cotton
 

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

KCD-OpenTelemetry.pdf
KCD-OpenTelemetry.pdfKCD-OpenTelemetry.pdf
KCD-OpenTelemetry.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)
 
Kubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best PracticesKubernetes Monitoring & Best Practices
Kubernetes Monitoring & Best Practices
 
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
 

More from Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
Red Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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 Talk
Red 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
 

More from 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...
 

Recently uploaded

Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
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
Eric D. Schabell
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 

Recently uploaded (20)

Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
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
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 

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?