[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net) # Kapacitor 설치 및 구성 **Kapacitor**는 원시 데이터 처리 엔진이다. InfluxDB에서 스트림 및 배치 데이터를 모두 처리할 수 있으며, Kapacitor를 사용하면 동적 임계 값으로 경고를 처리하고, 패턴에 대한 메트릭을 일치시키며, 통계적 이상을 계속하고 동적로드 재조정과 같은 이러한 경고를 기반으로 특정 작업을 수행하는 사용자 정의 논리 또는 사용자 정의 함수를 연결할 수 있다. Kapacitor는 **HipChat, OpsGenie, Alerta, Sensu, PagerDuty, Slack**과 통합 된다. # Kapacitor 개요 Kapacitor 작업은 TICK script 구문을 사용하여 데이터 집합에서 수행 할 작업을 정의하며, Kapacitor 작업에는 다음이 포함된다. - **stream task** - stream task은 Kapacitor의 InfluxDB에 기록 된 데이터를 복제한다. 이는 쿼리 오버 헤드를 줄이고, Kapacitor가 데이터를 디스크에 저장해야한다. - **batch task** - 일괄 작업은 지정된 간격 동안 데이터를 쿼리하고 처리한다. # Kapacitor 설치 Kapacitor는 influxdata 에서 개발하고 배포하고 있다. 따라서 YUM Repository를 별도로 등록해야 한다. ``` # cat /etc/yum.repos.d/influxdb.repo [influxdb] name = InfluxDB Repository - RHEL \$releasever baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable enabled = 1 gpgcheck = 1 gpgkey = https://repos.influxdata.com/influxdb.key ``` 다음과 같이 yum 명령으로 진행하면 된다. ``` # yum install kapacitor ``` `!중요` : Kapacitor의 데몬을 실행하기 위해서는 반드시 통신/계정접근이 가능한 InfluxDB가 사전에 준비되어 있어야 한다. ``` # cat /etc/kapacitor/kapacitor.conf ...중략 [[influxdb]] # Connect to an InfluxDB cluster # Kapacitor can subscribe, query and write to this cluster. # Using InfluxDB is not required and can be disabled. enabled = true default = true name = "influxdb01" urls = ["http://172.16.0.188:8086"] username = "admin" password = "패스워드" timeout = 0 ``` 그리고 `사용자의 권한은 반드시 Admin 계정이 부여되어야` 한다. # Kapacitor Task 제어 흐름 Kapacitor Task의 활성화는 다음의 순서대로 진행되어야 한다. > "Tick 스크립트 작성 -> Task의 등록/변경/제거 -> List Tasks 명령 쿼리로 확인 -> Task의 Enabled/Disabled" # Tick Script 작성 일반적으로 Tick 스크립트와 템플릿은 특정 경로에 디렉토리를 생성해서 진행하는 것이 향후 관리에 도움이 될 것이다. 따라서 다음과 같이 디렉토리 생성을 진행한다. ``` # mkdir /root/kapacitor # cd /root/kapacitor # mkdir scripts values ``` - /root/kapacitor/scripts : tick 스크립트 파일이 위치하는 경로 - /root/kapacitor/values : json 변수 파일이 위치하는 경로 # Task 등록 1. Template 등록 확장자가 **.tick**로 끝나는 파일을 작성한 후 **define-template 옵션**을 사용하여, 다음과 같이 등록한다. ``` # kapacitor define-template CPU-USED-PERCENT-COMMON -tick /root/kapacitor/scripts/cpu_common.tick ``` > !참고 : 관례적으로 Task의 이름은 대문자로 하는 것이 좋다. 2. 등록한 Task 확인 show-template 옵션을 사용하여, 다음과 같이 등록된 Task를 확인한다. ``` # kapacitor show-template CPU-USED-PERCENT-COMMON ID: CPU-USED-PERCENT-COMMON Error: Type: batch Created: 05 Mar 22 15:47 KST Modified: 15 Mar 22 12:34 KST TICKscript: // Json Variables var strDB string var strRP string ...중략 ``` 3. 등록한 Task에 대한 변수를 정의하는 JSON 파일 작성 이 json 파일은 Task에 대한 변수 값을 실시간으로 적용할 수 있도록 하는데, **define 옵션**을 사용하면 된다. ``` # kapacitor define CPU-USED-PERCENT-COMMON -file /root/kapacitor/values/CPU-USED-PERCENT-COMMON.json ``` > !참고 : json 파일의 경우도 Task의 이름과 동일하게 대문자로 작성하는 것이 좋다. 4. Task 활성화 Task를 등록하면, **최초 상태는 disabled 상태**가 되기 때문에 자동으로 활성화되지 않는다. 따라서 다음과 같이 활성화를 진행한다. ``` # kapacitor list tasks ID Type Status Executing Databases and Retention Policies CPU-USED-PERCENT-COMMON batch disabled false ["hongsnet"."autogen"] ``` **enable** 옵션을 사용하여 활성화 한다. ``` # kapacitor enable CPU-USED-PERCENT-COMMON ``` # Tick / Template 변수 수정 Tick 스크립트 및 Json 파일을 수정한 후 다음과 같이 간단하게, 즉시 적용이 가능하다. 1. Tick 스크립트 변경 Tick 스크립트의 내용을 변경한 후 다음과 같이 **define-template 옵션**을 사용하여 명령하면 된다. ``` # kapacitor define-template CPU-USED-PERCENT-COMMON -tick /root/kapacitor/scripts/cpu_common.tick ``` 2. Template 변수 수정 Json 파일의 내용을 변경한 후 다음과 같이 **define 옵션**을 사용하여 명령하면 된다. ``` # kapacitor define CPU-USED-PERCENT-COMMON -file /root/kapacitor/values/CPU-USED-PERCENT-COMMON.json ``` # Task 제거 1. 제거할 Task 확인 ``` # kapacitor list tasks ID Type Status Executing Databases and Retention Policies CPU-USED-PERCENT-COMMON batch enabled true ["hongsnet"."autogen"] ``` 2. Task 제거 ``` # kapacitor delete tasks CPU-USED-PERCENT-COMMON ``` 그럼, 다음과 같이 삭제된 것을 확인할 수 있다. ``` # kapacitor list tasks ID Type Status Executing Databases and Retention Policie ```