1. Metricbeat 소개

로그 수집 목적은 대부분은 수치 데이터를 연산, 시각화, 분석해 사용자에게 더 좋은 서비스를 제공하는 것입니다. 비츠 제품 중 Metricbeat는 대상 호스트의 OS 관련 수치나 호스트에서 동작하는 여러 서비스의 수치 데이터를 수집할 목적으로 개발되었습니다. 대상 호스트에 설치하면 데이터를 수집해 로그스태시로 전달, 가공시키거나 엘라스틱서치로 직접 인덱싱하게 할 수 있습니다. 잘 알려진 데이터 형식(Apache, Jolokia, Nginx, MongoDB, MySQL, PostgreSQL, Prometheus 등)은 모듈을 사용해 더 쉽고 간편하게 데이터를 수집하고 시각화 할 수 있습니다.

2. 실습 소개

이 실습에서는 별도의 어플리케이션의 데이터가 아닌 로컬 호스트에서 발생하는 메트릭을 수집하여 엘라스틱서치에 색인하고, Metricbeat 모듈의 기능을 사용하여 간단하게 대시보드를 구성해 볼 것입니다.

3. 사전 준비

3.1 설치

ElasticStack 설치 (based Docker)

3.2 metricbeat 준비

  1. metricbeat 실행

    docker-compose up -d --no-deps --no-recreate metricbeat
    
  2. 키바나에서 Discover 페이지로 이동

  3. metricbeat에 의해 수집된 데이터 확인

4. Metricbeat 살펴보기

  1. metricbeat 컨테이너로 접속

    docker exec -it metricbeat bash
    
  2. 현재 설정 확인

    cat metricbeat.yml
    
    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml  --- 1
      reload.enabled: false   --- 2
    
    processors:
    - add_cloud_metadata:
    
    output.elasticsearch:  --- 3
      hosts: ['elasticsearch:9200']
      protocol: "https"
      username: elastic
      # Read PW from metricbeat.keystore
      password: "${ELASTIC_PASSWORD}"
      ssl.certificate_authorities: ["/usr/share/metricbeat/certs/ca/ca.crt"]
    
    setup.kibana:  --- 4
      host: "<http://kibana:5601>"
      username: elastic
      password: "${ELASTIC_PASSWORD}"
      protocol: "http"
      ssl.enabled: false
      ssl.certificate_authorities: ["/usr/share/metricbeat/certs/ca/ca.crt"]
    
    xpack.monitoring.enabled: true
    
    1. modules.d 디렉토리 하위에 yml 확장자로 된 항목들이 모듈들이고 모두 포함 시킵니다. modules.d 디렉토리 파일들을 살펴보면 사용할 모듈을 제외한 나머지는 확장자가 disabled로 되어 있어서 모듈에 포함되는 것을 방지하고 있는 것을 확인할 수 있습니다.
    2. 설정을 자동으로 적용할지를 결정합니다. 주기적으로 설정을 반영하도록 period 설정도 할 수 있습니다.
    3. metricbeat를 통해 수집된 데이터를 엘라스틱서치로 전달하기 위한 설정입니다.
    4. 키바나를 연동할 경우 metricbeat로 수집한 데이터를 시각화하기 위한 템플릿을 자동 생성할 수 있습니다.
  3. 활성화 된 모듈 확인

    ./metricbeat -c metricbeat.yml modules list
    
    Enabled:
    system
    
    Disabled:
    aerospike
    apache
    ceph
    couchbase
    docker
    dropwizard
    ... 생략 ...
    
  4. modules.d 디렉토리 하위의 비활성화된 모듈을 활성화 하려면 아래 명령 실행

    ./metricbeat -c metricbeat.yml modules enable mysql
    
  5. 모듈 기능을 사용하여 키바나에 각종 차트들과 대시보드를 생성하려면 다음 명령 실행

    ./metricbeat -c metricbeat.yml setup --dashboards