【发布时间】:2020-01-16 22:12:42
【问题描述】:
我在 Windows IIS Web 服务器上本地托管了一个 ELK 堆栈 (v7.0),但日志没有发送到服务器。服务器正在运行,我可以访问保留的 URL 并取回通用 json 包,说 Elasticsearch 正在运行,我可以很好地登录 Kibana,只是没有日志可看。
我在正在记录的应用程序中设置了一个 bufferBaseFilename,当我转到该位置时,日志实际上就在那里,并正确编入索引。我想知道为什么它永远不会同步回服务器?这似乎是一个连接问题,但所有的网络东西都检查出来了。我可能错过了一些简单的东西。有什么想法吗?如果您需要更多信息,请告诉我!
【问题讨论】:
-
可能是你错误配置了sink,请提供Elasticsearch sink配置。您也可以尝试使用 Serilog 的 SelfLog,很有可能您会在其中看到相应的错误:github.com/serilog/serilog/wiki/Debugging-and-Diagnostics
-
配置为 nodeUris: "log.company.pvt/[appname]/host" | indexFormat:"[appname]-prod" |模板名称:“[应用名称]-prod”| minimumLogEventLevel: "信息" | bufferBaseFilename:“C:\Temp[Appname] 临时日志\”。如果您想查看使用这些设置的配置代码,请告诉我,我会用它来编辑帖子。感谢您提供有关 Selflog 的提示,今天将尝试一下!
-
@Inok 刚刚试用了 Selflog,每次调用日志都会收到
Received failed ElasticSearch shipping result 400: System.Collections.Generic.Dictionary'2[System.String,System.Object]. Failed payload。这是否意味着它无法到达服务器? -
看起来服务器是可以访问的。可能是日志条目有问题,但必须有一些数据而不是
Dictionary'2和Failed payload之后。你使用最新版本的serilog.sinks.elasticsearch包吗?如果没有,请尝试更新它(此时为 8.0.1),并尝试显式引用最新版本的Elasticsearch.Net包(7.5.1)。它可能无法解决问题,但它必须使 SelfLog 中的错误信息更丰富。此外,清除缓冲区文件,或者最好禁用缓冲,直到问题得到解决。 -
@Inok 日志消息还有更多内容,只是不想打破字符限制。它包含了整个信息。如果看到让我知道会有所帮助,则需要先对其进行消毒。我还在服务器上安装了wireshark,发现了一些有趣的东西,
[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]来自我的客户端的 ACK 数据包。
标签: .net elasticsearch logging kibana serilog