SlideShare a Scribd company logo
1 of 67
Download to read offline
Snap
A story of telemetry, data, python
And references to Jason Dixon at
GrafanaCon 2016
Hey
The Snap Telemetry Framework
4
what my friends think telemetry is what my parents think telemetry is
what society thinks telemetry is
what my boss thinks telemetry is what I think telemetry is what telemetry actually is
(Do I get bonus points for quoting Jason at GrafanaCon?)
“Telemetry refers to the collection of
measurements, typically of remote
instruments, for the purposes of
monitoring.”
~ Jason Dixon in The Graphite Book
Telemetry Framework ™
Client libraries for:
● Prometheus
● Sensu
● Statsd
● & more
● beats
● tcollector
● scollector
● Nagios
● Snap
● collectd
● telegraf
● diamond
Requirements
Composable Declarative Extensible
Composable
Monitoring
Snap
Composable
Monitoring
Snap
Declarative
Explicit definition of
- Interval
- Collected metrics
- Published endpoints
Allows for
- Collect from multiple sensors
- Publish to multiple endpoints
- Multiple workflows at different intervals
- Metrics available upon plugin update
Let’s look at a Task Manifest
“I’ll make you a workflow you can’t refuse”
Extensible
Collect Process Publish
Extensible
Available in the Plugin Catalog
Collectors written:
● Nginx
● Couchbase
● MongoDB
● Netstat
● Procstat
Publishers written:
● Blueflood
● Couchbase
Extensible
Available in the Plugin Catalog
Collectors written:
● Nginx
● Couchbase
● MongoDB
● Netstat
● Procstat
Publishers written:
● Blueflood
● Couchbase
Extensible
Available in the Plugin Catalog
Collectors written:
● Nginx
● Couchbase
● MongoDB
● Netstat
● Procstat
Publishers written:
● Blueflood
● Couchbase
Extensible
Available in the Plugin Catalog
Collectors written:
● Nginx
● Couchbase
● MongoDB
● Netstat
● Procstat
Publishers written:
● Blueflood
● Couchbase
Grafana Labs
The Anatomy of a Snap Plugin
Plugin Authoring - Plugin Types
Collectors Processors Publishers
Plugin Authoring - Lifecycle
Loading a plugin
Plugin Authoring - Lifecycle
Loading a plugin
1. Snap starts the plugin
Plugin Authoring - Lifecycle
Loading a plugin
1. Snap starts the plugin
2. Snap negotiates with the
plugin over stdout (handshake)
Plugin Authoring - Lifecycle
Loading a plugin
1. Snap starts the plugin
2. Snap negotiates with the plugin over stdout (handshake)
3. Snap calls the plugin
a. To get its ConfigPolicy
Plugin Authoring - Lifecycle
Loading a plugin
1. Snap starts the plugin
2. Snap negotiates with the plugin over stdout (handshake)
3. Snap calls the plugin
a. To get its config policy
b. To get what metrics it
collects
Plugin Authoring - Lifecycle
Loading a plugin
1. Snap starts the plugin
2. Snap negotiates with the plugin over stdout (handshake)
3. Snap calls the plugin
a. To get its config policy
b. To get what metrics it exposes
4. Snap stops the plugin
Plugin Authoring - Lifecycle
Starting a task
Plugin Authoring - Lifecycle
Starting a task
1. Snap ensures plugins required by the task are running
Plugin Authoring - Lifecycle
Starting a task
1. Snap ensures plugins required by the task are running
a. Plugins that are used have their
subscriptions increased
Starting a task
1. Snap ensures needed plugins required by the task are running
a. Plugins that are used have their subscriptions increased
Plugin subscriptions drive the logic
related to plugin routing and concurrency
Plugin Authoring - Lifecycle
Plugin Authoring - Lifecycle
Stopping a task
Plugin Authoring - Lifecycle
Stopping a task
Causes plugins to stop
When the plugin’s subscription count falls below zero
Plugin Authoring - Meta
Plugin Meta
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between
the plugin and Snap when a plugin starts
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a
plugin starts
{"Meta":{"Type":2,"Name":"graphite","Version":5,"RPCType":2,"
RPCVersion":1,"ConcurrencyCount":5,"Exclusive":false,"Cach
eTTL":0,"RoutingStrategy":0},"ListenAddress":"127.0.0.1:37166","
PprofAddress":"0"}
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - Plugin name as it will appear in the plugin
catalog
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
○ The default is ‘gRPC’
○ We will maintain legacy support for
GORPC based plugins
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin
implements
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin
implements
service Collector {
rpc CollectMetrics(MetricsArg) returns (MetricsReply) {}
rpc GetMetricTypes(GetMetricTypesArg) returns (MetricsReply) {}
rpc Ping(Empty) returns (ErrReply) {}
rpc Kill(KillArg) returns (ErrReply) {}
rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {}
}
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin
implements
service Processor {
rpc Process(PubProcArg) returns (MetricsReply) {}
rpc Ping(Empty) returns (ErrReply) {}
rpc Kill(KillArg) returns (ErrReply) {}
rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {}
}
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin
implements
service Publisher {
rpc Publish(PubProcArg) returns (ErrReply) {}
rpc Ping(Empty) returns (ErrReply) {}
rpc Kill(KillArg) returns (ErrReply) {}
rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {}
}
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin implements
● RoutingStrategy - Least Recently Used
Sticky (task)
Config based
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin implements
● RoutingStrategy - Least recently used, Sticky (task) or Config based
● ConcurrencyCount - Defines the maximum number of
subscriptions the plugin can have before
starting another instance of the plugin
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin implements
● RoutingStrategy - Least recently used, Sticky (task) or Config based
● ConcurrencyCount - Defines the maximum number of subscriptions the plugin
can have before starting another instance of the plugin
● Exclusive - Results in a single instance of the plugin
running for any number of subscriptions
(ConcurrencyCount is ignored)
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin implements
● RoutingStrategy - Least recently used, Sticky (task) or Config based
● ConcurrencyCount - Defines the maximum number of subscriptions the plugin
can have before starting another instance of the plugin
● Exclusive - Results in a single instance of the plugin running for any
number of subscriptions
● CacheTTL - Overrides the default CacheTTL of 500ms
Plugin Authoring - Meta
Plugin Meta
Is communicated over STDOUT between the plugin and Snap when a plugin starts
● Name - name as it will appear in the plugin catalog
● Type - collector, process, publisher
● Version - version of the plugin
● RPCType - RPC mechanism to be used
● RPCVersion - Defines the version of the service the plugin implements
● RoutingStrategy - Least recently used, Sticky (task) or Config based
● ConcurrencyCount - Defines the maximum number of subscriptions the plugin
can have before starting another instance of the plugin
● Exclusive - Results in a single instance of the plugin running for any
number of subscriptions
● CacheTTL - Overrides the default CacheTTL of 500ms
If the framework attempts to call a plugin for a
metric before it’s TTL has expired it will be
retrieved from the cache instead
Plugin Authoring - Plugin libs
Want to write a plugin?
Plugin Authoring - Plugin libs
Want to write a plugin?
Start with one of the Snap plugin libs
Plugin Authoring - Plugin libs
Want to write a plugin?
Start with one of the Snap plugin libs
Plugin Authoring - Plugin libs
Want to write a plugin?
Start with one of the Snap plugin libs
Plugin Authoring - Plugin libs
Want to write a plugin?
Start with one of the Snap plugin libs
Plugin Authoring
Leveraging existing investments
● Using the plugin-libs wrap existing tools
○ Example: snap-plugin-collector-diamond
The Snap Telemetry Framework
To Review
The Snap Telemetry Framework
Snap is an Open Source telemetry framework
that allows you to collect, process and publish
measurements.
Collectors Processors Publishers
The Snap Telemetry Framework
Snap 1.0 is a general availability of a rock solid
daemon with a collection of 67 plugins from
multiple companies.
The Snap Telemetry Framework
Snap 1.0 is the beginning. And we want you
involved.
snap-telemetry.io
Thank you!
Backup Notes
Everything is Challenging At
Scale
60
Add new task
61
Add new task
62
define as a
tribe
Scaling with Tribe
63
Scaling with Tribe
Add new task
64
Snap | Distributed Workflow
Physical/Virtual
Host
Scheduler
Processing
Publishing
Collection
65
Snap | Distributed Workflow
66
Physical/VM Host
Physical/VM Host
Physical/VM Host
Physical/VM Host
Physical/VM Host Physical/VM Host
Collection
Collection
Collection
Scheduler
Processing Publishing
Customizable definition of task and related
workflow:
Collect
Publish
Publish
Collect Publish ProcessCollect Publish
Collect
Process Publish
Process Publish
Snap | Overview – Example Workflows
67

More Related Content

What's hot

Scaling ingest pipelines with high performance computing principles - Rajiv K...
Scaling ingest pipelines with high performance computing principles - Rajiv K...Scaling ingest pipelines with high performance computing principles - Rajiv K...
Scaling ingest pipelines with high performance computing principles - Rajiv K...SignalFx
 
An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)Brian Brazil
 
Presentation security automation (Selenium Camp)
Presentation security automation (Selenium Camp)Presentation security automation (Selenium Camp)
Presentation security automation (Selenium Camp)Artyom Rozumenko
 
Stabilising the jenga tower
Stabilising the jenga towerStabilising the jenga tower
Stabilising the jenga towerGordon Chung
 
RxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsRxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsBrendan Gregg
 
SREcon 2016 Performance Checklists for SREs
SREcon 2016 Performance Checklists for SREsSREcon 2016 Performance Checklists for SREs
SREcon 2016 Performance Checklists for SREsBrendan Gregg
 
ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016Brendan Gregg
 
Monitoring with Prometheus
Monitoring with Prometheus Monitoring with Prometheus
Monitoring with Prometheus Pravin Magdum
 
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
 
Rapid Application Design in Financial Services
Rapid Application Design in Financial ServicesRapid Application Design in Financial Services
Rapid Application Design in Financial ServicesAerospike
 
Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesEd Hunter
 
Performance optimization 101 - Erlang Factory SF 2014
Performance optimization 101 - Erlang Factory SF 2014Performance optimization 101 - Erlang Factory SF 2014
Performance optimization 101 - Erlang Factory SF 2014lpgauth
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prodYunong Xiao
 
Anatomy of an action
Anatomy of an actionAnatomy of an action
Anatomy of an actionGordon Chung
 
Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015Hiroshi Ota
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing ToolsBrendan Gregg
 
PyCon AU 2015 - Using benchmarks to understand how wsgi servers work
PyCon AU 2015  - Using benchmarks to understand how wsgi servers workPyCon AU 2015  - Using benchmarks to understand how wsgi servers work
PyCon AU 2015 - Using benchmarks to understand how wsgi servers workGraham Dumpleton
 
LISA17 Container Performance Analysis
LISA17 Container Performance AnalysisLISA17 Container Performance Analysis
LISA17 Container Performance AnalysisBrendan Gregg
 

What's hot (20)

Prometheus with Grafana - AddWeb Solution
Prometheus with Grafana - AddWeb SolutionPrometheus with Grafana - AddWeb Solution
Prometheus with Grafana - AddWeb Solution
 
Scaling ingest pipelines with high performance computing principles - Rajiv K...
Scaling ingest pipelines with high performance computing principles - Rajiv K...Scaling ingest pipelines with high performance computing principles - Rajiv K...
Scaling ingest pipelines with high performance computing principles - Rajiv K...
 
An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)An Introduction to Prometheus (GrafanaCon 2016)
An Introduction to Prometheus (GrafanaCon 2016)
 
