프로그래밍 노트/인프라

로그 정보를 이용해서 데이터 분석 및 여러가지로 활용할 수 있지만 로그 활용은 그렇게 간단하지만은 않다. 로그 형태가 표준화되어 있지 않기 때문인데, 로그는 반정형 데이터이며 세상의 모든 것이 로그가될 수 있기 때문에 로그 형태를 강제할 방법도 없다. 결국 로그를 수집하는 쪽에서 로그 형태를 분석하고 시스템에서 인식할 수 있도록 로그를 정제하는 작업이 필요한데, 로그스태시는 이 과정을 쉽고 편하게 할 수 있도록 지원한다. 로그스태시를 한페이지로 정리해보자. 로그스태시란? 플러그인 기반의 오픈소스 데이터 처리 파이프라인 도구 복잡하고 귀찮은 데이터 전처리 과정을 별도 애플리케이션 작성 없이 비교적 간단한 설정만으로 수행할 수 있음(데이터를 저장하기 전 사용자가 원하는 형태로 변경할 수 있음) 장애 대응 로..
매핑 RDB에서 테이블을 생성할 때 컬럼의 이름, 데이터 타입을 정하는 것 처럼 매핑은 RDB의 스키마와 비슷한 역할을 한다. JSON 형태의 데이터를 루씬이 이해할 수 있도록 바꿔주는 작업 전문 검색과 대용량 데이터를 빠르게 실시간으로 검색할 수 있는 이유 다이내믹 매핑 JSON 도큐먼트의 데이터 타입에 맞춰 엘라스틱서치가 자동으로 인덱스 매핑을 해주는 것 {"age": 20} → 숫자 타입은 무조건 범위가 가장 넓은 long으로 매핑시켜 불필요한 메모리를 차지하게 만들 수 있으니 기억해두자. → GET index1/_mapping mapping API 를 활용하여 인덱스 매핑값을 확인할 수 있다. 명시적인 매핑 인덱스 매핑을 직접 정의하는 것 // 인덱스 생성시 mappings 지정 PUT "인덱스명..
인덱스와 도큐먼트가 무엇인지 알아보기 전에, 엘라스틱 서치 API 관련해서 알아보자. 엘라스틱서치 요청과 응답 엘라스틱 서치는 모든 요청과 응답을 REST API 형태로 제공한다. REST API를 활용하여 엘라스틱에 데이터를 적재하거나 조회할 수 있다. 2021.12.30 - [프로그래밍 노트/인프라] - [엘라스틱 스택] 맥북 실습 환경 구성 이전에 설치한 엘라스틱서치 서버에 curl로 API 요청을 해도 되고, 키바나에서 제공해주는 Dev Tools를 이용해서 손쉽게 API를 호출할 수 있다. (Management > Dev Tools) // es_index 라는 인덱스를 생성하고, 1번 도큐먼트를 생성한다. POST es_index/_doc/1 {"name":"corn", "age": 30} //..
실습환경을 구성해보자. 엘라스틱 스택에서 필수 요소인 엘라스틱서치와 키바나를 설치해보자. 도커 실습 환경도 있으나, 나중에 구성해보기로하고 현재 PC인 맥북에서 실습환경을 구성해 보자. 엘라스틱 서치 설치 공식홈페이지에서 쉽게 다운로드받을 수 있다. 초보자들도 쉽게 다운로드 및 사용할 수 있게 가이드가 되어 있다. https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 공식사이트 정보 > 문서 > Elasticsearch Guide > Set up Elasticsearch > Installing Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/curr..
엘라스틱 스택? 키바나 - 시각화 엘라스틱서치 - 데이터 저장 & 검색 엔진 비츠/로그스태시 - 데이터 수집 엘라스틱서치: 분산 검색 엔진 모든 레코드를 JSON 도큐먼트 형태로 입력하고 관리 검색 엔진이면서 데이터베이스이기도 함(일종의 NoSQL 이라고 생각해도..?) 키바나: 시각화와 엘라스틱서치 관리 도구 엘라스틱 스택의 UI를 담당한다. 가장 중요한 기능은 시각화와 대시보드 라인 차트, 파이 차트 등과 테이블, 지도 등의 다양한 시각화 요소들을 클릭 몇 번으로 쉽게 구성할 수 있게 해준다. 로그스태시: 이벤트 수집과 정제를 위한 도구 데이터 수집과 가공 기능을 제공하는 로그스태시를 사용하면 로그, 메트릭, 웹 애플리케이션 등 다양한 소스로부터 로그를 수집할 수 있다. 형식에 무관하게 데이터를 동적..
프로듀서 주요 옵션 bootstrap.servers 카프카 클러스터에 연결하기 위한 호스트와 포트정보로 구성된 리스트 호스트 이름:포트, 호스트 이름: 포트 kafka01:9092,kafka02:9092 acks 프로듀서가 카프카 토픽의 리더에게 메시지를 보낸 후 요청을 완료하기 전 ack(승인) 수. 해당 옵션의 수가 작으면 성능이 좋지만, 메시지 손실 가능성이 있고, 반대로 수가 크면 성능이 좋지 않지만 메시지 손실 가능성도 줄어들거나 없어짐 acks=0 프로듀서는 서버로부터 어떠한 ack도 기다리지 않음. 전송 실패에 대한 결과, 재요청 설정이 적용되지 않음. 빠르게 메시지를 보낼 수 있어 높은 치리량을 얻을 수 있음 acks=1 리더는 데이터를 기록하지만, 모든 팔로워는 확인하지 않음. 이 경우 ..
로컬 환경 zookeeper 3대(localhost:2181, localhost:2182, localhost:2183) kafka broker 3대(localhost:9092, localhost:9093, localhost:9094) 프로듀서란?? 메시지를 생산(produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션, 서버 등을 모두 프로듀서라고 한다. 주요기능은 각각의 메시지를 토픽 파티션에 매핑하고 파티션의 리더에 요청을 보내는 것이다. 메시지를 보낼 때 키 값을 정해서 메시지를 보낼 수 있는데, 해당 키를 가진 모든 메시지를 동일한 파티션으로 전송할 수 있다. 키 값이 존재하지 않는다면, Round-Robin 방식으로 파티션에 균등 분배하게 된다. 1. 콘솔 프로듀서로 메시지..
2021.06.20 - [프로그래밍 노트/인프라] - [kafka] Docker 사용하여 카프카 실행하기 [kafka] Docker 사용하여 카프카 실행하기 실행에 앞서 PC에 docker가 설치되어 있어야 한다. 1. kafka-docker repository clone $ git clone https://github.com/wurstmeister/kafka-docker 2. docker-compose-single-borker.yml 수정 해당 compose 파일을.. cornswrold.tistory.com 기존포스팅에서는 zookeeper 1대, kafka 1대로 구성된 카프카 실행환경을 구성하였었다. kafka를 학습하다보니, 로컬에서 클러스터로 구성된 환경이 필요했는데 다행히 docker-com..
2021.06.30 - [프로그래밍 노트/인프라] - [kafka] 주키퍼(zookeeper) 설치 및 실행 (환경설정) 카프카 설치하기 $ wget http://apache.mirror.cdnetworks.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz $ tar xzvf kafka_2.12-2.8.0.tgz $ ln -s kafka_2.12-2.8.0 kafka 카프카 환경설정 환경설정 파일을 열어 필요한 정보들을 수정해야 한다. 서버별 브로커 아이디 카프카 저장 디렉터리 주키퍼 정보 1. 서버별 브로커 아이디 카프카도 주키퍼가 myid를 지정한것과 비슷하게 id를 매칭시켜야 한다. 3대의 서버가 있다고 가정해보자. 아래와 같이 broker.id를 매핑한다고 기억해두었다가 나중에 카..
주키퍼 설치하기 $ wget http://apache.mirror.cdnetworks.com/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz $ tar xzvf apache-zookeeper-3.6.3.tar.gz $ ln -s apache-zookeeper-3.6.3 zookeeper 주키퍼는 애플리케이션에서 별도의 데이터 디렉토리를 사용 이 디렉토리에는 지노드의 복사본인 스냅샷과 트랜잭션 로그들이 저장 지노드의 변경사항이 발생하면, 변경사항은 트랜잭션 로그에 추가 로그가 어느 정도 커지면, 현재 모든 지노드의 상태 스냅샷이 파일시스템에 저장 스냅샷은 모든 이전 로그들을 대체 중요한 디렉토리이기 때문에 설치 경로와는 다른 경로로 설정하는 것이 바람직하다. 보통..
깡냉쓰
'프로그래밍 노트/인프라' 카테고리의 글 목록