动态存储统计模块

dynafed-storagestats的Python项目详细描述


动态存储统计信息

模块与UGR的配置文件交互以获取 从各种类型的端点存储状态信息并上载 给memcache的信息。它利用UGR的连接检查它是否上传 到memcache以跳过它检测到的"脱机"的任何终结点。(如果 找不到此信息,将忽略此信息,并与所有终结点联系)

迄今为止,它的支持已通过以下测试:

  • azure存储blob
  • AWS S3
  • ceph s3
  • 迷你S3
  • 通过WebDAV的DPM
  • 通过WebDAV的数据缓存

安装

Linux:

pip3 install dynafed-storagestats

这将安装所有必需的依赖项并创建可执行文件 '/usr/bin/dynafed存储'

中心/SL 6

python 3.4可从epel存储库获得。

为了在python 3中安装上述模块,需要设置pip3。自从 它不在repos中,请运行以下命令:

sudo  python3 /usr/lib/python3.4/site-packages/easy_install.py pip

已知问题

用法

确保运行它的用户能够读取ugr的配置文件。

dynafed-storage -h
usage: dynafed-storage [-h]{reports,stats} ...

positional arguments:
  {reports,stats}
    reports        In development
    stats          Obtain and output storage stats.

optional arguments:
  -h, --help       show this help message and exit

子命令

统计信息

此子命令打算作为cron作业定期运行,以便 将统计信息上传到memcached中,以便dynafed可以使用它来了解 存储端点的存储容量。

它联系每个存储端点,获取可用的统计信息并输出它们 根据设置。

首先使用以下标志运行:

dynafed-storage stats -v -c /etc/ugr/conf.d --stdout -m

这将打印出遇到的任何警告和错误,以及 从每个端点获得的信息。如果你需要更多的信息 关于错误,请考虑添加"-debug"标志,它将打印更多 每个端点统计信息的结尾处的信息。如果你还需要更多, 将--loglevel更改为info或debug,只是警告debug可能会打印很多 信息的。

建议为日志文件创建一个目录,例如 "/var/log/dynafed_storagestats/dynafed_storagestats.log",默认为 "/tmp/dynafed_storagestats.log"。

当一切看起来都按需要设置时,设置cron以运行以下命令 (添加对站点有意义的任何其他选项)。

dynafed-storage stats -c /etc/ugr/conf.d -m --loglevel=WARNING --logfile='/var/log/dynafed_storagestats/dynafed_storagestats.log'

如果不检查所有配置的端点,则特定的端点ID可以是 用"-e"标志指定:

dynafed-storage stats -c /etc/ugr/conf.d -m -e endpoint1 endpoint2

统计帮助:

dynafed-storage stats -h
usage: dynafed-storage stats [-h][-c [CONFIG_PATH [CONFIG_PATH ...]]][-e [ENDPOINT [ENDPOINT ...]]][-v][--logfile LOGFILE][--loglevel {DEBUG,INFO,WARNING,ERROR}][--memhost MEMCACHED_IP][--memport MEMCACHED_PORT][--debug][-m][-j [TO_JSON]][-o OUTPUT_PATH][-p [TO_PLAINTEXT]][--stdout][-x [OUTPUT_XML]]

optional arguments:
  -h, --help            show this help message and exit
  -c [CONFIG_PATH [CONFIG_PATH ...]], --config [CONFIG_PATH [CONFIG_PATH ...]]
                        Path to UGR's endpoint .conf files or directories.                        Accepts any number of arguments. Default:                        '/etc/ugr/conf.d'.  -e [ENDPOINT [ENDPOINT ...]], --endpoint [ENDPOINT [ENDPOINT ...]]                        Choose endpoint(s) to check. Accepts any number of                        arguments. If not present, all endpoints will be                        checked.  -v, --verbose         Show on stderr events according to loglevel.Logging options:  --logfile LOGFILE     Set logfile's path. Default:
                        /tmp/dynafed_storagestats.log
  --loglevel {DEBUG,INFO,WARNING,ERROR}
                        Set log output level. Default: WARNING.

Memcached Options:
  --memhost MEMCACHED_IP
                        IP or hostname of memcached instance.Default:
                        127.0.0.1
  --memport MEMCACHED_PORT
                        Port of memcached instance. Default: 11211

