InfluxDB subscriptions는 InfluxDB에 기록된 모든 데이터가 local 또는 remote endpoint로 복사됩니다.
Subscriptions는 주로 Kapacitor와 함께 사용되지만 UDP, HTTP 또는 HTTPS 연결을 할 수 있는 모든 Endpoint는 InfluxDB에 “SUBSCRIPTION”을 생성하여 모든 데이터의 사본을 받을 수 있습니다.
How subscriptions work
데이터가 InfluxDB에 Write 될 때, HTTP, HTTPS 또는 UDP line protocol을 통해 Subscriber endpoint에 복제됩니다.
InfluxDB subscriber service는 여러 개의 “writers"(goroutines)를 생성하여 Subscription endpoints에 Write 데이터를 전송합니다.
Writer goroutines의 개수는 influxdb.conf의 write-concurrency
설정으로 정의됩니다.
InfluxDB에 Writes가 발생될 때, 각각의 Subscription writer는 지정된 Subscription endpoints로 Write 된 데이터를 전송합니다. 그러나 write-concurrency
(multiple writers)의 부하와 수집속도로 인해 Writer processes와 Transport layer의 Nanosecond의 차이가 발생할 수 있으며, 이에 따라 차례로 수신되지 않을 수 있습니다.
InfluxDB에 Writes가 발생할 때, 각각의 Subscription writer는 지정된 Subscription endpoints로 Write 된 데이터를 전송합니다. 그러나 write-concurrency
(multiple writers)의 부하와 수집속도로 인해 Writer processes와 Transport layer의 Nanosecond의 차이가 발생할 수 있으며, 이에 따라 차례로 수신되지 않을 수 있습니다.
Important information about high write loads
While setting the subscriber
write-concurrency
to greater than 1 does increase your subscriber write throughput, it can result in out-of-order writes under high ingest rates. Settingwrite-concurrency
to 1 ensures writes are passed to subscriber endpoints sequentially, but can create a bottleneck under high ingest rates.What
write-concurrency
should be set to depends on your specific workload and need for in-order writes to your subscription endpoint.
InfluxQL subscription statements
아래의 InfluxQL 문을 사용하여 Subscriptions를 관리하십시오.
CREATE SUBSCRIPTION
SHOW SUBSCRIPTIONS
DROP SUBSCRIPTION
Create subscriptions
InfluxQL문 CREATE SUBSCRIPTION
을 사용하여 Subscriptions를 생성합니다. CREATE SUBSCRIPTION
은 Subscription name, Database name, Retention policy, InfluxDB에 Write 된 데이터를 복사해야 하는 Host의 URL이 필요하며 구문은 아래 예시를 참고하십시오.
-- Pattern: CREATE SUBSCRIPTION "<subscription_name>" ON "<db_name>"."<retention_policy>" DESTINATIONS <ALL|ANY> "<subscription_endpoint_host>" -- Examples: -- Create a SUBSCRIPTION on database 'telegraf' and retention policy 'autogen' that sends data to 'example.com:9090' via HTTP. CREATE SUBSCRIPTION "cloudhub_sub" ON "telegraf"."autogen" DESTINATIONS ALL 'http://example.com:9090' -- Create a SUBSCRIPTION on database 'telegraf' and retention policy 'autogen' that round-robins the data to 'h1.example.com:9090' and 'h2.example.com:9090' via UDP. CREATE SUBSCRIPTION "cloudhub_sub" ON "telegraf"."autogen" DESTINATIONS ANY 'udp://h1.example.com:9090', 'udp://h2.example.com:9090'
수신할 Host에서 사용자 인증을 사용할 경우 자격 증명을 아래 예시와 같이 포함하도록 URL을 입력하십시오.
-- Create a SUBSCRIPTION on database 'telegraf' and retention policy 'autogen' that sends data to another InfluxDB on 'example.com:8086' via HTTP. Authentication is enabled on the subscription host (user: subscriber, pass: secret). CREATE SUBSCRIPTION "cloudhub_sub" ON "telegraf"."autogen" DESTINATIONS ALL 'http://subscriber:secret@example.com:8086'
SHOW SUBSCRIPTIONS
문은 CREATE SUBSCRIPTION
으로 생성한 인증계정과 URL을 모두 출력합니다.
여러 Host로 Subscription data 전송
CREATE SUBSCRIPTION
문을 사용하여 여러 Hosts의 Endpoints를 DESTINATIONS
절에 쉼표로 구분하여 지정할 수 있습니다.
또한 DESTINATIONS
절 뒤에 ALL
또는 ANY
으로 구분하여 Endpoint에 쓰는 방법을 결정합니다.
ALL
: 지정된 모든 Host에 기록합니다.
ANY
: Round robin방식으로 지정된 Host에 기록합니다.
여러 Hosts의 Subscriptions 방법
-- Write all data to multiple hosts CREATE SUBSCRIPTION "cloudhub_sub" ON "telegraf"."autogen" DESTINATIONS ALL 'http://host1.example.com:9090', 'http://host2.example.com:9090' -- Round-robin writes between multiple hosts CREATE SUBSCRIPTION "cloudhub_sub" ON "telegraf"."autogen" DESTINATIONS ANY 'http://host1.example.com:9090', 'http://host2.example.com:9090'
Subscription protocols
Subscriptions은 HTTP, HTTPS, or UDP 전송 프로토콜을 사용할 수 있습니다.
사용할 엔드 포인트는 구독 엔드 포인트에서 예상 한 프로토콜에 따라 결정됩니다.
사용은 서브스크립션 엔드포인트에서 기대하는 프로토콜에 의해 결정됩니다
Which to use is determined by the protocol expected by the subscription endpoint. If creating a Kapacitor subscription, this is defined by the subscription-protocol
option in the [[influxdb]]
section of your kapacitor.conf
.
Add Comment