こんにちは! JQです。
前回は『OSS編~Grafanaを試してみる01~』と題して、Grafanaを試してみました。
今回は『OSS編~Grafanaを試してみる02~』と題して、CloudWatchから取得したデータでGrafanaを試してみたいと思います。
1.スクリプト作成
CloudWatchから取得したメトリクスデータをGraphiteに登録するスクリプトを作成します。
今回はEC2のCPUUtilizationを取得します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import time import datetime import os from socket import socket import boto.ec2.cloudwatch CARBON_SERVER = '127.0.0.1' CARBON_PORT = 2003 delay = 60 if len(sys.argv) > 1:     delay = int(sys.argv[1]) if sys.argv[2]:     instanceid = sys.argv[2] else:     sys.exit(1) def get_metrics():     cw = boto.ec2.cloudwatch.connect_to_region('us-east-1')     metric = cw.get_metric_statistics(         300,         datetime.datetime.utcnow() - datetime.timedelta(seconds=600),         datetime.datetime.utcnow(),         'CPUUtilization',         'AWS/EC2',         'Average',         dimensions={'InstanceId': [instanceid]}     )     return metric sock = socket() try:     sock.connect((CARBON_SERVER, CARBON_PORT)) except:     print "Couldn't connect to %(server)s on port %(port)d, is carbon-agent.py running?" % {'server': CARBON_SERVER, 'port': CARBON_PORT}     sys.exit(1) while True:     lines = []     metrics = get_metrics()     for i in metrics:         lines.append("aws.%s.%s %s %s" % (instanceid,                                           'CPUUtilization',                                           i['Average'],                                           int(time.mktime(                                               i['Timestamp'].timetuple()                                               ))))     message = '\n'.join(lines) + '\n'     print "sending message\n"     print '-' * 80     print message     print     sock.sendall(message)     time.sleep(delay) | 
2.実行
上記のスクリプトを実行します。
第一引数にdelayと第二引数にinstanceidを指定します。
| 1 2 3 4 5 6 7 8 9 | $ sudo python metrics_graphite.py 60 i-xxxxxx sending message -------------------------------------------------------------------------------- aws.i-xxxxxx.CPUUtilization 0.0 1411102500 aws.i-xxxxxx.CPUUtilization 0.0 1411102620 aws.i-xxxxxx.CPUUtilization 1.04 1411102680 aws.i-xxxxxx.CPUUtilization 0.0 1411102380 | 
3.Grafanaで確認
少しまったらGrafanaで確認してみましょう。
成功していれば上記のように表示されます。
いかがでしたでしょうか?
次回もお楽しみに!!!


