CloudWatchのメトリクスグラフを取得するNode.jsスクリプトを作る
はい。とりたかったです。ということでさわってみたまとめです。。 基本構成 だいたいこんな感じです。propsの中の値を書き換えて必要なデータを出力するようにします。 あとcloudwatch.getMetricWidge […]
広告ここから
広告ここまで
目次
はい。とりたかったです。ということでさわってみたまとめです。。
基本構成
だいたいこんな感じです。props
の中の値を書き換えて必要なデータを出力するようにします。
あとcloudwatch.getMetricWidgetImage()
はBufferで値を返してくるので、fs.writeFileSync()
でpngとして出力しています。
const AWS = require('aws-sdk')
const fs = require('fs')
const test = async () => {
const props = {
'width': 500,
'height': 400,
'start': '-PT3H',
'end': 'PT0H',
'view': 'timeSeries',
'stacked': false,
'metrics': [
[
'AWS/EC2',
'CPUUtilization',
'AutoScalingGroupName',
'AS_GROUP_NAME'
], [
'AWS/EC2',
'NetworkOut',
'InstanceId',
'i-XXXX',
{
'yAxis': 'right'
}
]
],
'stat': 'Average',
'period': 60
}
const widgetDefinition = {
MetricWidget: JSON.stringify(props)
}
const cloudwatch = new AWS.CloudWatch()
try {
const result = await cloudwatch.getMetricWidgetImage(widgetDefinition).promise()
console.log(result)
fs.writeFileSync('./test1.png', result.MetricWidgetImage)
} catch (e) {
console.log(e)
}
}
test()
AutoScaling GroupのCPU Utilizationを取得する
過去3時間のAS Group別のCPU負荷を出力するときのサンプルです。
const props = {
'width': 500,
'height': 400,
'start': '-PT3H',
'end': 'PT0H',
'view': 'timeSeries',
'stacked': false,
'metrics': [
[
'AWS/EC2',
'CPUUtilization',
'AutoScalingGroupName',
'AS_GROUP_NAME'
], [
'AWS/EC2',
'CPUUtilization',
'AutoScalingGroupName',
'AS_GROUP_NAME1'
], [
'AWS/EC2',
'CPUUtilization',
'AutoScalingGroupName',
'AS_GROUP_NAME2'
]
],
'stat': 'Average',
'period': 60
}
出力したものがこちら。
EC2のCPU UtilizationとNetworkOutを同時にみる
今度は項目を変えてみます。yAxis
でグラフの表示位置を指定できる様子です。
const props = {
'width': 500,
'height': 400,
'start': '-PT3H',
'end': 'PT0H',
'view': 'timeSeries',
'stacked': false,
'metrics': [
[
'AWS/EC2',
'CPUUtilization',
'InstanceId',
'INSTANCE_ID'
], [
'AWS/EC2',
'NetworkOut',
'InstanceId',
'INSTANCE_ID',
{
'yAxis': 'right'
}
]
],
'stat': 'Average',
'period': 60
}
完成品がこちら
API経由で返す
API経由で返す場合、Lambdaからはnew Buffer(data.MetricWidgetImage).toString('base64')
してやるのがよいかなと思います。
あと、 GetMetricWidgetImage: Metric Widget Structure and Syntaxからメトリクスを表示するときの構文サンプルみれますので、皆さん是非試してください。