TICK Stack을 통한 모니터링 환경 구축(Telegraf+InflumxDB+Chronogaf+Kapacitor)

개요


최소한의 설정으로 TICK Stack 구축
TICK은 다음 Inflexdb 수정influxdata 도구 그룹으로 구성된 Stack인 것 같습니다.
  • T - Telegraf – Data collection
  • I - InfluxDB – Data storage
  • C - Chronograf – Data visualization
  • K - Kapacitor – Data processing
  • 구성은 다음과 같다

    ※ 공식 홈페이지를 통해

    컨디션


    AWS에서 서버 2대 준비
  • ip-172-31-17-95 : Influxdb, Kapacitor, Chronograf
  • ip-172-31-17-94 : Telegraf
  • 버전은 다음과 같습니다.
  • CentOS release 6.7 (Final)
  • InfluxDB v0.10.0 (Beta)
  • Telegraf v0.10.0
  • Kapacitor v0.2.4
  • Chronograf v0.4
  • 다양한 설치


    InflexDB 설치
    $ wget https://influxdb.s3.amazonaws.com/influxdb-0.10.0-0.beta1.x86_64.rpm
    $ sudo yum localinstall influxdb-0.10.0-0.beta1.x86_64.rpm
    
    Telegraf 설치
    $ wget http://get.influxdb.org/telegraf/telegraf-0.10.0-1.x86_64.rpm
    $ sudo yum localinstall telegraf-0.10.0-1.x86_64.rpm
    
    Kapacitor 설치
    $ wget https://s3.amazonaws.com/influxdb/kapacitor-0.2.4-1.x86_64.rpm
    $ sudo yum localinstall kapacitor-0.2.4-1.x86_64.rpm
    
    Chronograf 설치
    $ wget https://s3.amazonaws.com/get.influxdb.org/chronograf/chronograf-0.4.0-1.x86_64.rpm
    $ sudo yum localinstall chronograf-0.4.0-1.x86_64.rpm
    

    InflexDB 설치


    어쨌든 기본적으로 시작합니다.
    $ sudo /etc/init.d/influxdb start
    

    Telegraf 설치

  • InflumxDB 서버 지정
  • percpu를 무효화
  • $ sudo vi /etc/telegraf/telegraf.conf
    
    urls = ["http://172.31.17.95:8086"]
    
    [[inputs.cpu]]
      percpu = false
    
    
    Telegraf 시작
    $ sudo /etc/init.d/telegraf start
    
    기본 모니터링 설정은 다음과 같습니다.
    measurement
    field
    cpu
    time_guest, time_guest_nice time_idle, time_iowait, time_irq, time_nice, time_softirq, time_steal, time_system, time_user, usage_guest, usage_guest_nice, usage_idle, usage_iowait, usage_irq, usage_nice, usage_softirq, usage_steal, usage_system, usage_user
    disk
    free, fstype, inodes_free, inodes_total, inodes_used, path, total, used
    diskio
    io_time name, read_bytes, read_time, reads, serial, write_bytes, write_time, writes
    mem
    available, available_percent, buffered, cached, free, total, used, used_percent
    swap
    free, in, out, total, used, used_percent
    system
    load1, load15, load5
    ※ 위의 양도를 10초마다 인플렉스 DB로 output

    Kapacitor 설정


    이메일 알림 사용
    $ sudo vi /etc/kapacitor/kapacitor.conf
    
    /etc/kapacitor/kapacitor.conf
    [smtp]
      enabled = true                   #有効化
      host = "127.0.0.1"
      port = 25
      username = ""
      password = ""
      from = "[email protected]"     #送信元アドレス
      to = ["****@*************"]      #アラートメール通知先
      no-verify = false
      idle-timeout = "30s"
    
    Kapacitor 시작
    $ sudo /etc/init.d/kapacitor start
    
    경고 설정
    tick 스크립트 만들기
    cpu_alert.tick
    stream
        .from().measurement('cpu')
        .alert()
                    .warn(lambda: "usage_idle" < 30)  #idle 30%以下で warning
                    .crit(lambda: "usage_idle" < 10)  #idle 30%以下で critical
            .email()                                  #email 通知
    
    task 투입
    $ kapacitor define -name cpu_alert -type stream -dbrp telegraf.default -tick cpu_alert.tick
    
    task의 유효성
    $ kapacitor enable cpu_alert
    
    감시 대상의 규격이 비교적 낮기 때문에, 가벼운 부하를 더한 후 대량의 우편물이 날아올 것이다

    메일의 테마에서 호스트 이름 부분이nil이기 때문에 수정해야 합니다
    flaping도 귀찮아요. 어떻게든 해결할게요.
    경보 조정
  • TagKey group화(host, cpu)
  • 창 정의 증가(60초당 60초 획득)
  • warn,crit60초 동안의 데이터 중 어느 것이 조건에 부합되면alert에 투척
  • stateChangesonly 추가(상태가 바뀔 때만 적용)
  • ID 추가 (메일 테마에 사용할 메시지 {{.ID}is{.Level}}})
  • cpu_alert.tick
    stream
      .from().measurement('cpu')
        .groupBy('host','cpu')
        .window()
          .period(60s)
          .every(60s)
        .alert()
          .id('{{ index .Tags "host" }}/{{ index .Tags "cpu" }}')
          .warn(lambda: "usage_idle" < 30)
          .crit(lambda: "usage_idle" < 10)
          .stateChangesOnly()
          .email()
    
    task 재투입
    $ kapacitor define -name cpu_alert -type stream -dbrp telegraf.default -tick cpu_alert.tick
    
    확인
    $ kapacitor show cpu_alert
    Name: cpu_alert
    Error:
    Type: stream
    Enabled: true
    Executing: true
    Databases Retention Policies: ["telegraf"."default"]
    TICKscript:
    stream
      .from().measurement('cpu')
        .groupBy('host','cpu')
        .window()
          .period(60s)
          .every(60s)
        .alert()
          .id('{{ index .Tags "host" }}/{{ index .Tags "cpu" }}')
          .warn(lambda: "usage_idle" < 30)
          .crit(lambda: "usage_idle" < 10)
          .stateChangesOnly()
          .email()
    
    DOT:
    digraph cpu_alert {
    stream0 -> stream1 [label="12"];
    stream1 -> window2 [label="1"];
    window2 -> alert3 [label="0"];
    }
    
    task 일람표 얻기
    $ kapacitor list tasks
    Name                          Type      Enabled   Executing Databases and Retention Policies
    cpu_alert                     stream    true      true      ["telegraf"."default"]
    
    경고 메일 확인

    주의 사항
    tick 스크립트의 문법 오류는 define에서 검사된 오류입니다. 실행 중 오류가 발생하는task를 삽입하면panic가 떨어져서 시작할 수 없습니다
    이런 거.
    cpu_alert.tick
    stream
      .from().measurement('cpu')
        .window()
          .period(30s)
          .every(30s)
        .groupBy('host','cpu')
        .alert()
          .warn(lambda: "usage_idle" < 30)
          .crit(lambda: "usage_idle" < 10)
          .log('/tmp/cpu_alert.log'
    
    대응:task db 초기화 제거
    $ sudo rm /var/lib/kapacitor/tasks/task.db
    

    Chronograf 설정


    외부 액세스 허용
    $ sudo vi /opt/chronograf/config.toml
    
    Bind = "0.0.0.0:10000"
    
    Chronograf 시작
    $ sudo /etc/init.d/chronograf start
    
    http:/{서버 IP 주소}:10000 액세스

    Addnew server에서 NICKNAME을 적절하게 입력한 다음 Save
    ↓
    New Graph에서 차트 이름을 설정하고 BUILDER를 사용하여 질의 작성
    telegraf로 얻은 cpu 도량의 도표

    다음에telegraf의 측정과kapacitor의 이벤트 처리를 깊이 있게 발굴할 것입니다

    좋은 웹페이지 즐겨찾기