Технический стек:
AWS ECS (ядро .net) + Serilog + Serilog.Sinks.Elasticsearch + AWS Elasticsearch
Я заметил, что иногда я не могу найти некоторые журналы в ES.
Я сделал несколько тестов, чтобы воспроизвести такую проблему, и вот результаты:
| Raised log entries (in parallel) | Found log enries in ES |
-----------------------------------------------------------------
| 100000 | 100000 |
| 500000 | 172244 |
| 500000 | 163841 |
| 500000 | 174947 |
| 500000 | 155788 |
Итак, как вы можете видеть, это довольно воспроизводимо.
Я включил https://github.com/serilog/serilog/wiki/Debugging-and-Diagnostics для Serilog, но он ничего не говорит. CloudWatch также говорит, что все в порядке.
Оригинальная конфигурация Serilog:
builder.UseSerilog(
(hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
.Enrich.WithServiceName(serviceName)
.WriteTo.Console(new JsonFormatter(renderMessage: true))
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(hostingContext.Configuration["elasticsearch"] ?? "http://localhost:9200"))
{
AutoRegisterTemplate = true,
IndexDecider = (ev, offset) => string.Format("{0}.{1}", index, System.DateTime.Now.ToString("yyyy.MM.dd")),
})
.Destructure.UsingAttributes()
);
Возможно, у кого-то уже были такие проблемы, поэтому я был бы очень признателен, если бы вы поделились своим опытом.
UPDATE
Я нашел следующие журналы от AppInsights
System.Net.Http.HttpRequestException: в
System.Net.Http.ConnectHelper + d__2.MoveNext
(System.Net.Http, версия = 4.2.1.0, культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a) в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Threading.Tasks.ValueTask 1.get_Result (System.Private.CoreLib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at
System.Net.Http.HttpConnectionPool+<CreateConnectionAsync>d__40.MoveNext
(System.Net.Http, Version=4.2.1.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a) at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=7cec85d7bea7798e) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=7cec85d7bea7798e) at
System.Threading.Tasks.ValueTask
1.get_Result (System.Private.CoreLib,
Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e) в
System.Net.Http.HttpConnectionPool + d__45.MoveNext
(System.Net.Http, версия = 4.2.1.0, культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a) в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Threading.Tasks.ValueTask 1.get_Result (System.Private.CoreLib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e) at
System.Net.Http.HttpConnectionPool+<SendWithRetryAsync>d__37.MoveNext
(System.Net.Http, Version=4.2.1.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a) at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=7cec85d7bea7798e) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=7cec85d7bea7798e) at
System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1 + ConfiguredTaskAwaiter.GetResult
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Net.Http.RedirectHandler + d__4.MoveNext
(System.Net.Http, версия = 4.2.1.0, культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a) в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1 + ConfiguredTaskAwaiter.GetResult
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Net.Http.DiagnosticsHandler + d__2.MoveNext
(System.Net.Http, версия = 4.2.1.0, культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a) Внутреннее исключение
System.Net.Sockets.SocketException обрабатывается в
System.Net.Http.ConnectHelper + d__2.MoveNext: в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Private.CoreLib, версия = 4.0.0.0, культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e) в
System.Net.Http.ConnectHelper + d__2.MoveNext
(System.Net.Http, версия = 4.2.1.0, культура = нейтральная,
PublicKeyToken = b03f5f7f11d50a3a)
во время http://elasticsearch:9200/_bulk операция