OpenStackの監視をMackerelでやってみる

OpenStackシステムの監視を行いたい場合はZabbix等を利用するのも良いですが、SaaSの監視サービスであるMackerelを利用すると色々面倒な準備を行わずとも監視の開始が出来ます。Mackerelは標準でCPU使用率等の監視を行ってくれるのですが、OpenStackシステムに関連する項目を独自監視を行いたい場合はカスタムメトリックの投稿で簡単に行う事が出来ます。以下カスタムメトリックの投稿の方法が記述されています。

http://help-ja.mackerel.io/entry/advanced/custom-metrics

要約すると以下の3つになります。

  1. メトリックは次の形式でタブ区切りで標準出力。
    {metric name}\t{metric value}\t{epoch seconds}
  2. 名前(metric name)はドット区切りで最後の区切りの名前がグラフの値の表示名となる。最後の区切り前までが同一の場合は同一グラフとして一つのグラフに表示されます。
  3. 環境変数MACKEREL_AGENT_PLUGIN_METAが設定された時にグラフ定義を出力するとグラフの形式を定義出来る(オプション)

このMackerelでカスタムメトリックを投稿したい場合にGoはライブラリが用意されていますが、Python用は特に用意されてないため上記3点を抑えた形で自分で書くことになります。

カスタムメトリックを投稿するコード例

以下OpenStack SDKを利用して特定のプロジェクト内のサーバ数をカウントして投稿する例です。OpenStackへの接続情報はargparseを使って引数として指定出来るようにしてあります。今回はグラフの表示形式の指定は省略しています。

import argparse
import time
from openstack import connection


def main():
    p = argparse.ArgumentParser()
    p.add_argument("-authurl", default="http://localhost:5000/v2.0")
    p.add_argument("-user", default="admin")
    p.add_argument("-password", default="password")
    p.add_argument("-tenant", default="admin")
    args = p.parse_args()
    conn = connection.Connection(auth_url=args.authurl, 
                                 username=args.user,
                                 password=args.password, 
                                 project_name=args.tenant)
    server_list = []
    for server in conn.compute.servers():
        server_list += [server]
    l = map(str, ["openstack.servers", len(server_list), time.time()])
    print "\t".join(l)

if __name__ == '__main__':
    main()

Mackerelの設定

まずサーバーにMackerelのAgentをインストールします。インストール後に上記のようなコードを含んだファイルを例えば/opt/openstack.pyとして保存します。Mackerel Agentの設定ファイルである/etc/mackerel-agent/mackerel-agent.confの最終行辺りに以下を追加します。Mackerel AgentはDefaultで1分毎に指定のcommandを実行して、標準出力から値を取得してくれます。自動で生成されるためグラフの追加等の作業は必要ありません。

[plugin.metrics.openstack]
command = "python /opt/openstack.py -authurl=http://localhost:5000/v2.0 -user="admin" -password=password -tenant=admin"

まとめ

Mackerelを使うと簡単に監視メトリックの追加が可能です。OpenStackに関連した項目であれば、OpenStack SDKを使ってサーバーリストを取得して以下のようにNova等のAPIのレスポンスタイム等の監視も出来ます。

スクリーンショット 2016-01-03 8.41.15

広告
OpenStackの監視をMackerelでやってみる

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中