使用New Relic的NerdGraph来获取APM的事务信息

首先

目前在执行NRQL时,我们曾经使用”Insights API”作为应用程序,但现在已经过时。

根据文件中的内容,目前建议使用“NerdGraph”。

请使用NerdGraph来查询New Relic数据,这是目前优先的方式,本API不再推荐使用。引用:https://docs.newrelic.com/jp/docs/apis/insights-apis/query-insights-event-data-api/

为了将其转换成使用NerdGraph的形式,本次总结了关于使用该NerdGraph执行NRQL的调查。

NerdGraph是什么

用于浏览New Relic数据和配置各种功能的GraphQL格式的API。

请参考以下链接:https://docs.newrelic.com/jp/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/

使用 NerdGraph 可以做的事情

    执行从NRDB中获取信息的查询。进行New Relic各功能的设置(账户设置、警报、仪表板等)。

在NerdGraph中无法导入事件数据。请使用另一个API(用于数据摄取的API)。
参考链接:https://docs.newrelic.com/jp/docs/apis/intro-apis/introduction-new-relic-apis/#data-type-apis

本次我们发送了用于获取数据的NRQL执行请求。

查询

准备API密钥

在NerdGraph的认证过程中,会使用用户API密钥。请事先准备好这个API密钥。

https://docs.newrelic.com/jp/docs/apis/intro-apis/new-relic-api-keys/#user-api-key

请点击以上链接获取关于新雷克 API 密钥的详细信息。

本次的NRQL查询语句

本次, 我们将执行以下的NRQL语句作为获取APM事务信息的查询。

SELECT * FROM Transaction

请使用GraphiQL资源管理器执行查询。

可以利用已经准备好的GraphiQL浏览器探索器,在浏览器上执行。
https://api.newrelic.com/graphiql

查询

{
  actor {
    account(id: xxxxxxx) {
      nrql(query: "SELECT * FROM Transaction") {
        results
      }
    }
  }
}

请参考以下链接: https://docs.newrelic.com/jp/docs/apis/nerdgraph/examples/nerdgraph-nrql-tutorial/

通过参考NerdGraph的每个字段信息和文档,可以轻松验证查询,因此可以创建查询。

参考画面 – : 画面供参考

image.png

使用cURL执行查询

向 https://api.newrelic.com/graphql 发送一个POST请求。

curl https://api.newrelic.com/graphql \
  -H 'Content-Type: application/json' \
  -H 'API-Key: NRAK-xxxx' \
  --data-binary '{"query": "{\n  actor {\n    account(id: xxxxxxx) {\n      nrql(query: \"SELECT * FROM Transaction\") {\n        results\n      }\n    }\n  }\n}\n"}'

指定API密钥和帐户ID。

用言語を使ってデータベースからデータを取得する。

※ 使用Python 3.8版本

使用 GraphQL 的客户端模块 gql

pip install gql==2.0.0

请用中文翻译以下内容,只需要一种选项: “コード”

from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport

api_key = "XXXX"  # your nr user api key
nr_id = "xxxxxxx"  # your nr account id

query_text = "SELECT * FROM Transaction"

url = "https://api.newrelic.com/graphql"
headers = {
    "API-Key": api_key,
    "Content-type": "application/json",
}

transport = RequestsHTTPTransport(url=url, headers=headers)
client = Client(transport=transport, fetch_schema_from_transport=True)

query = gql(
"""
{
  actor {
    account(id: %s) {
      nrql(query: "%s") {
          results
      }
    }
  }
}
""" % (nr_id, query_text)
)

result = client.execute(query)

query_results = result["actor"]["account"]["nrql"]["results"]
print(query_results)

指定API密钥和账户ID。

执行

python app.py

总结

目前,推荐使用基于GraphQL的NerdGraph来访问NewRelic上的数据。由于其采用GraphQL格式,因此可以使用各种语言的GraphQL客户端发起请求。

这次主要关注了NRQL的执行,但还有很多其他用途,比如创建仪表盘和警报条件,生成嵌入URL等,NerdGraph为此提供了许多教程文档,我想继续利用它们。

广告
将在 10 秒后关闭
bannerAds