dds提取工具_使用DDS和InfluxDB构建时间序列监控系统

用于Connext DDS的Telegraf插件:使用DDS和InfluxDB构建时间序列监控系统几个月前,我写了一篇关于监控IIoT系统的博客。该博客概述了使用Connext DDS和时间序列数据库的监控体系结构。本博客延续上述博客的讨论,为该体系结构的关键元素引入新的细节。为了演示监控体系结构,使用了来自InfluxData的InfluxDB作为监控的时间序列数据库。在做这项工作时,我发现Connext DDS的Telegraf输入插件是实现该体系结构中一个关键的缺失元素。因此,我为Connext DDS开发了一个输入插件的原型。今天,我很高兴与大家分享RTI实验室的最新项目,一个免费的项目,它为客户提供了对新RTI技术的早期访问,包括软件项目、下载和工具。在本博客中,我将分享Telegraf插件的内部原理和实例。但首先,让我们回顾一下Telegraf的基础知识。

Telegraf是什么?

Telegraf是InfluxData时间序列平台的一部分,是一个用于收集、处理、聚合和编写指标的代理。它支持插件系统,因此开发人员可以轻松添加指标插件。它包括四种不同的插件类型:● 输入插件从系统、服务或第三方api收集指标。● 处理器插件转换、充实和/或过滤指标。● 聚合器插件创建聚合指标(例如,平均值、最小值、最大值、分位数等)。● 输出插件将指标写到不同的目的地。 Telegraf的主要组成部分是什么?Telegraf使用InfluxDB的数据模型作为度量的内部表示。数据模型包含四个主要组件:● 度量名称是度量的命名空间。● 标记是用来标识指标的键/值对。● 字段是度量数据的键/值对。● 时间戳是与字段关联的日期和时间。Telegraf支持多种输入数据格式,可以将不同格式的指标解析为内部表示。指标分析完后,它们存在于内存中,并将转换为具体的表示形式,通过输出插件进行传输。为此,它还支持几种序列化格式。目前,Connext DDS的输入插件只能使用JSON输入数据格式。Telegraf的配置文件是使用TOML编写的,它包括代理的配置(例如,数据收集频率和刷新频率)和插件。详细描述可以在 here找到。对于Connext DDS插件,XML App Creation需要一个额外的配置文件。它包括Telegraf输入插件使用的类型配置,主题配置和DDS实体的配置。

Connext DDS的Telegraf输入插件是如何开发的?

如上所述,Telegraf提供了一个插件系统,允许开发人员为指标添加插件。要开发输入插件,需要实现输入插件的接口中定义的函数。如果输入插件是服务插件,则需要实现输入服务插件接口中定义的以下函数。服务插件与普通插件的不同之处在于,在Telegraf运行时服务插件会运行后台服务。Connext DDS的输入插件是一个服务插件,因为它在接收到DDS数据时将度量数据推送到Telegraf,而不是按配置的时间间隔提取度量数据。而且,它运行一个后台线程,通过waitset检查DDS数据的到达。如果您对它是如何实现的感兴趣,请在这里查看( here)。

带有配置示例的演示

使用Telegraf的最大好处是它提供了一组即插即用的插件。获得Connext DDS的输入插件后,您就可以轻松获取现有插件,将他们应用于传入的DDS数据。我将介绍Connext DDS和其他插件的输入插件的示例命令和配置。您可以找到我在GitHub( here at GitHub)上使用的示例配置文件。一个默认的配置文件可以由telegraf生成。 $ telegraf config > telegraf.conf 要生成具有特定输入和输出的文件,可以使用”--input-filter”和“--output-filter”标志。下面的命令将生成一个默认配置文件,其中包含Connext DDS的输入插件和文件的输出插件。 $ telegraf --input-filter dds_consumer --output-filter file config > dds_to_file.conf 然后,您可以使用生成的配置文件运行Telegraf。 $ telegraf -config dds_to_file.conf Connext DDS的默认输入插件配置如下: [[inputs.dds_consumer]]   ## XML configuration file path   config_path = "example_configs/ShapeExample.xml"   ## Configuration name for DDS Participant from a description in XML   participant_config = "MyParticipantLibrary::Zero"   ## Configuration name for DDS DataReader from a description in XML   reader_config = "MySubscriber::MySquareReader"   ## Tag key is an array of keys that should be added as tags.   tag_keys = ["color"]   ## Override the base name of the measurement   name_override = "shapes"   ## Data format to consume.    data_format = "json" 默认配置将使用位于“example_configs/ShapeExample”的Connext DDS的XML配置文件。创建配置文件中定义的参与者(MyParticipantLibrary::Zero)和接收者 (MySubscriber::MySquareReader)。目前,它只适用于JSON格式,因此“data_format”配置应该设置为“JSON”。XML中定义的reader使用RTI Shapes demo的类型,订阅一个名为“Square”的主题。因为shape demo的类型使用color属性作为键,所以color属性作为标签添加。默认情况下,度量名称成为服务的输入名称(插件的dds_consumer)。如果您想使用一个不同的度量名称,您可以使用“name_override”配置来设置它。要测试此配置,可以运行RTI Shapes demo并发布一个方形主题数据。在发布方形主题数据之后,您可以在“/tmp/metrics”处看到接收到的DDS指标。这是文件输出插件的默认路径。如果您想将相同的DDS数据发送到不同的输出插件,如InfluxDB,您可以简单地运行以下命令来生成InfluxDB的配置文件: $ telegraf --input-filter dds_consumer --output-filter file config > dds_to_influx.conf $ telegraf -config dds_to_influx.conf Telegraf提供了几种聚合和处理插件。您可以在Telegraf配置文件中添加以下行,以使用基本统计信息(例如,min、max、mean、stdev)聚合度量标准。它每10秒使用基本统计数据做一次指标聚合。 [[aggregators.basicstats]] ## The period on which to flush & clear the aggregator. period = "10s" ## If true, the original metric will be dropped by the aggregator and will not get sent to the output plugins. drop_original = false 可以使用处理器插件重命名字段。这个例子交换了形状的“x”和“y”坐标。 [[processors.rename]]   [[processors.rename.replace]]     field = "x"     dest = "y_trans"   [[processors.rename.replace]]     field = "y"     dest = "x_trans" 这些是Telegraf和Connext DDS插件的一些有趣的特性和内部特性。我希望您会发现它们对于使用DDS和InfluxDB构建时间序列监视系统很有用。虽然我介绍了一些特定的插件作为示例,但是还有许多其他插件可以与您的DDS系统一起工作。要使用Connext DDS的插件,请查看GitHub:https://github.com/rticommunity/telegraf。告诉我你对RTI实验室的最新交付品的观点。如果您有任何评论、问题或问题,请访问RTI社区论坛或直接在GitHub上创建一个问题。

注:本文原创为RTI公司

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值