SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Storing metrics at
scale with
Julien Danjou/Gordon Chung – OpenStack Days Canada 2017
Hello!
I am Gordon Chung
Engineer at Huawei Technologies Canada
You can find me at gord[at]live.ca and @gordchung
What we’ll talk about today
◎ What is Gnocchi?
(history, reasons, features)
◎ How does Gnocchi work?
(technology, principles)
◎ How to use Gnocchi?
(install, config, SDK)
What’s Gocchi?
Why is it there?
1
Perfect solution
Scalable
Targeting cloud
platforms where
thousands of
instances and
resources pop up
every day.
Storing and
retrieving data
should be fast.
Easy to use
Provide an API
that makes it easy
to program
against the
solution. Build
any kind of
solution easily
(billing, capacity
planning,
statistical
analysis…)
Easy to operate
Installation and
operation should
be easy for
administrators
used to standard
UNIX tools.
Time series
Existing solutions
◎ Graphite
◉ Not scalable
◉ Poor code base
◉ Not modulable
◎ InfluxDB
◉ Does not work
◉ Does not scale
◎ OpenTSDB
◉ Need to set up Hadoop
…
Gnocchi – started in May 2014
Started in OpenStack
Telemetry
Designed to solve
Ceilometer storage issue
back then.
But work stand-alone
since the beginning!
Easy to install
pip install gnocchi
Written in Python
With some standard
used libraries
(SQLAlchemy,
Pandas/Numpy...)
Free Software
Apache Licensed.
Documented
Everything is
documented.
“No doc: no merge”
policy.
Distributed & resilient
Design to run on cloud
platforms. Native
high-availability and
workload distribution
support.
Awesome features!
Search by metric value,
compute aggregations
Look into metrics value
and search for outliers.
Compute aggregation
across several metrics.
Compression
Using LZ4 compression
to compress data on the
fly. Fast, reduce storage
usage between x2-5.
Multi-tenant
ACL that guarantees
your different tenants
can’t see each other
resources. But the admin
can see everything.
Customizable. Batching
Send batch of measures
in one single HTTP call.
Collectd, Nagios &
statsd support
If you’re already a
Graphite user or you’re
polling tool support
statsd, it’s drop-in
compatible.
Same for Nagios.
HTTP REST API
That’s what’s used by
the `gnocchi’ CLI. Add
--debug to discover the
HTTP requests, or read
the API specs!
Trigger alarms
Using Aodh, Hawkular to
evaluate your alarms.
Aggregation as first
class
Aggregate measures on
ingestion rather than on
request.
How does it work?
How the magic happens.
2
Resource
type
Data model
Archive
policy
Metric
Archive
policy
Resource
type
Resource
Resource
Metric
Metric
Metric
Metric
Metric
Metric
How to
aggregate
metrics
Description of
resources:
attributes, like a
class in Python
Instances of
resource
types
A time series
cpu
memory
visitors
Resource
Index
Architecture
Index
Any RDBMS
supported by
SQLAlchemy.
Best choice:
PostgreSQL.
Though MySQL is
also supported, sigh.
Backends
Storage
Simple deployment?
Plain files (with NFS if
you want).
Scalable and robust?
Go for Ceph.
Less durable but fast?
Try Redis.
Got OpenStack?
Leverage Swift.
On AWS, use S3.
Architecture
How to use it?
Basic things you need to know
3
Installation
pip install gnocchi[file,postgresql]
gnocchiclient
$EDITOR
/etc/gnocchi/gnocchi.conf
Run:
gnocchi-upgrade
Run:
gnocchi-api &
gnocchi-metricd &
List archive policies and create a metric
➔ gnocchi archive-policy list
+--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+
| name | back_window | definition | aggregation_methods |
+--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+
| high | 0 | - points: 3600, granularity: 0:00:01, timespan: 1:00:00 | std, count, 95pct, min, max, sum, median, mean |
| | | - points: 10080, granularity: 0:01:00, timespan: 7 days, 0:00:00 | |
| | | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00 | |
| medium | 0 | - points: 1440, granularity: 0:01:00, timespan: 1 day, 0:00:00 | std, count, 95pct, min, max, sum, median, mean |
| | | - points: 168, granularity: 1:00:00, timespan: 7 days, 0:00:00 | |
| | | - points: 365, granularity: 1 day, 0:00:00, timespan: 365 days, 0:00:00 | |
| low | 0 | - points: 12, granularity: 0:05:00, timespan: 1:00:00 | std, count, 95pct, min, max, sum, median, mean |
| | | - points: 24, granularity: 1:00:00, timespan: 1 day, 0:00:00 | |
| | | - points: 30, granularity: 1 day, 0:00:00, timespan: 30 days, 0:00:00 | |
+--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+
➔ gnocchi metric create --archive-policy-name low
+------------------------------------+-----------------------------------------------------------------------+
| Field | Value |
+------------------------------------+-----------------------------------------------------------------------+
| archive_policy/aggregation_methods | std, count, 95pct, min, max, sum, median, mean |
| archive_policy/back_window | 0 |
| archive_policy/definition | - points: 12, granularity: 0:05:00, timespan: 1:00:00 |
| | - points: 24, granularity: 1:00:00, timespan: 1 day, 0:00:00 |
| | - points: 30, granularity: 1 day, 0:00:00, timespan: 30 days, 0:00:00 |
| archive_policy/name | low |
| created_by_project_id | admin |
| created_by_user_id | admin |
| id | 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b |
| name | None |
| resource/id | None |
+------------------------------------+-----------------------------------------------------------------------+
Send & retrieve measures
➔ gnocchi measures add -m 2016-05-16T12:00:00@42 -m 2016-05-16T12:01:03@45 -m 2016-05-16T12:06:07@22
95fdc8ff-1aed-4dd3-b65b-bfb53f91081b
➔ gnocchi measures show 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b
+---------------------------+-------------+---------------+
| timestamp | granularity | value |
+---------------------------+-------------+---------------+
| 2016-05-16T00:00:00+00:00 | 86400.0 | 36.3333333333 |
| 2016-05-16T12:00:00+00:00 | 3600.0 | 36.3333333333 |
| 2016-05-16T12:00:00+00:00 | 300.0 | 43.5 |
| 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 |
+---------------------------+-------------+---------------+
➔ gnocchi measures show --aggregation min 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b
+---------------------------+-------------+-------+
| timestamp | granularity | value |
+---------------------------+-------------+-------+
| 2016-05-16T00:00:00+00:00 | 86400.0 | 22.0 |
| 2016-05-16T12:00:00+00:00 | 3600.0 | 22.0 |
| 2016-05-16T12:00:00+00:00 | 300.0 | 42.0 |
| 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 |
+---------------------------+-------------+-------+
➔ gnocchi measures show --aggregation 95pct 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b
+---------------------------+-------------+-------+
| timestamp | granularity | value |
+---------------------------+-------------+-------+
| 2016-05-16T00:00:00+00:00 | 86400.0 | 44.7 |
| 2016-05-16T12:00:00+00:00 | 3600.0 | 44.7 |
| 2016-05-16T12:00:00+00:00 | 300.0 | 44.85 |
| 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 |
+---------------------------+-------------+-------+
Create a resource
➔ gnocchi resource-type create --attribute name:string --attribute host:string server
+-----------------+----------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------+
| attributes/host | max_length=255, min_length=0, required=True, type=string |
| attributes/name | max_length=255, min_length=0, required=True, type=string |
| name | server |
+-----------------+----------------------------------------------------------+
➔ gnocchi resource create --attribute name:www-42 --attribute host:compute1 --create-metric
cpu:medium --create-metric memory:low --type server `uuidgen`
+-----------------------+----------------------------------------------+
| Field | Value |
+-----------------------+----------------------------------------------+
| created_by_project_id | admin |
| created_by_user_id | admin |
| ended_at | None |
| host | compute1 |
| id | e4c2eab7-52ed-4447-bbcb-48cb04f12015 |
| metrics | cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8 |
| | memory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388 |
| name | www-42 |
| original_resource_id | E4C2EAB7-52ED-4447-BBCB-48CB04F12015 |
| project_id | None |
| revision_end | None |
| revision_start | 2016-05-16T13:35:43.985927+00:00 |
| started_at | 2016-05-16T13:35:43.985815+00:00 |
| type | server |
| user_id | None |
+-----------------------+----------------------------------------------+
Update a resource
➔ gnocchi resource update --attribute host:compute2 --type server
e4c2eab7-52ed-4447-bbcb-48cb04f12015
+-----------------------+----------------------------------------------+
| Field | Value |
+-----------------------+----------------------------------------------+
| created_by_project_id | admin |
| created_by_user_id | admin |
| ended_at | None |
| host | compute2 |
| id | e4c2eab7-52ed-4447-bbcb-48cb04f12015 |
| metrics | cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8 |
| | memory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388 |
| name | www-42 |
| original_resource_id | E4C2EAB7-52ED-4447-BBCB-48CB04F12015 |
| project_id | None |
| revision_end | None |
| revision_start | 2016-05-16T13:37:38.140460+00:00 |
| started_at | 2016-05-16T13:35:43.985815+00:00 |
| type | server |
| user_id | None |
+-----------------------+----------------------------------------------+
See previous updates in JSON
➔ gnocchi resource history --format json --details e4c2eab7-52ed-4447-bbcb-48cb04f12015
[
{
"created_by_user_id": "admin",
"started_at": "2016-05-16T13:35:43.985815+00:00",
"user_id": null,
"revision_end": "2016-05-16T13:37:38.140460+00:00",
"ended_at": null,
"created_by_project_id": "admin",
"metrics": "cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8nmemory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388",
"host": "compute1",
"revision_start": "2016-05-16T13:35:43.985927+00:00",
"project_id": null,
"type": "server",
"id": "e4c2eab7-52ed-4447-bbcb-48cb04f12015",
"name": "www-42"
},
{
"created_by_user_id": "admin",
"started_at": "2016-05-16T13:35:43.985815+00:00",
"user_id": null,
"revision_end": null,
"ended_at": null,
"created_by_project_id": "admin",
"metrics": "cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8nmemory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388",
"host": "compute2",
"revision_start": "2016-05-16T13:37:38.140460+00:00",
"project_id": null,
"type": "server",
"id": "e4c2eab7-52ed-4447-bbcb-48cb04f12015",
"name": "www-42"
}
]
Search for resources
➔ gnocchi resource search --type server host=compute2
+----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+
| id | type | project_id | user_id | started_at | ended_at | revision_start | revision_end |
+----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+
| e4c2eab7-52ed-4447-bbcb- | server | None | None | 2016-05-16T13:35:43.985815 | None | 2016-05-16T13:37:38.140460+ | None |
| 48cb04f12015 | | | | +00:00 | | 00:00 | |
+----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+
Manipulating time-series (sneak peak)
Aggregation across multiple metrics
➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch 
-d ‘{“operations”:
“(aggregate mean (metric (metric-idA mean) (metric-idB mean)))”}’
Compute rolling mean
➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch 
-d ‘{“operations”: “(rolling mean 5 (metric stockA-id mean))”}’
Compute cpu utilisation from cputime
➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch 
-d ‘{“operations”:
“(- 100 (/ (metric metric-id-cputime-delta last) 10000000000))”}’
* disclaimer: still work in progress so syntax might change
Grafana support
Performance
Does it scale?
4
System resource usage
Write throughput
Hardware:
24 core Xeon
20 OSD
256 GB RAM
Capacity:
Incoming: ~1.35 million
measures/s
Full report: https://medium.com/@gord.chung/gnocchi-4-introspective-a83055e99776
Aggregation performance
Hardware:
24 core Xeon
20 OSD
256 GB RAM
Test Case:
Send 10K metrics with
720 measures each
every 10 minutes
Full report: https://medium.com/@gord.chung/gnocchi-4-introspective-a83055e99776
Thanks!
Any questions?
You can find me at gord@live.ca or
Julien Danjou, @juldanjou and julien@danjou.info
http://gnocchi.xyz
#gnocchi @ Freenode
Credits
Special thanks to all the people
who made and released these
awesome resources for free:
◎ Presentation template by
SlidesCarnival
◎ Photographs by Unsplash

Más contenido relacionado

La actualidad más candente

General Ubuntu Advantage Service Guide
General  Ubuntu Advantage Service Guide General  Ubuntu Advantage Service Guide
General Ubuntu Advantage Service Guide The World Bank
 
YOW2018 Cloud Performance Root Cause Analysis at Netflix
YOW2018 Cloud Performance Root Cause Analysis at NetflixYOW2018 Cloud Performance Root Cause Analysis at Netflix
YOW2018 Cloud Performance Root Cause Analysis at NetflixBrendan Gregg
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Thomas Graf
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsStefano Salsano
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
Openstack Swift - Lots of small files
Openstack Swift - Lots of small filesOpenstack Swift - Lots of small files
Openstack Swift - Lots of small filesAlexandre Lecuyer
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례SONG INSEOB
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postInho Kang
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak PerformanceTodd Palino
 
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDNOpenStack Korea Community
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
EKS Anywhere on vSphere
EKS Anywhere on vSphereEKS Anywhere on vSphere
EKS Anywhere on vSphereMasanori Nara
 
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsNeutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsThomas Morin
 
OpenStack DVR_What is DVR?
OpenStack DVR_What is DVR?OpenStack DVR_What is DVR?
OpenStack DVR_What is DVR?Yongyoon Shin
 
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...OpenStack Korea Community
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?OpenStack Korea Community
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStackAkira Yoshiyama
 

La actualidad más candente (20)

General Ubuntu Advantage Service Guide
General  Ubuntu Advantage Service Guide General  Ubuntu Advantage Service Guide
General Ubuntu Advantage Service Guide
 
YOW2018 Cloud Performance Root Cause Analysis at Netflix
YOW2018 Cloud Performance Root Cause Analysis at NetflixYOW2018 Cloud Performance Root Cause Analysis at Netflix
YOW2018 Cloud Performance Root Cause Analysis at Netflix
 
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
Taking Security Groups to Ludicrous Speed with OVS (OpenStack Summit 2015)
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
Community Openstack 구축 사례
Community Openstack 구축 사례Community Openstack 구축 사례
Community Openstack 구축 사례
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and tools
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
Openstack Swift - Lots of small files
Openstack Swift - Lots of small filesOpenstack Swift - Lots of small files
Openstack Swift - Lots of small files
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
 
Kafka at Peak Performance
Kafka at Peak PerformanceKafka at Peak Performance
Kafka at Peak Performance
 
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
EKS Anywhere on vSphere
EKS Anywhere on vSphereEKS Anywhere on vSphere
EKS Anywhere on vSphere
 
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsNeutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deployments
 
OpenStack DVR_What is DVR?
OpenStack DVR_What is DVR?OpenStack DVR_What is DVR?
OpenStack DVR_What is DVR?
 
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
[OpenInfra Days Korea 2018] (Track 1) TACO (SKT All Container OpenStack): Clo...
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 

Similar a Storing metrics at scale with Gnocchi

Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Soshi Nemoto
 
An Introduction to OpenStack Heat
An Introduction to OpenStack HeatAn Introduction to OpenStack Heat
An Introduction to OpenStack HeatMirantis
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Pierre GRANDIN
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaSAppsembler
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012Roland Bouman
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012Roland Bouman
 
Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Ankit Gupta
 
Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Fastly
 
忙しい人のためのSphinx 入門 demo
忙しい人のためのSphinx 入門 demo忙しい人のためのSphinx 入門 demo
忙しい人のためのSphinx 入門 demoFumihito Yokoyama
 
How to build and run oci containers
How to build and run oci containersHow to build and run oci containers
How to build and run oci containersSpyros Trigazis
 
The story and tech of Read the Docs
The story and tech of Read the DocsThe story and tech of Read the Docs
The story and tech of Read the Docsericholscher
 
Quick and Dirty GUI Applications using GUIDeFATE
Quick and Dirty GUI Applications using GUIDeFATEQuick and Dirty GUI Applications using GUIDeFATE
Quick and Dirty GUI Applications using GUIDeFATEConnie New
 
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)Amazon Web Services Korea
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixC4Media
 
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...Altinity Ltd
 
How to Puppetize Google Cloud Platform - PuppetConf 2014
How to Puppetize Google Cloud Platform - PuppetConf 2014How to Puppetize Google Cloud Platform - PuppetConf 2014
How to Puppetize Google Cloud Platform - PuppetConf 2014Puppet
 
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...NETWAYS
 

Similar a Storing metrics at scale with Gnocchi (20)

Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)
 
An Introduction to OpenStack Heat
An Introduction to OpenStack HeatAn Introduction to OpenStack Heat
An Introduction to OpenStack Heat
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012
 
Common schema my sql uc 2012
Common schema   my sql uc 2012Common schema   my sql uc 2012
Common schema my sql uc 2012
 
Week 4 lecture material cc (1)
Week 4 lecture material cc (1)Week 4 lecture material cc (1)
Week 4 lecture material cc (1)
 
Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge Altitude San Francisco 2018: Logging at the Edge
Altitude San Francisco 2018: Logging at the Edge
 
Droidcon Paris 2015
Droidcon Paris 2015Droidcon Paris 2015
Droidcon Paris 2015
 
忙しい人のためのSphinx 入門 demo
忙しい人のためのSphinx 入門 demo忙しい人のためのSphinx 入門 demo
忙しい人のためのSphinx 入門 demo
 
How to build and run oci containers
How to build and run oci containersHow to build and run oci containers
How to build and run oci containers
 
How we build Vox
How we build VoxHow we build Vox
How we build Vox
 
The story and tech of Read the Docs
The story and tech of Read the DocsThe story and tech of Read the Docs
The story and tech of Read the Docs
 
Quick and Dirty GUI Applications using GUIDeFATE
Quick and Dirty GUI Applications using GUIDeFATEQuick and Dirty GUI Applications using GUIDeFATE
Quick and Dirty GUI Applications using GUIDeFATE
 
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
 
Development Workflows on AWS
Development Workflows on AWSDevelopment Workflows on AWS
Development Workflows on AWS
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
 
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
OSA Con 2022 - Switching Jaeger Distributed Tracing to ClickHouse to Enable A...
 
How to Puppetize Google Cloud Platform - PuppetConf 2014
How to Puppetize Google Cloud Platform - PuppetConf 2014How to Puppetize Google Cloud Platform - PuppetConf 2014
How to Puppetize Google Cloud Platform - PuppetConf 2014
 
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
 

Más de Gordon Chung

Gnocchi v4 - past and present
Gnocchi v4 - past and presentGnocchi v4 - past and present
Gnocchi v4 - past and presentGordon Chung
 
Gnocchi v4 (preview)
Gnocchi v4 (preview)Gnocchi v4 (preview)
Gnocchi v4 (preview)Gordon Chung
 
beyond the technology: privacy, trust and security in the cloud
beyond the technology: privacy, trust and security in the cloudbeyond the technology: privacy, trust and security in the cloud
beyond the technology: privacy, trust and security in the cloudGordon Chung
 
Gnocchi v3 brownbag
Gnocchi v3 brownbagGnocchi v3 brownbag
Gnocchi v3 brownbagGordon Chung
 
Gnocchi Profiling v2
Gnocchi Profiling v2Gnocchi Profiling v2
Gnocchi Profiling v2Gordon Chung
 
The Gnocchi Experiment
The Gnocchi ExperimentThe Gnocchi Experiment
The Gnocchi ExperimentGordon Chung
 
Gnocchi Profiling 2.1.x
Gnocchi Profiling 2.1.xGnocchi Profiling 2.1.x
Gnocchi Profiling 2.1.xGordon Chung
 
Anatomy of an action
Anatomy of an actionAnatomy of an action
Anatomy of an actionGordon Chung
 
Stabilising the jenga tower
Stabilising the jenga towerStabilising the jenga tower
Stabilising the jenga towerGordon Chung
 

Más de Gordon Chung (10)

Gnocchi v4 - past and present
Gnocchi v4 - past and presentGnocchi v4 - past and present
Gnocchi v4 - past and present
 
Gnocchi v4 (preview)
Gnocchi v4 (preview)Gnocchi v4 (preview)
Gnocchi v4 (preview)
 
beyond the technology: privacy, trust and security in the cloud
beyond the technology: privacy, trust and security in the cloudbeyond the technology: privacy, trust and security in the cloud
beyond the technology: privacy, trust and security in the cloud
 
Gnocchi v3 brownbag
Gnocchi v3 brownbagGnocchi v3 brownbag
Gnocchi v3 brownbag
 
Gnocchi v3
Gnocchi v3Gnocchi v3
Gnocchi v3
 
Gnocchi Profiling v2
Gnocchi Profiling v2Gnocchi Profiling v2
Gnocchi Profiling v2
 
The Gnocchi Experiment
The Gnocchi ExperimentThe Gnocchi Experiment
The Gnocchi Experiment
 
Gnocchi Profiling 2.1.x
Gnocchi Profiling 2.1.xGnocchi Profiling 2.1.x
Gnocchi Profiling 2.1.x
 
Anatomy of an action
Anatomy of an actionAnatomy of an action
Anatomy of an action
 
Stabilising the jenga tower
Stabilising the jenga towerStabilising the jenga tower
Stabilising the jenga tower
 

Último

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
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
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
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 

Último (20)

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
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
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!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
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
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 

Storing metrics at scale with Gnocchi

  • 1. Storing metrics at scale with Julien Danjou/Gordon Chung – OpenStack Days Canada 2017
  • 2. Hello! I am Gordon Chung Engineer at Huawei Technologies Canada You can find me at gord[at]live.ca and @gordchung
  • 3. What we’ll talk about today ◎ What is Gnocchi? (history, reasons, features) ◎ How does Gnocchi work? (technology, principles) ◎ How to use Gnocchi? (install, config, SDK)
  • 5. Perfect solution Scalable Targeting cloud platforms where thousands of instances and resources pop up every day. Storing and retrieving data should be fast. Easy to use Provide an API that makes it easy to program against the solution. Build any kind of solution easily (billing, capacity planning, statistical analysis…) Easy to operate Installation and operation should be easy for administrators used to standard UNIX tools.
  • 7. Existing solutions ◎ Graphite ◉ Not scalable ◉ Poor code base ◉ Not modulable ◎ InfluxDB ◉ Does not work ◉ Does not scale ◎ OpenTSDB ◉ Need to set up Hadoop …
  • 8. Gnocchi – started in May 2014 Started in OpenStack Telemetry Designed to solve Ceilometer storage issue back then. But work stand-alone since the beginning! Easy to install pip install gnocchi Written in Python With some standard used libraries (SQLAlchemy, Pandas/Numpy...) Free Software Apache Licensed. Documented Everything is documented. “No doc: no merge” policy. Distributed & resilient Design to run on cloud platforms. Native high-availability and workload distribution support.
  • 9. Awesome features! Search by metric value, compute aggregations Look into metrics value and search for outliers. Compute aggregation across several metrics. Compression Using LZ4 compression to compress data on the fly. Fast, reduce storage usage between x2-5. Multi-tenant ACL that guarantees your different tenants can’t see each other resources. But the admin can see everything. Customizable. Batching Send batch of measures in one single HTTP call. Collectd, Nagios & statsd support If you’re already a Graphite user or you’re polling tool support statsd, it’s drop-in compatible. Same for Nagios. HTTP REST API That’s what’s used by the `gnocchi’ CLI. Add --debug to discover the HTTP requests, or read the API specs! Trigger alarms Using Aodh, Hawkular to evaluate your alarms. Aggregation as first class Aggregate measures on ingestion rather than on request.
  • 10. How does it work? How the magic happens. 2
  • 11. Resource type Data model Archive policy Metric Archive policy Resource type Resource Resource Metric Metric Metric Metric Metric Metric How to aggregate metrics Description of resources: attributes, like a class in Python Instances of resource types A time series cpu memory visitors Resource
  • 12. Index
  • 14. Index Any RDBMS supported by SQLAlchemy. Best choice: PostgreSQL. Though MySQL is also supported, sigh. Backends Storage Simple deployment? Plain files (with NFS if you want). Scalable and robust? Go for Ceph. Less durable but fast? Try Redis. Got OpenStack? Leverage Swift. On AWS, use S3.
  • 16. How to use it? Basic things you need to know 3
  • 18. List archive policies and create a metric ➔ gnocchi archive-policy list +--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+ | name | back_window | definition | aggregation_methods | +--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+ | high | 0 | - points: 3600, granularity: 0:00:01, timespan: 1:00:00 | std, count, 95pct, min, max, sum, median, mean | | | | - points: 10080, granularity: 0:01:00, timespan: 7 days, 0:00:00 | | | | | - points: 8760, granularity: 1:00:00, timespan: 365 days, 0:00:00 | | | medium | 0 | - points: 1440, granularity: 0:01:00, timespan: 1 day, 0:00:00 | std, count, 95pct, min, max, sum, median, mean | | | | - points: 168, granularity: 1:00:00, timespan: 7 days, 0:00:00 | | | | | - points: 365, granularity: 1 day, 0:00:00, timespan: 365 days, 0:00:00 | | | low | 0 | - points: 12, granularity: 0:05:00, timespan: 1:00:00 | std, count, 95pct, min, max, sum, median, mean | | | | - points: 24, granularity: 1:00:00, timespan: 1 day, 0:00:00 | | | | | - points: 30, granularity: 1 day, 0:00:00, timespan: 30 days, 0:00:00 | | +--------+-------------+-------------------------------------------------------------------------+------------------------------------------------+ ➔ gnocchi metric create --archive-policy-name low +------------------------------------+-----------------------------------------------------------------------+ | Field | Value | +------------------------------------+-----------------------------------------------------------------------+ | archive_policy/aggregation_methods | std, count, 95pct, min, max, sum, median, mean | | archive_policy/back_window | 0 | | archive_policy/definition | - points: 12, granularity: 0:05:00, timespan: 1:00:00 | | | - points: 24, granularity: 1:00:00, timespan: 1 day, 0:00:00 | | | - points: 30, granularity: 1 day, 0:00:00, timespan: 30 days, 0:00:00 | | archive_policy/name | low | | created_by_project_id | admin | | created_by_user_id | admin | | id | 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b | | name | None | | resource/id | None | +------------------------------------+-----------------------------------------------------------------------+
  • 19. Send & retrieve measures ➔ gnocchi measures add -m 2016-05-16T12:00:00@42 -m 2016-05-16T12:01:03@45 -m 2016-05-16T12:06:07@22 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b ➔ gnocchi measures show 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b +---------------------------+-------------+---------------+ | timestamp | granularity | value | +---------------------------+-------------+---------------+ | 2016-05-16T00:00:00+00:00 | 86400.0 | 36.3333333333 | | 2016-05-16T12:00:00+00:00 | 3600.0 | 36.3333333333 | | 2016-05-16T12:00:00+00:00 | 300.0 | 43.5 | | 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 | +---------------------------+-------------+---------------+ ➔ gnocchi measures show --aggregation min 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b +---------------------------+-------------+-------+ | timestamp | granularity | value | +---------------------------+-------------+-------+ | 2016-05-16T00:00:00+00:00 | 86400.0 | 22.0 | | 2016-05-16T12:00:00+00:00 | 3600.0 | 22.0 | | 2016-05-16T12:00:00+00:00 | 300.0 | 42.0 | | 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 | +---------------------------+-------------+-------+ ➔ gnocchi measures show --aggregation 95pct 95fdc8ff-1aed-4dd3-b65b-bfb53f91081b +---------------------------+-------------+-------+ | timestamp | granularity | value | +---------------------------+-------------+-------+ | 2016-05-16T00:00:00+00:00 | 86400.0 | 44.7 | | 2016-05-16T12:00:00+00:00 | 3600.0 | 44.7 | | 2016-05-16T12:00:00+00:00 | 300.0 | 44.85 | | 2016-05-16T12:05:00+00:00 | 300.0 | 22.0 | +---------------------------+-------------+-------+
  • 20. Create a resource ➔ gnocchi resource-type create --attribute name:string --attribute host:string server +-----------------+----------------------------------------------------------+ | Field | Value | +-----------------+----------------------------------------------------------+ | attributes/host | max_length=255, min_length=0, required=True, type=string | | attributes/name | max_length=255, min_length=0, required=True, type=string | | name | server | +-----------------+----------------------------------------------------------+ ➔ gnocchi resource create --attribute name:www-42 --attribute host:compute1 --create-metric cpu:medium --create-metric memory:low --type server `uuidgen` +-----------------------+----------------------------------------------+ | Field | Value | +-----------------------+----------------------------------------------+ | created_by_project_id | admin | | created_by_user_id | admin | | ended_at | None | | host | compute1 | | id | e4c2eab7-52ed-4447-bbcb-48cb04f12015 | | metrics | cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8 | | | memory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388 | | name | www-42 | | original_resource_id | E4C2EAB7-52ED-4447-BBCB-48CB04F12015 | | project_id | None | | revision_end | None | | revision_start | 2016-05-16T13:35:43.985927+00:00 | | started_at | 2016-05-16T13:35:43.985815+00:00 | | type | server | | user_id | None | +-----------------------+----------------------------------------------+
  • 21. Update a resource ➔ gnocchi resource update --attribute host:compute2 --type server e4c2eab7-52ed-4447-bbcb-48cb04f12015 +-----------------------+----------------------------------------------+ | Field | Value | +-----------------------+----------------------------------------------+ | created_by_project_id | admin | | created_by_user_id | admin | | ended_at | None | | host | compute2 | | id | e4c2eab7-52ed-4447-bbcb-48cb04f12015 | | metrics | cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8 | | | memory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388 | | name | www-42 | | original_resource_id | E4C2EAB7-52ED-4447-BBCB-48CB04F12015 | | project_id | None | | revision_end | None | | revision_start | 2016-05-16T13:37:38.140460+00:00 | | started_at | 2016-05-16T13:35:43.985815+00:00 | | type | server | | user_id | None | +-----------------------+----------------------------------------------+
  • 22. See previous updates in JSON ➔ gnocchi resource history --format json --details e4c2eab7-52ed-4447-bbcb-48cb04f12015 [ { "created_by_user_id": "admin", "started_at": "2016-05-16T13:35:43.985815+00:00", "user_id": null, "revision_end": "2016-05-16T13:37:38.140460+00:00", "ended_at": null, "created_by_project_id": "admin", "metrics": "cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8nmemory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388", "host": "compute1", "revision_start": "2016-05-16T13:35:43.985927+00:00", "project_id": null, "type": "server", "id": "e4c2eab7-52ed-4447-bbcb-48cb04f12015", "name": "www-42" }, { "created_by_user_id": "admin", "started_at": "2016-05-16T13:35:43.985815+00:00", "user_id": null, "revision_end": null, "ended_at": null, "created_by_project_id": "admin", "metrics": "cpu: d51d8ba3-ab06-4f0c-af6c-d88dbac8c2a8nmemory: 0240ceb8-d1d6-435d-a37c-f7f3bf99a388", "host": "compute2", "revision_start": "2016-05-16T13:37:38.140460+00:00", "project_id": null, "type": "server", "id": "e4c2eab7-52ed-4447-bbcb-48cb04f12015", "name": "www-42" } ]
  • 23. Search for resources ➔ gnocchi resource search --type server host=compute2 +----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+ | id | type | project_id | user_id | started_at | ended_at | revision_start | revision_end | +----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+ | e4c2eab7-52ed-4447-bbcb- | server | None | None | 2016-05-16T13:35:43.985815 | None | 2016-05-16T13:37:38.140460+ | None | | 48cb04f12015 | | | | +00:00 | | 00:00 | | +----------------------------+--------+------------+---------+----------------------------+----------+-----------------------------+--------------+
  • 24. Manipulating time-series (sneak peak) Aggregation across multiple metrics ➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch -d ‘{“operations”: “(aggregate mean (metric (metric-idA mean) (metric-idB mean)))”}’ Compute rolling mean ➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch -d ‘{“operations”: “(rolling mean 5 (metric stockA-id mean))”}’ Compute cpu utilisation from cputime ➔ curl -X POST http://gnocchi-url/v1/aggregates/fetch -d ‘{“operations”: “(- 100 (/ (metric metric-id-cputime-delta last) 10000000000))”}’ * disclaimer: still work in progress so syntax might change
  • 28. Write throughput Hardware: 24 core Xeon 20 OSD 256 GB RAM Capacity: Incoming: ~1.35 million measures/s Full report: https://medium.com/@gord.chung/gnocchi-4-introspective-a83055e99776
  • 29. Aggregation performance Hardware: 24 core Xeon 20 OSD 256 GB RAM Test Case: Send 10K metrics with 720 measures each every 10 minutes Full report: https://medium.com/@gord.chung/gnocchi-4-introspective-a83055e99776
  • 30. Thanks! Any questions? You can find me at gord@live.ca or Julien Danjou, @juldanjou and julien@danjou.info http://gnocchi.xyz #gnocchi @ Freenode
  • 31. Credits Special thanks to all the people who made and released these awesome resources for free: ◎ Presentation template by SlidesCarnival ◎ Photographs by Unsplash