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



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  로 시작한다. 


패키지로 인스톨 및 서비스시작하기   (arm64 or amd64 시스템에 맞게 변경해야함)

- RedHat & CentOS (amd 64-bit)

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

systemctl start influxdb 
systemctl enable influxdb 
systemctl status influxdb 

- Ubuntu & Debian (amd 64-bit)

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

 

sudo service influxdb start
sudo service influxdb status


InfluxDB UI설정하기 

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

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

  1. Username 넣어준다.   (예: hama) 
  2. Password 넣어준다.  (기억해두시라) 
  3. Organization 이름 넣어준다.  <-- 이전버전에는 없는 것이다.
  4. Bucket 이름 생성한다.  <-- 이전버전에는 없는 것이다. 
  5. Click Continue.

3. 메인 화면에서 Build a dashboard 를 선택한다. 

4. Create Dashboard 를 선택한다. 

5. Add Cell 을 선택한다. 

6. 
- from (bukcet) :  monitoirng 선택한다. 즉 bucket 이름이다
- filter (_measurement)  : folder_status 를 선택한다. .
- filter (_field) : size를 선택한다. 
- filter (tag) : tag를 선택한다. 
- 5s refresh : 5초마다 화면을 갱신해준다
- past 1h : 과거 1시간 전 데이터 부터 보여준다
- Submit : 적용한다. 

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

InfluxDB에 데이터 넣기 

