관리 메뉴

HAMA 블로그

InfluxDB , Telegraf, Grafana 모니터링 설치 (2021년 3월기준) 본문

데이터 가시화 (d3.js , Plotly, Grafana, Kibana 등)

InfluxDB , Telegraf, Grafana 모니터링 설치 (2021년 3월기준)

[하마] 이승현 (wowlsh93@gmail.com) 2021. 3. 9. 10:58

* 해당 글은 리눅스 기준 입니다. (CentOS 7버전, Ubuntu1.8에서 잘됨)



InfluxDB 2.x 설치 

(docs.influxdata.com/influxdb/v2.0/get-started/?t=Linux) 

아래 2가지 방식 중에 패키지로 서비스로 시작하는것을 추천한다.

파일로 받아서 실행 하기)

  1. curl -s https://repos.influxdata.com/influxdb2.key | gpg --import -
  2. wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.4-linux-amd64.tar.gz

   3. tar xvzf influxdb2-2.0.4-linux-amd64.tar.gz
   4. cd influxdb2-2.0.4-linux-amd64
   5. influxd  로 시작한다. 


패키지로 인스톨 및 서비스시작하기 

- RedHat & CentOS (ARM 64-bit)

wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.4.arm64.rpm
sudo yum localinstall influxdb2-2.0.4.arm64.rpm


- Ubuntu & Debian (ARM 64-bit)

wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.4-arm64.deb
sudo dpkg -i influxdb2-2.0.4-arm64.deb    

1. sudo service influxdb start
2. sudo service influxdb status

InfluxDB UI설정하기.

최신 InfluxDB는 UI도 수려하게 지원한다. 따라서 UI를 통한 셋업방법을 알아보자.

1. localhost:8086 으로 접속하면 UI에 접근할수있다.
2. 아래 설정을 넣는다. (매우 중요하다.)

  1. Username 넣어준다.
  2. Password 넣어준다.
  3. Organization 이름 넣어준다.  <-- 이전버전에는 없는 것이다.
  4. Bucket 이름 생성한다.  <-- 이전버전에는 없는 것이다. 
  5. Click Continue.

InfluxDB에 데이터 넣기 

대략 아래와 같이 코딩하자. 

module github.com/wowlsh93/monitoring

go 1.14

require (
    ....
	github.com/influxdata/influxdb-client-go/v2 v2.2.2
)

- influxdb 클라이언트 의존성은 v2.2.2 

//DBPATH: http://localhost:8086
//AUTHTOKEN: zYR-2G5BRmb5SDIkbKRUe2DXyon4rbXEzjoTwsSDHMUWeO3hTjasWBIGw8W7Dy_QxipDNWOj2g5MMD9le8-B3Q==

db := influxdb.Influxdb{
	Client :  influxdb2.NewClient(conf.DBPATH, conf.AUTHTOKEN),
}

- influxdb를 접근하기위해서는 db 경로와 auth 토큰이 필요하다. 
auth token 발급법은 docs.influxdata.com/influxdb/v2.0/security/tokens/create-token/ 링크에서 알수있다.
간략히 설명하면 UI에서 Data -> Tokens를 가면 발급받을 수 있다. (아래 빨간색 사각형)

package influxdb

import (
	"context"
	"github.com/influxdata/influxdb-client-go/v2"
	"time"
)

type Influxdb struct {
	Client influxdb2.Client
}

func (db* Influxdb) AddData(measurement string, curSize int64) {
	writeAPI := db.Client.WriteAPIBlocking("opusm", "monitoring")
	p := influxdb2.NewPointWithMeasurement(measurement).
		AddTag("storage", "total").
		AddField("size", curSize).
		SetTime(time.Now())

	writeAPI.WritePoint(context.Background(), p)
}
func (db* Influxdb) Close() {
	db.Client.Close()
}

- 위와 같이 influxdb에 값을 넣을 수 있다.
- "opusm" 은 조직이고
- "monitoring" 은 버켓이고 (참고로 이건 데이타베이스라고 생각하자.)
- Measurement 도 지정하자. (참고로 이건 테이블과 비슷하다고 보면 된다) 
- Tag, Field 도 넣어주자 (참고로 Tag는 인덱스, Field는 컬럼들이라고 생각하자)

Influxdb의 ui를 통해 위와 같이 나오는 것을 볼 수 있다. (메뉴얼없어도 직관적으로 다룰 수 있을 것이다)

