博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
库蒂尼奥_尼奥基入门
阅读量:2531 次
发布时间:2019-05-11

本文共 15889 字,大约阅读时间需要 52 分钟。

库蒂尼奥

是一个开放源代码创建于2014年,当时OpenStack寻求不依赖于专门数据库(例如Hadoop,Cassandra等)的高度可扩展,容错时间序列数据库。

,但后来移出了该项目,因为它是与平台无关的。 即便如此,Gnocchi仍被该云平台用作主要的时间序列后端。 例如, 利用Gnocchi的大可扩展性和高可用性属性来确保其遥测始终保持快速。

Gnocchi解决的问题是时间序列数据和资源的大规模存储和索引。 现代云平台不仅庞大,而且还是动态的,并且可能是多租户。 面no将所有这些考虑在内。

聚合

Gnocchi采用独特的时间序列存储方法:与其存储原始数据点,不如存储原始数据点,然后在存储它们之前对其进行汇总。 此内置功能与大多数其他时间序列数据库不同,后者通常支持此机制作为选项并在查询时计算聚合(平均值,最小值等)。

由于Gnocchi会在摄取时计算所有聚合,因此取回数据的速度非常快,因为它只需要读回预先计算的结果即可。

可以使用存档策略在每个度量标准上配置这些数据点的聚合方式。 存档策略定义要计算的聚合以及保留多少聚合。 尼奥基支持大量的聚合方法,例如最小,最大,平均值,第N个百分位数,标准差等。这些聚合是在一段时间(称为粒度)中计算的,并在定义的时间范围内保留。 聚合以压缩格式存储,以确保数据点占用的空间尽可能少。

例如,假设您定义了一个存档策略,以五分钟的间隔将一个时间序列的平均值,最小值和最大值保持30天。 在这种情况下,Gnocchi将计算五分钟范围内值的平均值,最小值和最大值,最多可保留8,640点(您可以在30天内拥有的五分钟聚合数)。

入门

在安装Gnocchi之前,您需要确定要使用的措施并汇总存储驱动程序。 Gnocchi可以利用高度可扩展的存储系统,例如Ceph,OpenStack Swift,Redis甚至Amazon S3。 如果这些选项都不可用,那么您仍然可以使用标准文件系统。

您还需要一个数据库来索引Gnocchi将要处理的资源和指标— PostgreSQL和MySQL均受支持。

Architecture diagram

介绍了如何设置Gnocchi并编写其配置文件。 写入此配置文件后, gnocchi-upgrade程序将设置存储引擎和数据库索引,以便可以使用它们。

Gnocchi由两个中央服务组成:一个HTTP服务器(提供REST API)和一个度量处理守护程序。 前者称为gnocchi-api ; 后者称为gnocchi-metricd 。 您需要同时运行这两项服务才能使用Gnocchi。 客户端将使用REST API查询Gnocchi并将数据写入其中。 度量服务将提取API接收的度量,计算聚合并将其存储在长期聚合存储中。

这些服务都是无状态的,因此可以水平扩展。 与许多时间序列数据库相反,您可以使用Gnocchi运行的度量标准守护程序或API终结点的数量没有限制。 如果您的负载开始增加,则只需要生成更多守护程序即可处理新请求的流程。 如果要处理高可用性方案,也是如此:只需在独立服务器上启动更多的Gnocchi守护程序即可。

使用命令行工具

部署完Gnocchi之后,您可以使用pip(Python软件包安装程序)安装Gnocchi客户端命令行工具。 只需键入pip install gnocchiclient即可 。 它将请求发送到HTTP REST API并格式化并打印回答复。

为了组织度量标准,Gnocchi提供了资源的概念。 资源可以附加任何数量的指标:

$ gnocchi resource create server42     
+-----------------------+--------------------------------------+
| Field                
| Value                                
|
+-----------------------+--------------------------------------+
| created_by_project_id
|                                      
|
| created_by_user_id    
| admin                                
|
| creator              
| admin                                
|
| ended_at              
| None                                
|
|
id                    
|
43164383 -6dc3-
5034 -a675-9a39493ca7df
|
| metrics              
|                                      
|
| original_resource_id  
| server42                            
|
| project_id            
| None                                
|
| revision_end          
| None                                
|
| revision_start        
|
2017 -
10 -20T13:
19 :
46.902754 +00:00    
|
| started_at            
|
2017 -
10 -20T13:
19 :
46.902642 +00:00    
|
|
type                  
| generic                              
|
| user_id              
| None                                
|
+-----------------------+--------------------------------------+

汤团对资源进行修改; 如果更改了任何属性,则Gnocchi将记录该更改并在资源的历史记录中创建一个新条目。

创建此资源后,我们可以为此资源创建一个新的指标:

$ gnocchi metric create      
-r server42 cpu
+------------------------------------+------------------------------------------------------------------+
| Field                              
| Value                                                            
|
+------------------------------------+------------------------------------------------------------------+
| archive_policy
/ aggregation_methods
| std, count, min, max,
sum , mean                                  
|
| archive_policy
/ back_window        
|
0                                                                
|
| archive_policy
/ definition          
| - points:
8640 , granularity:
0 :05:00, timespan:
30 days,
0 :00:00
|
| archive_policy
/ name                
| low                                                              
|
| created_by_project_id              
|                                                                  
|
| created_by_user_id                
| admin                                                            
|
| creator                            
| admin                                                            
|
|
id                                
| ab0b5dab-31e9-
4760 -a58f-0dc324047f9f                            
|
| name                              
| cpu                                                              
|
| resource
/ created_by_project_id    
|                                                                  
|
| resource
/ created_by_user_id        
| admin                                                            
|
| resource
/ creator                  
| admin                                                            
|
| resource
/ ended_at                  
| None                                                            
|
| resource
/
id                        
|
43164383 -6dc3-
5034 -a675-9a39493ca7df                            
|
| resource
/ original_resource_id      
| server42                                                        
|
| resource
/ project_id                
| None                                                            
|
| resource
/ revision_end              
| None                                                            
|
| resource
/ revision_start            
|
2017 -
10 -20T13:
19 :
46.902754 +00:00                                
|
| resource
/ started_at                
|
2017 -
10 -20T13:
19 :
46.902642 +00:00                                
|
| resource
/
type                      
| generic                                                          
|
| resource
/ user_id                  
| None                                                            
|
| unit                              
| None                                                            
|
+------------------------------------+------------------------------------------------------------------+

这将创建一个名为cpu的度量,并将其附加到资源服务器42 。 默认情况下,用于新指标的存档策略很低,这是安装Gnocchi时默认提供的。 低归档策略以五分钟的粒度存储30天的各种聚合方法。

此新指标没有度量标准,因此现在该发送一些:

$ gnocchi measures add      
-m
"2017-10-20 12:00@42"
-m
"2017-10-20 12:03@18"
-m
"2017-10-20 12:06@56"
-r server42 cpu
$  gnocchi measures show
-r server42 cpu
+---------------------------+-------------+-------+
| timestamp                
| granularity
| value
|
+---------------------------+-------------+-------+
|
2017 -
10 -20T12:00:00+02:00
|      
300.0
|  
30.0
|
|
2017 -
10 -20T12:05:00+02:00
|      
300.0
|  
56.0
|
+---------------------------+-------------+-------+

发送的三个度量汇总为12:00和12:05的两个数据点。 默认情况下,显示的聚合方法是mean ,但是您可以请求其他任何聚合方法:

$ gnocchi measures show      
--aggregation count
-r server42 cpu
+---------------------------+-------------+-------+
| timestamp                
| granularity
| value
|
+---------------------------+-------------+-------+
|
2017 -
10 -20T12:00:00+02:00
|      
300.0
|  
2.0
|
|
2017 -
10 -20T12:05:00+02:00
|      
300.0
|  
1.0
|
+---------------------------+-------------+-------+

计数聚合方法计算在每个时间间隔内接收到的数据点数。

默认资源类型是通用资源,但是您可以创建具有任何数量额外属性的自己的资源类型。 这些属性可以是可选的,并且可以具有特定的类型,以确保您的数据结构正确且易于使用:

$ gnocchi resource-type create      
-a ipaddress:string:true network-switch
+----------------------+----------------------------------------------------------+
| Field                
| Value                                                    
|
+----------------------+----------------------------------------------------------+
| attributes
/ ipaddress
|
max_length =
255 ,
min_length =
0 ,
required =True,
type =string
|
| name                
| network-switch                                          
|
| state                
| active                                                  
|
+----------------------+----------------------------------------------------------+
$ gnocchi resource create
--type network-switch
--attribute ipaddress:192.168.2.3 sw18-prs.example.com
+-----------------------+--------------------------------------+
| Field                
| Value                                
|
+-----------------------+--------------------------------------+
| created_by_project_id
|                                      
|
| created_by_user_id    
| admin                                
|
| creator              
| admin                                
|
| ended_at              
| None                                
|
|
id                    
| 4fbdf14d-
5650 -58f5-b232-dc3cf91c28d0
|
| ipaddress            
| 192.168.2.3                          
|
| metrics              
|                                      
|
| original_resource_id  
| sw18-prs.example.com                
|
| project_id            
| None                                
|
| revision_end          
| None                                
|
| revision_start        
|
2017 -
10 -20T15:08:
30.935529 +00:00    
|
| started_at            
|
2017 -
10 -20T15:08:
30.935513 +00:00    
|
|
type                  
| network-switch                      
|
| user_id              
| None                                
|
+-----------------------+--------------------------------------+

