heartbeat으로 uptime 데이터를 수집 후 Kibana Uptime에서 시각화 하기 (가동 시간 모니터링)

 비트(Beats)의 한 종류인 Heartbeat 을 이용해 호스트의 uptime 데이터 수집해 엘라스틱서치로 보낸 뒤 키바나에서 시각화할 수 있습니다. Kibana의 Uptime 앱에서 애플리케이션과 서비스의 상태를 실시간으로 체크할 수 있습니다.  그럼 제가 한 번 실제로 사용해보겠습니다.

* 엘라스틱서치와 키바나 설치 관련 글은 많이 다루었기 때문에 생략합니다. 제 블로그 라벨(Label)에서 Elastic Stack 을 클릭하시면 관련 글을 쉽게 보실 수 있습니다. 

  • Heartbeat을 설치합니다. (시스템에 따라 명령어가 다릅니다. 공식문서 를 참조해 주세요)

  • heartbeat.yml 를 수정하기 위해 파일의 위치를 찾고 vim 같은 에디터로 yaml 파일을 엽니다.  


  • Heartbeat은 ICMP, TCP, HTTP 프로토콜을 사용해서 애플리케이션이나 서비스의 상태를 체크합니다.  아래와 같이 야믈파일을 수정합니다. 저는 로컬호스트와, 특정 포트, 그리고 www.google.com URL 상태를 체크하도록 설정하였습니다. 항목은 직관적입니다. 혹시 궁금하시면 문서 공부 ㄱㄱ 
* 개고수가 되시려면 Heartbeat 구성(configuration) 방법을 많이 연구하셔야합니다. 이게 핵심! 공부는 여기서 : 

  • 그리고 Heartbeat과 엘라스틱서치가 서로 다른 서버에 있다면 Elasticsearch Output도 수정해 주셔야합니다. 

  • 설치된 서버가 서로 다른 경우 Elasticsearch 가 기동중인 서버의  elasticsearch.yml 파일도 수정해 주셔야 합니다. 디폴트로 엘라스틱서치는 로컬호스트만 바인드 되어 있습니다. 개발/테스트모드에선 디폴트로도 충분하지만 프로덕션 환경에선 수정을 해주셔야합니다.  문서에는 network.host 를 0.0.0.0 해주면 된다고 나와는 있지만 사실 해보면 안됩니다. StackOverflow의 도움으로 아래와 같이 설정해주니 됩니다. 0.0.0.0 은 보안상 문제가 있을 수 있기 때문에 조심해서 쓰십쇼.  

* 네트워크 설정 관련:

  • configuration이 잘되었는지 확인하기 위해서 heartbeat 바이너리 파일 위치가 있는 폴더로 간 뒤 ./heartbeat test config -e 실행하고 OK 사인을 받습니다. 
* 혹시 어디 있는지 위치를 모를 경우 find 명령어로 찾으면 됩니다. 예시) find /  -name heartbeat 


  • 이미 설정된 인덱스 템플릿을 사용하겠습니다. heartbeat setup -e  실행 ㄱㄱ (저같은 고수는 이거 없이도 가능합니다 풋! 나중에 고수가 되시면 직접 인덱스 패턴 설정하고 하시면 됩니다.) 

  • 그럼 Heartbeat을 실행해봅시다. 리쓴 투 마 핱빋~~~ 베이붸~~~  

  • 키바나로 가셔서 Discover 탭을 보시면 Heartbeat에서 보낸 uptime 데이터 조회가 가능합니다. 


  • Observability > Uptime 을 선택합니다.

  • 아래와 같이 모니터링 할 수 있습니다. 저는 서버 3대에 Heartbeat을 설치해 테스트했는데 tcp 설정을 잘못한 거 같아 조금 수정했는데도 아래와 같이 다운된걸로 뜨네요. 포트가 닫혔거나, 해당 포트에 서비스들이 안돌아서 그렇거나, 제가 뭐를 잘못했을 수도 있지만 중요하지 않습니다! 왜냐면 어차피 테스트이고, 모니터링은 되!잖!아!요!?  ㅋㅋ 사실 할 게 너무 너무 많아서 어쩔 수 없슴다. ㅠ 



- The End - 

Comments