Grafana InfluxDB Telegraf Kapacitor 설치

SYSTEM/TECH / /
반응형
l서버 구성
 

 

1.모니터링 서버 : Influxdb + grafana +kapacitor  서버 1(같은 서버에 install / 분리도 가능)

 

    

     * Recommend Spec

 

 

     - CPU 4 Core 이상

     - Memory 8G 이상

     - HDD 50G 이상

       (influxDB 특성상 (모니터링 interval time 비례한 DB R/W 발생, 가능하다면 SSD 추천)

 
ü스펙은 모니터링 대상 메트릭수,대상 노드수, 일별 write 되는 data용량, 모니터링 간격, 모니터링 로그 보관주기 
   등에 따라 결정 되어야함   (소규모, 대규모에 따라 시스템 사이징은 천차만별)
 
반응형

    참고 사이트 : https://docs.influxdata.com/influxdb/v0.10/guides/hardware_sizing/

 

2. OS : Linux (CentOS or Ubuntu)  가급적이면 최신 버전 사용

 

             (메뉴얼은 Ubuntu 기반으로 설명 예정)

 

lInfluxDB 구성 (Ubuntu 14.04.2 LTS)
 
 

   1. 다운로드 : https://portal.influxdata.com/downloads

 

 

    2. 서버에서 직접 다운로드

        wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.0_amd64.deb

        sudo dpkg -i influxdb_1.2.0_amd64.deb

 

 

    3. /etc/influxdb/influxdb.conf   파일 튜닝 필요 (모니터링 대상 메트릭 개수, 모니터링 간격 관련)

 

 

    4. 시작 /etc/init.d/influxdb  start  (restart,stop )

 

 

    5.  iptables 사용중이라면 포트 등록

        API -> iptables -A INPUT -m state --state NEW -m tcp -p TCP -s 10.20.x.x/32 --dport 8086 -j ACCEPT

        DB 관리 web ->  iptables -A INPUT -m state --state NEW -m tcp -p TCP -s 10.20.x.x/32 --dport 8083 -j ACCEPT

 

 

    6. http://x.x.x.x:8083  접속 하면 influxdb 관리화면 (shell 에서도 가능 -> influx 실행  (mysql 과 비슷함))

 

 

    7. DB 생성은 예를들어 telegraf agent 환경파일(telegraf.conf) 에서 output influxdb 로하고 DB명을 지정해주면

 

        자동으로 DBcreate

 

lGrafana 구성 (Ubuntu 14.04.2 LTS)
 

   1. 다운로드 : http://grafana.org/download/

 

 

    2. 서버에서 직접 다운로드

        wget https://grafanarel.s3.amazonaws.com/builds/grafana_4.1.2-1486989747_amd64.deb

        sudo apt-get install -y adduser libfontconfig

        sudo dpkg -i grafana_4.1.2-1486989747_amd64.deb

        sudo /etc/init.d/grafana-server start (stop,restart)

 

 

    3. 환경설정: /etc/grafana/grafana.ini (웹으로 접속할 port 명시)

 

 

    4. 시작 /etc/init.d/influxdb  start  (restart,stop )

 

 

    5.  iptables 사용중이라면 포트 등록

 

        port -> iptables –A INPUT –m state –state NEW –m tcp –p TCP –s 10.20.x.x/32 –dport 8080 -j ACCEPT

 

 

    6. http://x.x.x.x:8080  접속 하면 grafana 화면 (디폴트 접속 정보 admin   /  admin 접속후 필히 변경 요망)

 

 

    7. 그래프 생성 포인트

 

        datasource -> influxdb -> 사용할 DB 선택 -> graph 생성 및 커스터마이징

 

lTelegraf 구성 (윈도우 or 리눅스 agent 모두 가능)
 

   1. 다운로드 : https://portal.influxdata.com/downloads

 

 

    2. 서버에서 직접 다운로드

        - 리눅스

        wget https://dl.influxdata.com/telegraf/releases/telegraf_1.2.1_amd64.deb

        sudo dpkg -i telegraf_1.2.1_amd64.deb

 

 

       - 윈도우

        wget https://dl.influxdata.com/telegraf/releases/telegraf-1.2.1_windows_amd64.zip

        unzip telegraf-1.2.1_windows_amd64.zip

 

 

    3. 환경설정: /etc/telegraf/telegraf.conf  (리눅스)

                     c:\telegraf\telegraf.conf   (윈도우)

 

 

    4. 시작 /etc/init.d/telegraf  start  (restart,stop )

              services.msc -> telegraf (윈도우)

 

 

    5. telegraf.conf  에서 influxdb api 8086 포트를 호출해서 모니터링 data metric 전송

 

 

 

 

       모니터링 대상 메트릭은(cpu,mysql,apache등등) telegraf.conf 에서 각 섹션별 모니터링 plugin에서 설정

       Input, Output Plugin Sample 은 git 에서 검색하면 다양하게 나옴.

 

 

lKapacitor (알람 설정

  influxdb 로 저장되는 data metric를 실시간(stream) 감시하여 조건에 부합되면 -> mail, slack, talk 알려줌

 

   1. 다운로드 : https://portal.influxdata.com/downloads

 

 

    2. 서버에서 직접 다운로드

        wget https://dl.influxdata.com/kapacitor/releases/kapacitor_1.2.0_amd64.deb

        sudo dpkg –I kapacitor_1.2.0_amd64.deb

 

 

    3. 환경설정: /etc/kapacitor/kapacitor.conf

 

        [[influxdb]]  <- influxdb 연결 설정

        [smtp]  ->  서버에 SMTP설치(sendmail) 되야함 / 이벤트에 부합되면 smtp사용하여 메일발송

 

 

    4. 시작 /etc/init.d/kapacitor  start  (restart,stop )

 

 

    5. TICK  스크립트(다음장에 예제)를 작성 하여 -> 선언해주고 define -> 활성화 enable 해줘야함

 

 

       ) 선언 : kapacitor define storage_cpu -type stream -dbrp public.default -tick storage_cpu.tick

 

            활성화 : kapacitor enable storage_cpu

 

            현재 등록된 알람 설정 확인 -> kapacitor list tasks

 

 

            알람 해제  ->  kapacitor disable storage_cpu

 

§ 예: Hyper-V Guest CPU 사용량에 대한 tick script -> email, slack 통보
 
 
#kapacitor define host_guest_cpu -type stream -dbrp telegraf.default(DB명) -tick host_guest_cpu.tick(선언)
 
#kapacitor enable host_guest_cpu  (활성화)
 
#kapacitor disable host_guest_cpu (비활성화)
 
#kapacitor enable host_guest_cpu  (삭제)
 
#kapacitor enable host_guest_cpu  (등록된 Rule 보기)
 
 
    cat  host_guest_cpu.tick 
 
 stream
       |from()
           .measurement('win_hyperv')
           .where(lambda: "objectname" == 'Hyper-V Hypervisor Logical Processor')
           .groupBy('host')
       |window()
            .period(1m)
            .every(5m)
       |alert()
           .details('''
            <h1>{{ .ID }}</h1>
            <b>Status  : {{ .Level }}</b><br>
            <b>Trigger : Guest CPU(%)</b><br>
            <b>Host    : {{ index .Tags "host" }}</b><br>
            <b>Value   : {{ index .Fields "% Guest Run Time" }}</b><br>
               ''')
           .message('{{ .Level}}: {{ .Name }}/{{ index .Tags "host" }} Guest CPU(%): {{ index .Fields "% Guest Run Time" }}')
           .crit(lambda: "% Guest Run Time" > 94)
           .log('/data/alert_log/host_cpu_guest.log')
           .email()
           .slack()
 
 
 
참고 사항
 
influxdb : 
 
서버 리소스 사이징에 대해서는 가이드라인이 있음 (https://www.influxdata.com/)
             
저장되는 메트릭 수가 많을수록 HDD 성능이 좋아야함 (SSD 추천: 거의 실시간으로 disk I/O가 빈번하기때문)
             
그리고 retention 정책 , cache 관련 설정등을 사이즈에 맞게  잘 튜닝해야함
             
성능 문제 발생시 Sharding 이 되나 구조가 복잡해 지고 샤딩 이전에 Scale-up이 가능하다면 먼저 진행
하는것이 바람직하다고 생각됨 
 
클러스터 구성 (HA)는 유료이나 오픈 소스로도 구성 가능  (구글링 요망)
                   
Grafana :  
 
현재 4.2.x 버전인데 업그레이드 잘됨 (패키지 받아서 그냥 설치하면됨 / 그리고 restart)
 
버전 UP시 grafana.org 에 blog 에 가면 어떤 부분이 개선되고 패치되었는지 자세하게 나옴
 
플러그인 설치는 grafana.net 가면 있음
                    
Telegraf :  
 
windows agent는  influxdb 버전과 호환되야함 (버전 맞춰 주는게 좋음 )
 
기억으로 최신 버전 사용시 influxdb로 insert 가 되지 않아 고생했던 기억이..........
 
Kapacitor : 
 
Notification (alert)  담당 데몬이며, 들어오는 쿼리에 대해 감시설정을 stream방식이냐 batch 방식이냐 결정
 
tick 스크립트 수정시에는 수정후 무조건 다시 define 해줘야 수정된게 반영됨.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기