├── README.md └── 김남윤 └── 1-2.md /README.md: -------------------------------------------------------------------------------- 1 | # 엘라스틱 스택 개발 부터 운영까지 스터디 2 | 3 | ![](http://image.yes24.com/goods/103030516/XL) 4 | 5 | 엘라스틱 스택 개발 부터 운영까지 6 | 7 | ## 스터디 일정 8 | * 2022-02-11 ~ 2022-04-14 10주 9 | 10 | ## 주차 11 | * [[1주차 ]2022-02-17 1장 2장정리](https://github.com/Meet-Coder-Study/elasticsearch-stack/discussions/4) 12 | 13 | ## 보증금 및 벌금 14 | * 보증금 2만원을 첫 시작 때 운영진에게 입금합니다. 15 | * 벌금은 2000원입니다. 16 | * 각 챕터에 대한 정리 및 발표 준비 안했을 경우 벌금 17 | * 마지막 모임에서 남은 금액에 대해 환급을 받는다. 18 | * 모든 벌금은 마지막 모임 시, 오프라인 모임 시 사용됩니다.(스터디룸 비) 19 | * 중도 하차하신 분은 보증금을 돌려드리지 않습니다. -------------------------------------------------------------------------------- /김남윤/1-2.md: -------------------------------------------------------------------------------- 1 | # 01 엘라스틱 스택 이란 2 | 3 | ## 엘라스틱 스택의 구성요소 4 | 5 | 엘라스틱 스택은 일반적으로 빅데이터 파이프라인을 구성하기 위한 데이터 수집, 가공, 저장 분석, 시각화에 필요한 모든 소프트웨어를 갖추고 있다. 비츠와 로그스태시는 데이터를 수집하고 가공 하는 역할을 맡으며, 엘라스틱서치는 저장하고 분석하는 역할을 담당하고, 키바나는 엘라스틱 서치에 저장된 데이터를 시작화하고 모니터링하는 역할을 수행한다. 6 | 7 | ### 엘라스틱서치: 분산 검색 엔진 8 | 엘라스틱서치 검색 엔진은 내부적으로 각 도큐먼트를 인덱싱 하고 빠르게 검색하는데 사용한다. 엘라스틱서치는 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리하며, 일반적인 데이터베이스와 마찬가지로, 쿼리한 결과에 대해 일치하는 원번 도큐먼트를 반환한다. 9 | 엘라스틱서치를 일종의 NoSQL 데이터베이스라고 생각하면 훨씬 더 큰 그림이 보얼것이다. 10 | 11 | 엘라스틱서치에 대한 기본적인 사용 경험은 몽고디비 같은 도큐먼트 기반의 NoSQL과 유사하다. 하지만 다른 NoSQL 제품을 압독하는 검색 기능과 엘라스틱서치의 가장 큰 특징이자 활용 먹적이라 볼 수 있다. 또한 검색 엔진ㅇ,로서 엘라스틱서치의 중요한 특징 중 하나는 스코어링, 즉 연관도에 따른 정렬이다. 단순히 필드 값을 기준으로 한 정렬은 어떤 데이터 베이스라도 제공하지만, 엘라스틱서치는 검색어에 대한 유사도 스코어를 기반으로 한 정렬을 제공한다. 이는 특히 복잡한 문자열 콘텐츠에서 검색을 수행할 때 큰 효과를 보인다. 12 | 13 | 엘라스틱서치 클러스터는 분산 시스템으로 분산 시스템으로서 엘라스틱서치는 복수의 루씬 인스턴스를 병렬로 배치하고 분산 처리해 검색 속도를 무한히 확장할 수 있게 했다. 또 노드 간 복제 기능을 통해 일부 노드가 다운되더라도 정상적인 서비스를 지속할 수 있게 했다. 무엇보다도 REST API를 이용하도록 만들어 프로그래밍 언어와 무관하게 사용자가 쉽게 접근할 수 있도록 활용성을 높였다. 14 | 15 | 물론 단점도 있다. 저장공간이 크게 압축되지 않고 시스템 리소스를 많이 사용한다. 엘라스틱서치는 DSL 쿼리를 채용하는데 JSON 쿼리가 사실상 어렵기 때문에 반정규화를 기본으로 모델링 해야한다. 또한 인덱스가 불변의 자료구조이기 떄문에 도뮤컨트를 수정하가나 삭제할 경우에 비용이 저렴하지 않다. 하지만 이러한 단점들은 검색 기능을 끌어올리 기 위해 어느정도 트레이드오프가 이뤄진 것으로, 엘라스틱서치가 필요한 수준의 대량 데이터를 처리할 떄는 일반적으로 용인이되는 제약들이다. 16 | 17 | ### 키바나: 시각화와 엘라스틱서치 관리도구 18 | 엘라스틱서치에 대한 대부분의 관리 기능, API를 실행할 수 있는 콘솔, 솔루 션 페이지들, 그리고 스택의 각 구성요소들을 위한 모니터링 페이지 등이 모두 키마나에 포함되 있다. 하지만 엘라스틱서치 기반의 시각화 도구로서 키바나의 가장 중요한 기능은 시각화와 대시보드라고 할 수 있다. 키바나는 일반적으로 많이 사용되는 라인 파츠, 파이 차트 등과 테이블 지도 등의 다양한 시각화 요소들을 클릭 몇 번으로 쉽게 구성할 수 있게 해준다. 19 | 20 | 21 | ### 로그스태시: 에빈트 수집과 정제를 위한 도구 22 | 대량의 데이터를 검색하기 위해 가장 먼저 선행돼야 할 작업은 데이터를 적재하는 것이다. 데이터 수집과 가공 기능을 제공하는 로스스태시를 사용하면 로그, 메트릭, 웹 애플리케이션 등 다양한 소스로부터 로그를 수집할 수 있다. 23 | 24 | 로그스태시는 별도의 코딩 없이 간단한 설정만으로 로그를 가공할 수 있다. 확장 가능한 200개의 이사으이 프럴그인 덕분에 설정이 대부분 플러그인 사용 방법인데 그 사용법이 크게 어렵지 않다. 25 | 26 | 로그스태시가 익숙하지 않다는 이유로 로그스태시가 아닌 커스텀 애플리케이션을 작성해 소스 데이터를 수집하려는 경우도 있다. 로ㅓ그스태시는 진면목은 단순 소스 데이터 정제가 아니다. 엘라스틱서치의 인덱싱 성능을 최적화하기 위해 배치 처리와 병렬 처리가 가능하며, 영속적인 큐를 사용해 연재 처리 중인 이벤트의 최소 1회 전송을 보장해줄 뿐만 아니라. 유동적인 처리 방식으로 인해 수집 중인 데이터양이 급증하는 부하 상황에서도 안정성을 보장해 준다. 이를 커스텀 애플리케이션으로 구현할 경우 신겅 써야 할 부분이 많고 문제 발생 시 디버깅이나 튜닝이 쉽지 않다는 점에서 따라오기 어려운 로그스태시의 장점이라 할 수 있다. 27 | 28 | 29 | ### 비츠: 엣지단에서 동작하는 경량 수집 도구 30 | 로그스테시의 기능은 충분히 가엵하다. 하지만 이벤트 정보를 수집하기 위해 실제 서비스가 동작하는 호스트에 수집기를 설치해야 하는 경우가 많은데 로그스태시는 다양한 필터와 설정을 지원하는 만큼 무겁기 때문에 이러한 목적으로 활용도가 떨어질 수 있다. 엘라스틱 스택에는 이를 위해 파일비츠, 메트릭비트 등 비츠라고 부르는 경량 수집기가 포함되어 있다. 각 비트는 로그수집, 시스템 지표 수집 등 특정 목적에 최적화된 에이전트이며, 가볍기로 유명한 고 프로그래밍 언어로 작성되어 있다. 또한 로그스태시 수준의 복잡한 이벤트 가공은 지원하지 않아 가벼우므로, 각 서비스 호스트에 비교적 부담 없이 설치 할 수 있다. 이러한 양쪽의 장점을 활용하기 위해 비츠와 로그스태시를 혼합해 많이 사용한다. 31 | 32 | 33 | ### 기타 솔루션 34 | 애플리케이션 성능 모니터링을 위한 APM, 보안 이벤트 분석을 위한 SIEM, 컨테이너 다수의 서비스를 쉽게 모니터링하기 위한 인프라 모니터링 등의 솔루션이 포함되어 있다. 35 | 36 | ## 엘라스틱 스택의 용도 37 | 38 | ### 전문 검색 39 | 40 | 엘라스틱 스택의 가장 기본적인 사용처는 바로 전문 검색 엔진 구현이다. 전문 검색은 단순한 문장부터 뉴스 기사나 논문 등 다양한 글의 전체 내용을 의미한다. 대상 도큐먼트가 많지 않는 다면 일반적인 관계형 데이터베이스의 LIKE 질의 검색으로도 충분히 가능하지만 도큐먼트 수가 조금만 늘어나도 인덱스의 도움 없이 빠른 검색은 불가능에 가깝다. 41 | 42 | 이러한 전문을 빠르고 정확하게 검색하기 위해 전문 용어를(terms) 단위로 분석해 인덱싱해 두고 이를 기반으로 검색을 수행하는 역인덱싱 기법이 많이 활용된다. 43 | 44 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-1.png) 45 | * Discover 으로 사전에 등록한 인덱스 패턴 데시보드 지원 46 | 47 | ### 로그 통합 분석 48 | 엘라스틱 스택은 여러 장비와 서비스에서 발생하는 로그를 통합하고 검색하는 데 최적화된 솔루션이라 할 수 있다. 시스템과 호스트, 쿠버네티스, 아파치, MySQL 다양한 환경에서 생성되는 로그를 별도의 복잡한 구성 없이도 바로 수집 가능하다. 비츠를 사용하면 적은 리소스로 각 장비의 로그들을 빠르게 쉬집할 수 있고, 로그스태시는 다양한 필터를 통해 일원화된 형태로 가공을 도유며, 엘라스틱서치의 대용량 로그에 대한 빠른 인덱싱 성능과 텍스트 검색 능력은 여러 곳에 흩어진 서비스 로그들을 통합해서 연관 분석을 지원한다. 49 | 50 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-2.png) 51 | * Stream 형식으로 로그를 스트리밍 하여 실시간으로 확인 가능 52 | 53 | 54 | ### 보안 이벤트 분석 55 | SIEM 등으로 불리는 솔루션은 조직 내에 속한 다양한 장비들로부터 보안 이벤트를 수집하고 분석 할 수 있게 하려는 목적으로 만들어 졌다. 키바나에서 제공하는 엘라스틱 이벤트 분석 화면에서 비츠에서 수집한 이벤트를 기반으로 엔드포인 활용, 인프라스트럭처, 클라우드, 네트워크 등 다양한 소스에서 수집한 이벤트를 기반으로 엔트포인트 활동, 인증 로그, DNS 트래픽, 네트워크 플로우에서 이상 징후, 불법적인 로그인 시고, 사용자 접근 패턴 등의 문제를 빠르게 찾아낼 뿐만 아니라, SIEM UI에서 분석을 비롯한 고유 탐지 규칙 관리 또한 가능하다. 56 | 57 | ### 애플리케이션 성능 분석 58 | 앨라스틱 스택의 애플리케이션 성능 모니터링 도구인 APM은 프로그래밍 언어별 에이전트를 통해 성능 지표를 수집하고 돕고 분석을 위한 UI를 제공한다. 그 뿐만 아니라 메트릭비트와 패킷비트를 사용하면 시스템을 비롯해 여기 연계된 다양한 서비스들의 성능 정보를 수집할 수 있게 도와준다. 59 | 60 | 유료서비스 크립션에 포함된 기능인 와처나 머신러닝 등의 기능과 연계하면 장애나 이상 상황을 빠르게 파악하고 원인을 효과적으로 분석할 수 있다. 61 | 62 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-6.png) 63 | * 위에 설정한 APM 서버 확인 64 | 65 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-7.png) 66 | * 해당 애플리케이션 트랜잭션 정보를 출력합니다. 보다 자세히 보고 싶으면 해당 트랜잭션을 클릭해서 자세한 내용을 확인할 수 있습니다. 67 | 68 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-8.png) 69 | * 해당 트랜잭션 내용을 살펴볼 수 있으며, HTTP 요청/응답에 대한 자세한 내용도 확인 가능합니다. 70 | 71 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-9.png) 72 | * 해당 쿼리 문의 상세한 내용도 확인할 수 있습니다. 73 | 74 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-11.png) 75 | * 해당 서버의 Error를 보여줍니다. 76 | * 발생한 Error를 클릭하면 해당 오류의 더 많은 정보를 확인할 수 있습니다. 77 | 78 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-12.png) 79 | * 오류가 발생한 트랜잭션을 클릭하면 트래잭션 탭으로 이동되며, 해당 이슈의 원인을 파악을 도와줍니다. 80 | 81 | ![](https://raw.githubusercontent.com/cheese10yun/blog-sample/master/spring-msa/docs/images/apm-1-10.png) 82 | * 현재 시스템 리소스에 대한 내용을 확인할 수 있습니다. 83 | 84 | 85 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-3.png) 86 | 87 | * query 통계 88 | * slow query 분포도 및 정렬 89 | * error query 획인 90 | 91 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-4.png) 92 | 93 | * CURD 쿼리 Count 94 | * Threads created rate 95 | * Running threads 96 | * Connections rate 97 | 98 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-5.png) 99 | 100 | ![](https://raw.githubusercontent.com/cheese10yun/TIL/master/assets/elk-1-6.png) 101 | 102 | 103 | ## 빅데이터 플랫폼의 일부로 동작하는 엘라스틱 스택 104 | 105 | ### 엔터프라이즈 데이터 버스인 카프카와 연동 106 | 아파츠 카프카는 분산 데이터 스트리밍 플랫폼이다, 대량의 데이터를 실사간으로 배포하는 데 최적화되어 있어 많은 빅 데이터 플랫폼에서 기본적으로 채택하고 있다. 107 | 108 | 비츠에서 수집한 각 장비의 이벤트를 카프카로 전소앟고 이를 로그스태시로 다시 읽어 들이거나 카프카에 저장된 다른 시스템의 이벤트를 엘라스틱서치로 읽어 들이는 등의 구성으로 자주 사용된다. 109 | 110 | ### 하둡 생톄개와 연동 111 | 엘라스틱서치는 이미 인덱싱된 결과에 대해 빠른 검색을 제공하고 스파크는 기존에 인덱싱되지 않은 데이터에 대한 빠른 일괄 처리를 제공학 ㅣ때문에 엘라스틱서치를 중간 집계 엔진이나 결과를 저장해 재활용하는 용도 등으로 활용할 수 있다. 112 | 113 | ### 관계형 데이터베이스와 연동 114 | 115 | 관계형 데이터베이스에는 주로 레거시 데이터나 신뢰성이 중요한 데이터가 포함되어 있다. 로그스태시는 JDBC 입력 플러그인, 필터 등 관계형 데이터베이스와 연계할 수 있는 다양한 방법을 제공하고 있다. 기존 관계형 데이터베이스에 저장된 데이터를 인덱싱하거나 입력받은 이벤트에 정보를 중비하는 등 여러 용도로 사용된다. JDBC 입력 플러그인을 사용해 관계형 데이터베이스에 저장된 데이터를 엘라스틱서치로 이전할 경우, 엘라스틱 스택의 우수한 성능을 이용해 관계형 데이터베이스로는 처리하기 어려운 집계도 빠르고 정확하게 처리 할 수 있다. 또한 텍스트 데이터의 경우 엘라스틱서치에서는 색인만 수행하고 원문을 저장하지 않게 설정하는 방식을 이용해 저장소 용량을 아끼면서 저장소 용량을 아낄 수 있다. JDBC 필터를 사용하는 경우 관계형 데이터베이스에서 실 데이터를 불러와 매핑하는 용도로 이벤트에 ID 형태로만 기록되는 정보를 활용 할 수있다. 116 | 117 | 118 | ## 유사 제품과 비교 119 | 120 | ### 엘라스틱서치의 유사 제품군 121 | 122 | 특징 | 엘라스틱서치 | 몽고디비 | MySQL 123 | --|--------|------|------ 124 | 분류 | 검색 엔진 | 도뮤컨트 저장소 | 관계형 데이터베이스 125 | 최초 릴리즈 | 2010 | 2009 | 1995 126 | 스키마 | 자동 생성 | 자유 | 필요 127 | 인터페이스 | REST API | 전용 프로토컬 | JDBC/ODBC 128 | 분산 저장 | 샤딩 | 샤딩 | 별도 제품으로 지원 129 | 트랜잭션 | 미지원 | 부분 지원 | 지원 130 | Join | 미지원 | 최근 도뮤컨트 단위로 지원 시작 | 지원 131 | 특징 | 다양한 데이터 유형에 대해 빠른 검색/집계 | 높은 활용성/범용성 | 뛰어난 데이터 무결성 132 | 133 | 134 | ### 로그스태시/비츠의 유사 제퓸군 135 | 데이터 플랫폼에 사용되는 유사한 제품으로 트레저 데이터에서 개발한 플루언트디 와 비교할 수 있는데, 플루언트디는 로그스태시와 설정의 형태만 다를 뿐 기능상으로 건의 동일한 역할을 수행 할 수 있다. 다만 엘라스틱 스택에 한정 지어 사영한다면 로그스태시는 엘라스틱서치, 키바나와 연계해 모니터링, 중앙 관리 등의 기능을 제공하는 한편, 플루언트디는 이러한 지원을 받을 수 없기 때문에 되도록 로그스태시와 비츠의 조합이 권장된다. 136 | 137 | ### 키바나의 유사 제품군 138 | 139 | 특징 | 키바나 | 그라파나 | 태블로 140 | ---|-----|------|---- 141 | 실행환경 | 웹 서비스 | 웹 서비스 | 설치/웹 서비스 모두 제공 142 | 데이터 소스 | 엘라스틱서치 | 엘라스틱서치,그라파이트,몽고디비,프로메테우스 등 | 관계형 데이터베이스, 엑셀 파일, JOSN 파일, 드롭박스등 143 | 특징 | 실시간 대시보드 외에도 캔버스 지도, 비츠/로그스태시와 연계되어 제공되는 롯루션 등 엘라스틱 서치와의 기능을 십분 활용한 다양한 시각화 세트 제공 | 라인, 바 차트 등 기본적이지만 인프라 모니터링에 부족함이 없는 시각화 요소들 포함 | 실시간보다는 다양한 시각화 도구를 이용한 분석에 특화되어 있음 144 | 기타 기능 지원 | 스택 관리, 모니터링 등 엘라스틱 스택 특화 기능 지원, 알림이나 머신러닝 등 유료 기능 존재 | 알림 기능 지원 | - 145 | --------------------------------------------------------------------------------