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

Javascript 在Lambda的索引名中包含日志组名称,javascript,amazon-web-services,aws-lambda,kibana,Javascript,Amazon Web Services,Aws Lambda,Kibana,我正在将数据从cloud watch日志流式传输到弹性搜索集群,我希望索引模式包括日志组。下面是lambda代码 默认情况下— var source = buildSource(logEvent.message, logEvent.extractedFields); source['@id'] = logEvent.id; source['@timestamp'] = new Date(1 * logEvent.timestamp).toISOString(); source['@message

我正在将数据从cloud watch日志流式传输到弹性搜索集群,我希望索引模式包括日志组。下面是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('.');
但随着这种变化,数据流传输失败了。我不确定是什么导致了这个问题。

硬编码文本

// 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('.');

我不知道为什么要将日志组名称放在索引名称中,但如果要根据日志组筛选日志,可以使用日志组的日志源名称进行筛选

由于命名约定,如果在索引中附加日志组名称,可能会出现麋鹿无法创建索引的情况,因为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
也可以替换日志组名称中的所有特殊字符

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

我不知道为什么要将日志组名称放在索引名称中,但如果要基于日志组筛选日志,可以使用日志源名称(即日志组)进行筛选

由于命名约定,如果在索引中附加日志组名称,可能会出现麋鹿无法创建索引的情况,因为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
也可以替换日志组名称中的所有特殊字符

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

你能从索引名中删除空格并重试吗?不起作用,我在上面的问题中添加了关于我尝试的编辑部分。你有任何错误吗?你是使用ElasticSearch托管服务还是自己托管?你能检查一下我添加的映像吗?我添加了一个console.log,它打印了正确的模式,但我在试运行期间失败了。一旦我删除我的更改,一切都开始工作,我开始在Kiabanai中看到日志如果你硬编码indexName,你看到kibana中的所有文档了吗?你能从你的索引名中删除空格并重试吗?不起作用,我添加了关于我在上述问题中尝试的编辑部分。你有任何错误吗?你是使用ElasticSearch托管服务还是自己托管?你能检查一下我添加的映像吗?我添加了一个console.log,它打印了正确的模式,但我在试运行期间失败了。一旦我删除我的更改,一切都开始工作,我开始在Kiabanai中看到日志如果您使用硬代码indexName,您是否看到kibana中的所有文档?我们需要确保我们也使用toLowercase,以防日志组中有上面提到的大写字母。为了支持这一点,更多信息请参见顶部Q+A:我们需要确保在日志组包含上面答案中提到的大写字母时也使用toLowercase。为了支持这一点,更多信息请参见顶部Q+A: