graphite and grafana (draft)
graphite
Official Docker image for Graphite (https://github.com/graphite-project/docker-graphite-statsd) 의 경우 아직 이해 안되는 것이 있어서 직접 설치하여 사용하는 것으로 테스팅을 함.
https://graphiteapp.org/#gettingStarted 문서를 보고 따라 해봄.
Quick Start Guide: Synthesize
https://graphiteapp.org/quick-start-guides/synthesize.html 에서 vagrant 로 설치한다. 설치과정은 install script 를 살펴보면 된다.
프로그램에서 사용하는 port 는 vagrant 파일을 봐야 한다. 일단 몇가지만 적어둔다.
2003 carbon receiver - plaintext
8125 statsd
여기에서 설치하는 웹서버는 guest 443, host 8443 으로 설정이 되어 있다. grafana는 guest 3000에 설치가 되는데 host는 3030 으로 설정이 되어 있다.
설치되는 각종 프로그램의 비밀번호 등은 https://github.com/obfuscurity/synthesize 를 보면 된다.
Quick Start Guide: Getting Metrics into Graphite
이제 테스팅용 metric 집어 넣기.
https://graphiteapp.org/quick-start-guides/feeding-metrics.html
random하게 여러 개 집어 넣도록 하는 것이 편리하다.
$ echo "foo.bar 1 `date +%s`" | nc localhost 2003 $ while true; do echo "foo.bar $((RANDOM % 100)) `date +%s`" | nc localhost 2003 ; done
Graphite Message Format 은 다음 문서를 보면 "metric_path value timestamp\n" 로 되어 있다.
StatsD를 이용하는 예제도 나와 있다.StatsD는 카운터, 시간과 같은 통계 정보를 받고 UDP 나 TCP를 통하여 graphite 와 같은 여러 backend 서비스에 합계 정보등을 보낼 수 있다.
collectd 를 이용하여 시스테의 각종 metric 을 수집할 수 있다.
Quick Start Guide: Getting Metrics out of Graphite
https://graphiteapp.org/quick-start-guides/graphing-metrics.html
graphite 웹접속해서 몇가지 간단한 예제를 보여준다.
grafana 접속을 해서 테스팅을 해보기.
vagrant 에서 설치시 data source 는 graphite 를 지정하여 테스팅을 할 수 있다. graphite 와 연동을 한 경우 아래 문서를 참고.
http://docs.grafana.org/features/datasources/graphite/
graphite 에서 지원하는 functions 를 이용할 경우 graphite 문서를 참고해야 하는 것 같다.
https://graphite.readthedocs.io/en/latest/functions.html
아래는 두개의 metric을 sumSeries를 이용하여 합치는 경우임.
collectd.graphite.memory.memory-free
collectd.graphite.memory.memory-buffered
sumSeries(#A,#B)
post install tasks
https://graphite.readthedocs.io/en/latest/install.html#post-install-tasks 문서의 post install tasks 링크를 참고.
처음에는 storage-schemas.conf 파일만 조정을 해서 사용을 하면 될 것 같다. metric 저장 주기를 조정하는 파일이다.
https://graphite.readthedocs.io/en/latest/config-carbon.html : carbon 설정하기 내용. storage-schemas.conf 파일은 필요에 따라 변경해서 사용을 함.
https://graphite.readthedocs.io/en/latest/feeding-carbon.html : graphite 에 데이터를 보내는 방식 설명. 네이밍 hierarchy, data retention 설정, 메시지 포맷 등에 대해 설명을 하고 있음.
grafana
위에서 일부 설명했음.
grafana에서 제공하는 테스팅 사이트가 있다. 여기서 샘플들 살펴보면 될 듯 하다.
http://play.grafana.org/dashboard/db/grafana-play-home?orgId=1