【问题标题】:Adjust ElasticsearchSinkOptions.NumberOfShards in SeriLog not working in .Net core调整 SeriLog 中的 ElasticsearchSinkOptions.NumberOfShards 在 .Net 核心中不起作用
【发布时间】:2019-12-05 03:16:37
【问题描述】:

我在通过 SeriLog 写入日志时为 ElasticSearch 设置 NumberOfShards 时遇到问题。 我在 .Net Core 中像这样对 Serilog 进行配置

 .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.ElasticConnectionUrl))
                    {
                        AutoRegisterTemplate = true,
                        IndexFormat = config.ElasticIndex + "-{0:yyyy.MM.dd}",
                        NumberOfShards = 2,
                        NumberOfReplicas = 0
                    }));

但是当我在 Kibana 中查询创建的 Index 的设置时,numberOfShards 仍然是 5(默认值)。即使对于 NumberOfReplicas 也不会影响。

我正在使用 ELK 堆栈来跟踪日志。

有人知道为什么吗?

【问题讨论】:

    标签: elasticsearch .net-core kibana elastic-stack serilog


    【解决方案1】:

    您可以在代码中或在 appSettings.json 配置中进行 Serilog 配置。如果你这样做:

    var loggerConfiguration = new LoggerConfiguration()
        .ReadFrom.Configuration(configuration) // <= this reads from config
        .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.ElasticConnectionUrl))
        {
            AutoRegisterTemplate = true,
            IndexFormat = config.ElasticIndex + "-{0:yyyy.MM.dd}",
            NumberOfShards = 2,
            NumberOfReplicas = 0
        })); // this gets partially ignored
    

    你有以下配置文件:

    "Serilog": {
        "MinimumLevel": "Debug",
        "WriteTo": [
          {
            "Name": "Elasticsearch",
            "Args": {
              "nodeUris": "http://localhost:9100"
            }
          }
        ]
    }
    

    如果您在 JSON 文件中将索引格式保留为空,那么您可能会有一个名为“log-stash-{0:YYYY-MM-DD}”的索引,但您也会有一个您已在代码中添加。 URI 也是如此。如果您在 JSON 接收器 WriteTo 和代码中的 ElasticsearchSinkOptions 中添加了一个,则可能有两个。

    配置为 JSON 或代码。选择一个(遗憾)。更多信息请参见:https://github.com/serilog/serilog-sinks-elasticsearch/issues/180

    我正在寻找一种方法来在代码中使用默认配置,这可能会被配置文件覆盖,因为我正在尝试为我们公司的各种 API 创建一个通用的固执己见的 IHostBuilder,但 Serilog 运行良好.我的解决方案是将 Sinks 配置移出 Serilog 配置部分,并单独定义它,然后自己加载它,(以相同的格式 - 字符串名称,Args 字典),然后手动创建配置代码。

    【讨论】:

      猜你喜欢
      • 2018-04-04
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多