Presentation security automation (Selenium Camp)
Presentation security automation (Selenium Camp)Presentation security automation (Selenium Camp)
Presentation security automation (Selenium Camp)
 
Stabilising the jenga tower
Stabilising the jenga towerStabilising the jenga tower
Stabilising the jenga tower
 
RxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsRxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance Results
 
SREcon 2016 Performance Checklists for SREs
SREcon 2016 Performance Checklists for SREsSREcon 2016 Performance Checklists for SREs
SREcon 2016 Performance Checklists for SREs
 
ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016ACM Applicative System Methodology 2016
ACM Applicative System Methodology 2016
 
Monitoring with Prometheus
Monitoring with Prometheus Monitoring with Prometheus
Monitoring with Prometheus
 
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
 
Rapid Application Design in Financial Services
Rapid Application Design in Financial ServicesRapid Application Design in Financial Services
Rapid Application Design in Financial Services
 
Netflix SRE perf meetup_slides
Netflix SRE perf meetup_slidesNetflix SRE perf meetup_slides
Netflix SRE perf meetup_slides
 
Performance optimization 101 - Erlang Factory SF 2014
Performance optimization 101 - Erlang Factory SF 2014Performance optimization 101 - Erlang Factory SF 2014
Performance optimization 101 - Erlang Factory SF 2014
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prod
 
