36

我们开始将 Serilog 与 Elasticsearch 结合使用,它是存储结构日志数据的一种非常有效的方式(然后使用 Kibana 等工具将它们可视化)。但是,我看到了不将日志数据直接写入后端而是配置日志代理(例如 Logstash)的优势,该代理可以负责为日志消息添加标签、选择索引等。通过这种设置,应用程序不需要具备相关知识日志数据分布。

中间有 Logstash,问题是最好使用什么 Serilog 接收器,以便 Logstash 可以在不应用高级和 CPU 密集型过滤器的情况下导入其数据。我已经看到 Redis 被称为 Logstash 的良好伴侣,但 Serilog 没有 Redis 接收器。对 Serilog 接收器有哪些建议,哪些数据可以通过 Logstash 轻松传输到 Elasticsearch 索引?

甚至还有一种方法是先使用 Elasticsearch 接收器,然后在经过一些安排并应用额外的标签后再次将其环回 Elasticsearch。

4

5 回答 5

54

接受的答案是在接收器Serilog.Sinks.Http存在之前编写的。

可以让 HTTP 接收器将日志事件发布到Logstash HTTP 输入插件,而不是记录到文件并让Filebeat监视它。这意味着创建日志的实例上的移动部件更少。

于 2016-11-03T06:38:19.020 回答
17

我收到了 Nicholas Blumhardt(Serilog 创建者)的建议,将 RollingFileSink 与 JsonFormatter 一起使用。

于 2014-08-14T03:39:59.913 回答
9

我为支持 RabbitMQ 的 Serilog 创建了一个接收器,它使用 logstash 的 rabbitmq 输入插件与 logstash 非常相关:

https://www.nuget.org/packages/Serilog.Sinks.RabbitMQ

如果您在应用程序服务器上运行 RabbitMQ 实例,则可以使用 RabbitMQSink 使用 Serilog 登录到此 RabbitMQ 实例,最终绕过网络隔离/停机场景。

然后,当网络备份时,Logstash 将提取队列中的消息。

更新:Sink 现在是 V2.0 并且支持 ASP.NET Core 1.0

于 2015-08-03T23:51:17.943 回答
0

也许最新的答案是:

使用ElasticSearch Sink

它确实包含持久性模式,因此如果应用程序处于脱机状态,日志不会丢失。

于 2019-06-30T09:07:48.210 回答
0

我使用了这个解决方案并为我工作。
1- 带有管道的 Logstash 为:

input {
  http {
    host => "0.0.0.0"
    port => 31000
    codec => json
    }
}
#filter {
#   
#}
output {
    #stdout {}
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
    }
}

2-Serilog 配置为:

{
  "Serilog": {
    "Using": [ "Serilog.Sinks.Http" ],
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "Async",
        "Args": {
          "bufferSize": 10000000,
          "configure": [
            {
              "Name": "Http",
              "Args": {
                "requestUri": "http://127.0.0.1:31000",
                "textFormatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch",
                "batchFormatter": "Serilog.Sinks.Http.BatchFormatters.ArrayBatchFormatter, Serilog.Sinks.Http"
              }
            }
          ]
        }
      }
    ],
    "Properties": {
      "Application": "Test1"
    }
  },
  "AllowedHosts": "*"
}
于 2021-10-12T16:54:41.233 回答