구성 post 이벤트 핸들러의 구성 및 기본 옵션 값은 kapacitor.conf 에 설정됩니다. 아래는 예제 구성입니다. Post Settings in kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "example"
url = "http://example.com/path"
headers = { Example = "your-key" }
basic-auth = { username = "my-user", password = "my-pass" }
alert-template = "{{.Message}}:{{range .Data.Series}}{{.Tags}},{{range .Values}}{{.}}{{end}}{{end}}"
alert-template-file = "/path/to/template/file"
row-template = "{{.Name}} host={{index .Tags \"host\"}}{{range .Values}} {{index . "time"}} {{index . "value"}}{{end}}"
row-template-file = "/path/to/template/file" |
endpoint
다수의 항목이 존재할 때 [[httppost] 구성의 식별자 역할을 하는 구성된 HTTP POST 엔드포인트의 이름입니다. 엔드포인트는 식별자일 뿐이며, 그것들은 HTTP POST URL에 추가되지 않습니다. url
알람 데이터를 전송할 URL headers
POST 요청에 설정할 추가 헤더 값 basic-auth
POST 요청에 설정할 인증 정보 세트. alert-template
사용자 정의 HTTP body 구성을 위한 알람 템플릿입니다. 알람 템플릿은 알람 데이터를 사용할 때 post 알림 핸들러에서만 사용됩니다. alert-template-file
알림 템플릿 파일의 절대 경로입니다. row-template
사용자 정의 HTTP body 구성을 위한 Row template입니다. Row template은 한 번에 한 행을 사용하기때문에 httpPost 노드 파이프라인과 노드가 함께 사용됩니다. row-template-file
Row template 파일의 절대 경로입니다. 환경 변수를 사용하여 구성 옵션 정의하기 endpoint , url 및 headers 구성 옵션은 환경 변수로 정의할 수 있습니다.
Code Block |
---|
KAPACITOR_HTTPPOST_0_ENDPOINT = "example"
KAPACITOR_HTTPPOST_0_URL = "http://example.com/path"
KAPACITOR_HTTPPOST_0_HEADERS_Example1 = "header1"
KAPACITOR_HTTPPOST_0_HEADERS_Example2 = "header2" |
다중 HTTP POST 엔드포인트 구성 및 사용 kapacitor.conf 는 여러 [httppost] 섹션을 지원합니다. 각 구성의 endpoint 구성 옵션은 해당 특정 구성에 대해 고유한 식별자로 사용됩니다. Post Alert 핸들러와 함께 특정 [httppost] 구성을 사용하려면 Post 알람 핸들러 파일 또는 TICKscript에 엔드포인트를 지정하세요.
kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "endpoint1"
url = "http://example-1.com/path"
# ...
[[httppost]]
endpoint = "endpoint2"
url = "http://example-2.com/path"
# ... |
환경 변수를 사용하여 여러 HTTP POST 엔드포인트 구성을 추가 할 수도 있습니다. 변수 값은 각 변수 키의 숫자를 사용하여 그룹화됩니다. Code Block |
---|
KAPACITOR_HTTPPOST_0_ENDPOINT = "example0"
KAPACITOR_HTTPPOST_0_URL = "http://example-0.com/path"
KAPACITOR_HTTPPOST_0_HEADERS_Example1 = "header1"
KAPACITOR_HTTPPOST_0_HEADERS_Example2 = "header2"
KAPACITOR_HTTPPOST_1_ENDPOINT = "example1"
KAPACITOR_HTTPPOST_1_URL = "http://example-1.com/path"
KAPACITOR_HTTPPOST_1_HEADERS_Example1 = "header1"
KAPACITOR_HTTPPOST_1_HEADERS_Example2 = "header2" |
옵션 다음 post 이벤트 핸들러 옵션은 핸들러 파일 또는 TICKscript에서 .post() 를 설정할 때 사용할 수 있습니다. Name | Type | Description |
---|
url | string | 알람 데이터가 전송될 URL | endpoint | string | 사용할 HTTP POST 엔드포인트(kapacitor.conf에서 구성)의 이름. URL 대신 지정할 수 없습니다. | headers | map of string to string | POST 요청에 설정할 추가 헤더 셋 | capture‑response | bool | HTTP 상태 코드가 2xx 코드가 아닌 경우 HTTP 응답을 읽고 기록합니다. | timeout | duration | HTTP POST의 timepout | skipSSLVerification | bool | POST 요청에 대한 SSL 확인을 비활성화합니다. |
예: 핸들러 파일 - 사전 구성된 엔드포인트 사용 Code Block |
---|
id: handler-id
topic: topic-name
kind: post
options:
# Using the 'example' endpoint configured in the kapacitor.conf
endpoint: example |
예: 핸들러 파일 - post 옵션 정의 “인라인" Code Block |
---|
id: handler-id
topic: topic-name
kind: post
options:
# Defining post options "inline"
url: http://example.com/path
headers:
'Example1': 'example1'
'Example2': 'example2'
capture-response: true
timeout: 10s
skipSSLVerification: true |
예: TICKscript - 사전 구성된 엔드포인트 사용 Code Block |
---|
|alert()
// ...
// Using the 'example' endpoint configured in the kapacitor.conf
.post()
.endpoint('example')
|
예: TICKscript - Post 옵션 "인라인"정의 Code Block |
---|
|alert()
// ...
// Defining post options "inline"
.post('https://example.com/path')
.header('Example1', 'example1')
.header('Example2', 'example2')
.captureResponse()
.timeout(10s)
.skipSSLVerification()
|
Post 이벤트 핸들러 사용하기 post 이벤트 핸들러는 TICKscripts 또는 핸들러 파일에서 사용할 수 있습니다. 알람 및 HTTP POST 데이터를 HTTP 엔드포인트에 전송할 수 있습니다. 아래 예는 알람를 다루고 kapacitor.conf에 정의 된 동일한 [[httppost]] 구성을 사용합니다. kapacitor.conf에서 HTTP POST 세팅 Code Block |
---|
[[httppost]]
endpoint = "api-alert"
url = "http://mydomain.com/api/alerts"
headers = { From = "alerts@mydomain.com" }
alert-template = "{{.Message}}:{{range .Data.Series}}{{.Tags}},{{range .Values}}{{.}}{{end}}{{end}}" |
TICKscript에서 Post 알람보내기 다음 TICKscript는 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 post() 이벤트 핸들러를 사용하여 “Hey, Check your CPU” 메시지를 전송합니다. post-cpu-alert.tick Code Block |
---|
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 10)
.message('Hey, check your CPU')
.post()
.endpoint('api-alerts') |
kapacitor.conf 에 정의된 [[httppost]] 설정을 사용하지 않을 경우, post 옵션을 인라인으로 지정할 수 있습니다.
post-cpu-alert.tick Code Block |
---|
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 10)
.message('Hey, check your CPU')
.post('https://example.com/path')
.header('Example1', 'example1')
.header('Example2', 'example2')
.captureResponse()
.timeout(10s)
.skipSSLVerification()
|
핸들러를 정의하여 Post 알람보내기 다음 설정은“Hey, check your CPU”라는 메시지와 함께 알람을 cpu 항목에 전송합니다. cpu 항목을 구독하고 모든 알람 메시지를 kapacitor.conf 에 정의된 URL 및 엔드포인트에 전송하는 Post 이벤트 핸들러가 추가됩니다. 알람 메시지를 cpu 항목에 전송하는 TICKscript를 작성하세요. 아래의 TICKscript는 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 cpu 항목에 알람 메시지를 보냅니다. cpu_alert.tick Code Block |
---|
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 10)
.message('Hey, check your CPU')
.topic('cpu')
|
TICKscript 추가 및 실행하기 : Code Block |
---|
kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert |
cpu 항목에 등록하고 이벤트 핸들러를 사용하여 HTTP 엔드포인트에 알람을 전송하는 핸들러 파일을 작성하세요.
post_cpu_handler.yaml Code Block |
---|
id: post-cpu-alert
topic: cpu
kind: post
options:
url: 'http://example.com/path'
headers:
'From': 'alert@mydomain.com' |
핸들러 추가하기: Code Block |
---|
kapacitor define-topic-handler post_cpu_handler.yaml |
Post templating Post 이벤트 핸들러를 사용하면 알람 및 Row template를 사용하여 POST의 컨텐츠 및 구조를 사용자 정의 할 수 있습니다. Alert templates Alert template는 사용자 정의 HTTP body를 구성하는 데 사용됩니다. 알람 데이터를 사용할 때 post 알람 관리자와 사용됩니다. 템플릿은 alert-template 구성을 사용하여 kapacitor.conf 에 인라인으로 정의되거나 별도의 파일로 정의되며 alert-template-file 구성을 사용하여 참조됩니다. 알람 템플릿은 Golang Template 을 사용하며 다음 필드에 액세스 할 수 있습니다. Field | Description |
---|
.ID | 알람의 고유 ID | .Message | 알람 메시지 | .Details | 알람의 세부 사항 | .Time | 알람 이벤트가 발생한 시간 | .Duration | 알람 이벤트의 지속 기간 | .Level | 알람의 레벨 (예 : INFO, WARN 또는 CRITICAL) | .Data | 알람을 트리거 한 데이터 | .PreviousLevel | 알람 이전 수준 (예 : INFO, WARN 또는 CRITICAL) | .Recoverable | 알람이 자동 복구 가능한지 여부를 나타냅니다. |
Inline alert template kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "example"
url = "http://example.com/path"
alert-template = "{{.Message}}:{{range .Data.Series}}{{.Tags}},{{range .Values}}{{.}}{{end}}{{end}}" |
Alert template file kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "example"
url = "http://example.com/path"
alert-template-file = "/etc/templates/alert.html" |
/etc/templates/alert.html Code Block |
---|
{{.Message}}:{{range .Data.Series}}{{.Tags}},{{range .Values}}{{.}}{{end}}{{end}} |
Row templates Row templates는 custom HTTP body를 구성하는 데 사용됩니다. 한 번에 한 행씩 소비하므로 httpPost 핸들러와 함께 사용됩니다. row-template 구성을 사용하여 kapacitor.conf 에 인라인으로 정의되거나 별도의 파일로 정의되며 row-template-file 구성을 사용하여 참조됩니다. Row templates은 Golang Template 을 사용하며 다음 필드에 액세스 할 수 있습니다. Field | Description |
---|
.Name | Data stream의 measurement name | .Tags | Data의 tag에 대한 map | .Values | 값 목록. 각 지점의 시간에 대한 시간 키와 지점의 다른 모든 필드에 대한 키를 포함하는 맵. |
Inline row template kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "example"
url = "http://example.com/path"
row-template = '{{.Name}} host={{index .Tags "host"}}{{range .Values}} {{index . "time"}} {{index . "value"}}{{end}}' |
Row 템플릿 파일 kapacitor.conf Code Block |
---|
[[httppost]]
endpoint = "example"
url = "http://example.com/path"
row-template-file = "/etc/templates/row.html" |
/etc/templates/row.html Code Block |
---|
{{.Name}} host={{index .Tags \"host\"}}{{range .Values}} {{index . "time"}} {{index . "value"}}{{end}} |
|