엔지니어링

Elastic Cloud 에서 Metricbeat 으로 시스템 모니터링 하기

Elastic 에서는 Elastic Cloud 라는 SaaS 형태의 클라우드 서비스를 제공하고 있습니다. Amazon 에서 서비스 하고 있는 AWS Elasticsearch Service 와는 다른 Elastic 에서 직접 운영하는 서비스 입니다. (관련 포스트) Elastic Cloud를 이용하면 손쉽게 Elasticsearch 클러스터 를 구축할 수 있으며 14일 간 무료로 사용이 가능합니다. 이메일 주소 외에 신용카드 번호나 별다른 개인 정보의 입력이 필요 없으므로 무료 기간 동안 부담없이 사용 가능합니다.

이 포스트에서는

  • Elastic Cloud를 이용해서 Elasticsearch Cluster 를 구축
  • X-Pack Security 기능을 이용해서 새로운 계정을 생성
  • Metricbeat를 통해 자동으로 Kibana 대시보드를 생성하고 내 시스템 모니터링 데이터를 수집해서 Elastic Cloud 에 있는 elasticsearch 클러스터로 전송

하는 방법 들에 대하여 설명합니다.

1. Elastic Cloud 계정 생성

먼저 Elastic 홈페이지의 Cloud 메뉴에 가서 Elastic Cloud Free Trial 을 시작합니다.

Try_Elastic_Cloud__Hosted_Elasticsearch__for_Free___Elastic.png

입력 폼 안에 이메일 주소를 입력하고 Start Free Trial 버튼을 누르면 입력한 이메일 주소로 가입 승인을 위한 메일이 전송됩니다.

스크린샷 2017-08-11 21.07.57.png

메일함을 확인 하면 Elastic Cloud 시스템으로 부터 가입을 확인하는 메일이 와 있습니다. Verify Email and Accept TOS 버튼을 클릭하면 비밀번호를 설정할 수 있는 화면으로 이동합니다.

스크린샷 2017-08-11 21.08.19.png

비밀번호를 동일하게 2번 입력하면 이제 가입을 신청한 메일주소를 ID로 Elastic Cloud 계정 생성이 완료됩니다.

2. Elasticsearch 클러스터 및 Kibana 인스턴스 생성

비밀번호 입력까지 완료하여 계정 생성을 완료하면 자동으로 Elastic Cloud 콘솔 화면으로 이동합니다. 나중에 이 페이지로 다시 돌아오기 위해서는 https://cloud.elastic.co 로 접속하면 됩니다.

스크린샷 2017-08-11 21.08.38.png

이제 Create Cluster 버튼을 눌러 Elasticsearch 클러스터 생성 화면으로 이동합니다.

스크린샷 2017-08-11 21.09.51.png

클러스터 사이즈, 리전 등을 선택하고 왼쪽에 Create 버튼을 누르면 Elasticsearch 클러스터 생성이 완료됩니다. 무료 사용 기간 동안에는 사용 가능한 클러스터 사이즈에 제한이 있습니다. 아직 서울 리전은 서비스되고 있지 않으며 추후 한국의 클라우드 파트너사들을 통해 제공 할 예정입니다. 한국에서는 도쿄 리전을 선택하는 것이 비교적 빠릅니다.

스크린샷 2017-08-11 21.10.25.png

클러스터 생성을 완료하면 superuser 계정인 elastic 계정의 비밀번호가 나타납니다. 이 비밀번호는 나중에 다시 조회할 수 없으므로 반드시 어딘가에 복사해서 기록 해 두어야 합니다. 만약에 비밀번호를 잊어버리면 Security 메뉴에 가서 Reset 버튼을 눌러 elastic 계정 비밀번호를 다시 리셋할 수 있습니다.

스크린샷 2017-08-11 22.43.28.png

Elasticsearch 클러스터를 생성 완료 했어도 Kibana는 처음에는 생성되지 않은 상태입니다. Configuration 메뉴에서 화면 아래로 쭉 내려가 보면 Kibana 를 설정하는 섹션이 있습니다.

kibana_enable.png

Kibana 섹션에서 Enable 버튼을 누르면 Kibana 인스턴스가 실행됩니다. 이제 다시 화면 상단으로 가서 Overview 메뉴로 갑니다.

스크린샷 2017-08-11 21.14.48.png

잠시 기다리면 Endpoints 섹션에 Elasticsearch 와 Kibana 에 접속할 수 있는 URL 링크가 표시가 됩니다. 

3. 새로운 superuser 생성

Elastic Cloud는 Elastic의 상용 제품인 X-Pack Security, Monitoring 과 같은 몇가지의 유료 기능들을 포함하고 있습니다. 생성된 Kibana 접속 URL로 접속하면 Kibana 로그인 화면이 표시됩니다.

스크린샷 2017-08-11 21.17.16.png

여기서 ID는 "elastic", 비밀번호는 처음 Elasticsearch 클러스터를 만들 때 표시된 비밀번호를 입력하고 로그인 합니다. 임의로 생성된 비밀번호를 기억하기 어렵기 때문에 좀 더 편하게 Elasticsearch 를 관리할 새로운 관리자 계정을 만들도록 하겠습니다. 

