소문만 무성하고 얼굴을 잘 보여주지 않았던 Elastic Agent 가 7.8 버전에서 드디어 출시가 되었고 GA 가 되었습니다. 그런데 아직 많이들 사용 해 보지 않으셨죠?
그래서, 오늘 한번 Elastic Agent 를 어떻게 사용하는지 한번 살펴보려고 합니다.
예전에는 Elasticsearch 로 데이터 수집을 위해서는 Logstash 그리고 Beats 를 활용했습니다. 물론 지금도 사용이 가능합니다. 특히 시스템 정보를 수집하는 metricbeat 과 로그 파일을 수집하는 filebeat 모듈을 활용하면 ingest pipeline, 인덱스 템플릿, 그리고 자주 사용되는 대시보드 까지 한번에 설치가 가능했습니다.
하지만 Beats 를 사용하다 보면 부족하다 싶은 점이 많았는데요, 예를 들면
- Metricbeat, Filebeat, Packetbeat ... 역할에 따라 서로 다른 수집기를 따로 따로 설치해야 했습니다.
- 설정을 yaml 파일에서 하고, 설정이 바뀌면 직접 재시작 해야 했습니다.
- 중앙에서 수집기들을 한꺼번에 모니터링하거나 업그레이드가 불가능했습니다.
네. 그래서 나온 것이 Elastic Agent 입니다. 특히 Elastic Agent 는 Elastic 이 보안 솔루션 쪽에 힘을 싣게 되면서 보안 데이터를 수집하는 Endpoint Security 수집기와 Apm 서버 의 역할까지 통합 하였고, 수집기들을 중앙 관리 하는 Fleet 기능과 함께 사용되게 되었습니다.
Elastic Agent 는 공식 홈페이지의 다운로드 페이지 에서 내려받을 수 있습니다.
하지만 더 간단하게 Kibana 의 Fleet 메뉴 에서 Add agent 버튼을 클릭해서 받을 수도 있습니다.
Elastic Agent 가 설치될 호스트에 맞는 운영체제의 파일을 내려받아 압축을 풀고 디렉토리 안에 있는 파일들을 살펴보면 다음과 같습니다.
apm-server, endpoint-secyrity, filebeat, metricbeat, heartbeat 들의 압축 파일들이 agent 안에 포함되어 있는 것이 보입니다.
그 다음은 agent 에 연결될 policy 를 지정해 줘야 하는데, 우선 미리 만든 agent policy 가 없기 때문에 처음부터 생성되어 있는 Default policy 를 선택합니다. Default Policy 는 system 메트릭을 수집합니다.
그 다음에는 Elasticsearch 클러스터와 Elastic Agent 를 연결 해 줍니다. 이 과정을 enroll 이라고 합니다.
Elastic Agent 압축을 푼 경로에서 enroll 명령을 실행 해 줍니다.
elastic agent 가 실행되고, ps 명령으로 실행중인 프로세스를 살펴보면 elastic-agent 의 fleet-server 가 모 프로세스로 filebeat, metricbeat 들을 실행시키고 관리중인 것을 확인할 수 있습니다.
이제 호스트의 정보가 enroll 된 elastic 클러스터로 수집이 됩니다. kibana 의 fleet 메뉴에서도 방금 설치한 agent 가 실행중인 것을 확인할 수 있습니다.
여기서 host 이름 또는 agent policy 링크를 클릭 해서 들어가보면 agent 의 수집 설정을 바꾸거나 수집되고 있는 실시간 데이터를 볼 수도 있습니다.
수집하는 데이터의 종류는 integration 메뉴에서 수정하거나 추가할 수 있습니다. policy 라는 이름으로 수집할 데이터를 묶고, 그 policy 를 elastic agent 에 적용하는 식으로 수집 정보를 설정합니다.
한번 system 메트릭과 nginx 로그를 수집하는 policy 를 만들고 아까 설치한 agent 에 적용을 해 보겠습니다. Integrations 메뉴에 가서 Nginx 를 찾아 들어갑니다.
Add Nginx 버튼을 클릭합니다.
Integration 이름을 설정하고, (여기서는 my-nginx 라고 했습니다) access.log 와 error.log 로그 파일이 저장되는 올바른 경로를 입력 해 줍니다.
metric 도 같이 수집할 수 있도록 접속 정보도 입력하고
현재 Default Policy 로 되어 있는 Agent policy 옆에 새 정책을 추가하기 위해 Create agent policy 링크를 눌러 새로운 정책도 등록합니다. 여기서는 정책 이름을 system and nginx 라고 했습니다.
그리고 Save integration 버튼을 눌러 integration 을 저장 해 줍니다.
integration 목록에서 방금 만든 system and nginx 정책 이름을 클릭하면 정책의 상세 내용을 볼 수 있습니다.
system integration 도 이미 추가가 되어 있네요. 여기에 다른 integration 을 더 추가하고 싶으면 Add integrations 버튼을 눌러 추가하거나, 각 integrations 의 우측에 ... 이미지를 눌러 이미 있는 integration 을 편집하거나 삭제할 수도 있습니다.
이제 다시 Fleet 메뉴에 가서 처음 설치한 agent 에 assign new policy 를 선택하고 방금 만든 system and nginx 정책을 적용하면 이제 Elastic Agent 가 nginx 로그도 같이 수집하게 됩니다.
지금까지 과정의 3줄 요약입니다.
- Elastic Agent 를 내려받고 enroll 해서 Elastic 클러스터에 연결한다
- Integrations 에서 수집할 로그의 종류들을 설정하고 policy 로 묶는다
- Fleet 에서 실행중인 agent 에 policy 를 적용한다.