24 11월 2015 출시

The Beats 1.0.0

By Monica Sarbu

약 6개월 전 Packetbeat가 Elastic에 합류했을 때 우리는 귀사 서버에서 모든 유형의 운영 데이터를 캡처하여 Logstash와 Elasticsearch로 보내는 경량 쉽퍼(shipper) 역할을 하는 “Beat”의 프레임워크를 만든다는 비전을 갖고 있었습니다. 오늘 Beats 플랫폼 최초로 정식 배포가 되고 공식적으로 지원되는 최초의 Beats인 Topbeat, Filebeat 및 Packetbeat를 출시하게 되어 기쁘게 생각합니다.

Beats 플랫폼

우리의 목표는 커뮤니티에서 새로운 Beats 를 쉽게 만들 수 있는 플랫폼을 구축하는 것이었습니다. 이를 위해 우리는 libbeat를 개발했습니다. libbeat은 Elasticsearch로의 벌크 삽입, Logstash로의 안전한 이벤트 전송, 다중 Logstash 및 Elasticsearch 노드로의 이벤트 로드 밸런싱, 동기 및 비동기 모드의 이벤트 전송 등과 같은 모든 Beats의 모든 공통 부분을 포함하는 Go 언어 라이브러리 입니다. 또한 libbeat 플랫폼은 수신 서버의 부하를 감지하거나 서버들 간 네트워크의 혼잡함을 감지하여 전송량을 줄여나가는 메카니즘을 포함하고 있습니다.

beats platform.png

즉, libbeat은 Logstash와 Elasticsearch로 안전하고 효율적으로 이벤트를 보내기 위해 필요한 모든 것을 갖추고 있습니다. 그 뿐만 아니라 환경 설정과, CLI 플래그 및 로깅 등도 관리해주므로 새로운 Beat를 만드는 동안 관심있는 데이터 캡처에만 집중할 수 있습니다. 분석 플랫폼의 나머지는 libbeat, Logstash, Elasticsearch 그리고 Kibana가 처리합니다.

3가지 공식적인 Beat 이외에 커뮤니티에서 독자적으로 Dockerbeat, Pingbeat, UWSGIbeat 및 Nginxbeat를 만들기 시작했다는 점을 기쁘게 생각합니다. 관심있는 분들께서는 개발자 가이드 를 참조하십시오.


Topbeat

우리가 Topbeat를 시작한 이유는 다른 Beats 개발자들이 시작점으로 활용할 수 있는 간단한 Beat 예가 필요했기 때문이었지만 많은 사람들이 이 단순한 기능의 가치 그 자체를 좋아한다는 사실을 알게 되었습니다. 이는 모든 서버에 분포되어 있는 최상위 명령으로 생각할 수 있으며 화면에 메트릭을 출력하는 대신 Logstash 또는 Elasticsearch에 주기적으로 전송하는 방식입니다. 이는 시스템 로드, 여유/사용 메모리 또는 디스크 사용량과 같은 시스템 전체 데이터와 프로세스당 메트릭을 중앙에서 관리할 수 있음을 의미합니다(전체 메트릭 목록 참조). 더 이상 RAM을 소비하는 프로세스를 확인하기 위해 SSH에 접속하지 않아도 됩니다.

Topbeat 는 Linux뿐만 아니라 OS X 및 Windows도 지원하므로 사용하는 지원 운영 체제에 관계 없이 네트워크 내 각 서버에 설치하여 동일한 운영 체제 메트릭을 수집할 수 있습니다.

서버에 Topbeat를 설치하면 Elasticsearch가 설치된 중앙 지점에 주기적으로 메트릭을 전송하기 시작합니다. Elasticsearch 와 함께 Kibana 를 실행하는 경우에는 시스템 부하, 서버 개요, 시스템 전체 메모리 사용량 또는 CPU 사용량, 최상위 프로세스 목록, 프로세스당 메모리 사용량 또는 CPU 사용량, 디스크 사용 개요 및 디스크 사용량과 같은 위젯들을 사용하여 데이터를 시각화하고 사용자 정의 대시보드를 구성할 수 있습니다.

