Включить имя лог-группы в индекс для Lambda - PullRequest
0 голосов
/ 04 октября 2019

Я передаю данные из журналов наблюдения за облаком в Elastic Search Cluster и хочу, чтобы шаблон индекса включал группу журналов. Ниже приведен лямбда-код.

По умолчанию -

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

1 Ответ

1 голос
/ 05 октября 2019

Я не уверен, почему вы помещаете имя группы журналов в имя индекса, но если вы хотите отфильтровать вас по журналу в группе журналов, вы можете фильтровать, используя имя источника журнала, которое является 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, "-");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...