티스토리 뷰

Server

[Tick] Kapacitor(캐패시터) 알림 전송이 실패하는 경우와 Chronograf(크로노크라프) HostList에 불필요한 Host가 노출되는 경우

망나니개발자 2022. 4. 15. 10:00
반응형

이번에 Tick 스택을 이용해서 모니터링 시스템을 구축하는데, Kapacitor로 알림을 보내는 작업을 하게 되었습니다. 해당 작업을 하면서 진행했던 내용들을 정리해두었습니다.

개인적으로 나중에 참고하려고 작성한 내용이라 간략히만 정리하도록 하겠습니다.

 

 

 

 

1. Kapacitor 알림 전송이 실패하는 경우


[ Tick 컴포넌트 역할과 관계 ]

Tick 컴포넌트 역할

  • Influx: 시계열 데이터베이스
  • Chronograf: UI 화면 제공
  • Telegraf: cpu, memory,disk, db 등등 다양한 정보들을 InfluxDB로 전송
  • Kapacitor: 데이터 처리 및 알림 전송

 

 

InfluxDB와 Kapacitor 간의 구독(Subscription)

Kapacitor가 InfluxDB로 알림을 보내기 위해서는 Kapacitor와 InfluxDB 간에 통신이 되어야 한다는 것이다. 이러한 이유로 Kapacitor는 InfluxDB를 구독(Subscription)하고 있다. 기본적으로 "_internal"."monitor"에 저장해둔다.

 

 

 

[ Kapacitor 알림 전송이 실패하는 경우 ]

Kapacitor 알림 전송이 실패하는 경우

원격 관계에 있는 Kapacitor와 InfluxDB에서, Kapacitor로 알림을 보내려고 하는 경우에 알림이 전송되지 않았다. 이러한 이유는 위의 Subscription과 관계가 있는데, 위의 그림을 보면 destination(Kapacitor 서버의 주소와 포트)을 관리한다.

그런데 Kapacitor의 기본 host 설정은 localhost라서 Kapacitor와 InfluxDB가 원격으로 호출한다면 알림이 전송되지 않는다. 그러므로  InfluxDB가 Kapacitor를 호출할 수 있도록 Kapacitor 설정( /etc/kapacitor/kapacitor.conf)에서 hostname을 서버 IP로 변경해주면 된다.

  • 문제 상황: Kapacitor에서 알림이 전송되지 않음
  • 원인: Kapacitor는 InfluxDB 쪽에 subuscription 이라는걸 만들어두는데, kapacitor와 influx가 remote인 경우 Influx가 kapacitor를 resolve 할 수 있도록 hostname(IP)를 지정해주어야 함
  • 해결: /etc/kapacitor/kapacitor.conf 에서 hostname을 서버 IP로 변경해둠

 

 

Subscription이 생성되어 Kapacitor 실행에 실패하는 경우

만약 이미 구독(Subscription)이 만들어져서 Kapacitor 실행에 실패한다면 InfluxDB에서 구독(Subscription)을 제거해주면 된다.

 

1. Subscription을 조회하여 ID 확인

show subscription

 

 

2. Subscription 제거

drop subscription "{subscriptionId}" on "{DB}"."{RP}"
ex) drop subscription "kapacitor-a2357018-5d94-4a03-a1ab-a2322faf80ff" on "_internal"."monitor"

 

 

 

 

2. Chronograf의 HostList에 불필요한 Host가 노출되는 경우


[ Tick 컴포넌트 역할과 관계 ]

Tick 컴포넌트 역할

  • Influx: 시계열 데이터베이스 
  • Chronograf: UI 화면 제공
  • Telegraf: cpu, memory,disk, db 등등 다양한 정보들을 InfluxDB로 전송
  • Kapacitor: 데이터 처리 및 알림 전송

 

 

InfluxDB와 Telegraf 간의 관계

Telegraf는 InfluxDB의 상태를 분석하여 InfluxDB에 저장해둔다. 기본적으로 "telegraf"."autogen"에 저장해둔다.

 

 

 

 

[ Chronograf HostList에 불필요한 Host가 노출되는 경우 ]

Chronograf HostList에 불필요한 Host가 노출되는 경우

만약 실수로 Telegraf와 InfluxDB 간의 연결을 잘못 지정하였다면 불필요한 Series가 축적된다. 그리고 잘못된 데이터가 쌓이면 다음과 같이 빨간 불이 들어올 수 있다.

 

 

 

결국 Telegraf가 분석한 정보는 InfluxDB에서 관리되므로 InfluxDB에 접속해서 해당 Series를 제거해주면 된다.

 

1. 데이터베이스 사용

use telegraf

 

 

2. Subscription 제거

drop series where host='{hostName}'
ex) drop series where host='node-abode-02'

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함