用于处理serverdensity.com api的cli工具
densli的Python项目详细描述
关于densli
densli是用于访问Server DensityAPI的命令行客户机,具有以下功能:
- Store authentication details in a config file, or pass them as command options
- Extensive error checking
- Display metric ranges as a sparklines graph
- Pretty ^{tt2}$ colours!
- Outputs JSON in an indented human readable (but still machine readable) format
- Can accept data to send as JSON via piped ^{tt3}$
- Suppress none JSON data output via option to pipe data to other processes
- Flexible ways to define API endpoints and data to send (different API path formats and add data via ^{tt3}$, named options or as extra unnamed arguments)
安装
可以使用pip:
从pypi安装应用程序pip install densli
或者使用git从Github克隆:
git clone git://github.com/serverdensity/densli.git cd densli python setup.py install
用法
densli使用json配置文件存储身份验证信息(account/username/passord)和其他选项。 要创建一个示例配置文件,您可以使用sd详细信息进行编辑,只需运行 densli第一次,它将报告创建配置的位置 文件(对于 操作系统,例如os x下的$HOME/Library/Application Support/Densli。
DENSLI U HOME环境变量
可以使用环境变量DENSLI_HOME更改此配置文件的位置,例如:
DENSLI_HOME=~/.densli export DENSLI_HOME densli ...
任何或所有身份验证详细信息都可以作为传递给densli的选项覆盖,这对于从不希望将身份验证详细信息存储在文件中的脚本运行非常有用,例如:
densli --username=myusername --password=mypassword --account=myaccount.serverdensity.com ...
–帮助
您可以使用-h或--help选项获得所有可用选项的列表/说明。
API端点
您可以使用densli从任何Server Density API端点获取结果,例如访问devices list:
densli devices list
上述格式“<;section>;<;method>;”也可以使用“/”或“.”来表示,例如:
- ^{tt12}$
- ^{tt13}$
数据
发送到终结点的数据可以定义为使用多个-d或--data选项的名称-值对(由等号=分隔),如json中的管道,或作为尾随的名称-值对参数,例如,这些都是相同的:
densli metrics getLatest -d deviceId=4e95d575160ba0212b003356 densli metrics getLatest --data=deviceId=4e95d575160ba0212b003356 densli metrics getLatest deviceId=4e95d575160ba0212b003356 echo '{ "deviceId": "4e95d575160ba0212b003356" }' | densli metrics getLatest
–安静
densli对获取设置和如何处理设置(通过STDOUT)或错误(通过STDERR)很有发言权,如果要将densli的输出传送到另一个进程,则可能不希望将任何内容发送到STDOUT,要使非api输出静音,请使用-q或-quiet选项。
–火花
densli命令的默认输出是人类可读的json(缩进4个空格,与sd api返回的格式无关),但是对于metrics getRange端点,您还可以使用-s或--spark选项获得输出为迷你条形图(使用unicode字符9601-9608)的结果,例如:
densli metrics getRange -d deviceId=4e95d575160ba0212b003356 -d metric=diskUsage \ -d rangeStart=012-08-25T00:00:00 -d rangeEnd=012-08-30T00:00:00 --spark
将输出如下内容:
>>> /dev Used for 012-08-25T00:00:00 - 012-08-30T00:00:00: ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ >>> /boot Used for 012-08-25T00:00:00 - 012-08-30T00:00:00: ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ >>> / Used for 012-08-25T00:00:00 - 012-08-30T00:00:00: ▇▇▇▇▇▇▇▇▇▇▆▃▁▁▁▁▁▁▁▁ >>> /var/lib/ureadahead/debugfs Used for 012-08-25T00:00:00 - 012-08-30T00:00:00: ▇▇▇▇▇▇▇▇▇▇▆▃▁▁▁▁▁▁▁▁
默认情况下,为了便于显示,迷你图的宽度限制为20个字符,但是您可以通过在config.json文件中将“最大图形宽度”选项设置为您选择的整数来覆盖它。
–以前
为metrics.getRange调用定义相对时间偏移量的快捷方式提供了-t和--timeago选项。这使您可以方便地查看到目前为止一段时间内的最新度量,并接受各种格式的天、小时、分钟和秒,例如:
densli metrics getRange deviceId=4e95d575160ba0212b003356 metric=diskUsage \ --spark -t 30m # past 30 minutes densli metrics getRange deviceId=4e95d575160ba0212b003356 metric=diskUsage \ --spark -t 1hour # past hour densli metrics getRange deviceId=4e95d575160ba0212b003356 metric=diskUsage \ --spark -timeago="1h 15min" # past hour and a quarter densli metrics getRange deviceId=4e95d575160ba0212b003356 metric=diskUsage \ --spark -timeago="1d 30s" # past day and 30 seconds
–回发
若要使使用管道输入数据向metrics.postback endpoint发送回发更加方便,可以使用-P或--postback选项将STDIN数据标记为原始json负载,该负载将按回发端点的预期在payload字段中发送,例如:
echo '{ "agentKey": "blah", "someMetric": [...], "someOtherMetric": 1.0 }' \ | densli metrics postback deviceId=4e95d575160ba0212b003356 --postback