WhaTap Telegraf Agent Guide

제목 : WhaTap Telegraf Agent Guide
작성자 : WhaTap Support
이메일 : support@whatap.io
날짜 : 2019-10-22
버전 : 1.0.1

설명 : 본 문서는 WhaTap Telegraf 에이전트에 대해 설명합니다.

1. 개요

Telegraf 에서 수집하는 매트릭스를 와탭 수집서버로 전달할 수 있습니다.
수집된 데이터는 whatap의 프로젝트 내부에서 확인 가능합니다.

1.1. Telegraf 내 whatap output plugin을 이용

Telegraf 에 포함된 whatap plugin 을 사용합니다.

Telegraf 오픈 소스 내에 whatap plugin 의 리뷰가 진행 중입니다.
정식 배포 전에는 whatap plugin을 포함하는 Telegraf를 교체해서 사용합니다.

1.2. whatap-telegraf 에이전트 설치

whatap-telegraf 에이전트를 설치하여 Telegraf 매트릭스 데이터를 중계합니다.

기존에 설치된 Telegraf의 socket_writer output plugin을 활성화하여 whatap-telegraf(Local TCP) 에이전트로 데이터를 전달합니다.
whatap-telegraf 에이전트는 Telegraf 에서 전달 받은 데이터를 수집서버로 중계합니다.

2. Telegraf

Telegraf는 데이터베이스, 시스템 및 IoT 센서에서 메트릭 및 이벤트를 수집하고 전송하기위한 플러그인 중심 서버 에이전트입니다. Telegraf는 Go로 작성되었으며 외부 종속성없이 단일 바이너리로 컴파일되며 최소한의 메모리 공간 만 필요합니다.

2.1. 모든 종류의 데이터 수집 및 전송

데이터베이스 : MongoDB, MySQL, Redis 등의 데이터 소스에 연결하여 메트릭을 수집하고 보냅니다. 시스템 : 현대적인 클라우드 플랫폼, 컨테이너 및 오케 스트레이터 스택에서 메트릭을 수집합니다. IoT 센서 : IoT 센서 및 장치에서 중요한 상태 저장 데이터 (압력 수준, 온도 수준 등)를 수집합니다.

2.2. plugin

Telegraf는 메트릭을 수집, 처리, 집계 및 작성하는 플러그인 중심 에이전트입니다. 입력, 출력, 애그리 게이터 및 프로세서를 포함한 4 가지 범주의 플러그인을 지원합니다.

3. whatap plugin

Telegraf의 whatap output plugin(tcp)을 통해 Telegraf에서 수집되는 매트릭스 정보를 와탭 수집서버로 전송합니다.

3.1. Telegraf 설치

Telegraf 오픈 소스에 whatap plugin을 추가하기 위해 리뷰가 진행 중입니다.
정식 배포 전에는 아래 다운로드 설치 및 컴파일 설치로 Telegraf를 설치합니다.

3.1.2. 컴파일 설치

사전 준비 사항
설치 절차

${GOPATH}/src/github.com/influxdata/telegraf 이하 Makefile로 빌드를 진행합니다.

  1. 의존성 설치를 진행합니다. 의존성 설치는 go dep을 사용하기 때문에 go dep이 먼저 설치되어야 합니다.

    # make deps
  2. 실행파일을 빌드합니다.
    ${GOPATH}/bin 디렉토리에 실행파일(telegraf)이 생성됩니다.

    # make go-install

설치 패키지가 필요하다면 make package 명령어로 생성할 수 있습니다. 크로스 컴파일을 진행하여 운영체제 별로 패키지 파일을 생성합니다.

# make package
상세한 빌드의 설명은 Telegraf github 내용을 참고해 주세요
https://github.com/influxdata/telegraf

3.2. 설정

Telegraf의 config 파일(telegraf.conf)에 아래 outputs.whatap 설정을 활성화합니다.

whatap plugin이 포함된 config 파일은 아래와 같이 생성할 수 있습니다.

# telegraf config > telegraf.conf

3.2.1. whatap 프로젝트 정보