Output options:
  --debug               Declare to enable debug output on stdout.
  -m, --memcached       Declare to enable uploading storage stats to
                        memcached.
  -j [TO_JSON], --json [TO_JSON]
                        Set to output stats to json file. Add argument to set
                        filename.Default: dynafed_storagestats.json!!In
                        development!!
  -o OUTPUT_PATH, --output-dir OUTPUT_PATH
                        Set output directory for flags -j, -x and -p. Default:
                        '.'
  -p [TO_PLAINTEXT], --plain [TO_PLAINTEXT]
                        Set to output stats to plain txt file. Add argument to
                        set filename.Default: dynafed_storagestats.txt
  --stdout              Set to output stats on stdout.
  -x [OUTPUT_XML], --xml [OUTPUT_XML]
                        Set to output stats to json file. Add argument to set
                        filename.Default: dynafed_storagestats.json!!In
                        development!!
报告

注意:仅适用于azure和s3终结点

此子命令用于从存储器获取文件报告 端点。在这个时候,正在发展的是能够创造 文件转储的目的是使用for rucio的完整性检查 基于云的存储,如s3和azure,因为其他网格存储解决方案 dcache和dpm有自己的工具。

有关此文件转储的详细信息:ddmdarkdataandlostfiles

用法示例: 这将在/tmp/创建一个文件,其中包含"rucio"下的文件列表 来自终结点"entpoint1"和"endpoint2"的较前一天的前缀。这个 file name是endpoint s.conf文件中端点的id名称。

dynafed-storage reports -c ~/lab/dynafed_storagestats/tests/local/ -o /tmp/delete --delta 1 -p rucio -e endpoint1 endpoint2

报告帮助:

dynafed-storage reports --help
usage: dynafed-storage reports [-h][-c [CONFIG_PATH [CONFIG_PATH ...]]][--delta DELTA][-e [ENDPOINT [ENDPOINT ...]]][-v][--logfile LOGFILE][--loglevel {DEBUG,INFO,WARNING,ERROR}][-o OUTPUT_PATH][-p PREFIX]

optional arguments:
  -h, --help            show this help message and exit
  -c [CONFIG_PATH [CONFIG_PATH ...]], --config [CONFIG_PATH [CONFIG_PATH ...]]
                        Path to UGR's endpoint .conf files or directories.                        Accepts any number of arguments. Default:                        '/etc/ugr/conf.d'.  --delta DELTA         Mask for Last Modified Date of files. Integer in days.                        Default: 1  -e [ENDPOINT [ENDPOINT ...]], --endpoint [ENDPOINT [ENDPOINT ...]]                        Choose endpoint(s) to check. Accepts any number of                        arguments. If not present, all endpoints will be                        checked.  -v, --verbose         Show on stderr events according to loglevel.Logging options:  --logfile LOGFILE     Set logfile's path. Default:
                        /tmp/dynafed_storagestats.log
  --loglevel {DEBUG,INFO,WARNING,ERROR}
                        Set log output level. Default: WARNING.

Output options:
  -o OUTPUT_PATH, --output-dir OUTPUT_PATH
                        Set output directory. Default: '.'
  -p PREFIX, --path PREFIX, --prefix PREFIX
                        Set the prefix/path from where to start the recursive
                        list.Default: ''

重要提示:调试级别可能会打印大量数据 记录从请求中获取的内容。对于泛型方法来说 将打印正在分析的每个文件的所有统计信息。建议使用 此级别只有一个端点要进行故障排除。

端点配置

为了对每种存储类型使用正确的方法,一些设置应该 添加到endpoints.conf配置文件。

一般

pip3 install dynafed-storagestats
0

如果缺少此设置,脚本将尝试从终结点获取配额 使用相关的api。否则,默认配额为将使用1TB。

API

将尝试从存储终结点获取配额。如果违约失败 将使用1TB的。

(字节)

配额可以用字节、兆字节、兆字节等小写或大写形式指定。

pip3 install dynafed-storagestats
1

此设置告诉脚本在根据memcache中存储的最后一次检查的时间戳再次检查终结点之前等待的秒数。默认值为10分钟(600秒)。

天青

