簡體   English   中英

將 CloudWatch 日志發送到數據庫

[英]Send CloudWatch logs to database

我正在嘗試將我們的 Cloudwatch 日志保存在內部部署的 Postgres 數據庫中。 我目前正在將日志導出到 S3 並保存在 DynamoDB 中。 我現在的要求是使用節點和 AWS js-SDK 將它保存在我們的數據庫中。 我對節點和 js-SDK 不是很了解,所以我會非常感謝任何想法。

我嘗試了一個簡單的實現。

const pools = require('../src/common/db'),
const AWS = require('aws-sdk');

// set the cwl
let cwl = new AWS.CloudWatchLogs({
  region: 'us-east-1',
  accessKeyId: 'ABCD1234',
  secretAccessKey: 'MNBV76543',
  Bucket: 'My_bucket'
});

// Get the events
cwl.getLogEvents({
  logGroupName: 'OurLogGroupname',
  logStreamName: 'specifiedLogstream'
}, (error, success ) =>{
  if(error){
    console.log(error)
  }
  console.log(success)
})

// Try saving to db
let sql = ''
pools.query_db('abc', 'INSERT INTO logging.aws_logs(request_id, duration, billed_duration) VALUES (?,?,?)', function(err, res){
  if(err) return callback(err);
  callback();
})

如果您真的想將來自 Cloudwatch 的所有消息存儲到數據庫中,我更喜歡以下方式:

  • 向您的 Cloudwatch LogGroup 添加訂閱

  • 此訂閱可以配置為觸發 Lambda

  • Lambda 將具有以下邏輯:

    1. 從事件變量中提取消息
    2. 准備您的 SQL 聲明
    3. 連接到數據庫(如果不可能重試)
    4. 執行 SQL 語句(如果不行重試)
    5. 完畢

關於如何提取 Cloudwatch 訂閱調用消息的一個很好的例子是將這些日志發送到 Opensearch(搜索藍圖)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM