0

有没有办法进行 Sensu 检查,将 .log 文件作为输入并对其进行解析并将选定的信息返回给 InfluxDB。

我对此很陌生,所以也许我没有用最好的方式描述我的问题。

4

1 回答 1

0

我发现最好的方法是使用 Logstash(主要是因为无论如何我都使用 ELK 进行一般日志聚合)。

设置 Logstash 服务器。 https://www.elastic.co/products/logstash

在客户端上安装 logstash-forwarder。配置 logstash-forwarder 以读取您想要的日志并将它们发送到您的 logstash 服务器。 https://github.com/elastic/logstash-forwarder

在 Logstash 服务器的配置中;

为要发送到 sensu 的日志定义一个伐木工人输入 ( https://www.elastic.co/guide/en/logstash/current/plugins-inputs-lumberjack.html )。

例如:输入{

  lumberjack {
    port => 5555
    type => "logs"
    tags => ["lumberjack", "influxdb"]
  }
}

做你的处理/过滤。例如:

filter {
  if ("influxdb" in [tags]) {
      ...
  }
}

定义一个 InfluxDB 输出 ( https://www.elastic.co/guide/en/logstash/current/plugins-outputs-influxdb.html )。例如:

output {
  influxdb {
      ...
   }
}

这种方法会一起跳过 Sensu。如果您确实想将日志发送到 Sensu 并在 Uchiwa 中查看输出,则需要在您的 logstash 过滤器中设置一些对 Sensu 友好的信息:

filter {
  if ("influxdb" in [tags]) {
      add_field => { "name" => "SensuCheckName" }
      add_field => { "handler" => "SensuHandlerName" }
      add_field => { "output" => "the stuff you want to send to sensu" }
      add_field => { "status" => "1" }
  }
}

并将日志发送到 sensu 的 RabbitMQ 传输(https://www.elastic.co/guide/en/logstash/current/plugins-outputs-rabbitmq.html):

output {
  rabbitmq {
      exchange => "results"
      exchange_type => "direct"
      host => "192.168.0.5 or whatever it is"
      vhost => "/sensu"
      user => "sensuUser"
      password => "whateverItIs"
   }
}

为此定义一个 Sensu 处理程序(上面在 logstash 过滤器中的名称),并在将其传递给 InfluxDB 之前在那里进行任何额外的处理。如果您尚未设置 Sensu 向 InfuxBD 发送数据,请访问此处:https ://github.com/sensu-plugins/sensu-plugins-influxdb

于 2016-02-16T06:56:05.677 回答