有没有办法进行 Sensu 检查,将 .log 文件作为输入并对其进行解析并将选定的信息返回给 InfluxDB。
我对此很陌生,所以也许我没有用最好的方式描述我的问题。
我发现最好的方法是使用 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