条件创建字段取决于logstash Influxdb输出中的过滤结果

时间:2015-02-10 17:07:02

标签: logstash influxdb logstash-forwarder

我使用logstash从服务器收集sar指标并将其存储在Influxdb中。 应将来自不同来源(CPU,内存,网络)的度量标准插入到Influxdb中的不同系列中。当然,这些系列中字段的数量和名称取决于度量标准来源的类型。

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

对于每个[type]指标,我应该配置单独的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插件? 是否有任何标志/能力来定义默认数据类型? 是否有能力设置字段名称" time"保留数据类型整数? 非常感谢。

1 个答案:

答案 0 :(得分:1)

我做了一些很好的解决方案。 这个fork允许动态创建字段,包含到达该输出插件的字段名称和数据类型。

我添加了2个配置参数:

此设置撤消使用data_points和coerce_values配置#的需要,以创建适当的插入到Influxedb。应与fields_to_skip配置一起使用#此设置将数据点(列)名称设置为从到达插件事件的字段名称,#value for data points config:use_event_fields_for_data_points,:validate => :boolean,:default =>真

具有要从将来处理中删除的键的数组。 #到达输出插件的默认事件包含键“@version”,“@ timestamp”#并且可以包含其他字段,例如,由输入插件EXEC添加的“command”。 #当然,当配置#use_event_fields_for_data_points为true时,我们不需要处理这些字段并将其插入到Influxdb中。 #我们不会从事件中删除密钥,我们会从事件中创建新的Hash,然后删除不需要的#键。

config:fields_to_skip,:validate => :array,:default => []

这是我的示例配置文件:我正在从CPU,内存,磁盘中检索具有不同名称的不同数量的字段,但是我不需要像主分支那样对每种数据类型进行不同的配置。我正在过滤器阶段创建相关字段名称和数据类型,只是跳过outputv插件中不需要的字段。

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