Screen Shot 2015-11-22 at 11.41.24 PM.png


Filebeat

Filebeat 는 수년 간 많은 기업들이 생산 과정에서 사용해 온 경량 로그 쉽퍼(shipper)인 Logstash Forwarder의 후속 버전입니다. Logstash-Forwarder 는 추가 처리를 위해 서버의 모든 로그를 중앙 위치로 전달하는 단순 경량 Go 애플리케이션입니다.

Logstash-Forwarder는 Logstash를 만든 Jordan Sissel이 시작한 후 Logstash 개발자들이 유지 보수를 담당하고 있습니다. 안타깝게도 개선 및 버그 수정 관점에서 Logstash-Forwarder는 Logstash 자체에 비해 뒤쳐지는 경향이 있습니다. Beats와의 명백한 유사성으로 인해 최선의 경로 전달은 Logstash Forwarder를 Beat로 바꾸는 것이라는 결론을 얻었습니다. 이후 Forwarder 코드를 가져와 세분화한 후 오래된 부분을 교체하고 유닛 테스트를 추가한 후 Filebeat로 다시 합쳤습니다.

Filebeat 구성은 간단합니다. 서버에 설치한 후 Filebeat이 크롤할 경로를 설정하기만 하면 이후 처리를 위해 Logstash를 통해 Elasticsearch로 로그를 보내기 시작합니다. Filebeat는 로그 순환, 파일 이름 변경 및 수신 서버의 일시적인 작동 불가 상태등을 처리할 수 있으므로 로그를 안전하게 보호할 수 있습니다.

Logstash Forwarder 사용자인 경우 migration 가이드 에 따라 Filebeat를 시작하십시오.

Screen Shot 2015-11-23 at 11.03.28 AM.png


Packetbeat

Packetbeat 는 모든것의 시작이 된 최초의 Beat입니다. 각각의 구성 요소가 다른 프로그래밍 언어, 웹 프레임워크 또는 데이터베이스 기술을 사용하는 복잡한 분산 시스템을 모니터하고 문제를 해결한다고 가정해보십시오. 이러한 구성 요소의 유일한 공통점은 요소 간 통신이 네트워크를 통해 이루어지고 일반적으로 HTTP(REST API 호출용)와 같은 표준 프로토콜을 사용한다는 것입니다.

Packetbeat는 요청을 트랜잭션의 응답과 연관시키고 각 트랜잭션에 대한 데이터를 Elasticsearch에 입력하는 분산형 실시간 Wireshark로 생각할 수 있습니다.

Packetbeat는 네트워크 서버 간 통신을 모니터하여 애플리케이션에 대한 가시성을 제공합니다. Packetbeat는 네트워크 트래픽을 수동적으로 탐색(sniffing)하므로 애플리케이션을 방해하지 않습니다.

Packetbeat의 강점은 바로 open source 입니다. 소유권이 있는 경우라도 누구나 새로운 프로토콜, 심지어 특정한 환경에 종속된 프로토콜 까지도 지원을 추가할 수 있습니다. 지난 몇 개월 동안 커뮤니티에서는 MongoDB, DNS over UDPDNS over TCP 에 대한 지원을 추가했으며 몇몇 커뮤니티 기여가 현재 더 진행되고 있습니다. 기여자들의 Packetbeat 코드 삽입을 위한 지원의 길은 언제나 열려 있습니다. 최근에는 새로운 프로토콜에 대한 개발자 가이드 를 제작했습니다.

packetbeat-statistics.png


GA가 되기 위한 길

1.0.0 릴리스에 대한 모든 이야기가 궁금하십니까? 중간 릴리스에 대한 다음 이전 블로그 게시물을 참조하십시오.


코드를 제공하거나 문제를 보고하거나 베타 단계의 Beats를 테스트해주신 모든 분들께 진심으로 감사드립니다. Beats 1.0.0을 사용해보신 후 논의할 문제를 알려주시거나 Twitter에 올려주시거나 GitHub에 문제를 올려주십시오.