Anatomy of an action
Anatomy of an actionAnatomy of an action
Anatomy of an action
 
Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing Tools
 
PyCon AU 2015 - Using benchmarks to understand how wsgi servers work
PyCon AU 2015  - Using benchmarks to understand how wsgi servers workPyCon AU 2015  - Using benchmarks to understand how wsgi servers work
PyCon AU 2015 - Using benchmarks to understand how wsgi servers work
 
Storm
StormStorm
Storm
 
LISA17 Container Performance Analysis
LISA17 Container Performance AnalysisLISA17 Container Performance Analysis
LISA17 Container Performance Analysis
 

Viewers also liked

Building Successful Apps Using Application Telemetry and Data Driven Decision...
Building Successful Apps Using Application Telemetry and Data Driven Decision...Building Successful Apps Using Application Telemetry and Data Driven Decision...
Building Successful Apps Using Application Telemetry and Data Driven Decision...DevOpsDays Tel Aviv
 
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...CloudCamp Chicago
 
Open Mission Control Technologies
Open Mission Control TechnologiesOpen Mission Control Technologies
Open Mission Control TechnologiesJay Trimble
 
Be The API - VMware UserCon 2016
Be The API - VMware UserCon 2016Be The API - VMware UserCon 2016
Be The API - VMware UserCon 2016Matthew Broberg
 
