나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Framework

rabbitmq 동접자 수 확인하기

devidea 2017. 2. 18. 19:40


진행하고 있는 프로젝트에서 이벤트가 발생할 때 마다 사용자들에게 메세지를 받게 해야하는 요구사항이 있었다.

해당 요구사항을 처리하기 위해서 rabbitmq를 사용하게 되었다.

클라이언트는 메세지를 받기 위해 계속 rabbitmq에 연결을 하고 있던 상태였는데, 비즈니스 관점에서 그럼 얼마나 많은 사람이 접근을 하고 있을지가 궁금해졌다. 같은 말로 서비스를 실제로 사용하고 있는 동접수치를 rabbitmq의 연결 수와 동일하게 판단할 수 있는 상황이었다.


요구사항에 맞춰 rabbitmq에 연결 카운트를 얻을 수 있는 기능을 살펴보니 rabbitmq-management plugin으로 처리할 수 있었다.

해당 plugin은 연결 상태에 대한 정보를 dashboard 형태로 표현하는 웹 서비스와 함께 일부 api들을 포함하고 있었다.


먼저 rabbitmq-management의 설정을 킨다.

rabbitmq-plugins enable rabbitmq_management


그리고 rabbitmq-management에 접근하기 위한 계정을 추가한다.

./rabbitmqctl add_user admin test

./rabbitmqctl set_user_tags admin administrator


첫 접근을 하면 아래와 같은 화면이 나온다.

http://localhost:15672/

여기서 주목해야 할 곳은 Consumers 값이다. 이 수치가 접근한 클라이언트의 수를 나타낸다.



그러면은 web을 통해서만 호출 카운트를 계산할 수 있을까?

web뿐만 아니라 api들도 제공을 한다.


다음 링크에서 api들의 항목들을 확인할 수가 있다. 

RabbitMQ Management HTTP API


아래 코드는 간단히 연결되어 있는 client들의 모든 리스트를 가져오는 api를 활용해서, 연결 카운드를 출력한다. 

import requests
from requests.auth import HTTPBasicAuth

if __name__ == '__main__':
    my_server = "http://localhost:15672/api/bindings"

    try:
        response = requests.get(my_server, auth=HTTPBasicAuth('admin', 'test'))

        if response.status_code == 200:
            result = response.json()
            print("count : {}".format(len(result)))
        else:
            print("rabbitmq error")
    except requests.exceptions.ConnectionError as err:
        print("rabbitmq connection error")


반응형

'Framework' 카테고리의 다른 글

logback & logstash 패턴 설정  (0) 2017.04.04
ELK (elasticsearch + logstach + kibana) 설치  (0) 2017.04.04