로그 정보를 이용해서 데이터 분석 및 여러가지로 활용할 수 있지만 로그 활용은 그렇게 간단하지만은 않다. 로그 형태가 표준화되어 있지 않기 때문인데, 로그는 반정형 데이터이며 세상의 모든 것이 로그가될 수 있기 때문에 로그 형태를 강제할 방법도 없다. 결국 로그를 수집하는 쪽에서 로그 형태를 분석하고 시스템에서 인식할 수 있도록 로그를 정제하는 작업이 필요한데, 로그스태시는 이 과정을 쉽고 편하게 할 수 있도록 지원한다. 로그스태시를 한페이지로 정리해보자. 로그스태시란? 플러그인 기반의 오픈소스 데이터 처리 파이프라인 도구 복잡하고 귀찮은 데이터 전처리 과정을 별도 애플리케이션 작성 없이 비교적 간단한 설정만으로 수행할 수 있음(데이터를 저장하기 전 사용자가 원하는 형태로 변경할 수 있음) 장애 대응 로..
프로그래밍 노트/인프라
매핑 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를 담당한다. 가장 중요한 기능은 시각화와 대시보드 라인 차트, 파이 차트 등과 테이블, 지도 등의 다양한 시각화 요소들을 클릭 몇 번으로 쉽게 구성할 수 있게 해준다. 로그스태시: 이벤트 수집과 정제를 위한 도구 데이터 수집과 가공 기능을 제공하는 로그스태시를 사용하면 로그, 메트릭, 웹 애플리케이션 등 다양한 소스로부터 로그를 수집할 수 있다. 형식에 무관하게 데이터를 동적..
젠킨스를 Master/Slave로 보통 구성한다고 한다. (사실 실무에서는 사용해본적이 없지만, 많은 블로그나 책에서 이렇게 사용한다고 한다.) 도커 컴포즈를 연습해볼겸 젠킨스를 Master/Slave로 구축을 해보자, Master : 관리 기능 및 작업 실행 지시 Slave : 실제 작업 진행 Master 젠킨스 컨테이너 실행하기 1.docker-compose.yml 작성 version: "3" services: master: container_name: master image: jenkins/jenkins:lts ports: - 9900:8080 volumes: - ./master_jenkins_home:/var/jenkins_home volumes 항목은 호스트와 컨테이너 사이에 파일을 공유할 수 ..
Scale Out 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것(수평확장) 비교적 단순하지만 다수의 처리를 병행적으로 실행해야 하는 경우 적합 Scale Up 서버 그 자체의 처리 능력을 향상 시키는 것(수직확장) 스케일 아웃으로 정합성 유지가 어려운 데이터베이스 서버에 적합(OLTP)
문제점 프로젝트에서 nginx를 사용하기로 하여, nginx에 .vue 파일을 위치시키고 그 뒤에 springboot를 위치시켰다. nginx는 reverse proxy 역할을 하며, 클라이언트의 모든 요청을 받는다. 요청 URI가 /api로 시작하면 뒷단 springboot(proxy_pass 이용)로 요청을 보내고, /api로 시작하지 않는다면 vue router에게 URI에 해당하는 vue 페이지를 리턴하도록 한다. nginx.conf server{ location ^~/api{ proxy_pass http://127.0.0.1:8080; } } 이런식으로 구성을 하여 프로젝트를 진행하였는데, 문제가 발생했다. 바로 springboot 에서 request.getRemoteAddress(); 를 호출..
location 블록 location 변경자 location [= |~ |^~|@] pattern { ... } : 맨 앞에 오는 선ㅌ낵적 인자는 로케이션 변경자(location modifier) 심볼. 엔진엑스가 패턴을 비교하는 방법과 패턴의 속성 (문자열 또는 정규식)을 정의한다. server{ server_name corn_tistory location =/test { ... } } # = : 지정 패턴과 정확히 일치 ex) corn_tistory/test (일치) cron_tistory/test?param=value (일치) corn_tistory/test/ (불일치) # ~ : 정규표현식과 일치 # ~* : 대소문자를 구분하지 않으며 정규표현식과 일치 # ^~ : 지정한 패턴으로 시작해야 함. ..
HTTP 코어 모듈 HTTP서버의 핵심적인 블록, 지시어, 변수를 포함한다. 블럭 HTTP 모듈은 아래와 같은 세 가지 논리적 블록을 제공한다. 프로토콜 수준(http 블록), 서버 수준(server 블록), 요청 URI 수준(location) http : 엔진엑스의 HTTP 부문과 관련된 모듈의 지시어와 블록을 정의 server : 하나의 호스트를 선언하는데 사용하며, http 블럭 안에서만 사용할 수 있다. (하나의 웹사이트라고 생각) location : 웹사이트의 특정 위치에 적용할 설정 그룹을 정의한다. server블록이나 다른 location 블록 안에 삽입할 수 있다. 모듈 지시어 표현 방법 : 지시어 소켓과 호스트 환경 listen : 웹 사이트용 리스닝 소켓이 사용하는 IP 주소와 포트를 ..