Developing leaders introduction 2015 2016
Developing leaders introduction 2015 2016Developing leaders introduction 2015 2016
Developing leaders introduction 2015 2016M Taylor
 
Cashing in on logging and exception data
Cashing in on logging and exception dataCashing in on logging and exception data
Cashing in on logging and exception dataStackify
 
An Introduction to the Heatmap / Histogram Plugin
An Introduction to the Heatmap / Histogram PluginAn Introduction to the Heatmap / Histogram Plugin
An Introduction to the Heatmap / Histogram PluginMitsuhiro Tanda
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみたYutaka Ishizaki
 
DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale Hakka Labs
 
Ultra fast DDoS Detection with FastNetMon at Coloclue (AS 8283)
Ultra	fast	DDoS Detection	with	FastNetMon at	 Coloclue	(AS	8283)Ultra	fast	DDoS Detection	with	FastNetMon at	 Coloclue	(AS	8283)
Ultra fast DDoS Detection with FastNetMon at Coloclue (AS 8283)Pavel Odintsov
 
FastNetMon - ENOG9 speech about DDoS mitigation
FastNetMon - ENOG9 speech about DDoS mitigationFastNetMon - ENOG9 speech about DDoS mitigation
FastNetMon - ENOG9 speech about DDoS mitigationPavel Odintsov
 
How to Make Norikra Perfect
How to Make Norikra PerfectHow to Make Norikra Perfect
How to Make Norikra PerfectSATOSHI TAGOMORI
 
Fluentd Overview, Now and Then
Fluentd Overview, Now and ThenFluentd Overview, Now and Then
Fluentd Overview, Now and ThenSATOSHI TAGOMORI
 
Experiences in ELK with D3.js for Large Log Analysis and Visualization
Experiences in ELK with D3.js  for Large Log Analysis  and VisualizationExperiences in ELK with D3.js  for Large Log Analysis  and Visualization
Experiences in ELK with D3.js for Large Log Analysis and VisualizationSurasak Sanguanpong
 
DDoS detection at small ISP by Wardner Maia
DDoS detection at small ISP by Wardner MaiaDDoS detection at small ISP by Wardner Maia
DDoS detection at small ISP by Wardner MaiaPavel Odintsov
 
Monitoring using Open source technologies
Monitoring using Open source technologiesMonitoring using Open source technologies
Monitoring using Open source technologiesUTKARSH BHATNAGAR
 

Viewers also liked (20)

Commitmas 2016
Commitmas 2016Commitmas 2016
Commitmas 2016
 
Data Logging and Telemetry
Data Logging and TelemetryData Logging and Telemetry
Data Logging and Telemetry
 
Building Successful Apps Using Application Telemetry and Data Driven Decision...
Building Successful Apps Using Application Telemetry and Data Driven Decision...Building Successful Apps Using Application Telemetry and Data Driven Decision...
Building Successful Apps Using Application Telemetry and Data Driven Decision...
 
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...
CloudCamp Chicago lightning talk "Connecting Vehicles on Google Cloud Platfor...
 
Open Mission Control Technologies
Open Mission Control TechnologiesOpen Mission Control Technologies
Open Mission Control Technologies
 
Be The API - VMware UserCon 2016
Be The API - VMware UserCon 2016Be The API - VMware UserCon 2016
Be The API - VMware UserCon 2016
 
Developing leaders introduction 2015 2016
Developing leaders introduction 2015 2016Developing leaders introduction 2015 2016
Developing leaders introduction 2015 2016
 
