Amazon ec2 如何监控EC2上的API调用?

Amazon ec2 如何监控EC2上的API调用?,amazon-ec2,monitoring,Amazon Ec2,Monitoring,我需要找到AmazonEC2实例发出的API(对外部实例的RESTAPI调用)调用的响应时间(有一个运行在EC2上的应用程序进行这些调用)。如果我也能根据正则表达式或完整的URL过滤调用,那就太好了。我们一直在考虑记录调用和分析数据,或者使用Dynatrace、Nagios等工具,这样就不需要更改代码。 如果有人实施了这样的解决方案,请让我们知道 这可能不是一个完整的答案,但遵循从日志开始的想法,我建议您考虑使用Cloudwatch:根据您拥有的访问级别,您可以使用类似的方法来监控所有流量并进行

我需要找到AmazonEC2实例发出的API(对外部实例的RESTAPI调用)调用的响应时间(有一个运行在EC2上的应用程序进行这些调用)。如果我也能根据正则表达式或完整的URL过滤调用,那就太好了。我们一直在考虑记录调用和分析数据,或者使用Dynatrace、Nagios等工具,这样就不需要更改代码。
如果有人实施了这样的解决方案,请让我们知道

这可能不是一个完整的答案,但遵循从日志开始的想法,我建议您考虑使用Cloudwatch:

根据您拥有的访问级别,您可以使用类似的方法来监控所有流量并进行url/协议过滤。您可以尝试类似的日志聚合器,它具有过滤功能

正如您所说的,您还可以使用某种形式的APM,如dynatrace、statsd、instrumental[1]、newrelic、datadog等,在应用程序内部进行监视



[1] 我为instrumental工作。

您可以设置一个简单的代理,用于测量web请求时间,并为该度量编写度量标准

有一些很好的工具,看看或者

例如,具有devmetrics库的简单nodejs代理:

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);