【问题标题】:How to watch the logstash log?如何查看logstash日志?
【发布时间】:2022-05-03 05:03:20
【问题描述】:

对于我的企业应用程序分布式和结构化日志记录,我使用logstash 进行日志聚合和elastic search 作为日志存储。我有明确的控制将日志从我的应用程序推送到logstash。另一方面,从 logstash 到弹性搜索的控制非常薄。

假设,如果我的elasticsearch 因某些愚蠢的原因而宕机,logstash 日志(/var/log/logstash/logstash.log)会像下面这样清楚地记录原因。

Attempted to send a bulk request to Elasticsearch configured at '["http://localhost:9200/"]', but Elasticsearch appears to be unreachable or down! {:client_config=>{:hosts=>["http://localhost:9200/"], :ssl=>nil, :transport_options=>{:socket_timeout=>0, :request_timeout=>0, :proxy=>nil, :ssl=>{}}, :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, :logger=>nil, :tracer=>nil, :reload_connections=>false, :retry_on_failure=>false, :reload_on_failure=>false, :randomize_hosts=>false}, :error_message=>"Connection refused", :class=>"Manticore::SocketException", :level=>:error}

对于来自 logstash 的 error 级别日志,我将如何获得注意或通知?

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    应该可以通过以下 3 个步骤来实现:

    1) 取决于您希望如何获得通知。如果电子邮件就足够了,您可以使用 Logstash email output-plugin。 但是there 有更多可用的输出插件。

    2) 要限制某些事件,您可以在 Logstash 配置中执行类似操作(示例取自 Elastic 支持site):

    if [level] == "ERROR" {
      output {
         ...
      }
    }
    

    if 子句不限于 JSON 的 level 字段;当然,您可以将它应用于您的任何 JSON 字段,这使其更强大。

    3) 要完成这项工作(而不是进入日志记录周期),您需要:

    • 在您的系统上启动第二个 Logstash 实例(仅观察 Logstash ERROR 日志),从 here 所写的内容来看应该没问题

    • 或者您构建一个更复杂的配置,只使用一个 Logstash 实例。此配置必须将日志语句从您的应用程序转发到 Elasitcsearch,同时将来自 Logstash 错误日志的日志语​​句转发到例如Logstash 电子邮件输出插件。


    旁注:您可能想看看 Filebeat,它与 Logstash 配合得非常好(它也来自 Elastic),它甚至比 Logstash 更轻量级。它允许在您的配置中使用 include_lines: ["^ERR", "^WARN"] 之类的东西。 要从 Filebeat 接收输入,您必须采用配置将数据发送到 Logstash,对于 Logstash,您必须激活并使用描述 here 的 Beats 输入插件。

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 2020-02-19
      相关资源
      最近更新 更多