Filebeat를 사용하여 로그를 수집하고 이를 Logstash와 결합하여 원하는 로그를 필터링하세요.
외국 거대 기업의 오픈소스 프로젝트를 사용하면 기본적으로 아무것도 변경하지 않고도 연습용 ELK의 독립형 버전을 빠르게 구축할 수 있습니다.
참고: Logstash는 제가 수정했습니다. 이 프로젝트로 ELK를 빌드하는 경우에는 logstash.conf를 변경해야 합니다.
ELK 프로젝트 github 링크: /deviantony/docker-elk
여기서는 es에 대해 너무 많이 설명하지 않고 주로 filebeat와 logstash에 중점을 둘 것입니다.
Filebeat는 로그 데이터를 전달하고 중앙 집중화하기 위한 경량 배송 도구입니다. Filebeat는 서버에 에이전트로 설치되어, 사용자가 지정한 로그 파일이나 위치를 모니터링하고, 로그 이벤트를 수집하고, 인덱싱을 위해 Elasticsearch 또는 Logstash에 전달합니다.
Filebeat 작동 방식: Filebeat를 시작하면 로그 데이터에 대해 지정한 위치를 찾는 하나 이상의 입력이 시작됩니다. Filebeat가 찾은 각 로그에 대해 Filebeat는 수집기를 시작합니다. 각 수집기는 새 콘텐츠에 대한 단일 로그를 읽고 새 로그 데이터를 libbeat로 보냅니다. libbeat는 이벤트를 집계하고 집계된 데이터를 Filebeat에 대해 구성한 출력으로 보냅니다.
공식 흐름도는 다음과 같습니다.
Logstash는 실시간 파이프라인 기능을 갖춘 오픈 소스 데이터 수집 엔진입니다. Logstash는 서로 다른 소스의 데이터를 동적으로 통합하고 선택한 대상으로 데이터를 정규화합니다. 다양한 고급 다운스트림 분석 및 시각화 사용 사례를 위해 모든 데이터를 정리하고 민주화합니다.
Logstash의 장점:
본문으로 들어가서 먼저 내 요구 사항에 대해 이야기해 보겠습니다.
ELK가 준비되어 있고 elasticsearch+logstash+kibana로 구성되어 있습니다.
이 글에서 filebeat의 기능은 특정 디렉터리에 로그를 모아서 내보내는 것이지만, 수집 데이터 필터링이 불가능하여 현재 Logstash를 사용하고 있는데, Logstash 자체가 jdk를 기반으로 하기 때문에 filebeat에 비해 많은 메모리를 차지합니다. , 점유된 메모리는 많지 않습니다. 그림이 있고 진실이 있습니다.
따라서 다음 솔루션을 사용하여 로그를 수집하고 필터링할 수 있습니다.
참조 구성의 경우 자세한 내용은 제가 사용한 구성만 나열합니다. , 공식 문서를 참조하세요:
참고: 6.0 이상의 filebeat.yml은 /usr/share/filebeat/filebeat.yml에 마운트되어야 합니다. 또한 /usr/share/filebeat/. filebeat 컨테이너가 중단된 후 새 파일이 발생하지 않도록 데이터/레지스트리 파일을 마운트해야 합니다.
제가 사용하는 Logstash는 로그를 수집하는 용도가 아니고 로그를 매칭하고 필터링하는 용도이므로 프로젝트부터 시작하지 말고 그냥 따로 시작해서 5044 포트를 노출시키고 전송된 로그를 받아보세요 하지만 즉, 탄력적 검색으로 처리하고 전달하는 역할만 합니다.
구성 참조:
비고:
위에서 사용자 정의한 형식은 다음과 같습니다.
테스트 프로젝트는 github에 업로드할 수 있습니다 p >
주소: /liaozihong/ELK-CollectionLogs
참조 링크:
Logstash와 결합된 ELK의 Filebeat
Grok Debugger
ELK logstash 구성 구문(24차)
Filebeat 공식 문서
Logstash 공식 문서