ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • gnocchi 간단 정리
    Cloud 2017. 2. 27. 09:00
    반응형
    Gnocchi는 멀티테넌트 시계열, 메트릭, 리소스 데이터베이스다.
    데이터 관리에 HTTP REST 인터페이스를 제공한다.
    대용량 메트릭을 저장할 수 있게 설계되어 있다.

    ceilometer 만들던  Julien Danjou이 mongodb나 rdb로는 한계를 느껴서 직접 만들었다.
    알고리즘 복잡도를 O(n)에서 O(1)으로 변경하고 싶었다.
    처음에는 Graphite에서 사용하는 whisper 기반으로 만들려고 했다.
    그런데 whisper에 필요한 기능을 패치하려고 하니까 코드에 단위테스트도 없고 함부로 건드리기가 힘들어서 포기.
    그래서 파이썬 통계 라이브러리인 Pandas(Python Data Analysis Library)를 이용해서 직접 만들게 되었다고 한다.
    그렇게 해서 carbonara라는 시계열용 파일 포맷을 만들었음.
    실제 metric 데이터는 그렇게 carbonara 포맷으로 저장소(file, ceph, swift, s3)에 저장하고,
    metric 타입이나 리소스는 RDB에 저장해서 관리한다. 이걸 gnocchi에서는 indexer라고 부른다.





    주요기능
    - HTTP REST interface
    - Horizontal scalability
    - Metric aggregation
    - Measures batching support
    - Archiving policy
    - Metric value search
    - Structured resources
    - Resource history
    - Queryable resource indexer
    - Multi-tenant
    - Grafana support
    - Nagios/Icinga support
    - Statsd protocol support
    - Collectd plugin support

    설치해보기
    pip로 설치하니까 gnocchi-config-generator가 안 보여서 config 파일을 생성할 수가 없다.
    소스로 설치한다.
    OS : CentOS 7.2

    sudo yum install python-pip
    sudo yum install python-devel.x86_64
    sudo yum install postgresql-devel.x86_64

    git clone https://github.com/openstack/gnocchi.git
    cd gnocchi/
    sudo -E pip install -r requirements.txt
    sudo -E pip install -e .

    setuptools 버전이 낮아서 설치하다가 에러가 날수도 있다.
    sudo -E pip uninstall setuptools
    sudo -E pip install setuptools

    config 파일 생성하기
    sudo mkdir /etc/gnocchi
    gnocchi-config-generator > gnocchi.conf
    sudo mv gnocchi.conf /etc/gnocchi/
    sudo vi /etc/gnocchi/gnocchi.conf
    config 파일 변경
    [indexer]
    url = mysql://demo:demo@[mysqlhost]/demo?charset=utf8

    [api]
    auth_mode = noauth

    mysql 사용하려면 pymysql 패키지가 설치되어 있어야 한다.
    sudo -E pip install pymysql

    gnocchi 초기화
    sudo gnocchi-upgrade

    gnocchi 실행
    sudo gnocchi-api
    sudo gnocchi-metricd

    상태 확인
    curl -v -L  localhost:8000/v1


    gnocchi-api 역할
    api 요청을 처리한다. measure 를 저장하는 요청이 들어온 경우에는 임시 디렉토리에 각 값을 저장해 둔다.

    gnocchi-metricd 역할
    주기적으로 배치를 돌면서 gnocchi-api가 저장해둔 임시 디렉토리의 measure 값들을 실제 gnocchi가 사용하는 구조에 맞게 바꿔서 저장한다. 
    이 때 aggregation 계산을 수행 한다.

    gnocchi archive
    gnocchi 에서는 장기간의 쿼리에 대비해서 미리 데이터들을 archive 해서 가지고 있는다.
    기본적으로 아래 3가지 종류의 archive type을 가지고 있고, 필요한경우 추가할 수도 있다.

    # low 
    - 5 minutes granularity over 30 days
    - aggregation methods used: default_aggregation_methods
    - maximum estimated size per metric: 406 KiB
    # medium
    - 1 minute granularity over 7 days
    - 1 hour granularity over 365 days
    - aggregation methods used: default_aggregation_methods
    - maximum estimated size per metric: 887 KiB
    # high
    - 1 second granularity over 1 hour
    - 1 minute granularity over 1 week
    - 1 hour granularity over 1 year
    - aggregation methods used: default_aggregation_methods
    - maximum estimated size per metric: 1 057 KiB




    참고




    반응형

    'Cloud' 카테고리의 다른 글

    Openstack Nova 설치하기  (0) 2016.02.22
    Openstack glance 설치하기  (0) 2016.02.19
    openstack keystone 설치해보기  (0) 2016.02.17
    Large-scale cluster management at Google with Borg 정리  (0) 2015.09.21
    kubernetes 기본 개념  (0) 2015.09.14

    댓글

Designed by Tistory.