SlideShare a Scribd company logo
Improving monitoring systems Interoperability with OpenMetrics
Monitoring System Interoperability with
OpenMetrics
Chanshik Lim @ NexCloud
Agenda
▶Prometheus
• Prometheus Architecture
• Prometheus Metrics
• Prometheus Exposition Format
▶OpenMetrics
• Standardization
• Improvements
▶Interoperability with OpenMetrics
• Demo Architecture
• Integrations
▶References
Who am I
Chanshik Lim
• Lead software engineer @NexCloud
• Maintainer of NexClipper project
https://github.com/NexClipper/NexClipper
• Go, Python
• Linux, Kubernetes, Prometheus
• Hiring software engineer for
#Kubernetes #Prometheus #Metrics #Monitoring
Prometheus
Prometheus
https://prometheus.io/
• Started in 2012, Version 1.0 released in 2016
• Contributed to CNCF in May 2016
• Graduated in August 2018
• A multi-dimensional data model with time series data
• Pulling model over HTTP
• PromQL: Flexible query language
• Alertmanager: handle alerts
Prometheus Architecture
Prometheus Metrics
Prometheus Exposition Format
▶Human-readable, Readable line by line
▶Metric Syntax
▶Supported metric primitives
• Counter
• Gauge
• Histogram
• Summary
• Untyped
Metric Name
[a-zA-Z_:][a-zA-Z0-9_:]*.
▶Prefix: application, namespace or domain
• prometheus_notifications_total
• process_cpu_seconds_total
• http_request_duration_seconds
▶Suffix: single unit
• node_memory_usage_bytes
• http_request_duration_seconds
• process_cpu_seconds_total
• http_requests_total
• prometheus_build_info (provide metadata)
Labels
▶Key-Value pairs associated with time series
▶Label name
• [a-zA-Z_][a-zA-Z0-9_]*.
▶http_requests_total
• http_requests_total{path="/login"}
• http_requests_total{path="/logout"}
• http_requests_total{path="/adduser"}
• http_requests_total{path="/comment"}
• http_requests_total{path="/view"}
▶Do not use labels to store dimensions with high cardinality
• IDs, email addresses, …
Samples
▶Actual time series data
▶Float64 value
▶Millisecond-precision timestamp (optional)
▶Values
• node_cpu_seconds_total{cpu="0",mode="idle"} 48649.88
• node_cpu_seconds_total{cpu="0",mode="iowait"} 169.99
• node_cpu_seconds_total{cpu="0",mode="irq"} 0
• node_cpu_seconds_total{cpu="0",mode="nice"} 57.5
OpenMetrics
Before Prometheus
▶SNMP (closest to metric standard)
▶Highly fragmented monitoring landscape
▶Proprietary formats (with missing documents)
▶Difficult to implement
▶Various monitoring system specific formats
After Prometheus
▶Prometheus exposition format became a de-facto standard
▶Re-use Prometheus exporters to integration
▶Hundreds of exporters
▶Main monitoring players support Prometheus exposition format
Standardization
https://openmetrics.io/
▶Prometheus exposition format is still the Prometheus format
▶Traditional vendors wants to avoid lock-in
▶Prefer to use official standards
▶Vendor neutral
▶CNCF sandbox project
▶Official standard (in progress)
• IETF RFC
• Registered content-type/MIME-type : application/openmetrics-text
• (maybe) IANA port assignment
Improvements
# UNIT : new directive to represent the unit of a metric
# EOF : to detect interrupted metrics
▶Timestamps are in seconds
▶Counter requires _total on the time series
▶Considerations for pull and push
▶Optional support for protobufs
▶Info / Enum : First class features
Prometheus & OpenMetrics
Prometheus
OpenMetrics
# TYPE foo_seconds_total counter
foo_seconds_total 1.0
# TYPE foo_seconds counter
# UNIT foo_seconds seconds
foo_seconds_total 1.0
foo_seconds_created 1572688096.0
# EOF
Exemplars
Attach an ID off a trace to directly link to certain metrics
# TYPE foo histogram
foo_bucket{le=“0.01”} 0
foo_bucket{le=“0.1”} 8 # {id=“abc”} 0.043
foo_bucket{le=“1”} 10 # {id=“def”} 0.29
foo_bucket{le=“10”} 17 # {id=“ghi”} 7.73
foo_bucket{le=“+Inf”} 18
foo_count 18
foo_sum 324789.3
foo_created 1520430000.123
Interoperability with
OpenMetrics
Demo Architecture
IoT Application
Internal
Network
Cloud Platform Datadog Metric Explorer
NexAgent
IoT Application
NexAgent
Scrape Device Metrics
IoT Application NexAgent
Filtering: iot_* metrics
…
process_open_fds 6.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1024.0
# HELP iot_temperature_celsius Temperature of device
# TYPE iot_temperature_celsius gauge
iot_temperature_celsius{host="device-1"} 43.87955931016437
# HELP iot_voltage_volts Voltage of device
# TYPE iot_voltage_volts gauge
iot_voltage_volts{host="device-1"} 0.32506781422008024
# HELP iot_current_amperes Electric current of device
# TYPE iot_current_amperes gauge
iot_current_amperes{host="device-1"} 0.5505769171108466
# HELP iot_memory_free_bytes Free memory of device
# TYPE iot_memory_free_bytes gauge
iot_memory_free_bytes{host="device-1"} 1.499344896e+09
…
# HELP iot_temperature_celsius Temperature of device
# TYPE iot_temperature_celsius gauge
iot_temperature_celsius{host="device-1"} 43.87955931016437
# HELP iot_voltage_volts Voltage of device
# TYPE iot_voltage_volts gauge
iot_voltage_volts{host="device-1"} 0.32506781422008024
# HELP iot_current_amperes Electric current of device
# TYPE iot_current_amperes gauge
iot_current_amperes{host="device-1"} 0.5505769171108466
# HELP iot_memory_free_bytes Free memory of device
# TYPE iot_memory_free_bytes gauge
iot_memory_free_bytes{host="device-1"} 1.499344896e+09
Metrics Integration with OpenMetrics
NexAgent
#1
NexAgent
#2
# HELP iot_temperature_celsius IoT metric iot_temperature_celsius
# TYPE iot_temperature_celsius gauge
iot_temperature_celsius{host="device-1"} 12.571817488302889
# HELP iot_voltage_volts IoT metric iot_voltage_volts
# TYPE iot_voltage_volts gauge
iot_voltage_volts{host="device-1"} 7.845377222730105
# HELP iot_current_amperes IoT metric iot_current_amperes
# TYPE iot_current_amperes gauge
iot_current_amperes{host="device-1"} 7.629632512400462
…
# HELP iot_temperature_celsius IoT metric iot_temperature_celsius
# TYPE iot_temperature_celsius gauge
iot_temperature_celsius{host="device-2"} 17.218040315106897
# HELP iot_voltage_volts IoT metric iot_voltage_volts
# TYPE iot_voltage_volts gauge
iot_voltage_volts{host="device-2"} 8.962618429932972
# HELP iot_current_amperes IoT metric iot_current_amperes
# TYPE iot_current_amperes gauge
iot_current_amperes{host="device-2"} 8.602160171006599
…
Filtering: iot_* metrics
Integrations: Prometheus
…
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'openmetrics'
static_configs:
- targets: ['172.26.2.74:5050']
Integrations: DataDog (1)
Integrations: DataDog (2)
init_config:
instances:
- prometheus_url: http://127.0.0.1:5050/metrics
namespace: "openmetrics"
metrics:
- iot_*
Integrations: NexClipper Project
Metric Pipeline
Global View
Exporter ManagerNexServer
Multi-Custer
Multi-Cloud
……
Long term data
Exporters
NexAgent NexAgentNexAgentNexAgent
Applications
Exporters
Applications
Node
cAdvisor
….
Exporters
Applications
Cluster
Node
Workload
Service
Prometheus servers/ Clusters Legacy datacenter/ HostKubernetes Clusters IoT Clusters
‘Metrics Pipeline’ for interoperability and Enterprise Prometheus
(https://github.com/NexClipper/NexClipper)
Questions ?
To Learn Prometheus
References
OpenMetrics: What Does It Mean for You
by Brian Brazil, PromCon 2019
https://promcon.io/2019-munich/talks/openmetrics-what-does-it-mean-for-you/
OpenMetrics: Is Prometheus unbound?
https://medium.com/@leodido/openmetrics-20d40eb0b302
OpenMetrics - Transforming the Prometheus Exposition Format into a Global Standard
by Richard Hartmann, PromCon 2018
https://promcon.io/2018-munich/talks/openmetrics-transforming-the-prometheus-exposition-format-into-a-global-
standard/
The Prometheus Time Series Database
by Björn Rabenstein, PromCon 2016
https://promcon.io/2016-berlin/talks/the-prometheus-time-series-database/

More Related Content

What's hot (20)

PDF
Tuning the Kernel for Varnish Cache
Per Buer
 
PDF
Using eBPF to Measure the k8s Cluster Health
ScyllaDB
 
PDF
Profiling and optimizing go programs
Badoo Development
 
PDF
A little systemtap
yang bingwu
 
PDF
TomcatCon: from a cluster to the cloud
Jean-Frederic Clere
 
PPTX
Plone deployment made easy
Kim Chee Leong
 
PDF
Puppet User Group Presentation - 15 March 2012
Walter Heck
 
PDF
Nessus scan report using microsoft patchs scan policy - Tareq Hanaysha
Hanaysha
 
PPTX
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Kentaro Ebisawa
 
PDF
Performance optimization 101 - Erlang Factory SF 2014
lpgauth
 
PDF
Continuous Go Profiling & Observability
ScyllaDB
 
ODP
Nmap Scripting Engine and http-enumeration
Robert Rowley
 
PDF
Event loop
codepitbull
 
KEY
Don’t block the event loop!
hujinpu
 
PDF
Whoops! I Rewrote It in Rust
ScyllaDB
 
PPTX
openATTIC using grafana and prometheus
Alex Lau
 
PPTX
Kubernetes Probes (Liveness, Readyness, Startup) Introduction
AkhmadZakiAlsafi
 
PDF
#Include os - From bootloader to REST API with the new C++
IncludeOS
 
PDF
Extreme HTTP Performance Tuning: 1.2M API req/s on a 4 vCPU EC2 Instance
ScyllaDB
 
PDF
Make Your Own Developement Board @ 2014.4.21 JuluOSDev
Jian-Hong Pan
 
Tuning the Kernel for Varnish Cache
Per Buer
 
Using eBPF to Measure the k8s Cluster Health
ScyllaDB
 
Profiling and optimizing go programs
Badoo Development
 
A little systemtap
yang bingwu
 
TomcatCon: from a cluster to the cloud
Jean-Frederic Clere
 
Plone deployment made easy
Kim Chee Leong
 
Puppet User Group Presentation - 15 March 2012
Walter Heck
 
Nessus scan report using microsoft patchs scan policy - Tareq Hanaysha
Hanaysha
 
Quick Start Guide using Virtuozzo 7 (β) on AWS EC2
Kentaro Ebisawa
 
Performance optimization 101 - Erlang Factory SF 2014
lpgauth
 
Continuous Go Profiling & Observability
ScyllaDB
 
Nmap Scripting Engine and http-enumeration
Robert Rowley
 
Event loop
codepitbull
 
Don’t block the event loop!
hujinpu
 
Whoops! I Rewrote It in Rust
ScyllaDB
 
openATTIC using grafana and prometheus
Alex Lau
 
Kubernetes Probes (Liveness, Readyness, Startup) Introduction
AkhmadZakiAlsafi
 
#Include os - From bootloader to REST API with the new C++
IncludeOS
 
Extreme HTTP Performance Tuning: 1.2M API req/s on a 4 vCPU EC2 Instance
ScyllaDB
 
Make Your Own Developement Board @ 2014.4.21 JuluOSDev
Jian-Hong Pan
 

Similar to Improving monitoring systems Interoperability with OpenMetrics (20)

PDF
DevOps Spain 2019. Beatriz Martínez-IBM
atSistemas
 
PPTX
Prometheus and Grafana
Lhouceine OUHAMZA
 
PPTX
The New York Times: Sustainable Systems, Powered by Python
All Things Open
 
PDF
Monitoring in Big Data Platform - Albert Lewandowski, GetInData
GetInData
 
PPTX
Python for IoT CoE.pptx KDOJWIHJNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
SalihaBathool
 
PPTX
MeetUp Monitoring with Prometheus and Grafana (September 2018)
Lucas Jellema
 
PDF
Implementing Observability for Kubernetes.pdf
Jose Manuel Ortega Candel
 
PDF
Neo4j Data Loading with Kettle
Neo4j
 
PDF
Manage Microservices Chaos and Complexity with Observability
NGINX, Inc.
 
PDF
Click, Click, Test - Automated Tests for APEX Applications
Kai Donato
 
PDF
Keymetrics pm2
Alexandre Strzelewicz
 
PDF
KCD-OpenTelemetry.pdf
Rui Liu
 
PDF
Introduction to TensorFlow Lite
Koan-Sin Tan
 
PDF
iOS viper presentation
Rajat Datta
 
PDF
PARKING ALLOTMENT SYSTEM PROJECT REPORT REPORT.
Kamal Acharya
 
PDF
Automated Developer Testing: Achievements and Challenges
Tao Xie
 
ODP
Monitoring With Prometheus
Knoldus Inc.
 
PPTX
Analyze Your Code With Visual Studio 2015 Diagnostic Tools
Ken Cenerelli
 
PDF
Securing the Internet of Things - Hank Chavers
WithTheBest
 
PDF
Leveraging Python Telemetry, Azure Application Logging, and Performance Testi...
Stackify
 
DevOps Spain 2019. Beatriz Martínez-IBM
atSistemas
 
Prometheus and Grafana
Lhouceine OUHAMZA
 
The New York Times: Sustainable Systems, Powered by Python
All Things Open
 
Monitoring in Big Data Platform - Albert Lewandowski, GetInData
GetInData
 
Python for IoT CoE.pptx KDOJWIHJNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
SalihaBathool
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
Lucas Jellema
 
Implementing Observability for Kubernetes.pdf
Jose Manuel Ortega Candel
 
Neo4j Data Loading with Kettle
Neo4j
 
Manage Microservices Chaos and Complexity with Observability
NGINX, Inc.
 
Click, Click, Test - Automated Tests for APEX Applications
Kai Donato
 
Keymetrics pm2
Alexandre Strzelewicz
 
KCD-OpenTelemetry.pdf
Rui Liu
 
Introduction to TensorFlow Lite
Koan-Sin Tan
 
iOS viper presentation
Rajat Datta
 
PARKING ALLOTMENT SYSTEM PROJECT REPORT REPORT.
Kamal Acharya
 
Automated Developer Testing: Achievements and Challenges
Tao Xie
 
Monitoring With Prometheus
Knoldus Inc.
 
Analyze Your Code With Visual Studio 2015 Diagnostic Tools
Ken Cenerelli
 
Securing the Internet of Things - Hank Chavers
WithTheBest
 
Leveraging Python Telemetry, Azure Application Logging, and Performance Testi...
Stackify
 
Ad

More from Chan Shik Lim (10)

PPTX
FPV Streaming Server with ffmpeg
Chan Shik Lim
 
PPTX
pgday.seoul 2019: TimescaleDB
Chan Shik Lim
 
PDF
Kubernetes on Premise Practical Guide
Chan Shik Lim
 
PDF
Kubernetes on Premise
Chan Shik Lim
 
PPTX
Hadoop High Availability Summary
Chan Shik Lim
 
PDF
Python Programming: Tuning and Optimization
Chan Shik Lim
 
PDF
Python Programming: Data Structure
Chan Shik Lim
 
PDF
Python Programming: Class and Object Oriented Programming
Chan Shik Lim
 
PDF
Python Programming: Function
Chan Shik Lim
 
PDF
Python Programming: Type and Object
Chan Shik Lim
 
FPV Streaming Server with ffmpeg
Chan Shik Lim
 
pgday.seoul 2019: TimescaleDB
Chan Shik Lim
 
Kubernetes on Premise Practical Guide
Chan Shik Lim
 
Kubernetes on Premise
Chan Shik Lim
 
Hadoop High Availability Summary
Chan Shik Lim
 
Python Programming: Tuning and Optimization
Chan Shik Lim
 
Python Programming: Data Structure
Chan Shik Lim
 
Python Programming: Class and Object Oriented Programming
Chan Shik Lim
 
Python Programming: Function
Chan Shik Lim
 
Python Programming: Type and Object
Chan Shik Lim
 
Ad

Recently uploaded (20)

PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
July Patch Tuesday
Ivanti
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Biography of Daniel Podor.pdf
Daniel Podor
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 

Improving monitoring systems Interoperability with OpenMetrics

  • 2. Monitoring System Interoperability with OpenMetrics Chanshik Lim @ NexCloud
  • 3. Agenda ▶Prometheus • Prometheus Architecture • Prometheus Metrics • Prometheus Exposition Format ▶OpenMetrics • Standardization • Improvements ▶Interoperability with OpenMetrics • Demo Architecture • Integrations ▶References
  • 4. Who am I Chanshik Lim • Lead software engineer @NexCloud • Maintainer of NexClipper project https://github.com/NexClipper/NexClipper • Go, Python • Linux, Kubernetes, Prometheus • Hiring software engineer for #Kubernetes #Prometheus #Metrics #Monitoring
  • 6. Prometheus https://prometheus.io/ • Started in 2012, Version 1.0 released in 2016 • Contributed to CNCF in May 2016 • Graduated in August 2018 • A multi-dimensional data model with time series data • Pulling model over HTTP • PromQL: Flexible query language • Alertmanager: handle alerts
  • 9. Prometheus Exposition Format ▶Human-readable, Readable line by line ▶Metric Syntax ▶Supported metric primitives • Counter • Gauge • Histogram • Summary • Untyped
  • 10. Metric Name [a-zA-Z_:][a-zA-Z0-9_:]*. ▶Prefix: application, namespace or domain • prometheus_notifications_total • process_cpu_seconds_total • http_request_duration_seconds ▶Suffix: single unit • node_memory_usage_bytes • http_request_duration_seconds • process_cpu_seconds_total • http_requests_total • prometheus_build_info (provide metadata)
  • 11. Labels ▶Key-Value pairs associated with time series ▶Label name • [a-zA-Z_][a-zA-Z0-9_]*. ▶http_requests_total • http_requests_total{path="/login"} • http_requests_total{path="/logout"} • http_requests_total{path="/adduser"} • http_requests_total{path="/comment"} • http_requests_total{path="/view"} ▶Do not use labels to store dimensions with high cardinality • IDs, email addresses, …
  • 12. Samples ▶Actual time series data ▶Float64 value ▶Millisecond-precision timestamp (optional) ▶Values • node_cpu_seconds_total{cpu="0",mode="idle"} 48649.88 • node_cpu_seconds_total{cpu="0",mode="iowait"} 169.99 • node_cpu_seconds_total{cpu="0",mode="irq"} 0 • node_cpu_seconds_total{cpu="0",mode="nice"} 57.5
  • 14. Before Prometheus ▶SNMP (closest to metric standard) ▶Highly fragmented monitoring landscape ▶Proprietary formats (with missing documents) ▶Difficult to implement ▶Various monitoring system specific formats
  • 15. After Prometheus ▶Prometheus exposition format became a de-facto standard ▶Re-use Prometheus exporters to integration ▶Hundreds of exporters ▶Main monitoring players support Prometheus exposition format
  • 16. Standardization https://openmetrics.io/ ▶Prometheus exposition format is still the Prometheus format ▶Traditional vendors wants to avoid lock-in ▶Prefer to use official standards ▶Vendor neutral ▶CNCF sandbox project ▶Official standard (in progress) • IETF RFC • Registered content-type/MIME-type : application/openmetrics-text • (maybe) IANA port assignment
  • 17. Improvements # UNIT : new directive to represent the unit of a metric # EOF : to detect interrupted metrics ▶Timestamps are in seconds ▶Counter requires _total on the time series ▶Considerations for pull and push ▶Optional support for protobufs ▶Info / Enum : First class features
  • 18. Prometheus & OpenMetrics Prometheus OpenMetrics # TYPE foo_seconds_total counter foo_seconds_total 1.0 # TYPE foo_seconds counter # UNIT foo_seconds seconds foo_seconds_total 1.0 foo_seconds_created 1572688096.0 # EOF
  • 19. Exemplars Attach an ID off a trace to directly link to certain metrics # TYPE foo histogram foo_bucket{le=“0.01”} 0 foo_bucket{le=“0.1”} 8 # {id=“abc”} 0.043 foo_bucket{le=“1”} 10 # {id=“def”} 0.29 foo_bucket{le=“10”} 17 # {id=“ghi”} 7.73 foo_bucket{le=“+Inf”} 18 foo_count 18 foo_sum 324789.3 foo_created 1520430000.123
  • 21. Demo Architecture IoT Application Internal Network Cloud Platform Datadog Metric Explorer NexAgent IoT Application NexAgent
  • 22. Scrape Device Metrics IoT Application NexAgent Filtering: iot_* metrics … process_open_fds 6.0 # HELP process_max_fds Maximum number of open file descriptors. # TYPE process_max_fds gauge process_max_fds 1024.0 # HELP iot_temperature_celsius Temperature of device # TYPE iot_temperature_celsius gauge iot_temperature_celsius{host="device-1"} 43.87955931016437 # HELP iot_voltage_volts Voltage of device # TYPE iot_voltage_volts gauge iot_voltage_volts{host="device-1"} 0.32506781422008024 # HELP iot_current_amperes Electric current of device # TYPE iot_current_amperes gauge iot_current_amperes{host="device-1"} 0.5505769171108466 # HELP iot_memory_free_bytes Free memory of device # TYPE iot_memory_free_bytes gauge iot_memory_free_bytes{host="device-1"} 1.499344896e+09 … # HELP iot_temperature_celsius Temperature of device # TYPE iot_temperature_celsius gauge iot_temperature_celsius{host="device-1"} 43.87955931016437 # HELP iot_voltage_volts Voltage of device # TYPE iot_voltage_volts gauge iot_voltage_volts{host="device-1"} 0.32506781422008024 # HELP iot_current_amperes Electric current of device # TYPE iot_current_amperes gauge iot_current_amperes{host="device-1"} 0.5505769171108466 # HELP iot_memory_free_bytes Free memory of device # TYPE iot_memory_free_bytes gauge iot_memory_free_bytes{host="device-1"} 1.499344896e+09
  • 23. Metrics Integration with OpenMetrics NexAgent #1 NexAgent #2 # HELP iot_temperature_celsius IoT metric iot_temperature_celsius # TYPE iot_temperature_celsius gauge iot_temperature_celsius{host="device-1"} 12.571817488302889 # HELP iot_voltage_volts IoT metric iot_voltage_volts # TYPE iot_voltage_volts gauge iot_voltage_volts{host="device-1"} 7.845377222730105 # HELP iot_current_amperes IoT metric iot_current_amperes # TYPE iot_current_amperes gauge iot_current_amperes{host="device-1"} 7.629632512400462 … # HELP iot_temperature_celsius IoT metric iot_temperature_celsius # TYPE iot_temperature_celsius gauge iot_temperature_celsius{host="device-2"} 17.218040315106897 # HELP iot_voltage_volts IoT metric iot_voltage_volts # TYPE iot_voltage_volts gauge iot_voltage_volts{host="device-2"} 8.962618429932972 # HELP iot_current_amperes IoT metric iot_current_amperes # TYPE iot_current_amperes gauge iot_current_amperes{host="device-2"} 8.602160171006599 … Filtering: iot_* metrics
  • 24. Integrations: Prometheus … scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'openmetrics' static_configs: - targets: ['172.26.2.74:5050']
  • 26. Integrations: DataDog (2) init_config: instances: - prometheus_url: http://127.0.0.1:5050/metrics namespace: "openmetrics" metrics: - iot_*
  • 27. Integrations: NexClipper Project Metric Pipeline Global View Exporter ManagerNexServer Multi-Custer Multi-Cloud …… Long term data Exporters NexAgent NexAgentNexAgentNexAgent Applications Exporters Applications Node cAdvisor …. Exporters Applications Cluster Node Workload Service Prometheus servers/ Clusters Legacy datacenter/ HostKubernetes Clusters IoT Clusters ‘Metrics Pipeline’ for interoperability and Enterprise Prometheus (https://github.com/NexClipper/NexClipper)
  • 30. References OpenMetrics: What Does It Mean for You by Brian Brazil, PromCon 2019 https://promcon.io/2019-munich/talks/openmetrics-what-does-it-mean-for-you/ OpenMetrics: Is Prometheus unbound? https://medium.com/@leodido/openmetrics-20d40eb0b302 OpenMetrics - Transforming the Prometheus Exposition Format into a Global Standard by Richard Hartmann, PromCon 2018 https://promcon.io/2018-munich/talks/openmetrics-transforming-the-prometheus-exposition-format-into-a-global- standard/ The Prometheus Time Series Database by Björn Rabenstein, PromCon 2016 https://promcon.io/2016-berlin/talks/the-prometheus-time-series-database/