Telegraf 1.17   (influxdb2 용) 

(docs.influxdata.com/telegraf/v1.17/introduction/getting-started/)

1. 설치하기 

Ubuntu & Debian
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.17.3-1_amd64.deb sudo dpkg -i telegraf_1.17.3-1_amd64.deb

RedHat & CentOS
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.17.3-1.x86_64.rpm
sudo yum localinstall telegraf-1.17.3-1.x86_64.rpm

Linux Binaries (64-bit)
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.17.3_linux_amd64.tar.gz
tar xf telegraf-1.17.3_linux_amd64.tar.gz


2. 기본설정하기 

2-1)
vi /etc/telegraf/telegraf.conf 에서 
[[outputs.influxdb_v2]]
urls = ["$INFLUX_HOST"]
token = "$INFLUX_TOKEN"
organization = "$INFLUX_ORG"
bucket = "telegraf"

을 해주면 influxdb2로 출력해준다. 

2-2))
telegraf -sample-config --input-filter cpu:mem --output-filter influxdb > telegraf.conf
cpu 사용량 및 메모리 사용량에 대한 메트릭을 읽게한다. 아래의 output출력으로 정보를 보낼 수 있다.


3. 시작하기 

systemctl start telegraf <-- 시작하기
sudo systemctl status telegraf  <-- 확인하기 

UI의 telegraf 버킷에 각종 system 값들이 들어온것을 볼 수 있다. 

4. 특정폴더사이즈 감시 

4-1) 
#!/usr/bin/env bash
du -bs "${1}" | awk '{print "[ { \"bytes\": "$1", \"dudir\": \""$2"\" } ]";}'

를 metrics-exec_du.sh 이름으로 만든다.

4-2) 아래를 telegraf.conf파일에 추가한다.

[[inputs.exec]]
  commands = [ "YOUR_PATH/metrics-exec_du.sh /var/lib/influxdb/data" ]
 timeout = "10s"
 name_override = "quorum-test"
 name_suffix = ""
 data_format = "json"
 tag_keys = [ "dudir" ]

4-3) systemctl restart telegraf  로 다시 시작한다.  

du 가 추가된 것을 볼 수 있다.

Grafana 7.4.3 


1. 설치하기 grafana.com/grafana/download

Red Hat, CentOS, RHEL, and Fedora(64 Bit)

wget https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm
sudo yum install grafana-7.4.3-1.x86_64.rpm

Ubuntu and Debian(64 Bit)

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.4.3_amd64.deb
sudo dpkg -i grafana_7.4.3_amd64.deb

2. 실행하기  grafana.com/docs/grafana/latest/installation/rpm/#2-start-the-server

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable
grafana-server

* 방화벽 해제 (centos에서 외부에서 3000포트로 접근하려는데 방화벽이 실행중이라면)
sudo systemctl stop firewalld

3. GUI 접근하기 grafana.com/docs/grafana/latest/getting-started/getting-started/

http://ip:3000/

admin/admin 으로 들어간후에 비밀번호 바꿔준다. 

4. Data Source 추가하기 

* 이전버전 InfluxDB 데이타소스 방식과 확실히 달라졌다. 99%의 관련 블로그글들과는 다를것이다.

- 이름은 아무거나 만들어주고
- 여기선 Query Language 를 Flux로 한다. 이게 새로 추가된 방식이다. 
- HTTP에 URL을 http://your ip address:8086

나머지는 건드리지 않았다.

- 조직은 influxdb 설정에서 만든것을 넣어준다. 
- 토큰은 influxdb 에서 만든 auth token 문자열을 넣어준다.
- 버킷에는 influxdb 설정에서 만든 것을 넣어준다.

나머지는 건드리지 않았다. 
Save& Test를 해주며 끝마친다. 

5. 데시보드 추가하기 

이것 역시 이전 버전들과는 굉장히 많은 차이가 있다.

- Flux language syntax 를 이용하여 쿼리하여 데이터를 보여준다.
- bucket 으로 부터 3시간 이전 데이터부터 2시간 이전데이터까지를 보여준다. 
- 새로 만들어진 Flux 스크립트 기반으로 모니터링 환경을 꾸미려면 관련 학습이 선행되어야 할 것 같다. 


이로써 기초적인 설치와 세팅이 끝났다.

0 Comments
댓글쓰기 폼