Talk @ GrafanaCon 2016
Talk @ GrafanaCon 2016Talk @ GrafanaCon 2016
Talk @ GrafanaCon 2016
 
Cashing in on logging and exception data
Cashing in on logging and exception dataCashing in on logging and exception data
Cashing in on logging and exception data
 
An Introduction to the Heatmap / Histogram Plugin
An Introduction to the Heatmap / Histogram PluginAn Introduction to the Heatmap / Histogram Plugin
An Introduction to the Heatmap / Histogram Plugin
 
FastNetMonを試してみた
FastNetMonを試してみたFastNetMonを試してみた
FastNetMonを試してみた
 
DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale DataEngConf SF16 - Collecting and Moving Data at Scale
DataEngConf SF16 - Collecting and Moving Data at Scale
 
Ultra fast DDoS Detection with FastNetMon at Coloclue (AS 8283)
Ultra	fast	DDoS Detection	with	FastNetMon at	 Coloclue	(AS	8283)Ultra	fast	DDoS Detection	with	FastNetMon at	 Coloclue	(AS	8283)
Ultra fast DDoS Detection with FastNetMon at Coloclue (AS 8283)
 
FastNetMon - ENOG9 speech about DDoS mitigation
FastNetMon - ENOG9 speech about DDoS mitigationFastNetMon - ENOG9 speech about DDoS mitigation
FastNetMon - ENOG9 speech about DDoS mitigation
 
How to Make Norikra Perfect
How to Make Norikra PerfectHow to Make Norikra Perfect
How to Make Norikra Perfect
 
Fluentd Overview, Now and Then
Fluentd Overview, Now and ThenFluentd Overview, Now and Then
Fluentd Overview, Now and Then
 
Experiences in ELK with D3.js for Large Log Analysis and Visualization
Experiences in ELK with D3.js  for Large Log Analysis  and VisualizationExperiences in ELK with D3.js  for Large Log Analysis  and Visualization
Experiences in ELK with D3.js for Large Log Analysis and Visualization
 
DDoS detection at small ISP by Wardner Maia
DDoS detection at small ISP by Wardner MaiaDDoS detection at small ISP by Wardner Maia
DDoS detection at small ISP by Wardner Maia
 
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボットWebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
 
Monitoring using Open source technologies
Monitoring using Open source technologiesMonitoring using Open source technologies
Monitoring using Open source technologies
 

Similar to Snap Telemetry Framework & Plugin Architecture at GrafanaCon 2016

How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...Paul Brebner
 
Flowinspect - A Network Inspection Tool
Flowinspect - A Network Inspection ToolFlowinspect - A Network Inspection Tool
Flowinspect - A Network Inspection ToolAnkur Tyagi
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Spark Summit
 
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021StreamNative
 
Testing and Developing gRPC APIs
Testing and Developing gRPC APIsTesting and Developing gRPC APIs
Testing and Developing gRPC APIsPostman
 
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Red Hat Developers
 
Developing in Python on Red Hat Platforms (DevNation 2016)
Developing in Python on Red Hat Platforms (DevNation 2016)Developing in Python on Red Hat Platforms (DevNation 2016)
Developing in Python on Red Hat Platforms (DevNation 2016)ncoghlan_dev
 
RT4 - The whole sordid story
RT4 - The whole sordid storyRT4 - The whole sordid story
RT4 - The whole sordid storyJesse Vincent
 
What are the configuration files in the prancer framework
What are the configuration files in the prancer frameworkWhat are the configuration files in the prancer framework
What are the configuration files in the prancer frameworkPrancer Io
 
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...Amazon Web Services
 
Through the firewall with miniCRAN
Through the firewall with miniCRANThrough the firewall with miniCRAN
Through the firewall with miniCRANRevolution Analytics
 
Основы нагрузочного тестирования с инструментом Jmeter
Основы нагрузочного тестирования с инструментом JmeterОсновы нагрузочного тестирования с инструментом Jmeter
Основы нагрузочного тестирования с инструментом JmeterКомпьютерная школа Hillel
 
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
 
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)Timothy Spann
 
Connect Magento & OpenERP
Connect Magento & OpenERPConnect Magento & OpenERP
Connect Magento & OpenERPOpenerp VN
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubAlfonso Martino
 
