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
  1. 왼쪽 사이드 내비게이션에서 Alert → Alert Setting 탭을 클릭하여 페이지를 이동합니다.

    Image Added

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

    Image Added

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

    Image Added

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

    Image Added

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

    Image Added

  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%'
    Image Added

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

    Image Added

...

HTTP/Post 예정

post 이벤트 핸들러는 JSON 인코딩된 데이터를 HTTP 엔드포인트에 전송합니다.

...