Versions Compared

Key

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

...

Expand
titleexec 이벤트 핸들러를 Cloud Portal이 아닌 CLI 환경에서 kapacitor 명령어를 통해 세팅해야 할 경우 참고하세요.

옵션

다음은 exec 이벤트 핸들러 옵션은 핸들러 파일 또는 TICKscript에서 .exec()을 설정할 때 사용할 수 있습니다.

Name

Type

Description

prog

string

실행할 프로그램 경로

args

list of string

인자로 사용할 프로그램들의 목록

예: 핸들러 파일

Code Block
id: handler-id
topic: topic-name
kind: exec
options:
  prog: /path/to/executable
  args: 'executable arguments'

예: TICKscript

Code Block
|alert()
  // ...
  .exec('/path/to/executable', 'executable arguments')

exec 이벤트 핸들러 사용하기

exec  이벤트 핸들러는 TICKscripts나 핸들러 파일을 활용하여, 알람 로직에 기반한 외부 프로그램을 실행할 수 있습니다.

메모: Exec 프로그램은 일반적으로 기본 시스템 $PATH에만 액세스할 수 있는 kapacitor 사용자로 실행됩니다. $PATH에 포함되지 않은 실행 파일을 사용하는 경우 실행 파일의 절대 경로를 전달하세요.

TICKscript에서 외부 프로그램 실행하기

다음 TICKscript는 .exec() 이벤트 핸들러를 사용하여 유휴 CPU 사용량이 10%미만으로 떨어질 때마다 sound-the-alarm.py 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')

핸들러를 정의하여 외부 프로그램 실행하기

다음 설정은 "Hey, check your CPU"라는 메시지와 함께 cpu 항목에 알람을 보냅니다. cpu 항목을 구독하고 알람 메시지가 전송될 때마다 sound-the-alarm.py 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')

TICKscript 추가 및 실행하기:

Code Block
kapacitor define cpu_alert -tick cpu_alert.tick
kapacitor enable cpu_alert

cpu 항목을 구독하고 exec 이벤트 핸들러를 사용하여 sound-the-alarm.py 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'

핸들러 추가하기:

Code Block
kapacitor define-topic-handler exec_cpu_handler.yaml

...

Code Block
$ vim alarm.py

--- vim ---
import os.path
from datetime import datetime

file = '/Users/choedaebeom/alarm-log.txt'

if os.path.isfile(file):
 fs = open('/Users/choedaebeom/alarm-log.txt','a')
else:
 fs = open('/Users/choedaebeom/alarm-log.txt','w')

now = datetime.now()
fs.write(str(now)+'\n')
fs.close()

:wq

exec 이벤트 핸들러 사용하기

  1. 왼쪽 사이드 내비게이션에서 Alert → Alert Setting 탭을 클릭하여 페이지를 이동합니다.

  2. 오른쪽 상단의 + Build Alert Rule 버튼을 클릭합니다.

  3. 알람 규칙의 이름을 “exec idle cpu usage alert“ 으로 지정하고, Alert Type은 임계치 설정을 위해 Threshold로 지정합니다.

  4. Time Series는 telegraf.autogen → cpu → usage_idle로 설정합니다. Condition은 현재 알람 규칙의 실행 조건을 결정하는 단계입니다. usage_idle이 100%미만 일 때 이벤트 핸들러가 실행됩니다. (100%는 테스트를 위한 값입니다. 실제 적용시 상황에 알맞게 사용하여야합니다.)

  5. Condition의 조건에 만족했을 때 실행할 이벤트 핸들러입니다. 이 예제에서는 exec을 선택합니다.

  6. exec 입력창에 외부프로그램을 실행시킬 프로그램의 경로와 외부 프로그램의 경로를 지정해주세요. 구분자는 공백입니다.

    Code Block
    // 외부프로그램 실행시킬 프로그램 + 공백 + 외부프로그램
    /path/to/executable /executable/arguments
    
    // example
    /usr/local/bin/python3.7 /Users/choedaebeom/alarm.py


    Message 입력창에 아래 문구의 입력합니다. exec 이벤트 핸들러는 외부 프로그램(경보음, 경고등)등을 실행시키기 위함입니다. 따라서 exec 이벤트 핸들러는 Message를 전송하지않지만, 알람 규칙내에 혼용되는 이벤트 핸들러들을 위해 입력합니다.

    Code Block
    '{{ .Time }}: CPU idle usage 100%'

  7. 오른쪽 상단의 Save Rule 버튼을 클릭하여 알람 규칙을 저장합니다.

  8. exec 이벤트 핸들러가 외부 프로그램을 잘 실행시키는 지 확인합니다.

...

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()를 설정할 때 사용할 수 있습니다.

...

TCP 이벤트 핸들러는 JSON 인코딩된 알람 데이터를 TCP 엔드포인트로 전송합니다.

옵션

다음 TCP 이벤트 핸들러 옵션은 핸들러 파일 또는 TICKscript에서 .tcp()를 설정할 때 사용할 수 있습니다.

...

Code Block
id: handler-id
topic: topic-name
kind: tcp
options:
  address: 127.0.0.1:7777
예: TICKscript
Code Block
|alert()
  // ...
  .tcp('127.0.0.1:7777')

...