【问题标题】:AWS Cloudwatch setup with Winston使用 Winston 设置 AWS Cloudwatch
【发布时间】:2018-12-26 15:47:00
【问题描述】:

我一直在阅读各种文章/文档并观看有关此主题的一些视频。我的问题是它们都以一种或另一种方式发生冲突。

我的目标是使用 winston 将所有 console.logs/error 消息从我的 ec2 服务器发送到 Cloudwatch,这样 ec2 终端本身就不会记录任何日志。

混淆点:

  1. 如果我使用 winston-aws-cloudwatchwinston-cloudwatch,我是否仍需要在 AWS 上设置 IAM 用户,还是这些会在 Cloudwatch 中自动生成日志?
  2. 如果我按照AWS documentation 设置 Cloudwatch,它会自动将任何控制台日志从 EC2 服务器流式传输到 Cloudwatch,还是两者都做?如果是第一个,那我不需要温斯顿?
  3. 我是否可以将日志从我的本地开发服务器发送到 Cloudwatch(仅用于测试目的,一旦确定它可以工作,然后我将在暂存中进行测试并最终将其移至生产环境)还是必须来自 EC2 实例?
  4. 我假设 AWS Cloudwatch 密钥与我用于帐户其余部分的 AWS 密钥相同?

当前代码:

var winston = require('winston'),
  CloudWatchTransport = require('winston-aws-cloudwatch');

const logger = new winston.Logger({
  transports: [
    new (winston.transports.Console)({
      timestamp: true,
      colorize: true
    })
  ]
});

const cloudwatchConfig = {
  logGroupName: 'groupName',
  logStreamName: 'streamName',
  createLogGroup: false,
  createLogStream: true,
  awsConfig: {
    aws_access_key_id: process.env.AWS_KEY_I_USE_FOR_AWS,
    aws_secret_access_key: process.env.AWS_SECRET_KEY_I_USE_FOR_AWS,
    region: process.env.REGION_CLOUDWATCH_IS_IN
  },
  formatLog: function (item) {
    return item.level + ': ' + item.message + ' ' + JSON.stringify(item.meta)
  }
};

logger.level = 3;

if (process.env.NODE_ENV === 'development') logger.add(CloudWatchTransport, cloudwatchConfig);

logger.stream = {
  write: function(message, encoding) {
    logger.info(message);
  }
};

logger.error('Test log');

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-iam amazon-cloudwatch winston


    【解决方案1】:
    1. 是的
    2. 取决于您配置的传输。如果您只配置 CloudWatch,那么它只会在那里结束。目前,您的代码有 2 种传输方式,一种是普通的控制台,另一种是 CloudWatchTransport,因此与您当前的代码一样。
    3. 只要您像通常使用任何 AWS 服务(S3、DB、...)一样指定密钥,您就可以将日志从本地/开发设备推送到 CloudWatch。
    4. 取决于您的 IAM 用户是否具有权限。但有可能是的。

    【讨论】:

    • 第 1 点不是是或否的问题。是“是”您需要设置 IAM 用户还是“是”他们会自动生成日志。我假设是前者,但想检查一下。
    • 您始终需要 IAM 用户对 CloudWatch 进行身份验证。客户端如何在未经身份验证的服务上自动生成日志?您需要某种身份验证方式,IAM 用户就是其中一种方法。
    • 我以为是这样。可能值得编辑您的答案,而不是输入“是”,因为它不清楚并且可能会让其他不太熟悉 AWS 的人感到困惑。
    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 2023-03-18
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2021-01-01
    相关资源
    最近更新 更多