- 작성시간 : 2015/12/16 19:23
- 퍼머링크 : mcchae.egloos.com/11196996
- 덧글수 : 0
지난번에 "시계열 데이터 생성/저장/대시보드 ==> glances/InfluxDB/Grafana" 에서 살펴본
것 처럼 유용한 Time-Series DB 및 대시보드가 있었는데요,
이번에는 이것을 맥에서 소스부터 build 시키고 시스템을 내렸다가 다시 올려도
해당 서비스가 떠 있는 서비스 등록까지 해 보겠습니다.
1) 필요 기본 작업
InfluxDB와 Grafana 모두 Go 언어를 이용합니다.
그리고 최신 버전 (모두 1.4.x 를 이용하라고 되어 있습니다)
따라서 Go 언어를 Mac 에서 설치하려면,
$ brew install go
라고 하면 1.5.2 가 설치되었습니다.
모두 이상없이 잘 설치됩니다.
그 다음에는
$ vi ~/.bash_profile
파일을 열어
마지막에 다음 세 줄을 추가해 줍니다.
export GOPATH=$HOME/hostFS/TSDB
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
아래 작업은 모두 새 터미널을 열어 위에 환경 변수가 제대로 동작하고 있는 상황입니다.
2) InfluxDB
2.1) build
$ cd $GOPATH
$ go get github.com/influxdb/influxdb
$ cd $GOPATH/src/github.com/influxdb
$ go get ./...
$ go install ./...
위와 같은 몇줄로 최신 소스를 git에서 받아오고 필요 패키지 설치하고
go로 build하고 deploy 까지 완료 합니다.
go 언어가 단순 언어뿐만 아니라 그런 환경 자체도 상당히 잘 되어 있군요.
2.2) 서비스 기동
$ sudo mkdir -p /opt/influxdb/log
$ sudo chown -R $USER:staff /opt/influxdb
$ influxd config > /opt/influxdb/influxdb.conf
/opt/influxdb/influxdb.conf 파일에서
[meta]
그룹의
dir = "..."
부분을
dir = "/opt/influxdb/meta"
[data]
그룹의
dir = "..."
부분을
dir = "/opt/influxdb/data"
[hinted-handoff]
그룹의
dir = "..."
부분을
dir = "/opt/influxdb/hh"
로 해당 디렉터리들을 수정합니다.
그 다음
$ sudo vi /Library/LaunchDaemons/influxdb.plist
파일에 아래의 내용을 넣습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>com.tsdb.influxdb</string>
<key>ProgramArguments</key>
<array>
<string>/Users/mcchae/hostFS/TSDB/bin/influxd</string>
<string>-config</string>
<string>/opt/influxdb/influxdb.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/opt/influxdb</string>
<key>StandardErrorPath</key>
<string>/opt/influxdb/log/influxdb.log</string>
<key>StandardOutPath</key>
<string>/opt/influxdb/log/influxdb.log</string>
<key>SoftResourceLimits</key>
<dict>
<key>NumberOfFiles</key>
<integer>10240</integer>
</dict>
</dict>
</plist>
위에서 /Users/mcchae/hostFS/TSDB 대신 $GOPATH 의 내용을 넣으면 됩니다.
마지막으로 서비스로 등록합니다.
$ sudo launchctl load /Library/LaunchDaemons/influxdb.plist
만약 $HOME/Library/LaunchAgents 에 동일하게 넣고 launchctl 을 등록시키면
자신의 사용자로 로그인 해야만 기동되고 위와 같이 /Library/LaunchDaemons 에 넣으면
시스템이 처음 기동될 때 동작합니다.
이제는 시스템을 재기동 시켜도 다시 서비스에 등록 되어 시계열 DB인 InfluxDB가 서비스로 동작합니다.
해당 로그는
$ tail -F /opt/influxdb/log/influxdb.log
라는 명령으로 확인할 수 있습니다.
2) Grafana
2.1) build
$ cd $GOPATH
$ go get github.com/grafana/grafana
$ cd $GOPATH/src/github.com/grafana/grafana
$ go run build.go setup
$ GOPATH/bin/godep restore
$ go run build.go build
와 같이 Grafana 엔진의 설치를 모두 끝냅니다.
그런데 Grafana는 UI가 있는 Dashboard 입니다. 따라서
Presentation 부분이 필요한데 이 부분은 npm 모듈로 설치합니다.
$ cd $GOPATH/src/github.com/grafana/grafana
$ npm install
$ npm install -g grunt-cli
$ grunt
위와 같이 하여 설치 가능합니다.
(중간에 NPM install시 오류가 있었는데 한번 더 실행하여 설치 되었습니다)
그리고 만약 소스가 변경되면 아래의 명령을 수행합니다.
$ go get github.com/Unknwon/bra
$ bra run
2.2) 서비스 기동
$ sudo mkdir -p /opt/grafana/log
$ sudo chown -R $USER:staff /opt/grafana
$ cd $GOPATH/src/github.com/grafana/grafana
$ sudo vi /Library/LaunchDaemons/grafana.plist
파일에 아래의 내용을 넣습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>com.tsdb.grafana</string>
<key>ProgramArguments</key>
<array>
<string>/Users/mcchae/hostFS/TSDB/src/github.com/grafana/grafana/bin/grafana-server</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Users/mcchae/hostFS/TSDB/src/github.com/grafana/grafana</string>
<key>StandardErrorPath</key>
<string>/opt/grafana/log/grafana.log</string>
<key>StandardOutPath</key>
<string>/opt/grafana/log/grafana.log</string>
<key>SoftResourceLimits</key>
<dict>
<key>NumberOfFiles</key>
<integer>10240</integer>
</dict>
</dict>
</plist>
위에서 /Users/mcchae/hostFS/TSDB 대신 $GOPATH 의 내용을 넣으면 됩니다.
ProgramArguments/string 과 WorkingDirectory 부분 입니다.
마지막으로 서비스로 등록합니다.
$ sudo launchctl load /Library/LaunchDaemons/grafana.plist
이렇게 하면 InfluxDB와 더불어 grafana 까지 모두 동작을 합니다.
어느분께는 도움이 되셨기를...
덧글