ELK란?
Elasticsearch, Logstash, Kibana의 앞글자를 따서 ELK라고 부른다. 주로 ELK는 WAS의 흩어져 있는 로그를 한 곳으로 모으고, 원하는 데이터를 빠르게 검색한 뒤 시각화하여 모니터링하기 위해 사용합니다.
Heartbeat 란?
ELK 스택에서 Heartbeat는 서비스 가용성 모니터링을 위한 도구입니다.
Heartbeat를 사용하면 HTTP, TCP, ICMP(핑) 등의 프로토콜을 통해 서버, 서비스, 웹사이트 등의 상태를 주기적으로 체크할 수 있습니다. 이를 통해 다운타임을 최소화하고, 문제가 발생했을 때 신속하게 대응할 수 있습니다.
제가 필요한 기능은 2가지였습니다.
서비스들의 로그들을 확인하여 특정 'ERROR'라는 단어가 발생하면 문자, 메일 등으로 알려주는 기능은 Filebeat을 통해 가능하고, PING을 통해 서버의 상태 모니터링하고 문제가 발생되면 문자, 메일 등으로 알려주는 기능은 Heartbeat로 가능했습니다. 그래서 이 두가지 중 오늘은 Heartbeat를 설치하고 모니터링을 테스트서버에 반영해봤습니다. 또한,
Heartbeat의 주요 기능은 다음과 같습니다.
Uptime Monitoring
서버의 가용성을 주기적으로 확인하여, 서버 다운타임을 감지하고, 이러한 이슈를 해결하는데 도움이 되는 데이터를 제공한다.
Latency Monitoring
서버와의 통신 지연 시간을 측정하여, 네트워크 문제 또는 성능 저하를 탐지하고 분석할 수 있다.
Endpoint Monitoring
각 서버에서 실행되는 서비스의 가용성을 모니터링하며, 서비스별로 세부 사항을 제공한다.
Heartbeat 설치
Version: 7.17.10 로 설치를 진행합니다.
본인이 사용하고 있는 ELK버전을 동일하게 설치하는 것을 권장합니다.
heartbeat 다운로드
# ELK 전용 서비스 계정 생성
$ useradd -d /home/elk elk
# elk 그룹에 계정 추가 <계정> <그룹명>
$ gpasswd -a elk elk
# mkdir -p /appstore/ELK
# cd {설치할 경로}
$ cd /appstore/ELK
# beartbeat 다운로드
$ wget https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-7.17.10-linux-x86_64.tar.gz
# 압축해제
$ tar zxvf heartbeat-7.17.10-linux-x86_64.tar.gz
# 네임변경
$ mv heartbeat-7.17.10-linux-x86_64.tar.gz heartbeat-7.17.10
# 소유자 변경
$ chown -R elk:elk heartbeat-7.17.10
heartbeat.yml 수정
$ cd /appstore/ELK/heartbeart-7.17.10
# 초기 파일 백업
$ cp heartbeat.yml heartbeat.yml_org
# 설정 파일 수정
$ vi heartbeat.yml
heartbeat.monitors:
- type: http
schedule: '@every 5s'
hosts:
- "http://centos.mirror.cdnetworks.com"
- "https://wonistorage.tistory.com/"
mode: any
output.elasticsearch:
hosts: "localhost:9200"
username: "엘라스틱서치 계정 아이디"
password: "엘라스틱서치 계정 비밀번호"
setup.kibana:
host: "localhost:5601"
username: "키바나 계정 아이디"
password: "키바나 계정 아이디"
setup.ilm.overwrite: true
- type: http: HTTP 프로토콜을 사용하여 모니터링을 수행함을 나타냅니다.
- schedule: '@every 5s': 5초마다 모니터링을 수행하도록 스케줄을 설정합니다.
- hosts: 모니터링할 URL 리스트입니다. 여러 개의 URL을 지정할 수 있습니다.
- mode: any: 여러 호스트가 지정된 경우, 하나라도 응답이 있으면 OK로 간주합니다.
- hosts: Elasticsearch 서버의 주소입니다. 여기서는 로컬호스트를 사용하고 있습니다.
- username: Elasticsearch에 접근할 수 있는 사용자 계정 아이디입니다.
- password: 해당 사용자 계정의 비밀번호입니다.
- setup.ilm.overwrite: true로 설정하면 ILM 설정을 덮어씁니다. 라이프사이클관리입니다. 자세한 내용은 Doc나 Google을 통해 보는것을 권장합니다. 글을 축약한다는건 그만큼 알아야 할 내용을 줄이기 때문에 정확한 내용을 찾아보는걸 추천드립니다.
heartbeat 시작
# 명령어에 대한 도움말을 표시
$ ./heartbeat -help
# 초기 설정을 수행
$ ./heartbeat setup
# 서비스를 시작하고 text형식으로 출력
$ ./heartbeat -e
heartbeat 모니터링 보기
왼쪽 메뉴를 선택하고 맨 하단 'Stack Management' → 'Index Patterns' → 'Create index pattern' → 'heart-7.17.10' 입력 → Timestamp field 수정(@timestamp)
위처럼 여러개의 URL을 모니터링하여 해당 URL이 정상적으로 살아있는지 주기적으로 확인하여 상태를 확인할 수 있습니다. 다음엔 이 기능을 이용해서 더 많은 기능들을 활성화하여 어디까지 사용할 수 있는지 확인해보겠습니다.
'Linux' 카테고리의 다른 글
SSL TLS 지원 여부 확인 (Received fatal alert: protocol_version) (0) | 2024.06.11 |
---|---|
Nginx 수동 설치 (2) | 2024.06.05 |
[Linux] JDK(JAVA) 버전 교체 및 업데이트 (0) | 2024.05.28 |
Openssl 지원 버전 확인하기 (0) | 2024.04.11 |
springframework [/WEB-INF/spring/root-context.xml] 에러 (0) | 2024.04.03 |