使用Mackerel来显示NewRelic的图表

我一直在使用NewRelic来监视应用程序的性能,但为了更高效地监视服务器,我也引入了Mackerel。

由于分别查看这两个工具很不方便,所以我将NewRelic的图表制作成了Mackerel的一部分。

创建平均响应速度的图表

你可以通过NewRelic按照以下方式获取到这样的数据。

参考资料:在NewRelic的API中获取指标
https://docs.newrelic.com/docs/apis/rest-api-v2/application-examples-v2/obtain-web-transaction-time-data-v2

curl -X GET 'https://api.newrelic.com/v2/applications/${APPID}/metrics/data.json' \ 
       -H 'X-Api-Key:${APIKEY}' -i \ 
       -d 'names[]=WebTransactionTotalTime&values[]=average_response_time' 
{
  "metric_data": {
    "from": "2017-09-26T05:42:53+00:00",
    "to": "2017-09-26T06:12:53+00:00",
    "metrics_not_found": [],
    "metrics_found": [
      "WebTransactionTotalTime"
    ],
    "metrics": [
      {
        "name": "WebTransactionTotalTime",
        "timeslices": [
          {
            "from": "2017-09-26T05:41:00+00:00",
            "to": "2017-09-26T05:42:00+00:00",
            "values": {
              "average_response_time": 198
            }
          },
          {
            "from": "2017-09-26T05:42:00+00:00",
            "to": "2017-09-26T05:43:00+00:00",
            "values": {
              "average_response_time": 201
            }
          },
以下略

所以,将此Json格式化为Mackerel使用的格式,并将其发布到MackerelAPI,即可创建图形。
您需要将NewRelic的日期时间转换为Epoch秒。

参考:通过API将指标发布到Mackerel

[
  {
    "hostId": "マカレルのホストのID",
    "name": "custom.newrelic_restime.BookLive",
    "time": 1506404760,
    "value": 210
  },
  {
    "hostId": "マカレルのホストのID",
    "name": "custom.newrelic_restime.BookLive",
    "time": 1506404820,
    "value": 216
  },
以下略
image.png

但是我想要的图表不是这个…

我希望能够在Mackerel上看到像NewRelic那样,可以看到每个数据库和外部通信的图表堆叠起来的情况。

image.png

看起来要仔细查看这里的底部,并努力获取并计算才行…

curl -X GET 'https://api.newrelic.com/v2/applications/${APPID}/metrics/data.json' \ 
       -H 'X-Api-Key:${APIKEY}' -i \ 
       -d 'names[]=Datastore/${DBTYPE}/allWeb
           &names[]=Datastore/${DBTYPE}/allWeb
           &names[]=Datastore/${DBTYPE}/allWeb
           &names[]=External/allWeb
           &names[]=WebTransactionTotalTime
           &names[]=HttpDispatcher
           &values[]=average_response_time
           &values[]=call_count'

获取数据后,进行计算并将结果转换为秒数等格式,然后将其发布到Mackerel。

Application total time = WebTransactionTotalTime - Datastore time - Database time - (Ruby) Database - Web external - Memcache
Datastore time = ( Datastore/${DBTYPE}/allWeb:average_response_time * Datastore/${DBTYPE}/allWeb:call_count ) / HttpDispatcher:call_count
Web external = ( External/allWeb:average_response_time * External/allWeb:call_count ) / HttpDispatcher:call_count

出来了。

image.png

只要不需要查看详细信息,似乎不需要看NewRelic了。

广告
将在 10 秒后关闭
bannerAds