일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring-batch
- springboot
- aws
- statestore
- RabbitMQ
- kafkastream
- avo
- Slick
- Elk
- enablekafkastreams
- kafkastreams
- gradle
- 카프카
- 플레이 프레임워크
- 한빛미디어
- reactive
- scala
- spring-cloud-stream
- kafka interactive query
- confluent
- schema registry
- Kafka
- spring-kafka
- Logstash
- kafka streams
- play framework
- Spring
- coursera
- scala 2.10
- Elasticsearch
- Today
- Total
b
ELK metricbeat 로 rabbitmq 모니터링 하기 본문
결론부터 얘기하면, 아직은 못쓰겠다.
정확히 말하면 쉽게 사용 가능하지만, 이걸 메인 모니터링으로 사용하기에는 메트릭 종류가 너무 적다
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 해서 상용망에서 파일을 옮겨야한다.... 귀찮으니 며칠 있다가 해야겟다.