nrql simple是一个小型的python库,它提供了一种与new relic insights查询api交互的便捷方式。可以通过编程方式或通过命令行与此库交互。

nrql-simple的Python项目详细描述


Build Statuscodecov

nrql simple是一个小的python库,它提供了一种方便的方法来 与New Relic Insights query API交互。 您可以通过编程方式或通过命令与此库交互 行。

安装

nrql simple在Python Package Index (PyPI)上可用。你可以安装 nrql使用pip很简单。

virtualenv env
source env/bin/activate
pip install nrql-simple

要安装开发版本,请运行:

pip install https://github.com/AnthonyBloomer/nrql-simple/archive/master.zip

关于

new relic insights查询api是用于查询insights的rest api 事件数据。通过https请求提供标准nrql查询之后, 查询api返回用于解析的json响应。

要使用api,需要一个查询键。可以有多个查询键, 任何查询键都可以用来启动任何insights api查询。如果你 有多个系统查询洞察或不同的数据目的地, new relic建议您使用多个查询键来增强数据 安全。

创建新的查询键:

  1. 转到insights.newrelic.com>; 管理数据>;API密钥。
  2. 选择查询键标题旁边的加号图标。
  3. 输入密钥的简短说明。
  4. 选择“保存笔记”。

你还需要记下你的新遗物帐户ID。 新文物帐户的帐户ID:

  1. 登录到rpm.newrelic.com
  2. 在url栏中,复制 网址:https://rpm.newrelic.com/accounts/ACCOUNT_ID/

用法

第一步是初始化nrql对象并设置api密钥和 帐户ID.

fromnrql.apiimportNRQLnrql=NRQL()nrql.api_key='YOUR_API_KEY'nrql.account_id='YOUR_ACCOUNT_ID'

或者,可以将api密钥和帐户id导出为环境 变量。

$ export NR_API_KEY='YOUR_API_KEY'
$ export NR_ACCOUNT_ID='YOUR_ACCOUNT_ID'

然后简单地将nrql语句传递到query函数中。NRQL公司 是一种类似于sql的查询语言,用于对其进行调用 新遗迹洞察事件数据库。参考NRQL documentation 示例和用法信息。

考虑以下示例,该示例获取容器的唯一数量 本季度以来每个应用程序的ID。

req=nrql.query("select uniqueCount(containerId) from NrDailyUsage facet apmAppName since this quarter")forkinreq['facets']:print("%s : %s"%(k['name'],k['results'][0]['uniqueCount']))

命令行用法

usage: nrql [-h] [--region REGION] [--env ENV] [--filename FILENAME]
                   [--csv] [--verbose]
                   stmt

positional arguments:
  stmt                  The NRQL statement.

optional arguments:
  -h, --help            show this help message and exit
  --region REGION, --r REGION
                        Pass this flag to set your region (EU or US) By
                        default the region is set to US.
  --env ENV, --e ENV    Environment handler.
  --filename FILENAME, --f FILENAME
                        The output CSV filename. Default is events.csv
  --csv, --c            Pass this flag to output the Event data to CSV.
  --verbose, --v        Pass this flag if you want the whole response.

要使用cli,必须首先将api密钥和帐户id导出为 环境变量。

$ export NR_API_KEY='YOUR_API_KEY'
$ export NR_ACCOUNT_ID='YOUR_ACCOUNT_ID'

然后,用nrql语句调用nrql命令作为 争论。

nrql "select uniqueCount(containerId) from nrdailyusage where apmAppName = 'SinatraApp' since this quarter"

上面的命令将输出如下格式的json:

{"results":[{"uniqueCount":175}]}

默认情况下,输出将不包括performanceStatsmetadata来自响应的对象。输出整个json 响应,传递--verbose标志。

nrql "select uniqueCount(containerId) from NrDailyUsage facet apmAppName since this quarter" --verbose

管理多个帐户

如果您希望在帐户之间轻松切换,可以使用 environment类方法。如果使用命令行工具,请使用 env命令行参数。例如:

fromnrql.apiimportNRQLnrql=NRQL()nrql.environment="PROD"

或通过命令行:

nrql "select uniqueCount(containerId) from NrDailyUsage facet apmAppName since this quarter" --env='PROD'

默认情况下,程序查找环境变量 NR_API_KEYNR_ACCOUNT_KEY

如果env参数不是none,则程序将附加 环境字符串到NR_API_KEY。例如:

NR_API_KEY_PROD

命名环境变量时,请确保遵循以下命名 惯例。

输出为csv

要通过cli将事件数据导出到csv文件,请传递--csv 参数,例如:

nrql "select * from Transaction where appName = 'RabbitMQ' since this quarter" --csv

这将把csv文件(events.csv)导出到当前工作 目录。

要更改输出文件,请传递--filename参数:

nrql "select * from Transaction where appName = 'RabbitMQ' since this quarter" --csv --filename='rabbit.csv'

您还可以通过编程方式导出事件数据:

nrql=NRQL()nrql.csv=Truenrql.filename='events.csv'nrql.query("select * from Transaction where appName = 'RabbitMQ' since this quarter")

这将把events.csv输出到当前工作目录。

测试

pythonunittest模块包含自己的测试发现函数, 您可以从命令行运行它:

python -m unittest discover tests/

贡献

  • 派生项目并在本地克隆。
  • 为你要做的事情创建一个新的分支。
  • 推送到原始存储库。
  • 在githu中创建新的拉取请求b.

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

推荐PyPI第三方库


热门话题
java JavaFX 11可编辑组合框引发IndexOutOfBoundsException   java选择数组中的数组元素   java我从来没有找到创建2D ArrayList的正确方法   java JPA查找orderById的顶部数据,并按字符串过滤Id   使用java在ejabberd中进行xmpp外部身份验证   从ajax调用向java传递点运算符   java如何使用ReadWriteLock   使用Spring控制器和jQueryAjax的java重定向   java使JFrame中的JPanel可滚动   java如何用多个。jar库?   java EditText在RecyclerView中失去了对滚动的关注   java为什么我们必须扩展Servlet或GenericServlet或HttpServlet来创建Servlet应用程序?如果不扩展,我们可以开发Servlet应用程序吗?   使用递归java查找数组中的最大值   具有不同字段数的html表单的java域传输对象   java文本视图扩展;不支持操作异常   java如何使用iText的HTMLWorker类将多语言HTML字符串呈现为PDF