Pulsar summit asia 2021 apache pulsar with mqtt for edge computing
Pulsar summit asia 2021   apache pulsar with mqtt for edge computingPulsar summit asia 2021   apache pulsar with mqtt for edge computing
Pulsar summit asia 2021 apache pulsar with mqtt for edge computingTimothy Spann
 

Similar to Snap Telemetry Framework & Plugin Architecture at GrafanaCon 2016 (20)

How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...How to Improve the Observability of Apache Cassandra and Kafka applications...
How to Improve the Observability of Apache Cassandra and Kafka applications...
 
Flowinspect - A Network Inspection Tool
Flowinspect - A Network Inspection ToolFlowinspect - A Network Inspection Tool
Flowinspect - A Network Inspection Tool
 
project_docs
project_docsproject_docs
project_docs
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
 
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021
Apache Pulsar with MQTT for Edge Computing - Pulsar Summit Asia 2021
 
Testing and Developing gRPC APIs
Testing and Developing gRPC APIsTesting and Developing gRPC APIs
Testing and Developing gRPC APIs
 
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)
 
Developing in Python on Red Hat Platforms (DevNation 2016)
Developing in Python on Red Hat Platforms (DevNation 2016)Developing in Python on Red Hat Platforms (DevNation 2016)
Developing in Python on Red Hat Platforms (DevNation 2016)
 
RT4 - The whole sordid story
RT4 - The whole sordid storyRT4 - The whole sordid story
RT4 - The whole sordid story
 
What are the configuration files in the prancer framework
What are the configuration files in the prancer frameworkWhat are the configuration files in the prancer framework
What are the configuration files in the prancer framework
 
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
Monitoring as Code: Getting to Monitoring-Driven Development - DEV314 - re:In...
 
Through the firewall with miniCRAN
Through the firewall with miniCRANThrough the firewall with miniCRAN
Through the firewall with miniCRAN
 
Основы нагрузочного тестирования с инструментом Jmeter
Основы нагрузочного тестирования с инструментом JmeterОсновы нагрузочного тестирования с инструментом Jmeter
Основы нагрузочного тестирования с инструментом Jmeter
 
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
 
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)
Python Web Conference 2022 - Apache Pulsar Development 101 with Python (FLiP-Py)
 
Connect Magento & OpenERP
Connect Magento & OpenERPConnect Magento & OpenERP
Connect Magento & OpenERP
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
 
XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)XML-RPC and SOAP (April 2003)
XML-RPC and SOAP (April 2003)
 
PCP
PCPPCP
PCP
 
Pulsar summit asia 2021 apache pulsar with mqtt for edge computing
Pulsar summit asia 2021   apache pulsar with mqtt for edge computingPulsar summit asia 2021   apache pulsar with mqtt for edge computing
Pulsar summit asia 2021 apache pulsar with mqtt for edge computing
 

More from Matthew Broberg

Where Do We Go From Here?
Where Do We Go From Here?Where Do We Go From Here?
Where Do We Go From Here?Matthew Broberg
 
A Geek Whisperer's Guide to Career Options
A Geek Whisperer's Guide to Career OptionsA Geek Whisperer's Guide to Career Options
A Geek Whisperer's Guide to Career OptionsMatthew Broberg
 
Social Media Communities Explained - They're Like Puppies
Social Media Communities Explained - They're Like PuppiesSocial Media Communities Explained - They're Like Puppies
Social Media Communities Explained - They're Like PuppiesMatthew Broberg
 
Social Benchmarking Training
Social Benchmarking TrainingSocial Benchmarking Training
Social Benchmarking TrainingMatthew Broberg
 
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & ToastmastersHow to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & ToastmastersMatthew Broberg
 

More from Matthew Broberg (7)

Where Do We Go From Here?
Where Do We Go From Here?Where Do We Go From Here?
Where Do We Go From Here?
 
A Geek Whisperer's Guide to Career Options
A Geek Whisperer's Guide to Career OptionsA Geek Whisperer's Guide to Career Options
A Geek Whisperer's Guide to Career Options
 
Commitmas 2015
Commitmas 2015Commitmas 2015
Commitmas 2015
 
Social Media Communities Explained - They're Like Puppies
Social Media Communities Explained - They're Like PuppiesSocial Media Communities Explained - They're Like Puppies
Social Media Communities Explained - They're Like Puppies
 
Social Benchmarking Training
Social Benchmarking TrainingSocial Benchmarking Training
Social Benchmarking Training
 
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & ToastmastersHow to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
 
Social influence
Social influenceSocial influence
Social influence
 

Recently uploaded

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 