스크린샷 2017-08-11 21.35.51.png

Kibana의 Management 메뉴에서 Security 의 Users 를 클릭합니다.

스크린샷 2017-08-11 21.36.03.png

Create User 버튼을 클릭하여 새로운 사용자 생성 화면으로 갑니다

new_user_reg.png

Username, Password, Full Name, Email 등을 입력하고 Roles 항목에 superuser 를 입력하여 선택, 저장합니다.

new_user_registered.png

정상적으로 생성이 되면 위 화면과 같이 새로 만든 계정이 목록에 나타납니다.

new_login.png

하단에 Logout 을 눌러 로그아웃 한 뒤 새로 생성한 계정으로 다시 로그인을 해서 정상적으로 로그인 되는지 확인 해 봅니다.

4. Metricbeat 설정 및 실행

Metricbeat 은 실행한 시스템의 각종 수치 정보를 수집해서 Elasticsearch 또는 Logstash로 쉽게 색인하는 수집기 입니다. 모든 Beats 들은 컴파일 된 바이너리 파이로 실행되기 때문에 사용할 운영체제에 맞는 파일을 받아야 합니다.

스크린샷 2017-08-11 21.43.16.png

https://www.elastic.co/downloads/beats/metricbeat 페이지에서 현재 사용중인 운영체제에 맞는 설치 파일을 다운로드 하고 압축을 풉니다.

스크린샷 2017-08-11 23.08.18.png

압축을 푼 디렉토리 안으로 들어가 보면 위와 같은 파일들이 있습니다. metricbeat (윈도우 운영체제의 경우 metricbeat.exe) 파일을 실행하면 Metricbeat이 동작하게 됩니다. 별다른 설정 없이 Metricbeat을 바로 실행 하면 같은 로컬 서버에 설치된 Elasticsearch의 9200번 포트로 데이터를 색인합니다. 우리는 Elastic Cloud 에 있는 원격 클러스터로 데이터를 전송 할 것이기 때문에 설정 파일인 metricbeat.yml 파일을 수정 해 주어야 합니다. 자주 쓰는 편집기로 metricbeat.yml 파일을 엽니다.

metricbeat_config.png

대부분의 설정들이 #으로 주석 처리가 되어 있습니다. 이제 설정 파일을 위와 같이 수정해야 하는데, 먼저

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

부분을 찾아 "localhost:9200" 부분에 앞서 우리가 만든 Elastic Cloud 의 Elasticsearch http URL 주소를 입력합니다. 그리고

  username: "<user_id>" 
  password: "<password>"

에도 Kibana 에서 만든 superuser 계정의 아이디와 비밀번호를 입력합니다. 또는 elsatic 그리고 처음 자동으로 생성된 비밀번호를 넣어도 무방합니다.

그리고 그 아래에

dashboards.enabled: true

항목을 추가 합니다.

YAML 파일을 수정 할 때는 각 라인의 띄어쓰기 간격이 중요합니다. username:, password: 항목은 output.elasticsearch: 항목 아래에 2칸 (또는 한 탭) 간격을 띄우고 작성해야 하며 dashboards.enabled: true 항목은 맨 앞부터 띄어쓰기 없이 입력해야 합니다.

이제 metricbeat.yml파일을 저장하고 metricbeat 실행 파일을 실행합니다.

스크린샷 2017-08-11 23.23.05.png

metricbeat을 실행할 때 -e 옵션을 주게 되면 실행 로그가 나타납니다.

5. Kibana 에서 대시보드 확인

앞의 Metricbeat 설정에 우리가 dashboards.enabled: true 옵션을 추가 했기 때문에 Metricbeat 이 실행 될 때 자동으로 Kibana 에 미리 정의된 대시보드와 시각화 도구들을 추가하게 됩니다.

스크린샷 2017-08-11 21.53.03.png

Metricbeat 실행 후 잠시 기다렸다가 Kibana 의 Dashboard 메뉴를 확인 해 보면 자동으로 Metricbeat 대시보드들이 생성 된 것을 확인할 수 있습니다. 생성된 대시보드로 들어가서 확인 해 보면 Metricbeat 가 실행되고 있는 동안에는 실행중인 시스템의 정보가 계속해서 Elasticsearch 로 색인되어 Kibana 대시보드에서 표시되는 것을 확인할 수 있습니다.

스크린샷 2017-08-11 21.53.20.png

6. 맺음말

이처럼 Elastic Cloud 를 사용하여 손쉽게 Elasticsearch Cluster 를 구성할 수 있으며 Metricbeat을 활용하면 원격지로도 시스템 메트릭을 쉽게 수집할 수 있습니다. 또한 기본적으로 활용 가능한 대시보드들을 자동으로 만들어 주는 기능들도 있으므로 처음 시작하는 사용자들도 쉽게 모니터링 시스템을 만들 수 있습니다.