gpt4 book ai didi

javascript - 在 Lambda 的索引名称中包含日志组名称

转载 作者:行者123 更新时间:2023-12-02 22:49:29 25 4
gpt4 key购买 nike

我正在将数据从云监视日志流式传输到 Elastic Search 集群,并且我希望索引模式包含日志组。下面是 lambda 代码。

默认 -

var source = buildSource(logEvent.message, logEvent.extractedFields);
source['@id'] = logEvent.id;
source['@timestamp'] = new Date(1 * logEvent.timestamp).toISOString();
source['@message'] = logEvent.message;
source['@owner'] = payload.owner;
source['@log_group'] = payload.logGroup;
source['@log_stream'] = payload.logStream;
var x = source['@log_group'];
console.log('hello');
// index name format: cwl-YYYY.MM.DD
var indexName = [
'cwl-' + '- ' + timestamp.getUTCFullYear(), // year
('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
('0' + timestamp.getUTCDate()).slice(-2) // day,
].join('.');

我需要改变

var source = buildSource(logEvent.message, logEvent.extractedFields);
source['@id'] = logEvent.id;
source['@timestamp'] = new Date(1 * logEvent.timestamp).toISOString();
source['@message'] = logEvent.message;
source['@owner'] = payload.owner;
source['@log_group'] = payload.logGroup;
source['@log_stream'] = payload.logStream;
var x = source['@log_group'];
// index name format: cwl- myloggroup - YYYY.MM.DD
var indexName = [
'cwl-' + x + '- ' + timestamp.getUTCFullYear(), // year
('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
('0' + timestamp.getUTCDate()).slice(-2) // day,
].join('.');

编辑

  var indexName = [
'cwl-' + x + '-' + timestamp.getUTCFullYear(), // year
('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
('0' + timestamp.getUTCDate()).slice(-2),source['@log_group'].toString() // day,
].join('.');

但是由于此更改,数据流会失败。我不确定什么可能导致这个问题。 enter image description here

硬编码文本

// index name format: cwl-YYYY.MM.DD
var indexName = [
'cwl-' + 'test' + timestamp.getUTCFullYear(), // year
('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
('0' + timestamp.getUTCDate()).slice(-2) // day
].join('.');

enter image description here

最佳答案

我不确定为什么你要把日志组名称放在索引名称中,但是如果你想在日志组上过滤基于日志的日志,你可以使用日志源名称 log-group 进行过滤。

enter image description here

由于命名约定,在索引中附加日志组名称时,ELK 可能会无法创建索引,因为 AWS 日志组通常包含斜杠字符。

索引名称的规则在 MetaDataCreateIndexService 254 中编码。本质上:

Lowercase only
Cannot include \, /, *, ?, ", <, >, |, space (the character, not the word), ,, #
Indices prior to 7.0 could contain a colon (:), but that's been deprecated and won't be supported in 7.0+
Cannot start with -, _, +
Cannot be . or ..
Cannot be longer than 255 characters

第二件事,您可以看到硬编码的名称,因为您将其放在正确的位置,就像第一次尝试在日期部分添加名称一样。日期时间处理器的目的是将文档指向正确的时间通过使用日期数学索引名称支持,基于文档中的日期或时间戳字段的索引。

 var indexName = [
'cwl-'+source['@log_group'].toString()+ '-' + timestamp.getUTCFullYear(), // year
('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
('0' + timestamp.getUTCDate()).slice(-2), // day,
].join('.');

或者您可以替换日志组名称中的所有特殊字符。

source['@log_group'].toString().replace(/[^A-Z0-9]+/ig, "-");

关于javascript - 在 Lambda 的索引名称中包含日志组名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com