如果属性值发生更改,则可以检索其历史记录:

$ gnocchi resource update      
--type network-switch
--attribute ipaddress:192.168.2.48 sw18-prs.example.com
+-----------------------+--------------------------------------+
| Field                
| Value                                
|
+-----------------------+--------------------------------------+
| created_by_project_id
|                                      
|
| created_by_user_id    
| admin                                
|
| creator              
| admin                                
|
| ended_at              
| None                                
|
|
id                    
| 4fbdf14d-
5650 -58f5-b232-dc3cf91c28d0
|
| ipaddress            
| 192.168.2.48                        
|
| metrics              
|                                      
|
| original_resource_id  
| sw18-prs.example.com                
|
| project_id            
| None                                
|
| revision_end          
| None                                
|
| revision_start        
|
2017 -
10 -20T15:
10 :
11.903018 +00:00    
|
| started_at            
|
2017 -
10 -20T15:08:
30.935513 +00:00    
|
|
type                  
| network-switch                      
|
| user_id              
| None                                
|
+-----------------------+--------------------------------------+
$ gnocchi resource
history
--format yaml
--type network-switch sw18-prs.example.com
- creator: admin
  ended_at: null
  id: 4fbdf14d-
5650 -58f5-b232-dc3cf91c28d0
  ipaddress: 192.168.2.3
  metrics:
{
}
  original_resource_id: sw18-prs.example.com
  project_id: null
  revision_end:
'2017-10-20T15:10:11.903018+00:00'
  revision_start:
'2017-10-20T15:08:30.935529+00:00'
  started_at:
'2017-10-20T15:08:30.935513+00:00'
  type: network-switch
  user_id: null
- creator: admin
  ended_at: null
  id: 4fbdf14d-
5650 -58f5-b232-dc3cf91c28d0
  ipaddress: 192.168.2.48
  metrics:
{
}
  original_resource_id: sw18-prs.example.com
  project_id: null
  revision_end: null
  revision_start:
'2017-10-20T15:10:11.903018+00:00'
  started_at:
'2017-10-20T15:08:30.935513+00:00'
  type: network-switch
  user_id: null

修订字段指示什么时候进行更改。 ipaddress的旧属性值和新属性值都可以访问,从而可以轻松跟踪资源的修改方式。

Gnocchi还提供其他功能,例如搜索资源和度量,度量的高级交叉聚合,访问控制列表(ACL)管理等。

与其他工具整合

Gnocchi可以与许多其他工具集成。 例如,可以使用其收集指标与collectd并将它们发送到面疙瘩。

还支持 ,这是用于通过显示时间序列数据库中图表的标准工具。

Grafana integration with Gnocchi

诺奇的路线图

尼奥基(Gnocchi)是 ,并且新功能不断到来。 下一版本(4.1)应该为跨度量聚合提供更多的计算可能性。 另外,正在构建的摄取点,因此Gnocchi可用作Prometheus时间序列警报和监视系统的长期且可扩展的存储选项。

翻译自:

库蒂尼奥

转载地址:http://vrbzd.baihongyu.com/

你可能感兴趣的文章
07 Mybatis的多表查询1----1对多和多对1
查看>>
debian和ubuntu的sh dash bash
查看>>
java9-8 局部内部类
查看>>
数据库分页
查看>>
Centos6.8源码编译安装PHP7
查看>>
012 debug调试工具的指令
查看>>
慕课网消息的接收与响应3
查看>>
第三十二讲:UML类图(下)
查看>>
linux下更改时区
查看>>
复杂链表的复制
查看>>
code vs 3376 符号三角形
查看>>
[CF193B] Xor(暴力,剪枝,异或)
查看>>
[CF825D] Suitable Replacement (贪心乱搞)
查看>>
大数据笔记(二十五)——Scala函数式编程
查看>>
win7 IIS7 运行vs2003 web 项目 无法识别的配置节“system.webServer” 解决
查看>>
jQuery源码分析_工具方法(学习笔记)
查看>>
有穷自动机的转换
查看>>
ncbi-blast 本地安装
查看>>
在android上使用 stand-alone toolchains移植 transmission
查看>>
小议IT公司的组织架构
查看>>