Recently uploaded (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 

Snap Telemetry Framework & Plugin Architecture at GrafanaCon 2016

  • 1. Snap A story of telemetry, data, python And references to Jason Dixon at GrafanaCon 2016
  • 2. Hey
  • 3. The Snap Telemetry Framework
  • 4. 4 what my friends think telemetry is what my parents think telemetry is what society thinks telemetry is what my boss thinks telemetry is what I think telemetry is what telemetry actually is
  • 5. (Do I get bonus points for quoting Jason at GrafanaCon?) “Telemetry refers to the collection of measurements, typically of remote instruments, for the purposes of monitoring.” ~ Jason Dixon in The Graphite Book
  • 7. Client libraries for: ● Prometheus ● Sensu ● Statsd ● & more ● beats ● tcollector ● scollector ● Nagios ● Snap ● collectd ● telegraf ● diamond
  • 11. Declarative Explicit definition of - Interval - Collected metrics - Published endpoints Allows for - Collect from multiple sensors - Publish to multiple endpoints - Multiple workflows at different intervals - Metrics available upon plugin update Let’s look at a Task Manifest “I’ll make you a workflow you can’t refuse”
  • 13. Extensible Available in the Plugin Catalog Collectors written: ● Nginx ● Couchbase ● MongoDB ● Netstat ● Procstat Publishers written: ● Blueflood ● Couchbase
  • 14. Extensible Available in the Plugin Catalog Collectors written: ● Nginx ● Couchbase ● MongoDB ● Netstat ● Procstat Publishers written: ● Blueflood ● Couchbase
  • 15. Extensible Available in the Plugin Catalog Collectors written: ● Nginx ● Couchbase ● MongoDB ● Netstat ● Procstat Publishers written: ● Blueflood ● Couchbase
  • 16. Extensible Available in the Plugin Catalog Collectors written: ● Nginx ● Couchbase ● MongoDB ● Netstat ● Procstat Publishers written: ● Blueflood ● Couchbase Grafana Labs
  • 17. The Anatomy of a Snap Plugin
  • 18. Plugin Authoring - Plugin Types Collectors Processors Publishers
  • 19. Plugin Authoring - Lifecycle Loading a plugin
  • 20. Plugin Authoring - Lifecycle Loading a plugin 1. Snap starts the plugin
  • 21. Plugin Authoring - Lifecycle Loading a plugin 1. Snap starts the plugin 2. Snap negotiates with the plugin over stdout (handshake)
  • 22. Plugin Authoring - Lifecycle Loading a plugin 1. Snap starts the plugin 2. Snap negotiates with the plugin over stdout (handshake) 3. Snap calls the plugin a. To get its ConfigPolicy
  • 23. Plugin Authoring - Lifecycle Loading a plugin 1. Snap starts the plugin 2. Snap negotiates with the plugin over stdout (handshake) 3. Snap calls the plugin a. To get its config policy b. To get what metrics it collects
  • 24. Plugin Authoring - Lifecycle Loading a plugin 1. Snap starts the plugin 2. Snap negotiates with the plugin over stdout (handshake) 3. Snap calls the plugin a. To get its config policy b. To get what metrics it exposes 4. Snap stops the plugin
  • 25. Plugin Authoring - Lifecycle Starting a task
  • 26. Plugin Authoring - Lifecycle Starting a task 1. Snap ensures plugins required by the task are running
  • 27. Plugin Authoring - Lifecycle Starting a task 1. Snap ensures plugins required by the task are running a. Plugins that are used have their subscriptions increased
  • 28. Starting a task 1. Snap ensures needed plugins required by the task are running a. Plugins that are used have their subscriptions increased Plugin subscriptions drive the logic related to plugin routing and concurrency Plugin Authoring - Lifecycle
  • 29. Plugin Authoring - Lifecycle Stopping a task
  • 30. Plugin Authoring - Lifecycle Stopping a task Causes plugins to stop When the plugin’s subscription count falls below zero
  • 31. Plugin Authoring - Meta Plugin Meta
  • 32. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts
  • 33. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts {"Meta":{"Type":2,"Name":"graphite","Version":5,"RPCType":2," RPCVersion":1,"ConcurrencyCount":5,"Exclusive":false,"Cach eTTL":0,"RoutingStrategy":0},"ListenAddress":"127.0.0.1:37166"," PprofAddress":"0"}
  • 34. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - Plugin name as it will appear in the plugin catalog
  • 35. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher
  • 36. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin
  • 37. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used
  • 38. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ○ The default is ‘gRPC’ ○ We will maintain legacy support for GORPC based plugins
  • 39. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements
  • 40. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements service Collector { rpc CollectMetrics(MetricsArg) returns (MetricsReply) {} rpc GetMetricTypes(GetMetricTypesArg) returns (MetricsReply) {} rpc Ping(Empty) returns (ErrReply) {} rpc Kill(KillArg) returns (ErrReply) {} rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {} }
  • 41. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements service Processor { rpc Process(PubProcArg) returns (MetricsReply) {} rpc Ping(Empty) returns (ErrReply) {} rpc Kill(KillArg) returns (ErrReply) {} rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {} }
  • 42. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements service Publisher { rpc Publish(PubProcArg) returns (ErrReply) {} rpc Ping(Empty) returns (ErrReply) {} rpc Kill(KillArg) returns (ErrReply) {} rpc GetConfigPolicy(Empty) returns (GetConfigPolicyReply) {} }
  • 43. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements ● RoutingStrategy - Least Recently Used Sticky (task) Config based
  • 44. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements ● RoutingStrategy - Least recently used, Sticky (task) or Config based ● ConcurrencyCount - Defines the maximum number of subscriptions the plugin can have before starting another instance of the plugin
  • 45. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements ● RoutingStrategy - Least recently used, Sticky (task) or Config based ● ConcurrencyCount - Defines the maximum number of subscriptions the plugin can have before starting another instance of the plugin ● Exclusive - Results in a single instance of the plugin running for any number of subscriptions (ConcurrencyCount is ignored)
  • 46. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements ● RoutingStrategy - Least recently used, Sticky (task) or Config based ● ConcurrencyCount - Defines the maximum number of subscriptions the plugin can have before starting another instance of the plugin ● Exclusive - Results in a single instance of the plugin running for any number of subscriptions ● CacheTTL - Overrides the default CacheTTL of 500ms
  • 47. Plugin Authoring - Meta Plugin Meta Is communicated over STDOUT between the plugin and Snap when a plugin starts ● Name - name as it will appear in the plugin catalog ● Type - collector, process, publisher ● Version - version of the plugin ● RPCType - RPC mechanism to be used ● RPCVersion - Defines the version of the service the plugin implements ● RoutingStrategy - Least recently used, Sticky (task) or Config based ● ConcurrencyCount - Defines the maximum number of subscriptions the plugin can have before starting another instance of the plugin ● Exclusive - Results in a single instance of the plugin running for any number of subscriptions ● CacheTTL - Overrides the default CacheTTL of 500ms If the framework attempts to call a plugin for a metric before it’s TTL has expired it will be retrieved from the cache instead
  • 48. Plugin Authoring - Plugin libs Want to write a plugin?
  • 49. Plugin Authoring - Plugin libs Want to write a plugin? Start with one of the Snap plugin libs
  • 50. Plugin Authoring - Plugin libs Want to write a plugin? Start with one of the Snap plugin libs
  • 51. Plugin Authoring - Plugin libs Want to write a plugin? Start with one of the Snap plugin libs
  • 52. Plugin Authoring - Plugin libs Want to write a plugin? Start with one of the Snap plugin libs
  • 53. Plugin Authoring Leveraging existing investments ● Using the plugin-libs wrap existing tools ○ Example: snap-plugin-collector-diamond
  • 54. The Snap Telemetry Framework To Review
  • 55. The Snap Telemetry Framework Snap is an Open Source telemetry framework that allows you to collect, process and publish measurements. Collectors Processors Publishers
  • 56. The Snap Telemetry Framework Snap 1.0 is a general availability of a rock solid daemon with a collection of 67 plugins from multiple companies.
  • 57. The Snap Telemetry Framework Snap 1.0 is the beginning. And we want you involved. snap-telemetry.io
  • 63. define as a tribe Scaling with Tribe 63
  • 64. Scaling with Tribe Add new task 64
  • 65. Snap | Distributed Workflow Physical/Virtual Host Scheduler Processing Publishing Collection 65
  • 66. Snap | Distributed Workflow 66 Physical/VM Host Physical/VM Host Physical/VM Host Physical/VM Host Physical/VM Host Physical/VM Host Collection Collection Collection Scheduler Processing Publishing
  • 67. Customizable definition of task and related workflow: Collect Publish Publish Collect Publish ProcessCollect Publish Collect Process Publish Process Publish Snap | Overview – Example Workflows 67