pip3 install dynafed-storagestats
2
列表blob(不推荐:通用)

此设置将列出blob容器中的所有对象,并添加 尺寸。 每个get请求获得5000个对象。因此,10005个对象需要3个get。

dav/http

pip3 install dynafed-storagestats
3
列出文件(不推荐:通用)

此设置将列出端点后面的所有对象,并添加 尺寸。为了使此方法递归地获取所有对象,dav服务器需要 以属性"无限"作为标题"深度"。不建议这样做 它是一种昂贵的方法,可以使用大量的内存,并且容易受到 拒绝服务。因此,如果可能,在 支持RFC4331

RFC4331

此设置将根据RFC4331查询DAV服务器。

S3

pip3 install dynafed-storagestats
4
列出对象(不推荐:通用)

此设置将列出bucket后面的所有对象,并添加 尺寸。 每个get请求获得1000个对象。因此,2005个对象需要3个get。

ceph管理

如果要使用ceph的管理api,请使用此设置。的证书 配置的用户应启用"bucket read"上限。

云表
< AWS >配置CloudWatch度量BucketSizeBytes和NumberOfObject。 此设置将轮询这两个。这些指标每天在UTC时间00:00更新。 有关CloudWatch的更多信息,请阅读AWS的文档。

pip3 install dynafed-storagestats
5

大多数s3端点都应该使用s3v4签名验证版本,并用作 默认设置,但如果需要,请使用S3。

工作原理

简单流程图

运行时,主函数将读取目录中的每个配置文件 由用户提供(默认为/etc/ugr/conf.d),并将标识所有 具有各自设置和授权凭据的不同终结点。

属于StorageStats子类的Python对象,具体取决于协议 为每个包含所有设置和 请求和处理存储状态和配额信息所需的方法。

联系memcache以查找ugr的端点连接统计信息。任何终结点 此处标记为"脱机"将被跳过,并将此标记通知 输出。对于那些"在线"的人,或者如果他们找不到 将联系信息以获取存储状态。信息是 然后在每个对象中存储字典属性"stats"。

然后可以将统计信息输出到memcache实例或stdout, 取决于调用此脚本时选择的选项。

警告/错误代码

<表><广告>关键字/设置 状态代码< /广告><正文>未知一般警告/错误未知/无效设置错误< 001 >< > >没有配置文件/id不匹配常规设置/DAV插件客户端证书cli_私钥连接超时SSL检查无效的URL架构不支持的插件azure插件azure.keys3插件S3.备用S3.私人钥匙S3.发布键s3.区域S3.签名版本存储统计脚本设置storagestats.apistoragestats.quotaStorageStats.频率< 072 >< > >memcached警告/错误未知memcached连接memcached索引StorageStats连接警告/错误未知客户端证书路径服务器SSL验证boto参数验证错误不支持RFC4331 DAV配额方法端点没有给定配额CEPH S3桶配额已禁用连接错误找不到元素/桶/blob端点脱机< 503 >< > >

开发设置

要在"编辑"模式下安装,请将"-e"标志添加到pip3。这将安装包 作为源代码的符号链接,因此所做的任何更改都会自动反映出来 运行可执行文件时。

pip3 install dynafed-storagestats
6

费尔南多·费尔南德斯–ffernandezgalindo@triumf.ca

在apache许可下发布。有关详细信息,请参见许可证

https://github.com/hep gc/dynafed_storagestats

贡献

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ws-consumer服务地址中的java动态属性   java如何比较整数列表,然后按升序排序?   javascript我正在使用java脚本调用一个函数,但它没有调用代码下面的方法,也没有调用secretitnames()函数   在文本窗格中多次使用Java insertIcon图标   JavaMSAL安卓。AuthenticationActivity完成,但用于身份验证请求的线程池线程仍处于等待状态   if语句中的java多范围比较   java toString()表示输出   java如何在jcstrest测试中生成指令重新排序   java我怎样才能运行它?   web应用程序中使用Hibernate和Spring的java问题   如何将字符串数据写入Java文本文件   如何在java命令提示符下运行已签名的jar文件?   java从我的菜单调用RCP应用程序   java如何等待Canvas/GraphicsContext完成任务,然后再继续执行代码块?