2015-10-05 47 views

回答

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 { 
     ... 
    } 
} 

這種方法將跳過扇子一起。如果你想將日誌發送給扇子,看到了輸出團扇,將涉及您的logstash過濾器設置了一些扇子友好的信息:

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" } 
    } 
} 

併發送日誌意義上的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" 
    } 
} 

定義這個(上述logstash過濾器名稱)一個扇子處理程序,並把它傳遞給InfluxDB之前做任何多餘的處理有。 如果您還沒有Sensu發送數據到InfuxBD已經設置,請到這裏:https://github.com/sensu-plugins/sensu-plugins-influxdb