Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

환경 변수를 사용하여 구성 옵션 정의하기

endpointurl 및 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 - 게시물 옵션 "인라인"정의
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')

...