如何监控EC2上的API调用?

时间:2015-06-24 02:54:19

标签: amazon-ec2 monitoring

我需要找到从亚马逊EC2实例发出的API(Rest API调用外部实例)调用的响应时间(在EC2上运行的应用程序正在进行这些调用)。如果我还可以根据正则表达式或完整的网址过滤调用,那将会很棒。我们一直在考虑记录调用和分析数据或使用Dynatrace,Nagios等工具,因此不需要更改代码。 如果有人实施了这样的解决方案,请告诉我们。

3 个答案:

答案 0 :(得分:0)

这可能不是一个完整的答案,但是按照从日志开始的想法,我建议使用Cloudwatch:https://aws.amazon.com/cloudwatch/details/#log-monitoring

答案 1 :(得分:0)

根据您的访问级别,您可以使用https://www.wireshark.org/之类的内容来监控所有流量并进行网址/协议过滤。您可以尝试使用http://papertrailapp.com/等日志聚合器进行过滤。

如你所说,你也可以使用某种形式的APM,如dynatrace,statsd,instrumental [1],newrelic,datadog等,在你的应用程序中进行监控。

[1]我为乐器工作。

答案 2 :(得分:0)

您可以设置一个简单的代理,用于衡量Web请求时间并为此度量编写度量标准。

有一些不错的工具,请查看http://datadoghq.com/producthttp://devmetrics.io/logslib

例如,简单的nodejs代理与devmetrics lib:

var httpProxy = require('http-proxy');
var logger = require('devmetrics-core');
var http = require('http');
var proxy = new httpProxy.createProxyServer({});
var proxyServer = http.createServer(function (req, res) {
  // now
  var start_time = new Date().getTime();
  proxy.web(req, res, { target: 'http://localhost:80' });
  res.on('finish', function() {
    var latency = new Date().getTime() - start_time;
    console.log("The request was proxied in " + latency + "ms");
    logger.appGauge('web_request', latency);
  });
});
proxyServer.listen(3000);