清楚 OpenStack Swift (3):监控及一些震慑性的素 [Monitoring and Performance]

仍系列文章要学习及研讨OpenStack
Swift,包括环境搭建、原理、架构、监控以及性能等。

(1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP
安装与安排 

(2)规律、架构和性质

(3)监控

 

对 Swift 集群的监察是少不了的,特别是集群规模非常充分之早晚。

1. 督察对象 

首要的监控目标包括:

  • 硬件故障
  • 操作系统故障
  • Swift 集群健康状态
  • Swift 集群状态

  • Swift 提供的工具


2.1 Swift 自带的各种 Audit 工具

2.1.1 磁盘监控工具 swift-drive-audit 

    该工具分析 /var/log/kern.log 文件,根据预定义的 regexp 来探测 kernel
报告的磁盘错误。通常地她会受 cron
周期性地运行。它使用一个部署文件,比如 /etc/swift/drive-audit.conf。如果该脚本发现了有磁盘存在问题,它见面自动
unmount 它,而且会以 /etc/fstab 中将它注释掉。然后后端 replication
进程就会于任何 replica 中拷贝出一个新的 replica。
这是以身作则配置文件。

   
要动她,必须首先创建一个配备文件 driver-audit.conf:

[drive-audit] 
device_dir = /srv/node 
log_facility = LOG_LOCAL0 
log_level = INFO 
minutes = 60 
error_limit = 1 
log_file_pattern = /var/log/kern* 
regex_pattern_1 = \berror\b.*\b(dm-[0-9]{1,2}\d?)\b 

然后运行该工具:swift-drive-audit driver-audit.conf,然后上面描述的各种
action 就会见发矣。

2.1.2 account,container 和 object auditor

功能:

  • swift-account-auditor 会打开 account server 的 sqlite db,运行 SQL
    查询,确保 db 是中的,并告诉一个account 是否发 replica
    缺失或者失实的对象。
  • swift-container-auditor 会对 containers 做一样的事情.
  • swift-object-auditor
    会打开一个对象服务器上的保有目标,确保其的排头数据是毋庸置疑的,而且发生发生当的尺寸与
    MD5

其还要以分级对应之劳动之部署文件中的
[account/object/container-auditor]
部分做相应安排,然后它就是见面定期运行,并出口日志。

2.2 集群监控状态得到工具 swift-dispersion-populate 和 swift-dispersion-report

 这有限个器用于取与报集群的完整正常状态。它需看Swift 集群和
Ring 文件。它要一个和好的配备文件,往往将该配置文件在 proxy server
上的 /etc/swift 目录下。

(1)创建布局文件 /etc/swift/dispersion.conf :

[dispersion]

auth_url = http://controller:35357/v3
auth_user = service:swift
auth_version = 3
auth_key = 1111
swift_dir = /etc/swift
concurrency = 25
retries = 5

欠配置文件的事无巨细说明可以参见 Ubuntu
文档。注意
Kilo 版本的 Swift 环境中得丰富配置项 auth_version。

(2)运行 swift-dispersion-populate 去抱系统的健康状况,它和
swift-dispersion-report 使用和一个布局文件。详细说明可以参见 Ubuntu
文档。

root@swift1:/etc/swift# swift-dispersion-populate dispersion.conf
Created 10 containers for dispersion reporting, 0s, 0 retries
Created 10 objects for dispersion reporting, 0s, 0 retries

(3)运行  swift-dispersion-report 获取监控报告。详细说明要到 Ubuntu
文档。

root@swift1:/etc/swift# swift-dispersion-report
Queried 11 containers for dispersion reporting, 0s, 0 retries
100.00% of container copies found (33 of 33)
Sample represents 1.07% of the container partition space
Queried 10 objects for dispersion reporting, 0s, 0 retries
There were 10 partitions missing 0 copy.
100.00% of object copies found (30 of 30)
Sample represents 0.98% of the object partition space

2.3 性能得到工具 swift-recon 中间件

2.3.1 它是什么(what)

Swift
Recon是一个装在对象服务器的pipeline上之中游件,它起一个早晚填选项:一个当地缓存目录。它可以落:

  1. How many unmounted (failed) drives there are in the cluster, and on
    which servers those are located
  2. How many async pendings are present
  3. Drive usage and balance
  4. Load Average (for easy access later on*)
  5. Memory Usage (for easy access later on*)
  6. Checking ring md5sum’s
  7. Logged replication stats
  8. Connection stats (tbd)
  9. Quarantine Statistics (a new pending addition)

设若利用她,需要首先修改
object-server 的布局文件,添加该中间件:

[pipeline:main]
pipeline = healthcheck recon object-server

[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock

2.3.2 使用命令行工具(How)

swift-recon   <server_type>  [-v] [--suppress] [-a] [-r] [-u] [-d] [-l]  [--md5] [--auditor] [--updater] [--expirer] [--sockstat]

参数:

  • -a, –async: Get async stats
  • –auditor: Get auditor stats
  • –updater: Get updater stats
  • –expirer: Get expirer stats
  • -r, –replication: Get replication stats
  • -u, –unmounted: Check cluster for unmounted devices
  • -d, –diskusage: Get disk usage stats
  • -l, –loadstats: Get cluster load average stats
  • -q, –quarantined: Get cluster quarantine stats
  • –md5 Get md5sum of servers ring and compare to local cop
  • –all Perform all checks. Equivalent to -arudlq –md5
  • -z ZONE, –zone=ZONE: Only query servers in specified zone
  • –swiftdir=PATH Default = /etc/swift

(1)获取全部zone 上 updater,auditor 和 expier 的状态

root@swift1:/etc/swift# swift-recon --auditor --updater --expirer
===============================================================================
--> Starting reconnaissance on 3 hosts
===============================================================================
[2015-11-14 16:52:00] Checking auditor stats
[ALL_audit_time_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ALL_quarantined_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ALL_errors_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ALL_passes_last_path] low: 1, high: 1, avg: 1.0, total: 3, Failed: 0.0%, no_result: 0, reported: 3
[ALL_bytes_processed_last_path] low: 5, high: 5, avg: 5.0, total: 15, Failed: 0.0%, no_result: 0, reported: 3
[ZBF_audit_time_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ZBF_quarantined_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ZBF_errors_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[ZBF_bytes_processed_last_path] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
===============================================================================
[2015-11-14 16:52:00] Checking updater times
[updater_last_sweep] low: 0, high: 0, avg: 0.1, total: 0, Failed: 0.0%, no_result: 0, reported: 3
===============================================================================
[2015-11-14 16:52:00] Checking on expirers
[object_expiration_pass] - No hosts returned valid data.
[expired_last_pass] - No hosts returned valid data.
===============================================================================

(2)磁盘使用状况

root@swift1:/etc/swift# swift-recon -d
===============================================================================
--> Starting reconnaissance on 3 hosts
===============================================================================
[2015-11-14 16:53:38] Checking disk usage now
Distribution Graph:
  2%    2 **********************************************
  3%    3 *********************************************************************
  4%    1 ***********************
Disk usage: space used: 5343854592 of 160982630400
Disk usage: space free: 155638775808 of 160982630400
Disk usage: lowest: 2.59%, highest: 4.56%, avg: 3.31952247191%

(3)系统负荷

root@swift1:/etc/swift# swift-recon -l
===============================================================================
--> Starting reconnaissance on 3 hosts
===============================================================================
[2015-11-14 16:54:32] Checking load averages
[5m_load_avg] low: 0, high: 0, avg: 0.1, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[15m_load_avg] low: 0, high: 0, avg: 0.1, total: 0, Failed: 0.0%, no_result: 0, reported: 3
[1m_load_avg] low: 0, high: 0, avg: 0.1, total: 0, Failed: 0.0%, no_result: 0, reported: 3

(4)检查有着节点上的 ring 文件及 swift.conf 是无是完全一致

root@swift1:/etc/swift# swift-recon --md5
===============================================================================
--> Starting reconnaissance on 3 hosts
===============================================================================
[2015-11-14 17:08:38] Checking ring md5sums
3/3 hosts matched, 0 error[s] while checking hosts.
===============================================================================
[2015-11-14 17:08:38] Checking swift.conf md5sum
3/3 hosts matched, 0 error[s] while checking hosts

2.3.2 通过 REST API 使用

URL 及意义列表:

图片 1

 3. 其它监控工具

    Swift
自身带来的监控工具能提供比较丰富的职能,但是使用起来还无是怪有益,因此,业界已经出现了多生意的要么开源之督查工具。这些监督工具,要么为
swift-recon 一样实现了一个初的中档件,要么调用 Swift
自身的家伙提供的接口。 以下(1 – 4 部分)文字引用自 OpenStack Object
Storage Monitoring 一文:

(1)Swift-Informant

    Florian Hines 开发的 Swift-Informant 中间件可拿走 OS
客户要的实时结果。它坐落proxy server的 pipeline,在各一个求到达Proxy
server之后,它发送3类统计数据到StatsD server.

  • 一个好像obj.GET.200 or cont.PUT.404之增量计数器。
  • 呼吁处理的流年长短
  • 传输数据数量

  这有利于了解客户正体验的劳动品质,也得以了解各种服务类型,命令和响应码的不同排列的数量。Swift-Informant也求no
change to core Swift
code因为她是用中件实现的。然而,也盖如此,它不能够吃人口目代理服务器后面的做事情景。如果一个仓储节点的响应降低,你啊说不定看到你的请求变差-要么是赛延迟,要么回到错误状态码。你无见面懂得具体是为何,或者请求是一旦去哪。或许你所考虚的container服务器是于一个好之节点的,而目标服务器是当任何一个属性差之节点。
之所以我们要深入视觉及proxy server的末端,集群的操作里去。

(2)Statsdlog
  Florian 的 statsdlog 工程多了 StatsD
基于日志事件的计数器。正而Swift-Informant,它吧是勿侵入式的。但是statsdlog可以起Swift后大过程遭到追踪事件,而不仅仅是代理服务器。后台进程监听syslog信息之UDP流,当一长长的日志匹配于一个正则表达式时,StatsD计数器递增。Metric名字映射到JSON文件中之正则pattern。JSON文件允许灵活配置为能于日志流中抽取产生想使的metrics。

(3)Swift StatsD Logging
  StatsD
使用程序代码来发深刻剖析。Metrics被发生对的代码实时发送。发送一个metric的付出一定小:一个sendto
UDP包。如果你看这样的开销还算大吧,StatsD client
library可以只有发送样本的任性比率部分,flushing metrics
upstream时StatsD将估算实际数据。要避免因中间件的督查与后来日记处理所带动的弊端,我们管StatsD
metrics发送了种组成及Swift本身。我们脚下所提交的更改报告了遍布15只swift后高过程的124个metrics以及tempauth中间件。metrics细节不过参照https://review.openstack.org/\#patch,sidebyside,6058,2,doc/source/admin\_guide.rst

(4)总结

    我们看 Swift
集群动作太好的监察措施是综合了一个通用服务器监控网,一个Swift特定统计指标收集(polling
Swift-specific gauge metrics)机制,一个Swift内部counter与timing
metrics深度StatsD日志手段的结合体。对于polling Swift-specific gauge
metrics,最好以一个通用的征集插件。这个插件就是可以起swift-recon读数据,也可友善一直采访信息。在
SwiftStack,我们采用 collectd 加上有服务器监控用 python
插件代码。我们也在collectd中置放StatsD服务器,这样每个节点都来一个经过将stats数据“倒”给Graphite”(http://graphite.wikidot.com/)集群。有了这个装置,我们拥有前述所有问题的全覆盖解决方案:general
purpose monitoring, Swift-specific gauge monitoring, and real-time
counter and timing data directly from
Swift。除了图形化,你吧足以实现深检测,触发警告,维护一个实时的实业健康状态视图,避免各种突发问题。

(5)SwiftStack 监控工具的片段截图:

图片 2

 

图片 3

 

图片 4

(6)另外一个监理环境示范

图片 5

(7)Benchmarking 工具

Intel 开源了对象存储的 Benchmarking 工具
COSBench,https://github.com/intel-cloud/cosbench

4. 片段影响属性的元素

流动:以下内容引用自 “Leveraging open source tools to gain insight into
OpenStack Swift“ ,by Michael Factor,Dmitry Sotnikov,
dmitrys@il.ibm.com。他们利用的测试环境:

图片 6

4.1 Container 数量和 Swift 版本

图片 7(PUT 操作)

本和 container 数目带来的属性差异或要命很的。建议利用 Swift 2.2
版本以上,以及多独 container。

4.2 客户端 worker 数目

图片 8

可见客户端 worker 数目不是更加多属性就见面线性增加。

4.3 Container 中的目标数目

图片 9

4.4 前端和后端网络带来富

图片 10

说明后端网络的带来富压力是前者的足足3倍。

4.5 存储节点的磁盘I/O 和前端网络 I/O 的涉嫌(12倍)

图片 11

4.6 对象大小

图片 12

即时说明 Swift 不对路处理大量底略文件。

4.7 IOPS 性能不是就存储节点数目线性扩展的

图片 13

也就是说这个环境遭受,存储节点数目也7之言语,它们就是无是 IOPS 性能瓶颈了。

 

参考文档:

http://www.cnblogs.com/Clisa/p/3461701.html
Monitoring Swift With StatsD
https://platform.swiftstack.com/docs/admin/monitoring/cluster-monitoring.html
Audit a swift cluster
 

 

网站地图xml地图