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.
Пошаговая настройка вывода логов из .NET-автотестов в ELK (Filebeat → Logstash → Elasticsearch → Kibana)