11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonでNewRelic APIを叩いてサーバーの状態を取得する

Last updated at Posted at 2016-01-28

背景

NewRelicは
・Webアプリケーションのパフォーマンス監視
・Webインフラのパフォーマンス監視
・死活監視/アラート
などができる便利なサーバー監視ツールであり、それらの統計情報をNewRelicのサイトでみることができる。
http://qiita.com/y_uuki/items/dd4fce78b1bc32b64600
だが、リアルタイムのサーバーの状態を把握するには常にサイトを見ていなければならないので、NewRelicのAPIを使ってサーバーの状態を取得しようと思った。
NewRelicのAPIはPython, Ruby, NodeJSなどの言語でそれぞれ用意されているみたいなので、とりあえず今回はPythonのnewrelic-apiを使ってみた。

newrelic-apiのインストール

pipまたはeasy_installでインストールできる。

easy_install newrelic-api

API Keyの取得

AdminユーザでAPI Keyを取得した。
・参考記事
http://qiita.com/CkReal/items/23a08cd8088876761911

newrelic-apiでの各サーバーの状態取得

NewRelic APIの公式ドキュメントを参考にサーバーの状態を取得した。
http://new-relic-api.readthedocs.org/en/develop/ref/servers.html

APIを叩くと、各サーバーのid, 名前, 状態などが配列で取得できるので、今回はその中の色によってサーバーの状態を表す"health_status"の値を取得した。

health_status
green: 正常
yellow: 警告
red: 危険
gray: レポートなし

取得配列

{u'links': {u'server.alert_policy': u'/v2/alert_policies/{alert_policy_id}'},
 u'servers': [{u'account_id': #{newrelic_account_id},
   u'health_status': u'green',
   u'host': #{newrelic_host},
   u'id': #{server_id},
   u'last_reported_at': u'2016-01-28T07:22:06+00:00',
   u'links': {u'alert_policy': 205236},
   u'name': #{server_name},
   u'reporting': True,
   u'summary': {u'cpu': 0.06,
    u'cpu_stolen': 0.0,
    u'disk_io': 0.0,
    u'fullest_disk': 63.2,
    u'fullest_disk_free': 7547000000,
    u'memory': 63.7,
    u'memory_total': 1043333120,
    u'memory_used': 664797184}},
...
}]}

サンプルコード

Python
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from newrelic_api import servers

health_statuses = []
states = servers.Servers(#{API-key}).list()["servers"]
    for state in states:
        if state.has_key("health_status"):
            health_statuses.append(state["health_status"])

    print health_statues

出力結果

9台それぞれのサーバーの状態が取得できた

[u'green', u'green', u'green', u'green', u'green', u'green', u'green', u'green', u'orange']

newrelic.png

まとめ

NewRelicのAPIを叩いでサーバーの状態を取得することができた
これを基に、一定時間ごとのサーバーの状態取得や、危険状態になった時にローカル上でアラートを出すなどの応用をしていこうと思う。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?