Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Telegraf-plug-in voor Connext DDS:bouw een tijdreeksbewakingssysteem met DDS en InfluxDB

Een paar maanden geleden schreef ik een blog over het monitoren van je IIoT-systemen. De blog ging vooral over het overzicht van een monitoringarchitectuur met Connext DDS en een tijdreeksdatabase. Deze blog is een voortzetting van die discussie, met nieuwe details van een sleutelelement van de architectuur.

Om de monitoringarchitectuur te demonstreren, werd InfluxDB van InfluxData gebruikt als een tijdreeksdatabase voor monitoring. Bij het doen van dit werk ontdekte ik dat een Telegraf-invoerplug-in voor Connext DDS een essentieel ontbrekend element is bij het realiseren van de architectuur. Dus ontwikkelde ik een prototype van de input plugin voor Connext DDS. Vandaag deel ik het graag met u als het nieuwste project van RTI Labs - een gratis programma dat klanten vroegtijdig toegang geeft tot nieuwe RTI-technologie, inclusief softwareprojecten, downloads en tools.

In deze blog deel ik de internals en voorbeelden van de Telegraf-plug-in. Maar laten we eerst de basis van Telegraf eens bekijken.

Wat is Telegraf?

Telegraf, onderdeel van het tijdreeksplatform van InfluxData, is een agent voor het verzamelen, verwerken, aggregeren en schrijven van statistieken. Het ondersteunt een plug-insysteem, zodat ontwikkelaars eenvoudig een plug-in voor statistieken kunnen toevoegen. Het bevat vier verschillende typen plug-ins:

  • Invoerplug-ins verzamel statistieken van het systeem, de services of API's van derden.
  • Processor-plug-ins transformeren, verrijken en/of filteren van statistieken.
  • Aggregator-plug-ins geaggregeerde statistieken maken (bijv. gemiddelde, min, max, kwantielen, enz.).
  • Uitvoerplug-ins schrijf metrische gegevens naar verschillende bestemmingen.

Wat zijn de belangrijkste componenten van Telegraf?

Telegraf gebruikt het datamodel van InfluxDB voor metrische gegevens als interne representatie. Het datamodel bevat vier hoofdcomponenten:

  • Meetnaam is een naamruimte voor metrische gegevens.
  • Tags zijn sleutel/waarde-paren om statistieken te identificeren.
  • Velden zijn sleutel/waarde-paren voor metrische gegevens.
  • Tijdstempel is de datum en tijd die aan velden zijn gekoppeld.

Telegraf ondersteunt verschillende invoergegevensformaten om metrieken in verschillende formaten te ontleden naar de interne representatie. Nadat de metrische gegevens zijn geparseerd, bestaan ​​ze in het geheugen en worden ze geconverteerd naar een concrete weergave die via een uitvoerplug-in kan worden verzonden. Daarvoor ondersteunt het ook verschillende serialisatie-indelingen. Momenteel werkt de invoerplug-in voor Connext DDS alleen met het JSON-invoergegevensformaat.

Het configuratiebestand van Telegraf is geschreven met TOML en bevat configuraties van agents (bijv. interval voor gegevensverzameling en spoelinterval) en plug-ins. Gedetailleerde beschrijvingen zijn hier te vinden. Voor de plug-in voor Connext DDS is een extra configuratiebestand vereist voor het maken van XML-apps. Het bevat configuraties van typen, onderwerpen en DDS-entiteiten die worden gebruikt door de Telegraf-invoerplug-in.

Hoe is de Telegraf-invoerplug-in voor Connext DDS ontwikkeld?

Zoals hierboven vermeld, biedt Telegraf een plug-insysteem waarmee ontwikkelaars plug-ins voor statistieken kunnen toevoegen. Om een ​​invoerplug-in te ontwikkelen, moet u de volgende functies implementeren die zijn gedefinieerd in de interface voor invoerplug-in.

Als een input-plug-in een service-plug-in is, moet deze de volgende functies implementeren die zijn gedefinieerd in de interface voor input-service-plug-in. Een service-plug-in verschilt van een gewone plug-in doordat deze een achtergrondservice uitvoert terwijl Telegraf actief is.

De input-plug-in voor Connext DDS is een service-plug-in omdat deze statistieken naar Telegraf pusht wanneer het DDS-gegevens ontvangt in plaats van met een geconfigureerd interval statistieken op te halen. Daarom voert het een achtergrondthread uit die de aankomst van DDS-gegevens controleert via WaitSets. Als je geïnteresseerd bent in hoe het is geïmplementeerd, bekijk dit dan hier.

Demonstraties met voorbeeldconfiguraties

Het mooiste voordeel van werken met Telegaf is dat het een heleboel kant-en-klare plug-ins biedt. Zodra u de invoerplug-in voor Connext DDS hebt, kunt u eenvoudig bestaande plug-ins oppikken om ze toe te passen op inkomende DDS-gegevens. Ik zal voorbeeldopdrachten en configuraties doornemen voor de invoerplug-in voor Connext DDS en andere plug-ins. Je kunt de voorbeeldconfiguratiebestanden die ik heb gebruikt hier op GitHub vinden.

Een standaard configuratiebestand kan worden gegenereerd door telegraf.

$ telegraf config> telegraf.conf

Om een ​​bestand met specifieke invoer en uitvoer te genereren, kunt u de “--input-filter” gebruiken en “--output-filter” vlaggen. De volgende opdracht genereert een standaardconfiguratiebestand met de invoerplug-in voor Connext DDS en de uitvoerplug-in voor bestand.

$ telegraf --input-filter dds_consumer --output-filter bestand config> dds_to_file.conf

Daarna kunt u Telegraf starten met het gegenereerde configuratiebestand.

$ telegraf -config dds_to_file.conf

De standaardconfiguratie van de invoerplug-in voor Connext DDS is als volgt:

[[inputs.dds_consumer]] 
## XML-configuratiebestandspad
config_path ="example_configs/ShapeExample.xml"

## Configuratienaam voor DDS-deelnemer uit een beschrijving in XML
deelnemer_config ="MijnDeelnemersbibliotheek::Nul"

## Configuratienaam voor DDS DataReader uit een beschrijving in XML
reader_config ="MijnAbonnee::MijnVierkanteReader"

## Tag-sleutel is een reeks sleutels die als tags moeten worden toegevoegd.
tag_keys =["kleur"]

## Overschrijf de basisnaam van de meting
name_override ="vormen"

## Gegevensformaat om te consumeren.
data_format ="json"

De standaardconfiguratie gebruikt een XML-configuratiebestand voor Connext DDS op “example_configs/ShapeExample.xml” en maak een deelnemer aan (MyParticipantLibrary::Zero ) en een lezer (MySubscriber::MySquareReader ) gedefinieerd in het configuratiebestand. Momenteel werkt het alleen met JSON-indeling, dus de “data_format” config moet worden ingesteld op “json” .

De in XML gedefinieerde lezer is geabonneerd op een onderwerp met de naam “Square” en gebruikt het type voor de RTI Shapes-demo. Omdat het type Shapes-demo het kleurkenmerk als sleutel gebruikt, wordt het kleurkenmerk toegevoegd als een tag. Standaard wordt de meetnaam de naam van een service-invoernaam (dds_consumer voor de plug-in). Als u een andere meetnaam wilt gebruiken, kunt u deze instellen met de “name_override” config.

Om deze configuratie te testen, kunt u een RTI Shapes-demo uitvoeren en een Square publiceren onderwerp gegevens. Na het publiceren van een Square onderwerpgegevens kunt u ontvangen DDS-statistieken bekijken op “/tmp/metrics.out” , wat het standaardpad is voor de uitvoerplug-in voor bestand.

Als u dezelfde DDS-gegevens naar een andere uitvoerplug-in zoals InfluxDB wilt verzenden, kunt u eenvoudig de volgende opdracht uitvoeren om een ​​configuratiebestand voor InfluxDB te genereren:

$ telegraf --input-filter dds_consumer --output-filter bestandsconfiguratie> dds_to_influx.conf 

$ telegraf -config dds_to_influx.conf

Er zijn verschillende aggregatie- en verwerkingsplug-ins die door Telegraf worden geleverd. U kunt de volgende regels in uw Telegraf-configuratiebestand toevoegen om uw statistieken samen te voegen met basisstatistieken (bijv. min, max, mean, stdev). Het verzamelt elke 10 seconden statistieken met basisstatistieken.

[[aggregators.basicstats]] 
## De periode waarop de aggregator moet worden doorgespoeld en gewist.
periode ="10s"
## Indien waar, wordt de oorspronkelijke metriek verwijderd door de aggregator en wordt deze niet naar de uitvoerplug-ins verzonden.
drop_original =false

U kunt uw velden hernoemen met behulp van een processor-plug-in. Dit voorbeeld verwisselt “x” en “y” coördinaten van vormen.

[[processors.rename]] 
[[processors.hernoemen.replace]]
veld ="x"
dest ="y_trans"
[[processors.hernoemen.replace]]
veld ="j"
dest ="x_trans"

Dit zijn enkele van de interessante functies en interne onderdelen van Telegraf en de plug-in voor Connext DDS. Ik hoop dat je ze nuttig zult vinden om een ​​tijdreeksbewakingssysteem te bouwen met DDS en InfluxDB.

Lees hier de officiële aankondiging over de eerste DDS-plug-in voor de Telegraf-agent.

Hoewel ik enkele specifieke plug-ins als voorbeeld heb geïntroduceerd, zijn er veel andere plug-ins die met uw DDS-systemen kunnen werken. Bekijk de volgende GitHub om met de plug-in voor Connext DDS te spelen. https://github.com/rticommunity/telegraf

Laat me alsjeblieft weten wat je van het nieuwste product van de RTI Labs vindt. Bezoek het RTI Community-forum of maak direct e

[1] [2] 下一页

Internet of Things-technologie

  1. Connext DDS en het industriële IoT:de 5 belangrijkste dingen om te weten
  2. Aankondiging van de nieuwste RTI Perftest voor Connext DDS
  3. DIY:temperatuurbewaking en -regeling voor HomeBrew
  4. Is een continu monitoringsysteem geschikt voor u?
  5. Cisco introduceert IoT Remote Monitoring-oplossingen voor IT en OT
  6. Hoe is een op IoT gebaseerd Ambience Monitoring-systeem gunstig voor de gezondheidszorg?
  7. Industrie 4.0 voor het bewaken van de conditie van bedrijfsmiddelen:betekenis en voordelen
  8. Voldoen aan de industriële behoeften met IoT-aangedreven gasbewakingsoplossing
  9. Verbeter melkopslag met een snufje IoT:melkniveaubewakingssysteem
  10. Niveaubewakingsoplossing voor corrosieve en explosieve vloeistoffen
  11. Optimalisatie van energie-efficiëntie met centrale controllers en bewaking op afstand