b

ELK metricbeat 로 rabbitmq 모니터링 하기 본문

카테고리 없음

ELK metricbeat 로 rabbitmq 모니터링 하기

dev.bistro 2019. 11. 4. 19:35

 

결론부터 얘기하면, 아직은 못쓰겠다.
정확히 말하면 쉽게 사용 가능하지만, 이걸 메인 모니터링으로 사용하기에는 메트릭 종류가 너무 적다

rabbitmq monitor UI#1

 

RabbitMQ는 다양한 플러그인을 가지고 있고,  위의 화면처럼 기본적인 모니터링 화면도 제공하고 있다. 하지만 매번, 해당 UI 에 접근한다는 점이 불편했고, 메트릭 수치가 현재것만 볼 수 있다는 점, 그리고 alert/watch 기능을 제공하지 않는 점이 불편해서 다른 모니터링이 필요하였다. (지금에서야 고민하는 이유는... 이 시스템이 담당자가 없고, 모니터링이 없었다. 그래서 오늘 해야겟다고 마음 먹었다)

팀내에서 사용하고 있는 모니터링은 메인 스트림은 Promethus + Grafna / ELK 이다. 이중에서 간편하고 전체 플랫폼을 내가 직접 관리하고 있는 ELK 로 시작하였다.

 

설치 작업

처음으로 RabbitMQ 1대에 metricbeat를 설치하였다. 
https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.1.1-linux-x86_64.tar.gz

그리고 'metric modules enable rabbitmq'를 통해서 rabbitmq 를 활성화 하고, 아래처럼 설정하였다.

- module: rabbitmq
   metricsets:
    - node
    - queue
    - connection
  period: 5s
  hosts: ["localhost:15672"]
  username: #rabbit username
  password: #rabbit password
  node.collect : "cluster" #1		

#1: RabbitMq의 노드 메트릭을 수집하기 위해서는  metricbeat를 각 노드에 설치하거나, 한 대에 설치해서 전체 클러스터의 메트릭을 수집 할 수 있다. 후자의 방법을 이용하기 위해 'node.collect: cluster' 를 추가하였다.
참고 : https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-metricset-rabbitmq-node.html

이후 metricbeat.yml 에서 output 을 elasticsearch 로 지정하였다. 
(개인적으로는 상용 운용 모드라면 무조건 kafka 로 넣겠지만, 현재는 테스트 단계이므로 ... )

그리고 metricbeat 실행 하면서, 해당 dashboard 정보를 elasticsearch 에 import 한다. 

기본적으로 모든 metricset의 dashboard가 다 import 되므로, /kibana/** 에서 Metricbeat-rabbitmq-overview.json 파일을 다 삭제하고 https://www.elastic.co/guide/en/beats/metricbeat/current/load-kibana-dashboards.html 처럼 진행하였다.

이후 Kibana 에서 RabbitMQ Overview를 확인해보면  기본적으로 아래와 같은 4개의 데이터를 확인 할 수 있다.

 

좀 부족해서 몇개의 패널을 더 만들어서 추가하고 싶었지만... 생각보다 이쁘지 않다.
그래서 Grafana 6.4를 이용해서 Datasource를 Elasticsearch 로 설정하여 대시보드를 만들었지만..


원하는 만큼의 대시보드를 구성할 수가 없었다. 

근본적인 이유는, 풍부한 메트릭 값을 수집해서 제공해 주지 않고 있기 때문...


기본으로 제공해주면서 반드시 옮기고 싶었던, Message rates (incoming, deliver, ack) 를 제공해 주지 않았다.
제공해주는 것은 Queue Details 화면의 Messages (total, ready, unacked) 였다. 이게 필요한게 아니라고!

그래서.. rabbitmq 나 redis 와는 달리  metricbeat를 이용한 rabbitmq 모니터링은 보류한다  

그 다음 https://github.com/kbudde/rabbitmq_exporter 는 도커 데몬이 있거나, golang 빌드 환경이 있어야 한다. 안타깝게도 현재 상용 서버는 둘 다 안된다.  다른 서버에서 build 해서 상용망에서 파일을 옮겨야한다.... 귀찮으니 며칠 있다가 해야겟다.

 

Comments