fluentd+dstat+InfluxDB v0.9.x+Grafana v2에서 서버 메트릭 시각화

fluentd+dstat+InfluxDB v0.9.x+Grafana에서 서버 메트릭의 시각화를 작성합니다.

준비하는 것


  • fluentd (v0.12 이상)
  • fluent-plugin-dstat
  • fluent-plugin-filter-object-flatten
  • fluent-plugin-filter-record-map
  • Rinflux
  • fluent-plugin-rinflux
  • InfluxDB v0.9.x
  • Grafana v2.0.2

  • 작업 절차



    InfluxDB 설정


    wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
    sudo dpkg -i influxdb_latest_amd64.deb
    sudo service influxdb start
    

    데이터베이스 만들기



    InfluxDB 관리 화면(localhost:8083)에서 다음 쿼리를 실행하여 미리 데이터베이스를 생성합니다.
    CREATE DATABASE mydb
    

    Grafana 설정


    wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.0.2_amd64.deb
    sudo apt-get install -y adduser libfontconfig
    sudo dpkg -i grafana_2.0.2_amd64.deb
    

    Rinflux/fluent-plugin-rinflux



    InfluxDB 공식 Ruby 라이브러리은 v0.9.0을 지원하는 상태이며 fluentd 플러그인을 포함하여 InfluxDB v0.9.x에서 아직 사용할 수없는 상태입니다 (2015/07/18 현재)

    v0.2.0 가 나온 것 같습니다

    그래서 우선 v0.9.x 대응의 InfluxDB 클라이언트와 fluentd 플러그인을 자작했습니다. 본가의 대응 상황을 감안하여 rubygems.org에는 등록하지 않았습니다. 따라서 git clone 설치해야 합니다.
    # install rinflux
    git clone https://github.com/winebarrel/rinflux.git
    cd rinflux
    bundle install
    bundle exec rake install
    
    cd ..
    
    # install fluent-plugin-rinflux
    git clone https://github.com/winebarrel/fluent-plugin-rinflux.git
    cd fluent-plugin-rinflux
    bundle install
    bundle exec rake install
    

    fluent.conf



    dstat 지표를 수집할 때까지는 다음 항목과 동일합니다.
  • fluentd+dstat+librato로 서버 메트릭 시각화 - Qiita
  • fluent.conf 는 다음과 같습니다.
    <source>
      type dstat
      tag dstat.${hostname}
      option -clmdrn --freespace
      delay 3
    </source>
    
    <filter>
      type object_flatten
      separator _
      tr [" /", "__"]
    </filter>
    
    <filter>
      type grep
      exclude1 hostname .+
    </filter>
    
    <filter>
      type record_map
      map1 record.each {|k, v| new_record[k] = v.to_f }
    </filter>
    
    <match dstat.**>
      type rinflux
      db mydb
      flush_interval 1s
    </match>
    

    InfluxDB에 흐르는 레코드는 다음과 같은 느낌입니다.
    {"dstat_net_total_send":1138.667}
    {"dstat___used":3879976960.0}
    {"dstat___free":38361186304.0}
    {"dstat__dev_used":12288.0}
    {"dstat__dev_free":251576320.0}
    {"dstat__run_used":360448.0}
    {"dstat__run_free":51019776.0}
    {"dstat__rpc_pipefs_used":0.0}
    {"dstat__rpc_pipefs_free":0.0}
    {"dstat__systemd_used":0.0}
    {"dstat__systemd_free":0.0}
    {"dstat__vagrant_used":68592746496.0}
    {"dstat__vagrant_free":430489739264.0}
    {"dstat_total_cpu_usage_usr":0.0}
    {"dstat_total_cpu_usage_sys":0.667}
    {"dstat_total_cpu_usage_idl":99.333}
    {"dstat_total_cpu_usage.wai":0.0}
    

    Grapana에 데이터 소스 추가



    관리 사용자(admin/admin)로 로그인하여 데이터 소스를 추가합니다.



    아직 알파판이라는 것.
    Data source implementation: Alpha stage
    
    This data source implementation is not complete, a lot is not working and implemented yet
    Updates can be tracked, and feedback directed here #1525.
    

    Grapana에 그래프 추가



    Grapana에 적절하게 대시보드를 만들어 그래프를 추가합니다.



    그래프를 추가하면 다음과 같은 대시보드를 만들 수 있습니다.

    좋은 웹페이지 즐겨찾기