2016-11-21 6 views
4

ラムダの中で私は定期的にサービスをチェックインします。サーバからの結果の値をチェックし、その値をAWSクラウドウォッチに公開します。線図を作成するための基準として使用します。AWSラムダからNode.jsのクラウ​​ドウォッチメトリックに公開する方法

私の人生のために、私はこれがどのように行われたのかわかりません。 AWSのドキュメントを2時間ぐるぐる回してもどこにもつながりません。これも可能ですか?

これはラムダについてのメトリックではありませんが、これはのlamdbaから公開されたメトリックです。

コード:

'use strict'; 

const https = require('http'); 


exports.handler = (event, context, callback) => { 
    const now = new Date() 
    const yesterday = new Date(now.toISOString()) 
    yesterday.setTime(now.getTime() - (1000 * 60 * 60 * 24)); // 1 day ago) 

    const params = [ 
    ['limit',0], 
    ['pageStart',0], 
    ['startsOnOrAfter',encodeURIComponent(yesterday.toISOString())], 
    ['startsOnOrBefore',encodeURIComponent(now.toISOString())] 
    ].map(kv => `${kv[0]}=${kv[1]}&`).reduce((s1,s2) => s1.concat(s2)) 

    var uri = `http://service/query?${params}` 
    const req = https.request(uri, (res) => { 
    let body = ''; 
    res.setEncoding('utf8'); 
    res.on('data', (chunk) => body += chunk); 
    res.on('end',() => { 
     if (!res.headers[ 'content-type' ].match('application/.*?json')) { 
     return callback(`unknown content type ${res.headers[ 'content-type' ]}`,body) 
     } 
     body = JSON.parse(body); 
     if(body.total && body.total > 0) { 
     callback(null, body.total); // body.total to form a line chart 
     } 
     else { 
     callback({ 
      message: 'No plans found for time period', 
      uri: uri 
     }) 
     } 
    }); 
    }); 
    req.on('error', callback); 
    req.end(); 
}; 

答えて

9

はい、それが可能である:

const AWS = require('aws-sdk'); 

const metric = { 
    MetricData: [ /* required */ 
    { 
     MetricName: 'YOUR_METRIC_NAME', /* required */ 
     Dimensions: [ 
     { 
      Name: 'URL', /* required */ 
      Value: url /* required */ 
     }, 
     /* more items */ 
     ], 
     Timestamp: new Date(), 
     Unit: 'Count', 
     Value: SOME_VALUE 
    }, 
    /* more items */ 
    ], 
    Namespace: 'YOUR_METRIC_NAMESPACE' /* required */ 
}; 

const cloudwatch = new AWS.CloudWatch({region: 'eu-west-1'}); 
cloudwatch.putMetricData(metric, (err, data) => { 


if (err) { 
    console.log(err, err.stack); // an error occurred 
    } else { 
    console.log(data);   // successful response 
} 
}); 

まず、あなたのあなたがそれを送信するためにCloudWatchのAPIを使用して、あなたはメトリックとして保存したいデータを作成しますCloudWatchへ(もちろん、関数はCloudWatchのへの書き込み権限を持っている必要があります。)

詳しいドキュメントはここにある:正しいパスに私を置く

関連する問題