c# - Serilog + ElasticSearch 接收器连接问题(.net 核心)
问题描述
我已经将 Serilog 写入滚动文件,并开始实现与基于 Docker 的 ElasticSearch 实例的连接。但是,我遇到了连接问题。
首先,我的应用程序在本地运行,有两个重要的收获:
但是,当我查看 的输出时Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
,我发现 Elastic 存在某种连接问题:
在对 Elasticsearch 执行批量操作时捕获异常:Elasticsearch.Net.ElasticsearchClientException:重试请求时达到最大超时
我的 appsettings.json(是的,我通过 json 而不是代码进行配置):
"Serilog": {
"Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.ElasticSearch"],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": ["FromLogContext", "WithExceptionDetails"],
"WriteTo": [
{ "Name": "Console" },
{ "Name": "Debug" },
{
"Name": "File",
"Args": {
"path": "%LogDir%\\someserverpath.xyz.com\\log-.txt",
"rollingInterval": "Day",
"shared": true
}
},
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://sxdockertst1:9200",
"indexFormat": "imaging4cast-index-{0:yyyy.MM}",
"emitEventFailure": "WriteToSelfLog",
"autoRegisterTemplate": true
}
}
],
"Properties": {
"Application": "xyz.yyy.Imaging4CastApi"
}
},
我觉得它正在建立基本的联系,否则,索引将如何创建?弹性服务器上也没有身份验证。但实际上推送日志消息似乎不起作用......
我在这里不知所措...
解决方案
好的,所以我想通了。
它没有发布消息的原因是硬盘驱动器(从技术上讲,var
在 docker 主机上)已满。我不得不清理var
.
然后,我需要运行这个命令来让 Elastic 退出只读模式(我很快遇到了一个问题,我无法在 Kibana 中为仪表板创建索引,这是因为 Elastic 进入了 RO 模式):
curl -XPUT -H "Content-Type: application/json" http://sxdockertst1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
推荐阅读
- lua - 如何在 ROBLOX 中使用 TeleportPartyAsync() 传送到私人服务器?
- powershell-4.0 - 从远程计算机上的 powershell 脚本调用 exe 文件
- c - 基于 C 中的密钥更新文件
- reactjs - 将两个独立的 React 应用合并为一个应用
- reactjs - 我可以使用共享点并将其与反应连接吗?
- arrays - 如何在我的代码中以更好的方式使用 'contains()' 方法
- azure - Azure Ad 作为 keycloak 中的 OIDC 身份提供程序,但随机 UUId 添加为 IDP“用户 ID”,并且无法与现有用户同步
- windows - 有没有办法从 Windows 随机数生成器中获取值?
- awk - 如何使用 gawk 的 gensub 捕获文件扩展名?
- android - 2021 年我应该如何为 Android 编译 Rust?