본문 바로가기

Big Data/Elastic stack

elastic stack #5 beats 소개 & quickstart



#beats란?
Beats는 특정 목적을 위한 데이터 수집기용 플랫폼입니다. 경량 에이전트로 설치되어 수백 개 또는 수천 개 데이터를 Logstash 또는 Elasticsearch로 전송합니다.

라고 공식홈페이지 한글 번역으로 소개하고 있다.

아래 그림을 보면 단번에 이해가 갈 것이다. Elastic stack에서 로그 에이전트로 최초 로그를 생성 및 수집한다.
그림처럼 직접 elasticsearch로 전달할 수 도 있고, Logstash로 전달할 수 있다.(다른 output 가능하다)


#Beats 종류
Beats는 세부적으로 기능에 따라 나누어져 있다.
  • Filebeat: 로그 파일의 데이터를 수집
  • Metricbeat: 서버의 CPU, 메모리 사용률 수집이 가능하고, DBMS나 Docker등의 서비스의 메트릭도 수집
  • Packetbeat: 네트워크 패켓 데이터를 수집. 프로토콜 및 서비스 별로 수집이 가능
  • Winlogbeat: Windows 이벤트 로그 수집
  • Heartbeat: Uptime Monitoring



#Beats Quickstart
kibana설치에 앞서 당연히 설치된 elasticsearch + Kibana가 필요하다. elasticsearch 설치Kibana 설치 포스팅을 보고 미리 설치를 하자.

많은 beats 종류중에 metricbeat를 설치하고 kibana로 대쉬보드까지 만들어 보자. 이게 그나마 local 테스트환경에서 많은 데이터를 볼 수 있는 beats이기 때문에 예제로 적합하다.

1. download & install
https://www.elastic.co/downloads/beats/metricbeat 에서 OS버전에 맞게 다운을 받는다. metricbeat는 OS의 정보를 읽어서 데이터를 만들어주기 때문에 OS마다 다른 설치파일로 구성되어 있다. 작성 기능 최선버전인 5.2로 설치 해보자. Elasticsearch, kibana, logstash 모두 같은 버전으로 설치하는 것이 좋다.

예제는 Windows 기준으로 작성 할 것이다.

다운로드 받은 파일을 압축해제하고 C:/Program Files/Metricbeat 로 복사한다.

2. metricbeat 서비스 등록
PowerShell prompt 를 관리자 모드로 실행한다. 
다운로드 받은 파일이 이는 C:\Program Files\Metricbeat 경로로 이동한 후 서비스 등록파일인 install-service-metricbeat.ps1을 실행한다.
  
PS > cd C:\Program Files\Metricbeat'
PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1

파워쉘을 이용하여 서비스를 등록할 때 Execition Policy설정이 restricted로 되어있다면 위 명령어 실행이 되지 않는다.
아래 명령어로 policy를 변경하면 된다.

우선 아래 명령어로 policy를 확인하자
PS > Get-ExecutionPolicy
restricted

resticted일 경우 remoteSigned 로 바꾸자

PS > Set-ExecutionPolicy remoteSigned

이제 다시 metricbeat를 서비스로 등록하는 명령어를 실행하면 된다.

서비스로 등록이 잘 되었는지 확인해보자. services.msc로 확인하면 된다.



3. metricbeat 설정
이제 서비스도 등록했으니 설정 파일만 수정하고 바로 실행하면 된다.
설정파일은 설치 폴더에 있는 metricbeat.yml 이다.

중요한 설정은 metricbeat.modules이다. 여기서 metricset을 설정한다. OS마다 허용되는 metricset이 다르다.
window의 경우 load, core, diskio 설정이 되지 않는다. 친절하게 windows용으로 다운받으면 주석처리가 되어있다. 
즉 그대로 사용하면된다. 여기서 period 설정이 기본 20초로 되어있는데 알아서 바꾸면된다.


- module: system
  metricsets:
  # CPU stats
  - cpu

  # System Load stats
  #- load

  # Per CPU core stats
  #- core

  # IO stats
  #- diskio

  # Per filesystem stats
  - filesystem

  # File system summary stats
  - fsstat

  # Memory stats
  - memory

  # Network stats
  - network

  # Per process stats
  - process
  enabled: true
  period: 20s
  processes: ['.*']

그리고 중요한 설정이 output이다. metric 데이터를 어디로 전송할 것인가를 명시하는 것 인데, 보통  elasticsearch 아니면 logstash다.
logstash로 전송하는 예제는 다른 포스팅에서 다르고 기본 설정인 elasticsearch로 바로 전송하는 예제로 진행하자.

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

local에 설치한 elasticsearch를 사용하기 때문에 localhost:9200으로 설정한다.
즉, 아무것도 바꿀것이 없다. localhost시 그냥 아무것도 건들지 않아도 된다.

4. metricbeat 실행
이전 스탭에서 등록한 metricbeat 서비스를 실행만 하면된다. 
이제 데이터가 정상적으로 들어가는지 kibana를 통해 확인해보자

index pattern이 등록되지 않았다면 metricbeat-*로 등록하면 된다. 
Discover로 가서 데이터를 확인해 보면 아래 그림같이 잘 들어오는 걸 확인 할 수 있다.



5. Metricbeat Dashboard
친절하게 beats는 각각에 맞는 dashboard를 제공한다. 

다운받은 폴더를 보면 scripts 폴더가 있다. 여기서 자동으로 elasticsearch 에 kibana dashboard 데이터를 생성해주는 설치파일이 있다.
이 방법도 OS마다 다르다. windows 기준으로 아래와 같다.

PS > scripts\import_dashboards.exe -es http://localhost:9200

kibana의 dashboard도 결국 elasticsearch에 데이터화 되어 있기 때문에 elasticsearch 로 데이터를 insert하는 작업이라고 할 수 있다.
따라서 -es 로 elasticsearch url를 지정하여 실행한다.

이제 dashbarod를 확인해보자 open을 누르면 아래 그림처럼 여러 metricbeat 목록이 나타난다.