대략 아래와 같이 코딩하자.  (참고 소스 : https://github.com/wowlsh93/monitoring)

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" 은 조직이고
- "ledgermaster" 은 버켓이고 (참고로 이건 데이타베이스라고 생각하자.)
- Measurement 도 지정하자. (참고로 이건 테이블과 비슷하다고 보면 된다) 
- Tag, Field 도 넣어주자 (참고로 Tag는 인덱싱되는 컬럼, Field는 그냥 컬럼들이라고 생각하자, 둘다 key,value 쌍이다)
- Field 값은 필드 값은 strings, floats, integers, boolean 타입을 가진다. 
- 해당 timestamp에 field set, tag set 들이 구성된다.  (key, value 를 합쳐서 set이라고 한다) 

* tag 는 아래와 같이 사용된다. 

butterflies 와 honeybees의 갯수는 일반 필드이고, location 과 scientist는 tag인데 생각을 해보자!!  보통 우리는 과학자에 필터링을 걸 것어서 사용 할 것이다. scientist=perpetua 처럼 말이다. perpetua 과학자가 처리한 데이터만 골라서 보여주고 싶을 것이다. 이런 그룹짓고 싶은 필터링에 indexing을 거는 것이다 tag를 사용해서~~

* 포인트와 시리즈이라는 개념도 중요한데 시리즈에 대해 잘 이해가 안가는..

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 8.0.6


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

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

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

Ubuntu and Debian(64 Bit)

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb
sudo dpkg -i grafana_8.0.6_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. Grafana UI 다루기 grafana.com/docs/grafana/latest/getting-started/getting-started/

브라우저에서 다음 주소로 Grafana UI 에 들어간다. => http://localhost:3000/

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

메인화면은 위와 같다. 

4. Data Source 추가하기 

Data sources선택 

InfluxDB 선택 

* 이전버전 InfluxDB 데이타소스 방식과 매우 많이 달라졌다. (4버전대가 편했는데....) 
- 이름은 아무거나 만들어주고
- 여기선 Query Language 를 Flux로 한다. 이게 새로 추가된 방식이다. (InfluxDB 2.x대에는 이걸 써야한다)
- HTTP에 URL을 http://your ip address:8086

나머지는 건드리지 않았다. (혹시 Basic auth 켜있으면 꺼준다)

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

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

5. 데시보드 추가하기 

Dashboard선택 

일단 Add an empty panel 을 선택한다.

이전 버전(4.x대 이전)과는 굉장히 많은 차이가 있다.

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

Getting start with Flux => https://docs.influxdata.com/influxdb/v2.0/query-data/get-started/

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


6. Flux 예제 


-  example-bucket 이란 이름의 버킷으로 부터 데이터를 가져온다.
- 1시간 전 부터 시작하는 데이터를 가져 온다
- measurement 는 "cpu" 를 가져온다.
- tag 키가 cpu이고 tag 밸류가 "cpu-total" 인 포인트만 가져온다. 
- 1분간의 데이터를 평균(mean)하여 가져온다. (즉 그래프에는 1시간 전부터 시작하여 1분당 한개의 값만 나올 것이다.)


* 너무 옛날 버전이라 참고하지마세요 (2015년경)
* 2021년 버전은 -> hamait.tistory.com/1120


InfluxDB 

간략 소개 

InfluxDB

*  2013년도에  만들어진 시계열 데이타를 저장하기위한 NoSQL 저장소

*  구글이 만든 key/value database library 인 LevelDB를 사용

*  distributed and scale horizontally하게 설계되었습니다. 따라서, cluster에 새로운 node만 추가하면 쉽게 scale-out 할 수 있습니다. 

Schemaless design 입니다. 

 

Grafana

* 데이타 소스로 Graphite / Elasticsearch / InfluxDB 등을 이용하여  타임시리즈를 그래프 / 대쉬보드로 가시화해주는 툴입니다. 

* ubuntu 16.04 기준 
* InfluxDB 0.9 version
* Grafana 2.6.4 version 
* python 2.7 

1. InfluxDB 설치  (Ubuntu) 

* 2021년 3월현재 1.1.1이 설치됩니다. docs.influxdata.com/influxdb/v2.0/get-started/?t=Linux 로가면 2.0기반으로 설치 할 수 있습니다.

sudo curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
sudo echo "deb https://repos.influxdata.com/ubuntu bionic stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt update sudo apt install influxdb

sudo systemctl stop influxdb
sudo systemctl start influxdb
sudo systemctl enable --now influxdb
sudo systemctl is-enabled influxdb

2. InfluxDB  자신의 database 만들기 (콘솔) 

$ influx
>

* influx  를 입력하여 db 에 접속합니다. 기본 포트는 8086 이며 종료는 exit 혹은 ctrl + D
* 만약 influx명령어가 없으면, sudo apt install influxdb-client 받습니다.

> CREATE DATABASE mydb

*  처음엔 데이타베이스가 없기때문에 원하는 이름으로 하나 만들어줍니다. 여기서는 (mydb)

3. InfluxDB  입력테스트

> CREATE DATABASE testdb
> use testdb

*  testdb 를 만들고 use 명령어를 통해 해당 db 를 사용해보겠습니다.

 {
            "measurement": "officepower ",

            "tags": {
                "host": "server01",
                "region": "us-west"
            },

            "time": "2009-11-10T23:00:00Z",
            "fields": {
                "value": 0.64
            } 

}

* 일반 구성은 위와 같습니다. 

mesurement 가 sql 로 말하면 테이블 명과 같으며 , tags / time / fields 로 구성됩니다.

  위에는 2개의 로우를 입력하였습니다.
   (

mesurement 는 officepower ,   tags  는  node=2  ,  values 는  watt,apc,pfc 등등)

 * 중간에 select * from officepower 를 통해서 데이터들을 보여줍니다.

 * select *  from officepower where node = '3'      // node 가 3 인 로우만 선택되며,  * select *  from officepower where apc >= 300   // apc 가 300 이상인 로우만 선택됩니다

 * 브라우저를 통한 관리기능도 제공합니다. 포트 8083(127.0.0.1:8083) 으로 접근하여  확인합니다.

 

4. InfluxDB  입력  (파이썬을 통해) 

4-1. InfluxDB 파이썬 클라이언트 설치 

sudo apt-get install python-pip

$ sudo pip install influxdb $ sudo pip install --upgrade influxdb

자세한것은 여기 참고 : https://github.com/influxdata/influxdb-python

Grafana 

5. Graphana 설치 및 실행  

5-1. 설정정보 저장용 데이타베이스를 influxDB 에 추가

> CREATE DATABASE grafana

5-2. Graphana install (http://docs.grafana.org/installation/debian/)

$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_2.6.0_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
$ sudo dpkg -i grafana_2.6.0_amd64.deb

5-3. Grafana start  

$ sudo service grafana-server start

* 서버 재부팅후 자동으로 켜지게 하려면 아래 추가. 

(ubuntu 14.04)

   sudo update-rc.d grafana-server defaults

(ubuntu 16.04)

아래로 테스팅 

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
이것으로 설정 
sudo systemctl enable grafana-server.service

5-4. 브라우저를 통한 Grafana 접속

* http://설치ip:3000 으로 접속합니다.  ( 아디/비번은 admin/admin) 

6. Grafana 를 통한 가시화  (http://docs.grafana.org/datasources/influxdb/ )

6-1. Data source 설정하기 

admin/admin 으로 로긴하고 들어간후에 위에 그림처럼 1~3번까지 누르면 data source 를 편집할수 있게 됩니다.

* Name 은 아무거나 ( 제 경우는 InfluxdbOffice 라고 했습니다) 

* Type 은  InfluxDB 0.9x  선택 

* Url 은 InfluxDB 설치한 곳 IP:8086 해주시고 

* Database 는 자신이 만든 db 이름 ( 제 경우는 powerdb) 

* User / Password 는 기본값 root/root 

6-2. 자신의 Dashboard 을 통해 데이타 가시화 

* 상단의 HOME 을 누른후 아래 +New 를 클릭하여 새로운 dashboard 를 생성합니다.

* 왼쪽의 연두색 버튼 -> Add Panel ->   Graph 를 선택해줍니다.

*  select * from officepower 라는 쿼리로 지난 24시간의 데이타 값을 가시화 하였습니다.

*  다음처럼 수동으로 쿼리 설정을 할수도 있습니다.

6-3. Single Stat 에 이미지 넣기 

위치 : /usr/share/grafana/public/img 아래에 이미지 넣으시고 , (sudo mv  xxx.jpg   /usr/share/grafana/public/img)

 html 포맷으로 바꾼후 
<img src="img/your_img.png" alt="error" />   or  

<img src="public/img/your_img.png" alt="error" />  

7.  끝으로 

시작이 반이라는 말처럼 설치후에   InfluxDB 와 Grafana 에 대한 풍부한 기능들을 조금씩  배워 나가면 자신의 도메인 데이타에  적합한 데이터 가시화 환경을 만들수 있으리라 봅니다.

 

그라파나 업데이트 (2.6 -> 4.6.2)

전 아래처럼 해서 상관없었으나, 
책임 못지니 문서를 확인하세요. 상황에 따른 업그레이드 방법이 있습니다. 

* 업그레이드 시에는 항상 /var/lib/grafana/grafana.db 에 저장되는 sqllite3 디비를 항상 백업해 둡니다.


sudo service grafana-server stop 
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.6.2_amd64.deb

sudo dpkg -i grafana_4.6.2_amd64.deb

 

sudo service grafana-server restart

 

+ Recent posts