【问题标题】:How to monitor API calls on EC2?如何监控 EC2 上的 API 调用?
【发布时间】:2015-08-21 17:50:32
【问题描述】:

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

【问题讨论】:

    标签: amazon-ec2 monitoring


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      根据您的访问级别,您可以使用 https://www.wireshark.org/ 之类的东西来监控所有流量并进行 url/协议过滤。你可以试试像http://papertrailapp.com/ 这样的日志聚合器,它有过滤功能。

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


      [1] 我为器乐工作。

      【讨论】:

        【解决方案3】:

        您可以设置一个简单的代理来测量 Web 请求时间并为此测量编写指标。

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

        例如,带有 devmetrics lib 的简单 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-31
          • 2021-02-02
          • 1970-01-01
          • 2017-10-02
          • 2012-10-05
          • 2010-10-17
          • 2023-03-22
          • 1970-01-01
          相关资源
          最近更新 更多