-
-
Save jcooklin/7235b7eddb5761c36727 to your computer and use it in GitHub Desktop.
snap-preso.html
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>snap</title> | |
<meta charset="utf-8"> | |
<style> | |
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz); | |
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic); | |
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic); | |
body { font-family: 'Droid Serif'; } | |
h1, h2, h3 { | |
font-family: 'Yanone Kaffeesatz'; | |
font-weight: normal; | |
} | |
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; } | |
</style> | |
</head> | |
<body> | |
<textarea id="source"> | |
class: center, middle | |
# [snap](http://nickapedia.com/2015/12/02/what-if-collecting-data-center-telemetry-was-a-snap/) | |
A modern telemetry framkework | |
[](https://github.com/intelsdi-x/snap) | |
--- | |
# Agenda | |
1. Introduction | |
1. Demo | |
1. Writing a plugin | |
1. Futures | |
1. QA | |
--- | |
# Why | |
**Snap provides value by exposing IA platform telemetry in a frictionless manner** enabling better data center scheduling | |
and workload management through access to underlying telemetry data and platform metrics. | |
<br/> | |
The snap framework will improve system administrators’ control and intelligent use of data center infrastructure in cloud environments by: | |
* Providing powerful clustered control of telemetry workflows across small or large clusters | |
* Extensible plugin based architecture | |
* API centric framework | |
* Intelligent scheduling and workflow management | |
* Empowering systems to expose a consistent set of telemetry data | |
* Improving the deployment model, clustering, packaging, and security | |
??? | |
https://communities.intel.com/community/itpeernetwork/datastack/blog/2015/12/02/snap-framework-next-step-toward-cloud-for-all | |
--- | |
# Extensible plugin based architecture | |
<br/> | |
* Open model for third party plugins | |
* Dynamically generated telemetry catalog | |
* Decoupled data collection and publishing | |
* Flexible architecture allows for custom built publisher integration by open source or commercial entities | |
* [Process] Convert data into alternate data model for consumption by other systems such as OpenStack Ceilometer | |
* [Process] Encryption of all or part of telemetry data before publishing | |
* [Process] Injection of remote queries for tokens, filtering, machine learning, etc. | |
--- | |
# A REST based API exposes **ALL** capabilities | |
* Listing/loading/unloading plugins | |
* Listing available metrics | |
* Creating/removing/starting/stopping tasks | |
* Updating configuration | |
*The agent is dynamic and does not require a restart* | |
--- | |
# Security - plugin encryption | |
The communication between the Pulse Daemon and the plugins is encrypted by default. | |
1. Plugin Start Up | |
1. Generate asymmetric key pair | |
1. Trade public keys<br> | |
 | |
1. Symmetric Key Exchange | |
1. Daemon generates a key | |
1. Daemon encrypts key with the plugin’s public key | |
1. Daemon delivers encrypted key via SetKey() RPC call | |
 | |
1. Encrypted Communication via Symmetric Key<br> | |
 | |
??? | |
Should you want to | |
disable the encrypted communication, when authoring a plugin, use the Unsecure option for your plugin's | |
meta: | |
``` | |
//Meta returns the metadata for MyPlugin | |
func Meta() *plugin.PluginMeta { | |
return plugin.NewPluginMeta(name, ver, type, ct, ct2, plugin.Unsecure(true)) | |
} | |
``` | |
--- | |
# Security - plugin signing | |
* [Snap plugin signing](https://github.com/intelsdi-x/snap/blob/master/docs/PLUGIN_SIGNING.md) using public-key cryptography | |
* The plugin is signed with the private key | |
* The public key is added to the keyring referenced when snapd starts | |
* On plugin load snapd validates the plugins signature | |
* Plugin signing is enabled by default | |
* SSL for the API | |
``` | |
snapd --rest-https | |
``` | |
--- | |
# Demo | |
1. [Load/Unload plugins](https://www.dropbox.com/s/xbg871ybd1m63co/load-list-plugins.gif?raw=1) | |
1. [List metrics](https://www.dropbox.com/s/xbg871ybd1m63co/load-list-plugins.gif?raw=1) | |
1. Unload a plugin | |
1. [Start pulse and autoload plugins](https://www.dropbox.com/s/8a5i506zwd0pdnu/autoload-plugins.gif?raw=1) | |
1. [Plugin signing](https://www.dropbox.com/s/ucryh3tcmzbo44t/create-signing-files.gif?raw=1) | |
??? | |
Things to point out | |
* different types of plugins | |
* plugin version | |
* metric versions | |
* plugins are loaded dynamically (no need to restart the daemon) | |
* metric catalog | |
* the catalog is selected against when you create a task | |
--- | |
# Tribe | |
Tribe is the name of the clustering feature in snap. When it is enabled nodes will agree on plugins and/or tasks | |
when they join what is called an agreement. When an action is taken on a node that is a member of an agreement | |
that action will be carried out by all other members of the agreement. When a new node joins an existing agreement | |
it will retrieve plugins and tasks from the members of the agreement. | |
--- | |
class: center, middle | |
#[plugin catalog](https://github.com/intelsdi-x/snap/blob/master/docs/PLUGIN_CATALOG.md) | |
--- | |
# Futures | |
* [Authentication/Authorization/Auditing](https://github.com/intelsdi-x/snap/issues/286) | |
* [Advanced plugin routing - sticky](https://github.com/intelsdi-x/snap/issues/539) | |
* [Ability to add/revoke trust during runtime](https://github.com/intelsdi-x/snap/issues/482) | |
* distributed workflows (separate nodes for process and publish, etc.) | |
* event subscription (events trigger workflow collection) | |
--- | |
class: center, middle | |
##checkout out [https://github.com/intelsdi-x/snap](https://github.com/intelsdi-x/snap) | |
Thanks! | |
</textarea> | |
<script src="https://gnab.github.io/remark/downloads/remark-latest.min.js"> | |
</script> | |
<script> | |
var slideshow = remark.create(); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment