Connext DDS용 Telegraf 플러그인:DDS 및 InfluxDB를 사용하여 시계열 모니터링 시스템 구축
몇 달 전에 IIoT 시스템 모니터링에 대한 블로그를 작성했습니다. 블로그는 주로 Connext DDS와 시계열 데이터베이스를 사용한 모니터링 아키텍처의 개요를 다뤘습니다. 이 블로그는 아키텍처의 핵심 요소에 대한 새로운 세부 정보와 함께 해당 토론의 연속입니다.
모니터링 아키텍처를 시연하기 위해 InfluxData의 InfluxDB를 모니터링용 시계열 데이터베이스로 사용했습니다. 이 작업을 하면서 Connext DDS용 Telegraf 입력 플러그인이 아키텍처를 구현하는 데 있어 중요한 누락 요소라는 것을 알게 되었습니다. 그래서 Connext DDS용 입력 플러그인의 프로토타입을 개발했습니다. 오늘, RTI Labs의 최신 프로젝트로 여러분과 공유하게 된 것을 기쁘게 생각합니다. 이 무료 프로그램은 고객이 소프트웨어 프로젝트, 다운로드 및 도구를 포함한 새로운 RTI 기술에 대한 조기 액세스를 제공하는 무료 프로그램입니다.
이 블로그에서는 Telegraf 플러그인의 내부 및 예제를 공유합니다. 하지만 먼저 Telegraf의 기본 사항을 살펴보겠습니다.
Telegraf란 무엇입니까?
InfluxData의 시계열 플랫폼의 일부인 Telegraf는 메트릭을 수집, 처리, 집계 및 작성하기 위한 에이전트입니다. 플러그인 시스템을 지원하므로 개발자는 메트릭용 플러그인을 쉽게 추가할 수 있습니다. 여기에는 4가지 고유한 플러그인 유형이 포함됩니다.
<울>
입력 플러그인 시스템, 서비스 또는 타사 API에서 측정항목을 수집합니다.
프로세서 플러그인 측정항목을 변환, 강화 및/또는 필터링합니다.
애그리게이터 플러그인 집계 측정항목(예:평균, 최소값, 최대값, 분위수 등)을 생성합니다.
출력 플러그인 다양한 대상에 측정항목을 작성합니다.
Telegraf의 주요 구성요소는 무엇입니까?
Telegraf는 지표에 대한 InfluxDB의 데이터 모델을 내부 표현으로 사용합니다. 데이터 모델에는 4가지 주요 구성 요소가 포함됩니다.
<울>
측정 이름 메트릭에 대한 네임스페이스입니다.
태그 측정항목을 식별하기 위한 키/값 쌍입니다.
필드 측정항목 데이터의 키/값 쌍입니다.
타임스탬프 필드와 연결된 날짜 및 시간입니다.
Telegraf는 다양한 형식의 메트릭을 내부 표현으로 구문 분석하기 위해 여러 입력 데이터 형식을 지원합니다. 메트릭이 구문 분석된 후 메모리에 존재하며 출력 플러그인을 통해 전송될 구체적인 표현으로 변환됩니다. 이를 위해 여러 직렬화 형식도 지원합니다. 현재 Connext DDS용 입력 플러그인은 JSON 입력 데이터 형식에서만 작동합니다.
Telegraf의 설정 파일은 TOML을 이용하여 작성되었으며, 에이전트 설정(예:데이터 수집 주기, 플러싱 주기)과 플러그인을 포함한다. 자세한 설명은 여기에서 찾을 수 있습니다. Connext DDS용 플러그인의 경우 XML App Creation을 위한 추가 구성 파일이 필요합니다. 여기에는 Telegraf 입력 플러그인에서 사용하는 유형, 주제 및 DDS 엔터티의 구성이 포함됩니다.
Connext DDS용 Telegraf 입력 플러그인은 어떻게 개발되었나요?
위에서 언급했듯이 Telegraf는 개발자가 메트릭에 대한 플러그인을 추가할 수 있는 플러그인 시스템을 제공합니다. Input Plugin을 개발하기 위해서는 Input Plugin용 인터페이스에 정의된 다음과 같은 기능을 구현해야 합니다.
Input Plugin이 서비스 Plugin인 경우에는 Input Service Plugin 인터페이스에 정의된 다음과 같은 기능을 구현해야 한다. 서비스 플러그인은 Telegraf가 실행되는 동안 백그라운드 서비스를 운영한다는 점에서 일반 플러그인과 다릅니다.
Connext DDS용 입력 플러그인은 구성된 간격으로 메트릭을 가져오는 대신 DDS 데이터를 수신할 때 Telegraf에 메트릭을 푸시하기 때문에 서비스 플러그인입니다. 따라서 WaitSet를 통해 DDS 데이터의 도착을 확인하는 백그라운드 스레드를 실행합니다. 구현 방법에 관심이 있으시면 여기를 확인하세요.
예시 구성이 있는 데모
Telegaf로 작업할 때의 가장 좋은 이점은 바로 사용할 수 있는 플러그인을 많이 제공한다는 것입니다. Connext DDS용 입력 플러그인이 있으면 기존 플러그인을 쉽게 선택하여 들어오는 DDS 데이터에 적용할 수 있습니다. Connext DDS 및 기타 플러그인의 입력 플러그인에 대한 예제 명령 및 구성을 살펴보겠습니다. 여기 GitHub에서 내가 사용한 예제 구성 파일을 찾을 수 있습니다.
기본 설정 파일은 telegraf로 생성할 수 있습니다.
$ telegraf 설정> telegraf.conf
특정 입력 및 출력이 있는 파일을 생성하려면 “--input-filter”
를 사용할 수 있습니다. 및 "--output-filter"
플래그. 다음 명령은 Connext DDS용 입력 플러그인과 파일용 출력 플러그인으로 기본 구성 파일을 생성합니다.
$ telegraf --input-filter dds_consumer --output-filter 파일 구성> dds_to_file.conf
그 후 생성된 설정 파일로 Telegraf를 실행할 수 있습니다.
$ telegraf -config dds_to_file.conf
Connext DDS용 입력 플러그인의 기본 구성은 다음과 같습니다.
<사전>[[inputs.dds_consumer]]
## XML 구성 파일 경로
config_path ="example_configs/ShapeExample.xml"
## XML 설명에서 DDS 참가자에 대한 구성 이름
참가자_구성 ="MyParticipantLibrary::0"
## XML 설명의 DDS DataReader에 대한 구성 이름
reader_config ="MySubscriber::MySquareReader"
## 태그 키는 태그로 추가되어야 하는 키의 배열입니다.
tag_keys =["색상"]
## 측정의 기본 이름을 재정의합니다.
name_override ="모양"
## 소비할 데이터 형식입니다.
data_format ="json"
기본 구성은 “example_configs/ShapeExample.xml”
에 있는 Connext DDS용 XML 구성 파일을 사용합니다. 참가자 생성(MyParticipantLibrary::Zero
) 및 리더(MySubscriber::MySquareReader
) 구성 파일에 정의되어 있습니다. 현재 JSON 형식에서만 작동하므로 “data_format”
구성은 “json”
으로 설정해야 합니다. .
XML에 정의된 리더는 “Square”
라는 주제를 구독합니다. RTI Shapes 데모용으로 유형을 사용합니다. Shapes 데모의 유형은 color 속성을 키로 사용하기 때문에 color 속성이 태그로 추가됩니다. 기본적으로 측정 이름은 서비스 입력 이름(dds_consumer
플러그인). 다른 측정 이름을 사용하려면 "name_override"
로 설정할 수 있습니다. 구성.
이 구성을 테스트하려면 RTI Shapes 데모를 실행하고 Square
주제 데이터. Square
게시 후 주제 데이터, 수신된 DDS 측정항목은 “/tmp/metrics.out”
에서 볼 수 있습니다. , 파일용 출력 플러그인의 기본 경로입니다.
동일한 DDS 데이터를 InfluxDB와 같은 다른 출력 플러그인으로 보내려면 다음 명령을 실행하여 InfluxDB에 대한 구성 파일을 생성하면 됩니다.
$ telegraf --input-filter dds_consumer --output-filter 파일 구성> dds_to_influx.conf
$ telegraf -config dds_to_influx.conf
Telegraf에서 제공하는 여러 집계 및 처리 플러그인이 있습니다. Telegraf 구성 파일에 다음 행을 추가하여 기본 통계(예:min, max, mean, stdev)로 메트릭을 집계할 수 있습니다. 10초마다 기본 통계와 함께 메트릭을 집계합니다.
<사전>[[aggregators.basicstats]]
## 애그리게이터를 비우고 지우는 기간입니다.
기간 ="10초"
## true인 경우 원래 메트릭은 애그리게이터에 의해 삭제되고 출력 플러그인으로 전송되지 않습니다.
drop_original =거짓
프로세서 플러그인을 사용하여 필드 이름을 바꿀 수 있습니다. 이 예는 “x”
를 바꿉니다. 및 "y"
도형의 좌표입니다.
<사전>[[프로세서 이름 바꾸기]]
[[processors.rename.replace]]
필드 ="x"
대상 ="y_trans"
[[processors.rename.replace]]
필드 ="y"
대상 ="x_trans"
다음은 Telegraf 및 Connext DDS용 플러그인의 흥미로운 기능 및 내부입니다. DDS 및 InfluxDB를 사용하여 시계열 모니터링 시스템을 구축하는 데 유용하기를 바랍니다.
여기에서 Telegraf 에이전트를 위한 첫 번째 DDS 플러그인에 대한 공식 발표를 읽어보세요.
몇 가지 특정 플러그인을 예로 소개했지만 DDS 시스템에서 작동할 수 있는 다른 플러그인이 많이 있습니다. Connext DDS용 플러그인으로 플레이하려면 다음 GitHub를 확인하세요. https://github.com/rticommunity/telegraf
RTI Labs의 최신 결과물이 마음에 드셨는지 알려주세요. 의견, 질문 또는 문제가 있는 경우 RTI 커뮤니티 포럼을 방문하거나 GitHub에서 직접 문제를 생성하십시오.