...
Expand | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
구성 Post Settings in kapacitor.conf
|
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 상태 코드가 |
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}} |
post 이벤트 핸들러 사용하기
테스트 서버 만들기 Node.js
Code Block $ mkdir http-server && cd http-server
Code Block $ yarn init yarn init v1.16.0 question name (http-server): question version (1.0.0): question description: question entry point (index.js): question repository url: question author: question license (MIT): question private: success Saved package.json
Code Block $ yarn add express body-parser ... Done
Code Block $ cat package.json { "name": "http-server", "version": "1.0.0", "main": "index.js", "license": "MIT", "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1" } }
Code Block $ vi http-server.js --- vi --- const express = require('express') const bodyParser = require('body-parser') const app = express() app.use(bodyParser.json()) app.post('/postAlert', (req, res) => { console.log(req.body) }) app.listen(3333, () => { console.log('server start! http://localhost:3333') }) :wq
CloudHub에서 HTTP/Post 이벤트 핸들러 알람 규칙 설정하기
왼쪽 사이드 내비게이션에서 Alert → Alert Setting 탭을 클릭하여 페이지를 이동합니다.
오른쪽 상단의
+ Build Alert Rule
버튼을 클릭합니다.알람 규칙의 이름을 “http/post idle cpu usage alert“ 으로 지정하고, Alert Type은 임계치 설정을 위해
Threshold
로 지정합니다.Time Series는 telegraf.autogen → cpu → usage_idle로 설정합니다. Condition은 현재 알람 규칙의 실행 조건을 결정하는 단계입니다. usage_idle이 100%미만 일 때 이벤트 핸들러가 실행됩니다. (100%는 테스트를 위한 값입니다. 실제 적용시 상황에 알맞게 사용하여야합니다.)
Condition의 조건에 만족했을 때 실행할 이벤트 핸들러입니다. 이 예제에서는
post
을 선택합니다.오른쪽 상단의
Save Rule
버튼을 클릭하여 알람 규칙을 저장합니다.post
이벤트 핸들러가 외부 프로그램을 잘 실행시키는 지 확인합니다.
...
Kafka
Kafka 알람 엔드포엔트를 설정하는 방법입니다.
...