InfluxDB와 fluentd를 결합해보십시오.

3956 단어 Fluentdinfluxdb
InfluxDB 가 재미있을 것 같으므로, 프로덕션 투입전에 fluentd 와 조합해 사용하면 어떻게 되는지 검증해 보았습니다. 주로 fluent-plugin-influxdb 사양 확인. 유효성 검사이므로 Mac OS X의 절차만.

소스만 보고 싶다고 하는 사람은 github 에 두고 있습니다.

InfluxDB 설치 및 시작


$ brew install influxdb
$ ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents
$ brew services start influxdb

테스트용 DB 만들기


$ curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "test"}'

샘플 프로젝트 얻기


$ git clone https://github.com/hakobera/fluent-influxdb-test
$ cd fluent-influxdb-test
$ bundle install

Fluentd 시작


$ bundle exec fluentd -c conf/fluent.conf

fluent.conf는 다음과 같습니다.
<source>
  type tail
  path temp/dummy.log
  pos_file temp/dummy.log.pos
  tag dummy.test
  format ltsv
</source>

<match dummy.*>
  type influxdb
  host localhost
  port 8086
  dbname test
  user root
  password root
  time_precision s
</match>

dummer에서 더미 데이터 투입



다른 콘솔을 열고 dummer 에서 더미 데이터를 입력합니다.
$ mkdir temp
$ bundle exec dummer -c conf/dummer.conf

이제 Fluentd를 통해 influxdb에 데이터가 저장됩니다.

쿼리를 던져보세요



URL당 요청 횟수를 10초마다 집계하는 쿼리를 작성해 봅니다.
SELECT uri, COUNT(id) FROM dummy.test GROUP BY uri, time(10s)

쿼리는 HTTP API를 통해 /db/test/series?u=root&p=root&q=QUERY 형식으로 던집니다. curl의 경우는, 이런 느낌.
$ curl "http://localhost:8086/db/test/series?u=root&p=root&q=SELECT%20uri%2C%20COUNT(id)%20FROM%20dummy.test%20GROUP%20BY%20uri%2C%20time(10s)"

GUI ( http://localhost:8083 ) 로 확인하면 이런 느낌.



알다시피



  • fluent-plugin-influxdb은 태그 이름을 InfluxDB의 series 이름으로 만듭니다.

    향후 검증할 것


  • InfluxDB는 중첩 JSON을 지원하지 않으므로 Flat화하는 플러그인을 사용해보십시오.
  • htps : // 기주 b. 코 m / 켄타로 / f ㄅ
  • htps : // 기주 b. 코 m / 사보 텐다 / f ぅ 엔 tp


  • 참고


  • InfluxDB HTTP API Document
  • Fluentd 벤치 마크 테스트에 사용할 수있는 dummer (이전 dummy_log_generator)
  • InfluxDB를 10 분만 만져 보았습니다.
  • 좋은 웹페이지 즐겨찾기