Table of Contents |
---|
개요
CloudHub Portal 알람 엔드 포인트는 엔드포인트는 CloudHub Portal 사용자 인터페이스를 사용하여 알람을 전송하는 Kapacitor 기반의 이벤트 핸들러를 만들 수 있습니다. CloudHub Portal을 사용하여 Application뿐만 아니라 특정 URL에도 알람 메세지를 보낼 수 있습니다.
이 가이드는 CloudHub Portal 알람 엔드 포인트 엔드포인트 구성을 위한 단계별 지침을 제공합니다.
CloudHub Portal에서 지원하는 Kapacitor 이벤트 핸들러
...
CloudHub Portal에서 Kapacitor 이벤트 핸들러를 구성하려면 Kapacitor를 설치하고 이를 CloudHub Portal에 연결합니다. Kapacitor 구성 페이지에는 이벤트 핸들러 구성 옵션이 포함됩니다.
알람 엔드 포인트 엔드포인트 구성
CloudHub Portal의 Configure Kapacitor 페이지에서는 알람 엔드 포인트 엔드포인트 구성이 나타납니다. 구성에 액세스하려면 연결된 Kapacitor 인스턴스가 있어야 합니다. 자세한 내용은 Kapacitor 설치 지침 및 CloudHub Portal에 Kapacitor 인스턴스 연결방법을 참조하세요.
알람 엔드 포인트 엔드포인트 구성 섹션의 구성 옵션이 모두 포함되지 않는 점을 유의하세요. 일부 이벤트 핸들러는 사용자가 알람 규칙에 의해 이벤트 핸들러 구성을 사용자 정의할 수 있도록 합니다. 예를 들어 CloudHub Portal에서 Slack Integration을 통해 사용자는 알람 엔드 포인트 엔드포인트 구성 섹션에서 Default Channel과 개별 알람 규칙 설정으로 다른 Channel을 지정할 수 있습니다.
Exec 예정
The exec event handler executes an external program. Event data is passed over STDIN to the processexec
이벤트 핸들러는 외부 프로그램을 실행한다. 이벤트 데이터는 STDIN
을 통해 프로세스에 전달됩니다.
옵션
The following exec event handler options can be set in a handler file or when using 다음은 exec
이벤트 핸들러 옵션은 핸들러 파일 또는 TICKscript에서 .exec()
in a TICKscript을 설정할 때 사용할 수 있습니다.
Name | Type | Description |
---|---|---|
prog | string | Path to program to execute. |
args | list of string | List of arguments to the program. |
...
메모: Exec 프로그램은 일반적으로 기본 시스템
$PATH
에만 액세스할 수 있는kapacitor
사용자로 실행됩니다.$PATH
에 포함되지 않은 실행 파일을 사용하는 경우 실행 파일의 절대 경로를 전달하십시오전달하세요.
Execute an external program from a TICKscript
...
TICKscript에서 외부 프로그램 실행하기
다음 TICKscript는 .exec()
이벤트 핸들러를 사용하여 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 sound-the-alarm.py
Python script whenever idle CPU usage drops below 10% using the .exec()
event handler Python 스크립트를 실행합니다.
exec-cpu-alert.tick
Code Block |
---|
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 10)
.exec('/usr/bin/python', 'sound-the-alarm.py')
|
Execute an external program from a defined handler
...
정의된 핸들러에서 외부 프로그램 실행하기
다음 설정은 "Hey, check your CPU"라는 메시지와 함께 cpu
항목에 알람을 보냅니다. cpu
항목을 구독하고 알람 메시지가 전송될 때마다 sound-the-alarm.py
Python script whenever an alert message is published.Create a TICKscript that publishes alert messages to a topic. The TICKscript below sends an alert message to the cpu
topic any time idle CPU usage drops below 10% Python 스크립트를 실행하는 실행자가 추가됩니다.
항목에 알림 메시지를 전송하는 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')
|
Add and enable the TICKscriptTICKscript 추가 및 실행하기:
Code Block |
---|
kapacitor define cpu_alert -tick cpu_alert.tick kapacitor enable cpu_alert |
Create a handler file that subscribes to the cpu
topic and uses the exec event handler to execute the cpu
항목을 구독하고 exec
이벤트 핸들러를 사용하여 sound-the-alarm.py
Python script Python 스크립트를 실행하는 핸들러 파일을 생성하세요.
exec_cpu_handler.yaml
Code Block |
---|
id: exec-cpu-alert topic: cpu kind: exec options: prog: '/usr/bin/python' args: 'sound-the-alarm.py' |
Add the handler:
Code Block |
---|
kapacitor define-topic-handler exec_cpu_handler.yaml |
HTTP/Post 예정
핸들러 추가하기:
Code Block |
---|
kapacitor define-topic-handler exec_cpu_handler.yaml |
HTTP/Post 예정
post
이벤트 핸들러는 JSON 인코딩된 데이터를 HTTP 엔드포인트에 전송합니다.
구성
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에 추가되지 않는다.
Name of a configured HTTP POST endpoint that acts as an identifier for [[httppost]]
configurations when multiple are present. Endpoints are identifiers only. They are not appended to HTTP POST URLs.
url
알람 데이터를 전송할 URL.
The URL to which the alert data will be posted.
headers
POST 요청에 설정할 추가 헤더 값
Set of extra header values to set on the POST request.
basic-auth
POST 요청에 설정할 인증 정보 세트.
Set of authentication credentials to set on the POST request.
alert-template
사용자 지정 HTTP 본문 구성을 위한 알림 템플릿. 알림 템플릿은 알림 데이터를 사용할 때 사후 알림 처리기에서만 사용되므로 알림 임시로 건너뛰십시오.
Alert template for constructing a custom HTTP body. Alert templates are only used with post alert handlers as they consume alert data. Skip to alert templating.
alert-template-file
알림 템플릿 파일의 절대 경로. 알림 임시로 건너뛰십시오.
Absolute path to an alert template file. Skip to alert templating.
row-template
사용자 지정 HTTP 본문 구성을 위한 행 템플릿. 행 템플릿은 한 번에 행을 사용할 때 httpPost 노드 파이프라인 노드와만 사용된다. 행 임시로 건너뛰십시오.
Row template for constructing a custom HTTP body. Row templates are only used with the httpPost node pipeline nodes as they consume a row at a time. Skip to row templating.
row-template-file
행 템플릿 파일의 절대 경로. 행 임시로 건너뛰기
Absolute path to a row template file. Skip to row templating.
환경 변수를 사용하여 구성 옵션 정의하기
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 상태 코드가 |
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 - 게시물 옵션 "인라인"정의
Code Block |
---|
|alert()
// ...
// Defining post options "inline"
.post('https://example.com/path')
.header('Example1', 'example1')
.header('Example2', 'example2')
.captureResponse()
.timeout(10s)
.skipSSLVerification()
|
Using the Post event handler
The post event handler can be used in both TICKscripts and handler files to post alert and HTTP POST data to an HTTP endpoint. The examples below deal with alerts and use the same [[httppost]]
configuration defined in the kapacitor.conf
:
HTTP POST settings in kapacitor.conf
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}}" |
Post alerts from a TICKscript
The following TICKscripts use the .post()
event handler to post the message, “Hey, check your CPU”, whenever idle CPU usage drops below 10%.
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')
|
If you don’t want to use the [[httppost]]
settings defined in the kapacitor.conf
, you can specify your post options inline.
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 alerts from a defined handler
The following setup sends an alert to the cpu
topic with the message, “Hey, check your CPU”. A post handler is added that subscribes to the cpu
topic and posts all alert messages to the url and endpoint defined in the kapacitor.conf
.
Create a TICKscript that publishes alert messages to a topic. The TICKscript below sends an alert message to the cpu
topic any time idle CPU usage drops below 10%.
cpu_alert.tick
Code Block |
---|
stream
|from()
.measurement('cpu')
|alert()
.crit(lambda: "usage_idle" < 10)
.message('Hey, check your CPU')
.topic('cpu')
|
Add and enable the TICKscript:
Code Block |
---|
kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert |
Create a handler file that subscribes to the cpu
topic and uses the post event handler to post alerts to an HTTP endpoint.
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' |
Add the handler:
Code Block |
---|
kapacitor define-topic-handler post_cpu_handler.yaml |
Post templating
The post event handler allows you to customize the content and structure of POSTs with alert and row templates.
Alert templates
Alert templates are used to construct a custom HTTP body. They are only used with post alert handlers as they consume alert data. Templates are defined either inline in the kapacitor.conf
using the alert-template
configuration or in a separate file and referenced using the alert-template-file
config.
Alert templates use Golang Template and have access to the following fields:
Field | Description |
---|---|
.ID | The unique ID for the alert. |
.Message | The message of the alert. |
.Details | The details of the alert. |
.Time | The time the alert event occurred. |
.Duration | The duration of the alert event. |
.Level | The level of the alert, i.e INFO, WARN, or CRITICAL. |
.Data | The data that triggered the alert. |
.PreviousLevel | The previous level of the alert, i.e INFO, WARN, or CRITICAL. |
.Recoverable | Indicates whether or not the alert is auto-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 use Golang Template and have access to the following fields:
Field | Description |
---|---|
.Name | The measurement name of the data stream |
.Tags | A map of tags on the data. |
.Values | A list of values; each a map containing a “time” key for the time of the point and keys for all other fields on the point. |
Inline row 템플릿
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}} |
Kafka
Kafka 알람 엔드 포엔트를 설정하는 방법입니다.
...
다음 설정은 cpu
항목을 구독하고, {{.Time}} : CPU 사용량이 90% 이상입니다.
라는 메시지와 함께 cpu
항목에 알람을 보냅니다 . cpu
항목을 구독하고 새 메시지가 게시 될 전송될 때마다 메시지를 /tmp/alerts.log
로그파일에 기록 하는 로그 핸들러가 추가 됩니다.
항목에 알람 메시지를 게시하는 전송하는 TICKscript를 작성하세요. 아래의 TICKscript는 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 cpu
항목에 알람 메시지를 보냅니다 .
...
Nickname this Configuration
두 개 이상의 Slack 알람 엔드 포인트를 엔드포인트를 구성해야 할 경우 Slack 엔드 포인트에 엔드포인트에 대한 고유한 이름을 추가해야합니다. 이 필드를 사용하려면 하나 이상의 Slack 엔드 포인트가 엔드포인트가 구성되어야 합니다.
Slack WebHook URL
...
테스트 알람 보내기
Send Test Alert를 클릭하면 알람 엔드 포인트 엔드포인트 구성을 테스트할 수 있습니다.
다른 구성을 추가
Add Another Config를 클릭하여 Slack 알람 엔드 포인트를 엔드포인트를 추가할 수 있습니다. 추가된 각각의 Slack 알람 엔드 포인트는 엔드포인트는 초기 Slack 알람 엔드 포인트가 엔드포인트가 구성된 후 활성화할 때 Nickname this Configuration 필드에서 고유 식별자를 지정해야 합니다.
...
TCP 이벤트 핸들러는 JSON 인코딩된 알람 데이터를 TCP 엔드포인트로 전송합니다.
옵션
다음 TCP 이벤트 핸들러 옵션은 핸들러 파일 또는 TICKscript에서 .tcp()
를 설정할 때 사용할 때 설정할 수 있습니다.
Name | Type | Description |
---|---|---|
address | string | Address of TCP endpoint. |
...
아래의 TICKscript는 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 .tcp()
이벤트 핸들러를 사용하여 알람 데이터를 전송한다전송합니다.
tcp-cpu-alert.tick
Code Block |
---|
stream |from() .measurement('cpu') |alert() .crit(lambda: "usage_idle" < 10) .message('Hey, check your CPU') .tcp('127.0.0.1:7777') |
...