InfluxDB 설치 및 설정
InfluxDB 는 Time Series Database 로 각광을 받는 데이터베이스 시스템입니다. SQL 로 데이터 조회가 가능하며 Retention 설정(보유기간을 설정) 할 수 있는 특징이 있습니다.
환경
설치 환경은 다음과 같습니다.
- CentOS x86_64
설치
다음의 페이지에서 다운로드를 받을 수 있습니다.
InfluxDB 는 각 배포판별로 패키지를 제공 합니다. 패키지를 이용하면 손쉽게 설치할 수 있고 init script 등록도 자동으로 되기 때문에 패키지 설치를 권장 합니다.
1 2 |
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm yum localinstall influxdb-1.2.4.x86_64.rpm |
설치가 끝나면 다음과 같은 파일들을 확인할 수 있습니다.
1 2 |
/etc/influxdb/influxdb.conf # 설정 파일 /etc/rc.d/init.d/influxdb # init Script 파일 |
설정
대부분의 설정은 /etc/influxdb/influxdb.conf 파일에서 이루어 집니다. 주요한 설정은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# Meta 데이터 저장할 위치 지정. [meta] # Where the metadata/raft database is stored dir = "/var/lib/influxdb/meta" # 실제 데이터를 저장할 디렉토릴 지정. [data] # The directory where the TSM storage engine stores TSM files. dir = "/var/lib/influxdb/data" # The directory where the TSM storage engine stores WAL files. wal-dir = "/var/lib/influxdb/wal" # Clustering 서비스 설정 통제 [coordinator] write-timeout = "10s" # write request 가 기다릴시간. 이 시간이 지나면 에러 리턴 max-concurrent-queries = 0 # 최대 동시 쿼리 개수. 0 은 unlimited. query-timeout = "0" # 시스템이 kill 하기전에 쿼리 수행허용 시간 log-queries-after = "0s" # slow 쿼리를 기록할 한계시간. 0 은 slow 쿼리 로깅을 하지 않음. max-select-point = 0 max-select-series = 0 max-select-buckets = 0 # 데이터 보관기간 설정. [retention] enabled = true # 설정 사용함. check-interval = "30m" # 보관기간 정책 체크할 인터발 시간. 30분에 한번씩 보관기간 정책 체크. # 모니터링 데이터를 위한 내부 데이터베이스 생성 설정. [monitor] store-enabled = true # 내부 데이터베이스 생성 활성화. store-database = "_internal" # 저정할 데이터베이스 이름 store-interval = "10s" # 10마다 통계치를 저장. # Web 기반 관리자 페이지 설정 [admin] enabled = true bind-address = ":8083" https-enabled = false https-certificate = "/etc/ssl/influxdb.pem" # HTTP 엔드포인트 설정. 이것은 InfluxDB 에서 데이터를 넣고 빼는데 핵심이 되는 매커니즘이다. [http] enabled = true bind-address = ":8086" auth-enabled = true log-enabled = true write-tracing = false pprof-enabled = false # 트러블슈팅이나 모니터링에 사용함. https-enabled = false https-certificate = "/etc/ssl/influxdb.pem" ### Use a separate private key location. # https-private-key = "" max-row-limit = 10000 realm = "InfluxDB" # 사용하지 않음. [[graphite]] enabled = false # 사용하지 않음. [[collectd]] enabled = false # 사용하지 않음. [[opentsdb]] enabled = false # 사용하지 않음. [[udp]] enabled = false # 지속적인 쿼리. 이 기능은 아주 유용한데, 일단 활성화를 해둔다. [continuous_queries] enabled = true log-enabled = true run-interval = "5s" |
대략 위와같이 설정한 후에 InfluxDB 를 시작해 줍니다.
1 2 3 |
[root@localhost influxdb]# service influxdb start Starting influxdb... influxdb process was started [ OK ] |
Database 설정
앞에서의 설정은 InfluxDB 시스템에 대한 설정이라면 이번 Database 설정은 Time Series 데이터를 위한 접근 제어, 데이터베이스 생성등에 관한 것입니다.
먼저, 전체 Database 에 최고 관리자를 생성해야 합니다. 최고 관리자는 모든 데이터베이스에 대해서 READ, WRITE 권한을 가집니다.
1 2 3 4 5 |
[root@localhost influxdb]# influx Connected to http://localhost:8086 version 1.2.4 InfluxDB shell version: 1.2.4 > CREATE USER Admin WITH PASSWORD '패스워드' WITH ALL PRIVILEGES > |
Ctl+D 를 누르고 나온후에 이번에는 관리자 권한을 얻기 위해서 인증 로그인을 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost influxdb]# influx Connected to http://localhost:8086 version 1.2.4 InfluxDB shell version: 1.2.4 > AUTH username: Admin password: > USE _internal Using database _internal > SHOW USERS user admin ---- ----- Admin true > |
위와같이 관리자 인증을 통해서 내부 데이터베이스인 _internal 에 접근이 가능하며, 현재 인증된 사용자가 어떤 권한을 가지고 있는지도 살펴볼수 있습니다.
데이터베이스 및 일반 사용자 생성
이제 데이터 수집을 위한 데이터베이스와 이 데이터베이스에 접근하기 위한 일반 사용자 생성을 해보겠습니다.
1 2 3 4 5 6 7 |
[root@orion203 influxdb]# influx Connected to http://localhost:8086 version 1.2.4 InfluxDB shell version: 1.2.4 > CREATE DATABASE systemv > CREATE USER voyager WITH PASSWORD '패스워드' > GRANT ALL ON systemv TO voyager > |
먼저 데이터베이스 systemv 를 생성하고 일반 사용자인 voyager 도 생성합니다. 그리고 systemv 데이터베이스에 voyager 사용자에게 모든 권한을 부여 합니다. 이렇게 되면 voyager 사용자는 systemv 데이터베이스에만 접근이 가능한 일반 사용자가 됩니다.
이제 외부 수집서버에서 InfluxDB 로 접근할때에 일반사용자인 voyager 로 인증하고 systemv 데이터베이스에 데이터를 저장할 수 있습니다.