본문 바로가기
반응형

전체 글202

HTTP/3 란? HTTP/3는 HTTP와 HTTP/2와 더불어 월드 와이드 웹상의 정보를 교환하기 위해 사용되는 HTTP의 차기 주요 버전이자 3번째 프로토콜이다. HTTP 시멘틱스는 이 버전들 모두 동일하다. 요청 메소드, 상태 코드, 메시지 필드가 일반적으로 모든 버전에 적용된다. 시멘틱스 매핑 내에서의 차이점은 기반이되는 트랜스포트이다. HTTP와 HTTP/2는 TCP를 자신들의 트랜스포트로 사용하지만 HTTP/3는 사용자 공간 혼잡 제어를 사용자 데이터그램 프로토콜(UDP)를 경유하여 사용되는, 구글이 개발한 전송 계층 통신 프로토콜의 하나인 QUIC를 사용한다. QUIC로의 전환은 헤드 오브 라인 블로킹(HOLB)이라는 HTTP/2의 주된 문제를 해결하는 것이 목적이다. 헤드 오브 라인 블로킹(HOLB)란 TC.. 2022. 3. 21.
[API] Ingest APIs 인덱싱을 하다보면 필요에 따라 데이터를 가공해야될 때가 있다. 인덱스 별로 가공해야 될 필드가 다르고 필드명 또한 다른 경우 매번 인덱스에 해당하는 프로세스를 만들고, 배포하는 과정은 불편하기 마련이다. 이런 경우 Pipeline을 설정하여 데이터를 가공할 수 있다. 우선적으로 Pipeline을 설정하기 위해서는 Ingest Node가 활성화 되어있어야 한다. // pipeline 설정 기본 구성 예시 PUT _ingest/pipeline/{id} { "description" : "A description for your pipeline", "processors" : [ { "set" : { "field": "field-name", "value": "value" } } ] } 위에 processors는 .. 2022. 3. 18.
[API] Index APIs 1. Index Exist Path and HTTP methods HEAD / ** https://opensearch.org/docs/latest/opensearch/rest-api/index-apis/exists/ 2. Delete Index Path and HTTP methods DELETE / ** https://opensearch.org/docs/latest/opensearch/rest-api/index-apis/delete-index/ 3. Get Index Path and HTTP methods GET / ** https://opensearch.org/docs/latest/opensearch/rest-api/index-apis/get-index/ 4. Close Index Path and HT.. 2022. 3. 18.
[15] 스냅샷 생성 및 복원 스냅샷은 클러스터 인덱스 및 상태의 백업을 의미한다. 상태에는 클러스터 설정, 노드 정보, 인덱스 메타데이터 ( 매핑, 설정, 템플릿 등 ) 및 샤드 할당이 포함된다. 스냅샷은 크게 두 가지 용도로 사용된다. 복구 시 - 예를 들어 클러스터 상태가 빨간색이 되면 스냅샷으로 복원할 수 있다. 한 클러스터에서 다른 클러스터로 마이그레이션 - A에서 B인 프로덕션 클러스터로 이동하는 경우 전자의 스냅샷을 만들어 후자에 적용할 수 있다. 스냅샷은 즉각적이지 않고 완료하는데 시간이 걸리며 클러스터의 완벽한 시점을 나타내지 않는다. 스냅샷이 진행되는 동안 여전히 문서를 인덱싱하고 클러스터에 다른 요청을 할 순 있지만 일반적으로 새 문서와 기존 문서에 대한 업데이트는 스냅샷에 포함되지 않는다. 스냅샷에는 OpenSe.. 2022. 3. 18.
[14] 샤드 인덱싱 backpressure (인덱싱 작업 부하에 대한 조정) 클러스터에 부담이 있을 때 인덱싱 요청을 동적으로 거부하는 샤드 당 스마트 거부 메커니즘입니다. 부하가 높은 노드나 샤드에서 요청을 다른 노드나 아직 정상 상태인 샤드로 전송하는 작업을 합니다. 느린 노드, 중단된 작업, 리소스 집약적인 요청, 트래픽 급증, 왜곡된 샤드 할당 등으로 인한 성능 저하로 인해 클러스터의 노드가 계단식 오류로 실행되는 것을 방지할 수 있습니다. 이 방법은 하나의 기본 매개변수와 하나의 보조 매개변수가 위반된 경우에만 적용됩니다. :: 기본 매개변수 기본 매개변수는 클러스터가 긴장 상태에 있다는 초기 지표입니다. 샤드 메모리 제한 위반 : 샤드의 메모리 사용량이 할당된 메모리의 95%를 초과하면 위반. 노드 메모리 제한 위반 : 노드의 메모리 사용량이 할당된 메모리의 70%를 .. 2022. 3. 18.
[13] OpenSearch Logs OpenSearch 로그에는 클러스터 작업을 모니터링하고 문제를 해결하는데 유용한 정보가 포함되어 있습니다. 로그 위치는 설치 유형에 따라 다릅니다. Docker에서 OpenSearch는 대부분의 로그를 콘솔에 쓰고 opensearch/logs/ 안에 저장합니다. tarball 설치 또한 같은 폴더를 사용합니다. 대부분의 리눅스 설치에서는 /var/log/opensearch/에 로그를 저장하게 됩니다. 보다 자세한 내용은 : https://opensearch.org/docs/latest/opensearch/logs/ 참고. 어플리케이션 로그 슬로우 로그 (slow log) 지원하지 않는 로그 2022. 3. 18.
[12] 검색 템플릿 Full-text 검색들을 검색 템플릿으로 만들어 사용자의 입력을 받아 쿼리에 동적으로 적용하도록 할 수 있습니다. 예를 들어, 웹 사이트나 어플리케이션의 검색 엔진으로 백엔드 OpenSearch를 사용한다면, 사용자가 직접 입력하게 검색어를 입력하게 하여 검색 템플릿의 파라미터로 보낼 수 있습니다. 사용자의 입력값을 OpenSearch의 쿼리 코드로 변환해야하는 작업을 할 때 검색 템플릿을 사용하여 코드를 단순화할 수 있습니다. 검색 쿼리에 필드를 추가해야 하는 경우, 코드를 변경하지 않고 템플릿을 수정하기만 하면 됩니다. 아래 기능 예시 : https://opensearch.org/docs/latest/opensearch/search-template/ 검색 템플릿 만들기 검색 템플릿 저장 및 실행 검.. 2022. 3. 18.
[11] 쿼리 DSL (Domain-Specific Language) HTTP 요청 파라미터를 사용하여 간단한 검색을 수행할 수 있지만 더 넓은 범위의 검색 옵션을 제공하는 쿼리 DSL을 사용할 수 있습니다. 쿼리 DSL은 HTTP 요청의 request body를 사용하므로 쿼리를 보다 쉽게 사용자 지정하여 원하는 결과를 얻을 수 있습니다. 참조: https://opensearch.org/docs/latest/opensearch/query-dsl/index/ OpenSearch는 데이터를 검색할 때 term-level 쿼리와 full-text 쿼리, boolean 쿼리라는 세 가지 유형의 쿼리를 지원합니다. term-level 쿼리 : 쿼리와 일치하는 문서를 반환합니다. ( https://opensearch.org/docs/latest/opensearch/query-dsl.. 2022. 3. 18.
[10] 데이터 재인덱싱 인덱스를 만든 후 모든 문서에 새 필드를 추가하거나 여러 인덱스를 결합하여 새 필드를 구성하는 등 광범위한 변경 작업을 수행해야 할 수 있습니다. 인덱스를 삭제하고 오프라인으로 변경한 다음 데이터를 다시 인덱싱하는 대신에 reindex 작업을 사용할 수 있습니다. 이 reindex작업 쿼리를 통해 선택한 문서 전체 또는 하위 집합을 다른 인덱스에 복사할 수 있습니다. 가장 기본적인 형식은 source index와 target index를 지정합니다. 재인덱싱은 source index의 크기에 따라 비용이 많이 드는 작업일 수 있습니다. number_of_replicas를 0으로 설정하여 복제본을 비활성화하고 재인덱싱 프로세스가 완료되면 복제본을 다시 활성화하는 것이 좋습니다. 데이터 재인덱싱 기능 목차 .. 2022. 3. 18.
[9] 집계 - 버킷 집계 버킷 집계 버킷 집계는 문서 세트를 버킷으로 분류합니다. 버킷 집계 유형은 주어진 문서가 버킷에 속하는지 여부를 결정합니다. :: terms terms 집계는 각 고유한 terms필드에 대한 버킷을 동적으로 생성합니다. // 아래 예시는 웹 로그 데이터의 응답 코드 별 문서의 수를 찾아서 집계합니다. GET opensearch_dashboards_sample_data_logs/_search { "size": 0, "aggs": { "response_codes": { "terms": { "field": "response.keyword", "size": 10 } } } } // 응답 예시 ... "aggregations" : { "response_codes" : { "doc_count_error_upper_.. 2022. 3. 13.
[8] 집계 - 메트릭 집계 메트릭 집계를 사용하면 필드의 최소값 최대값 및 평균값 찾기와 같은 간단한 계산을 수행할 수 있습니다. 메트릭 집계에는 단일 값 메트릭 집계와 다중 값 메트릭 집계의 두 가지 유형이 있습니다. 단일 값 메트릭 집계 단일 값 메트릭 집계는 단일 메트릭을 반환합니다. 예를 들어, sum, min, max, avg, cardinality, value_count가 있습니다. 다중 값 메트릭 집계 둘 이상의 메트릭을 반환합니다. 예: stats, extended_stats, matrix_stats, percentile, percentile_ranks, geo_bound. top_hits, scripted_metric :: sum, min, max, avg // taxful_total_price 필드의 총 합계를 .. 2022. 3. 10.
[7] 인덱스 템플릿 인덱스 템플릿을 사용하면 이미 정의된 mappings와 settings 그대로 새 인덱스를 초기화할 수 있다. 예를 들어, 지속적으로 인덱싱하는 log data라면, 이런 모든 index가 동일한 수의 샤드와 복제본을 갖도록 인덱스 템플릿을 정의할 수 있다. // Index Template 생성 예시 PUT _index_template/daily_logs // daily_logs라는 이름을 가진 템플릿 생성 { "index_patterns": [ "logs-2022-01-*" ], "template": { "aliases": { "my_logs": {} }, "settings": { "number_of_shards": 2, "number_of_replicas": 1 }, "mappings": { "pro.. 2022. 3. 2.
[6] 데이터 스트림 로그, 이벤트 및 메트릭과 같은 지속적으로 생성되는 시계열 데이터를 수집하는 경우, 문서의 수가 급격하게 증가하고 이전 문서를 업데이트할 필요가 없는 경우가 있을 때가 있습니다. 데이터 스트림은 타임스탬프 필드가 있는지 확인하고 시계열 데이터에 가장 적합한 설정을 시행합니다. 내부적으로 여러 backing 인덱스로 구성되는데, 검색 요청은 모든 backing 인덱스에 라우팅 되는 반면에 인덱싱 요청은 최신 쓰기 인덱스로 라우팅됩니다. ISM 정책을 사용하면 인덱스 롤오버 또는 삭제를 자동으로 처리할 수 있습니다. :: 인덱스 템플릿 만들기 데이터 스트림을 생성하려면 먼저 인덱스 세트를 데이터 스트림으로 구성하는 인덱스 템플릿을 생성해야 합니다. data_stream 객체는 일반적인 인덱스 템플릿이 아닌 .. 2022. 2. 25.
HTTPS의 통신과정 HTTPS란? HTTPS는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하여 데이터의 적절한 보호를 보장한다. 통신 과정 1. 클라이언트에서 서버로 연결을 시도하는 패킷을 전송한다. Client가 사용가능한 Cipher suite 목록이 포함되어있다. 어떤 프로토콜(TLS/SSL)을 사용할지, 인증서 검증 또는 데이터를 어떤 방식으로 암호화할지 등이 표시된다. 2. 클라이언트에게서 받은 패킷에 대해 서버가 응답을 한다. 여기에는 클라이언트에게서 받은 Cipher suite 중 하나를 보낸다. 3. 2번 패킷 외에도 인증서에 대한 패킷을 보낸다. 인증서는 서버가 발급받은 .. 2022. 2. 23.
[5] 인덱스 별칭 (aliases) 별칭은 하나 이상의 인덱스를 가리킬 수 있는 가상 인덱스 이름입니다. 데이터가 여러 인덱스에 분산되어 있는 경우 쿼리할 인덱스를 추적하는 대신 별칭을 만들어 쿼리할 수 있습니다. 에를 들어, 월 단위 로그를 인덱스에 저장하고 이전 2개월 동안 로그를 자주 쿼리하는 경우 'last_2_months'라는 별칭을 만들고 매달 업데이트 할 수 있습니다. 별칭이 가리키는 인덱스는 언제든지 변경할 수 있으므로 별칭을 사용하여 인덱스를 참조하면 다운타임 없이 데이터를 다시 인덱싱할 수 있습니다. :: 별칭 만들기 // 별칭을 만들때 POST 요청을 사용합니다. POST _aliases // 아래는 actions를 사용하여 'alias1'이라는 별칭을 만들고 'index-1'을 이 별칭에 추가하는 요청이다. POST .. 2022. 2. 22.
반응형