2015-02-10 53 views
0

我正在使用logstash從服務器收集sar指標並將其存儲在influxdb中。 應將來自不同來源(CPU,內存,網絡)的指標插入influxdb中的不同系列。當然,這些系列中的字段數量和名稱取決於度量來源的類型。有條件創建字段取決於logstash influxdb輸出中的過濾結果

這是我的配置文件:https://github.com/evgygor/test/blob/master/logstash.conf

對於每個[類型]指標的我應該配置單獨influxdb輸出。在這個例子中,我配置了兩種類型的度量,但我打算將它用於SAR度量,JMX度量,Jmeter度量中的csv,這意味着 - 我需要爲每個度量(數十)配置適當的輸出。

問題:

我如何能詳細點所需的配置? 我有任何選擇使用插件內的條件。例如:

if [type]=="system.cpu" { 

      data_points => { 
         "time" => "%{time}" 
         "user" => "%{user}" 
      } 
    } 
else { 
      data_points => { 
         "time" => "%{time}" 
         "kbtotalmemory" => "%{kbtotalmemory}" 
         "kbmemfree" => "%{kbmemfree}" 
         "kbmemused" => "%{kbmemused}" 
      } 
} 

是否有任何標誌可以定義influxdb插件默認使用的字段名稱/數據類型從輸入? 是否有任何標誌/定義默認數據類型的能力? 有沒有能力設置字段名稱「時間」保留數據類型整數? 非常感謝。

回答

1

我煮了一些不錯的解決方案。 這個分支允許隨時創建字段,包含到達該輸出插件的字段名稱和數據類型。

我加2個配置paramters:

此設置撤銷使用data_points和coerce_values配置#創建適當的插入到influxedb需求。應該與fields_to_skip配置一起使用#此設置將數據點(列)名稱設置爲來自插件事件的字段名稱,#value for data points config:use_event_fields_for_data_points,:validate =>:boolean,:default => true

帶有從未來處理中刪除的鍵的數組。 #通過到達輸出插件的默認事件包含關鍵字「@version」,「@timestamp」#並且可以包含其他字段,例如,由輸入插件EXEC添加的「command」。 #當然,當配置#use_event_fields_for_data_points爲true時,我們不需要處理這些字段並將其插入influxdb。 #我們不會從事件中刪除密鑰,我們會從事件中創建新的哈希,然後刪除不需要的#鍵。

配置:fields_to_skip,:驗證=>:陣列,:默認=> []

這是我的示例的配置文件:我檢索不同數量與來自CPU,內存,磁盤不同的充名稱字段,但是我不需要每個數據類型的不同配置,就像master分支一樣。我在過濾器階段創建相關的字段名稱和數據類型,並跳過outputv插件中不需要的字段。

https://github.com/evgygor/logstash-output-influxdb