And Brain said,

Elastic Heartbeat, 군체의 고동 본문

IT/ELK Stack

Elastic Heartbeat, 군체의 고동

The Man 2023. 4. 2. 20:37
반응형

얼마전, Elasticsearch 세미나를 다녀온 후, 여러가지로 내가 구축한 ELK Cluster를 더 활용하지 못하고 있단 생각이 들었다.

 

그리하여 오늘은 Elastic의 여러 비트들 중 Heartbeat에 대해서 알아보자.

 

https://theworldaswillandidea.tistory.com/115

 

Elasticsearch Cluster, 거대한 데이터 군체

다들 알다시피 Elasticsearch는 대용량 데이터의 실시간 검색과 분석에 탁월한 검색엔진이다. 오늘은 이 Elasticsearch의 핵심 아키텍처 클러스터(Cluster)와 노드(Node)를 알아보고 실습까지 해보자. IT에

theworldaswillandidea.tistory.com

ELK Stack은 내 블로그 관련 포스팅들이 있으니 읽어주시길 바란다.

 

 

Elasticsearch와 함께 사용되는 하트비트(Heartbeat)는 Elastic Stack의 일부로서, 서버의 가용성 및 성능을 모니터링하는 도구이다.

 

Heartbeat는 일정 간격으로 대상 서버에 ICMP 패킷, TCP 패킷 또는 HTTP 요청을 전송하고, 응답 시간 및 서버의 가용성에 대한 통계를 수집하고, 이 정보는 Elasticsearch에 저장되어 Kibana와 같은 시각화 도구를 통해 분석 및 모니터링할 수 있다.

Heartbeat의 주요 기능은 다음과 같다.

 


Uptime Monitoring

 

서버의 가용성을 주기적으로 확인하여, 서버 다운타임을 감지하고, 이러한 이슈를 해결하는데 도움이 되는 데이터를 제공한다.

 


Latency Monitoring

 

서버와의 통신 지연 시간을 측정하여, 네트워크 문제 또는 성능 저하를 탐지하고 분석할 수 있다.

 


Endpoint Monitoring

 

각 서버에서 실행되는 서비스의 가용성을 모니터링하며, 서비스별로 세부 사항을 제공한다.

 

 

자, 여기까지 Heartbeat에 대해 간단히 배워봤으니 본론으로 들어가보자.

 

먼저 Heartbeat가 설치되어 있어야한다.

 

설치가 어려운 것은 아니니 BeatAgent를 이용하든, Heartbeat만 설치하든 각자의 운영체제에 맞춰 설치해주도록 하자.

 

설치가 완료되었다면 Ubuntu 기준 /etc/heartbeat 경로에 heartbeat.yml 파일이 존재할 것이다.

############################# Heartbeat ######################################

# 현재 여러 비트들을 사용 중이라 Logstash에서 필터를 걸기 위한 필드 추가(필터를 걸지 않는다면 필요 없음)
fields:
  type: "heartbeat"

# Heartbeat 자체의 내장 HTTP 서버 활성화
http.enabled: true
http.host: 0.0.0.0
http.port: 5066

# Heartbeat 의 로깅 설정
logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/heartbeat
  name: heartbeat
  keepfiles: 7
  permissions: 0644

# ================================== Outputs ===================================
output.logstash:
  # The Logstash hosts
  hosts: ["Your-IP:5044"]

 

기본적인 설정들은 지우지말고, 추가적으로 설정해야할 부분만 적었으니 참고바란다.

 

만약, 여러분들이 Heartbeat에 더 추가하고싶은 설정들이 있다면 이 파일에서 설정하면 된다.

 

그러면 이번에는 ICMP, HTTP, TCP 모니터링을 위한 각각의 설정파일들을 작성해보자.

 

/etc/heartbeat/monitors.d 경로에 tcp.yml, icmp.yml, http.yml 파일을 만들어주자.

 

# tcp.yml

- type: tcp
  hosts: ["your-IP"]
  ports: [your-port1, your-port2, your-port3]
  # 모니터링 주기 설정
  schedule: '@every 300s'
  # 연결 시도 제한 시간 설정
  timeout: 2s
# http.yml

- type: http
  urls: ["http://examples1.com, http://examples2.com"]
  schedule: '@every 300s'
  # 요청 제한시간 설정
  timeout: 2s
# icmp.yml

- type: icmp
  hosts: ["your-IP"]
  schedule: '@every 300s'
  # Ping 요청에 대한 기다리는 시간 설정
  timeout: 2s
  # Ping 요청을 보낼 때까지 대기하는 시간 설정
  wait: 1s

 

이제 Heartbeat 재시작,

systemctl restart heartbeat.service

 

이제, Kibana에서 Index Pattern과 Policy 등을 설정해주자.

 

 

그러면, Discover에서 여러분들의 Cluster를 ICMP, HTTP, TCP로 각각 모니터링할 수 있게되었다.

 

 

오늘은 서버, 서비스, 네트워크 장비 등의 가용성과 성능을 모니터링하고 데이터를 Elasticsearch로 전송해 분석할 수 있게 도와주는 Heartbeat에 대해 알아보았다.

 

ICMP, TCP, HTTP 모니터링을 통해 다양한 시나리오에 적용할 수 있으며, Kibana를 사용하여 이를 시각화하고 대시보드로 관리하는 것까지 간단히 배워보았다.

 

이러한 인프라 모니터링은 시스템의 안정성과 성능 향상에 기여하며, 신속한 문제 해결을 가능하게 해줄 수 있으니 여러분들도 Heartbeat를 통해 여러분의 인프라 관리를 한 단계 업그레이드해 보시길 바란다.

 

 

Thanks for watching, Have a nice day.

반응형
Comments