Pull to refresh

Comments 6

input type: log исключен много релизов назад.
Может эффективнее разобрать не через processors, а сразу в parsers?

filebeat.inputs:
  - type: filestream    
    paths:
      - /var/www/project/tests/bin/Debug/net6.0/Logs/e2e*.log
    parsers:
     - ndjson:
       target: ""
       add_error_key: true

Зачем переименовывать поля, если можно сразу в исходном JSON написать как надо?

      - rename:
          fields:
            - from: "Properties.TestResult.Timestamp"
              to: "test_timestamp"

Еще не понял, откуда берется @timestamp в документах Elastic. Было бы логично взять его из Properties.TestResult.Timestamp и не хранить два разных?

Да, согласен.
У меня Filebeat уже использовался с type: log, поэтому добавлял блок для e2e-тестов в ту же конфигурацию и сделал всё однотипно.

Про filestream и timestamp — да, вариант с parsers.ndjson и подтягиванием времени из логов в @timestamp выглядит логичнее, особенно если логи уже в JSON.

var testName = "SubmitPaymentForm_EmptyForm_ShouldShowValidationErrors";

...

var result = new TestResult
{
    Test = testName,
    Url = baseUrl,
    Timestamp = DateTime.UtcNow,
    ErrorText = "",
    ErrorStyle = "",
    Success = false
};

...

LogTestResult(result);

У меня есть стойкое ощущение, что все это - лишний шум, которого в тестах не должно быть. У вас xUnit - разве runner reporter (json или на худой конец - самописный) не решает проблему выгрузки результатов тестов в обрабатывабельном виде?

Тут немного другой кейс. xUnit-репортер даёт только pass/fail, а e2e-тестам нужен контекст: какой URL, что увидели на странице, какие ошибки вернулись и т.д. Поэтому логирование в Serilog — это скорее способ централизованно собрать дополнительную информацию и потом удобно анализировать её в ELK/Kibana.

Зачем именно в этом случае логстеш? Название индекса с датой можно в файлбите задать. Да и вообще датастрим уже много лет назад сделвли, там и ротация и удаление старого.

Да, data streams действительно удобная штука, особенно в более свежих версиях Elastic, где они отточены и хорошо поддерживаются.

У нас в инфраструктуре сейчас стоит стек 7.10, и там уже есть готовый пайплайн через Logstash, в котором собирается часть обработки и маршрутизации логов. Поэтому для e2e-тестов я просто вписался в существующую схему: Filebeat → Logstash → ES с индексацией по дате.

Переход на data streams в 7.10 возможен, но требует переделывать шаблоны, ILM и работу с Logstash, потому что в этой версии поддержка потоков ещё не такая гладкая, как в 7.16+ / 7.17 и тем более в 8.x.

В нашем случае это скорее вопрос совместимости с текущей конфигурацией, а не техническое ограничение Filebeat.

Sign up to leave a comment.

Articles