- 작성시간 : 2019/12/03 18:33
- 퍼머링크 : paar13kr.egloos.com/7475649
- 카테고리 : docker
사내 모니터링 대쉬보드 서버 이전으로 Grafana, influxdb, kapacitor, chronograf 를 새로 구축 이전 작업을 진행하였다.
각 서버들은 telegraf를 통해 서버의 상태에 대한 정보를 Influxdb에 전달하고, Influxdb에 저장된 데이터를 Grafana 대쉬보드에 보여주는 형태가 된다.
서버가 비정상 상태일때 Slack을 통하여 알람 메세지를 받을 수 있도록 kapacitor와 chronograf를 연동 할 예정이다.
Influxdb는 InfluxData 에서 개발한 오픈소스 시계열 데이터 베이스(TSDB)이다. GO 언어로 작성되었으며 운영 모니터링, 서버 메트릭 등 실시간 분석과 같은 필드에서 시계열 데이터를 신속하고 고 가용성으로 저장하고 검색 할 수 있도록 최적화 된 DB.
출처 : Wikipedia (https://en.wikipedia.org/wiki/InfluxDB)
1. docker-compose 파일 작성
mkdir /home/docker/influxdb/
vi /home/docker/influxdb/docker-compose.yml
influxdb:
image: influxdb:latest
container_name: influxdb
restart: always
ports:
- "8086:8086"
environment:
- INFLUXDB_REPORTING_DISABLED=false
volumes:
- influxdb:/var/lib/influxdb
- /home/docker/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro
- /home/docker/influxdb/backup:/backup
2. influxdb.conf 파일 작성
vi /home/docker/influxdb/influxdb.conf
reporting-disabled = false
bind-address = "127.0.0.1:8088"
[meta]
dir = "/var/lib/influxdb/meta"
retention-autocreate = true
logging-enabled = true
[data]
dir = "/var/lib/influxdb/data"
index-version = "tsi1"
wal-dir = "/var/lib/influxdb/wal"
wal-fsync-delay = "0s"
query-log-enabled = false
cache-max-memory-size = 1073741824
cache-snapshot-memory-size = 26214400
cache-snapshot-write-cold-duration = "10m0s"
compact-full-write-cold-duration = "4h0m0s"
max-series-per-database = 1000000
max-values-per-tag = 100000
max-concurrent-compactions = 0
trace-logging-enabled = false
[coordinator]
write-timeout = "10s"
max-concurrent-queries = 0
query-timeout = "0s"
log-queries-after = "0s"
max-select-point = 0
max-select-series = 0
max-select-buckets = 0
[retention]
enabled = true
check-interval = "30m0s"
[shard-precreation]
enabled = true
check-interval = "10m0s"
advance-period = "30m0s"
[monitor]
store-enabled = true
store-database = "_internal"
store-interval = "10s"
[subscriber]
enabled = true
http-timeout = "30s"
insecure-skip-verify = false
ca-certs = ""
write-concurrency = 40
write-buffer-size = 1000
[http]
enabled = true
bind-address = ":8086"
auth-enabled = false
log-enabled = false
write-tracing = false
pprof-enabled = true
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"
https-private-key = ""
max-row-limit = 0
max-connection-limit = 0
shared-secret = ""
realm = "InfluxDB"
unix-socket-enabled = false
bind-socket = "/var/run/influxdb.sock"
max-body-size = 25000000
access-log-path = ""
[logging]
format = "auto"
level = "info"
suppress-logo = false
[ifql]
enabled = false
log-enabled = true
bind-address = ":8082"
[[graphite]]
enabled = false
bind-address = ":2003"
database = "graphite"
retention-policy = ""
protocol = "tcp"
batch-size = 5000
batch-pending = 10
batch-timeout = "1s"
consistency-level = "one"
separator = "."
udp-read-buffer = 0
[[collectd]]
enabled = false
bind-address = ":25826"
database = "collectd"
retention-policy = ""
batch-size = 5000
batch-pending = 10
batch-timeout = "10s"
read-buffer = 0
typesdb = "/usr/share/collectd/types.db"
security-level = "none"
auth-file = "/etc/collectd/auth_file"
parse-multivalue-plugin = "split"
[[opentsdb]]
enabled = false
bind-address = ":4242"
database = "opentsdb"
retention-policy = ""
consistency-level = "one"
tls-enabled = false
certificate = "/etc/ssl/influxdb.pem"
batch-size = 1000
batch-pending = 5
batch-timeout = "1s"
log-point-errors = true
[[udp]]
enabled = false
bind-address = ":8089"
database = "udp"
retention-policy = ""
batch-size = 5000
batch-pending = 10
read-buffer = 0
batch-timeout = "1s"
precision = ""
[continuous_queries]
log-enabled = true
enabled = true
query-stats-enabled = false
run-interval = "1s"
3. 서비스 시작
1) docker-compose 만든 디렉토리로 이동
cd /home/docker/influxdb
2) 서비스 시작
docker-compose up -d

3) 서비스 확인
docker ps -a

다음장에서는 일반 서버에서 Telegraf를 통하여 Influxdb에 데이터를 넣고, 확인 할 예정.
덧글