http://whatap.io 에서 프로젝트의 정보를 설정합니다. 연결할 프로젝트의 에이전트 설치 안내에서 확인 가능합니다.

  • 프로젝트 라이선스 키 : 프로젝트를 식별하는 라이선스 키 입니다.

  • 프로젝트 코드: 프로젝트를 식별하는 숫자형 코드 입니다.

  • 수집서버 정보 (아이피, 포트) : 수집정보를 전달할 와탭 수집서버의 아이피와 포트 입니다.

3.2.2. config 설정(toml)

  • [[outputs.whatap]] 주석(#)을 삭제합니다.

  • license의 주석(#)을 삭제합니다. 프로젝트의 라이선스 키 정보를 입력합니다. (문자형으로 입력합니다.)

  • pcode의 주석(#)을 삭제합니다. 프로젝트 코드를 입력합니다. (숫자형으로 입력합니다.)

  • servers의 주석(#)을 삭제합니다. 수집서버 정보(아이피,포트) 를 설정합니다.
    프로토콜은 tcp만 지원합니다.문자 형식으로 "tcp://아이피:포트"를 등록합니다.
    배열 형식으로 등록합니다. 콤마(,)로 구분하여 배열 형식으로 등록합니다.

# # Configuration for WhaTap
[[outputs.whatap]]
#   ## You can create a project on the WhaTap site(https://www.whatap.io)
#   ## to get license, project code and server IP information.
#
#   ## WhaTap license. Required
license = "x2tggtnopk2t9-xxxxxxxxxx-aaaaaaaaaa"
#
#   ## WhaTap project code. Required
pcode = 118
#
#   ## WhaTap server IP. Required
#   # Put multiple IPs with / as delimiters. e.g. "1.1.1.1/2.2.2.2"

servers = ["tcp://1.2.3.4:6600", "tcp://5.6.7.8:6600"]

#   ## Connection timeout.
#   # timeout = "60s"
Telegraf 를 재시작하면 변경된 설정이 적용됩니다.

4. whatap-telegraf Install

4.1. 에이전트 실행 및 모니터링 개요

Telegraf 수집 데이터를 와탭 수집서버로 전송하는 기능을 제공합니다.

4.1.1. 지원

운영체제
  • Linux Redhat 6.x x64 이상

  • Ubuntu 12.x x64 이상

  • FreeBSD 10.x x64 이상

Telegraf

socket_writer ouput plugin을 지원하는 버전만 가능합니다.

  • Telegraf 1.3 이상

4.1.2. 에이전트 설치 방식 개요

  • 와탭 저장소(Repository)를 설치합니다.

  • whatap-telegraf 리눅스 패키지를(yum, apt-get) 설치합니다.

  • 라이센스 및 와탭 서버 정보를 설정합니다.

  • Telegraf 의 socket_writer output plugin을 설정하여 데이터를 연동합니다.

4.1.3. 구성 파일

Telegraf 정보를 수집하기 위한 에이전트 파일로 구성됩니다.

telegraf 에이전트를 구성하는 각 파일의 역할은 다음과 같습니다.

파일명

설명

whatap_telegraf

서비스 실행파일, Telegraf에서 전달된 정보를 수집서버로 전송하는 프로그램입니다.

/etc/init.d/whatap-telegraf (FreeBSD /usr/local/etc/whatap_telegraf)

서비스 스크립트

whatap.conf

설정파일입니다. 수집서버의 주소와 서버의 프로젝트 라이센스 키가 입력되는 파일입니다.

whatap-telegraf-#.log

에이전트 로그 파일 입니다. (/usr/whata/telegraf/logs)

4.1.4. 에이전트 이름 식별

와탭은 모니터링 정보 수집 대상인 애플리케이션 서버 식별을 위한 정보로 기본적으로 애플리케이션 서버로부터 수집한 정보를 활용합니다. 기본적으로 활용하는 정보는 애플리케이션 서버 종류, 애플리케이션 서버의 IP, 서비스 포트를 조합하여 애플리케이션 서버를 고유 식별자로 사용하게 되며 필요에 따라 사용자가 지정한 명칭을 사용하거나 패턴을 변경하여 사용하는 것도 가능합니다. 이때에는 꼭 고유한 값이어야 합니다.

애플리케이션 서버로부터 추출한 정보를 활용하는 이유는 애플리케이션 서버 정지, 네트워크 단절 또는 에이전트 문제로 인한 수집 서버와 에이전트의 통신 단절 상태가 복구되었을 경우, 재 접속된 에이전트로부터 송신되는 정보가 기존 에이전트로부터 송신된 정보와의 연속성을 유지하기 위해서 입니다. 와탭이 애플리케이션 서버를 식별하기 위해 사용하는 기본 패턴은 다음과 같습니다.

기본 패턴에 대한 변경은 whatap.conf에서 설정에서 가능합니다.

object_name default: Telegraf-{hostname}-{ip2}-{ip3}-{docker}

설정

설명

Type

app_name, 기본 telegraf

Hostname

호스트네임

Ip#

Ip를 .으로 나누었을 때 #번째 자리(0부터)

Process

app_process_name

docker

도커 컨테이너 아이디

4.2. 에이전트 설치

4.2.1. 패키지 설치

RedHat/CentOS
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ sudo rpm -Uvh http://repo.whatap.io/centos/5/noarch/whatap-repo-1.0-1.noarch.rpm
패키지 설치

아래 명령어를 통해 패키지를 설치합니다.

$ sudo yum install whatap-telegraf
설정 스크립트를 실행하여 서비스를 시작합니다.
echo "license=[발급받은 라이센스]" |sudo tee /usr/whatap/telegraf/whatap.conf
echo "whatap.server.host=[와탭 서버 주소]" |sudo tee -a /usr/whatap/telegraf/whatap.conf
sudo service whatap-telegraf restart
Debian/Ubuntu
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ wget http://repo.whatap.io/debian/release.gpg -O -|sudo apt-key add -
$ wget http://repo.whatap.io/debian/whatap-repo_1.0_all.deb
$ sudo dpkg -i whatap-repo_1.0_all.deb
$ sudo apt-get update
패키지 설치
$ sudo apt-get install whatap-telegraf
설정 스크립트를 실행하여 서비스를 시작합니다.
echo "license=[발급받은 라이센스]" |sudo tee /usr/whatap/telegraf/whatap.conf
echo "whatap.server.host=[와탭 서버 주소]" |sudo tee -a /usr/whatap/telegraf/whatap.conf
sudo service whatap-telegraf restart
Amazon Linux
패키지 저장소(Repository) 등록

와탭 저장소(Repository)를 등록합니다.

$ sudo rpm --import http://repo.whatap.io/centos/release.gpg
$ echo "[whatap]" | sudo tee /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "name=whatap packages for enterprise linux" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "baseurl=http://repo.whatap.io/centos/latest/\$basearch" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "enabled=1" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
$ echo "gpgcheck=0" | sudo tee -a /etc/yum.repos.d/whatap.repo > /dev/null
패키지 설치
$ sudo yum install whatap-telegraf
설정 스크립트를 실행하여 서비스를 시작합니다.
echo "license=[발급받은 라이센스]" |sudo tee /usr/whatap/telegraf/whatap.conf
echo "whatap.server.host=[와탭 서버 주소]" |sudo tee -a /usr/whatap/telegraf/whatap.conf
sudo service whatap-telegraf restart
FreeBSD
패키지 설치
$ wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/freebsd/10/whatap-telegraf-0.0.4.txz
$ pkg install whatap-telegraf-0.0.4.txz
설정 스크립트를 실행하여 서비스를 시작합니다.
echo "license=[발급받은 라이센스]" | tee /usr/whatap/telegraf/whatap.conf
echo "whatap.server.host=[와탭 서버 주소]" | tee -a /usr/whatap/telegraf/whatap.conf
sudo service whatap_telegraf restart

4.2.2. Telegraf 연동

Telegraf 설정

Telegraf 에 socket_writer output plugin 설정을 하여 whatap-telegraf 로 수집된 정보를 전달합니다.

  • [[outputs.socket_writer]] 주석을 해제합니다.

  • address 항목에 tcp 연결을 설정합니다.

  • 데이터 유형은 json 형식으로 설정합니다.

# # Generic socket writer capable of handling multiple socket types.
 [[outputs.socket_writer]]

#   ## URL to connect to
    address = "tcp://127.0.0.1:6600"

#   # data_format = "influx"
    data_format = "json"

4.2.3. 실행

애플리케이션 재기동

설치가 완료된 후 whatap-telegraf 서비스를 재시작합니다.

whatap-telegraf 서비스(Service) 재시작

whatap-telegraf 서비스(Service)가 실행 중이지 않거나 오류가 발생한 경우 재시작 합니다.

Redhat/CentOS
$ service whatap-telegraf restart
Debian/Ubuntu
$ sudo service whatap-telegraf restart
FreeBSD
$ service whatap_telegraf restart

4.2.4. 업데이트

패키지 업데이트는 기존 설정을 유지한 채로 업데이트합니다.

Redhat/CentOS

패키지 정보 갱신을 위해 캐시 정보를 삭제합니다.

$ yum clean all

whatap-telegraf 패키지를 업데이트 합니다.

$ yum update whatap-telegraf
Debian/Ubuntu

패키지 정보 갱신을 위해 캐시 정보를 갱신합니다.

$ sudo apt-get update

whatap-telegraf 패키지를 업데이트 합니다.

$ sudo apt-get install --only-upgrade whatap-telegraf
FreeBSD

패키지를 재설치합니다.

# wget https://s3.ap-northeast-2.amazonaws.com/repo.whatap.io/freebsd/10/whatap-telegraf-0.0.4.txz
# pkg install whatap-telegraf-0.0.4.txz

4.2.5. 중지

일시 중지
whatap-telegraf 서비스(Service) 중지
Redhat/CentOS
$ sudo service whatap-telegraf stop
Debian/Ubuntu
$ sudo service whatap-telegraf stop
FreeBSD
$ service whatap_telegraf stop
에이전트 삭제

패키지(yum, apt-get) 삭제를 진행하고 필요에 따라서 /usr/whatap/telegraf 아래에 로그 파일 및 기타 파일을 삭제합니다.

패키지 삭제
Redhat/CentOS
$ sudo yum remove whatap-telegraf
Debian/Ubuntu
$ sudo apt-get purge whatap-telegraf
FreeBSD
$ pkg delete whatap-telegraf
/usr/whatap/telegraf 디렉토리 삭제

4.3. 설정

4.3.1. 에이전트 네이밍

object_name

Default : {type}-{hostname}-{ip2}-{ip3}-{docker}
Type : String
애플리케이션을 식별하는 에이전트 이름(ONAME)체계입니다. ONAME을 토대로 OID가 생성됩니다.

명칭

설명

{type}

app_name 에 설정된 값을 사용합니다. 기본값은 Telegraf 입니다.

{ip#}

IP를 나누었을 때 #번째 자리를 사용합니다.

{hostname}

서버 호스트명을 사용합니다.

{docker}

도커 컨테이너 아이디를 사용합니다.

app_name

Default : NONE
Type : String
애플리케이션을 식별하는 에이전트 이름(ONAME)체계에 사용되는 애플리케이션 명. object_name의 {type}에 해당하는 값이다.

whatap-telegraf 서비스 재시작 후 적용됩니다.

4.3.2. 에이전트 통신

license

Default : NONE
Type : String
에이전트 설치시 서버로부터 부여받은 라이센스를 지정합니다. 라이센스에는 에이전트가 속한 프로젝트와 보안 통신을 위한 암호키를 포함하고 있습니다.

whatap.server.host

Default : 127.0.0.1,127.0.0.1
Type : ip_address
에이전트가 수집한 데이터를 전송할 서버를 지정합니다. 수집서버 이중화로 2개 이상의 IP를 가진 경우 콤마(,)로 분리하여 지정할 수 있습니다. 지정된 IP 에는 수집서버 proxy 데몬이 리스닝 상태로 서비스 되어야 합니다.

whatap.server.port

Default : 6600
Type : tcp_port
수집서버 PORT 를 지정합니다. 포트는 하나만 지정할 수 있으므로 whatap_server_host 에 지정된 수집서버들은 동일 PORT 를 사용해야 합니다.

tcp_so_timeout

Default : 60000
Type : Millisecond
수집서버와 통신하는 TCP세션의 Socket Timeout 값을 지정합니다.

tcp_connection_timeout

Default : 5000
Type : Millisecond
수집서버와 통신하는 TCP세션의 Connection Timeout 값을 지정합니다.

net_send_max_bytes

Default : 5242880
Type : Byte
수집서버로 데이터를 전송할 때 한번에 전송되는 최대 크기를 지정합니다.

net_send_buffer_size

Default: 1024
Type: byte
데이터 전송을 하기 위해 가지고 있는 최대 바이트 크기입니다.

4.3.3. Telegraf

telegraf_tcp_port

Default: 6600
Type: tcp_port
Telegraf socker_writer output plugin이 연결할 TCP Port입니다.

whatap-telegraf 서비스 재시작 후 적용됩니다.
telegraf_delta_fields

Default: 1024
Type: string
누적 값을 가지는 필드의 증가값을 계산하여 별도의 필드를 추가합니다. name.fields 형식으로 지정하고, 여러 개는 콤마(,)로 구분합니다. e.g. nginx.accepts,nginx.requests nginx의 accepts, requests 값의 증가값을 acceptsDelta, requestsDelta 필드 이름으로 추가 전달합니다.

4.3.4. 로그

log_keep_days

Default : 7
Type : Day
로그파일 보관기간을 설정합니다

5. 데이터 확인

태그 카운트 보드를 통해서 자유롭게 대시보드를 구성할 수 있습니다. 태그 카운트 조회, 태크 가운트 차트로 데이터를 확인할 수 있습니다.

5.1. 태그 카운트 보드

사용자가 자유롭게 구성 가능한 대시보드 입니다.
원하는 데이터를 선별하여 대시보드를 구성할 수 있습니다.
수정모드를 통해 차트를 추가하고 배치를 변경할 수 있습니다.

tag board view
tag board
tag board edit
tag board edit category
tag board edit field

5.2. 태그 카운트 조회

시간, 카테고리, 태그, 필드 등을 선택하여 데이터를 조회할 수 있습니다.

tag view

5.3. 태그 카운트 차트

시간, 카테고리, 태그, 필드 등을 선택하여 차트를 조회할 수 있습니다. 여러개의 차트를 추가하여 비교할 수 있습니다.

tag chart

5.4. 사전정의 태그 보드

태크 카운트를 주제에 맞게 사전 정의한 대시보드 입니다.

5.4.1. Apache

Apache에 대한 대시보드를 제공합니다.

telegraf apache
  • CPULoad CPULoad를 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • User CPU 사용자 CPU 사용율을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • Used Memory 시스템 메모리 사용율을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • ReqPerSec 초당 요청 수의 평균을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • BytesPerSec 초당 전송 바이트의 평균을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • BytesPerReq 요청당 전송 바이트의 평균을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • Worker BusyWorkers(요청을 처리하는 작업 수), IdelWorkers(쉬고 있는 작업 수)를 그래프로 보여줍니다. 호스트네임을 지정하여 변경된 데이터를 볼 수 있습니다.

  • Scoreboard 스코어보드를 그래프로 보여줍니다. Open slot에 대한 정보는 대부분 고정적이고 다름 지표와 차이가 많이나서 제외합니다. 호스트네임을 지정하여 변경된 데이터를 볼 수 있습니다.

5.4.2. Nginx

Nginx 에 대한 대시보드를 제공합니다.

telegraf nginx
  • Active 처리중인 커넥션 수를 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • User CPU 사용자 CPU 사용율을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • Used Memory 시스템 메모리 사용율을 그래프로 보여줍니다. 호스트네임을 기준으로 여려개의 서버를 비교해서 볼 수 있습니다.

  • Server accepts, handled, requests 항목을 그래프로 보여줍니다. 호스트네임을 선택하여 해당 서버의 정보를 확인할 수 있습니다.

  • Server(Delta) 누적데이터인 accepts, handled, requests 항목의 증가값을 그래프로 보여줍니다. 호스트네임을 선택하여 해당 서버의 정보를 확인할 수 있습니다.

  • Reading reading, writing, waiting 항목을 그래프로 보여줍니다. 호스트네임을 선택하여 해당 서버의 정보를 확인할 수 있습니다.