본문 바로가기
반응형

전체 글156

[golang] H4sIAAAAA??? 얼마전 아래와 같은 문자열을 만난적이 있습니다.(저의 경우는 aws rds관련 로그를 파싱하는 과정에서 만났습니다) H4sIAAAAAAAAAJVVbW/bNhD+K4T7oQngOHx/cZegxualARqnS7wB~~~ 해당 문자열은 얼핏보면 base64로 인코딩 된것 같지만 아닙니다. H4slA로 시작하는 문자열은 base64로 인코딩된 gzip 문자열 입니다. base64로 디코딩 해준 후, gzip파일을 읽어온 것처럼 해석해야 합니다. 1. 소스코드 func main() { data := "H4sIAAAAAAAAAJAA\n" decodeString, _ := base64.StdEncoding.DecodeString(data) r, err := gzip.NewReader(bytes.NewReader(de.. 2022. 9. 19.
[golang] 익명함수를 고루틴으로 실행시킬때의 주의점(순서와 스택) 이번 게시글에서는 익명함수를 고루틴으로 실행시킬때의 주의점을 정리합니다. 1. 소스코드 package main func main() { wg := sync.WaitGroup{} for i := 0; i < 5; i++ { wg.Add(1) go func() { defer wg.Done() time.Sleep(1) fmt.Println("hello ", i) }() } wg.Wait() } 0부터 4까지 고루틴과 waitgroup을 이용해 hello 1 ~ hello 4 까지 출력시킨 후 프로세스를 종료하려 했으나 결과는 0부터 4가 아닌 5가 5번 출력됩니다. 고루틴은 생성되고 실행되기까지 시간이 필요합니다(일반적인 스레드보다는 매우 빠른편) for문은 5까지 i++가 진행되었고 i < 5의 조건에 부합.. 2022. 9. 8.
[golang] go-sdk-v2 athena 사용법(go-sdk-v2 athena example) 이번 게시글에서는 go-sdk-v2를 사용한 athena query 질의방법에 대해 정리합니다. 소스코드는 아래 github에서 확인할 수 있습니다. GitHub - jaeho310/go-sdk-v2-athena-example Contribute to jaeho310/go-sdk-v2-athena-example development by creating an account on GitHub. github.com 1. 패키지 구조 . ├── go.mod ├── go.sum ├── main.go ├── gateway │ └── athena_gateway.go └── service └── athena_service.go 2. main.go package main import "athena-example/ser.. 2022. 9. 7.
[elastic search] 엘라스틱 서치 mapping(매핑)이란(mapper_parsing_exception 이유) 이번 게시글에서는 엘라스틱 서치의 매핑에 대해 정리합니다.(mapper_parsing_exception) 1. mapping이란 엘라스틱서치 매핑이란 인덱스에 어떤 필드는 어떤 형식의 데이터이니 어떠한 구조로 저장하겠다는 규칙입니다. 그러나 엘라스틱 써치는 인덱스와 json만 입력해주면 데이터를 저장할 수 있긴 합니다. 매핑을 하면 뭐가 좋고 안하면 뭐가 좋은지는, 아래의 예제로 확인하겠습니다. // 저장 POST my_index/_doc { "name": "Tom", "age": 1 } POST my_index/_doc { "name": "June", "age": 2 } POST my_index/_doc { "name": "John", "age": 1 } 저장 후 이름이 J로 시작하는 애들을 검색하면 .. 2022. 8. 29.
[elastic search] 엘라스틱 서치 shard와 replica 이번 게시글에서는 엘라스틱서치 샤드와 레플리카에 대해 정리합니다. 1. 샤드란 elastic search는 인덱스에 데이터를 저장하며, 인덱스의 인스턴스를 샤드라고 합니다. 즉 인덱스에 데이터를 저장하면 데이터는 샤드에 기록되며 디스크에 저장됩니다. 샤드는 일반적으로 20~40gb 의 데이터가 저장되도록 하는게 좋습니다. (ex index에 저장되는 데이터의 양이 60gb라면 샤드를 2개로 설정해주는게 좋습니다, 샤드에 데이터는 50gb를 넘기지 않아는게 좋습니다.) 인덱스를 정의할때 setting필드에 정의를 해주거나(setting이란 인덱스의 샤드, 레플리카의 매핑 등의 정보를 설정할때 사용되는 필드입니다.) 아래의 코드와 같이 템플릿을 만들어 놓으면 index가 생성(my- , your-로 시작되는.. 2022. 8. 29.
[elastic search] 엘라스틱 서치란(elastic search, kibana 사용법) 이번 게시글에서는 elastic search에 대해 정리합니다. 1. elastic search란 검색엔진이자 분산저장소입니다. 일반적으로 JSON 형식의 데이터를 저장하며 루씬 기반으로 개발되어있어 빠른 검색이 가능합니다. 서비스의 검색을 위해 사용되거나, 로그 등의 데이터를 검색할때 자주 사용됩니다.(ELF, EFK 등) elastic search와 함께 딸려오는 kibana는 elastic search를 쓰기 쉽게 만들어주는 툴이며 결과를 시각화하는 기능과 dsl을 질의할 툴을 제공하는 등 추가기능을 제공합니다. 2. 언제 사용하면 좋을까 내부적으로 복잡한 과정(Caharacter filter, Tokenizer, Token filter를 이용한 구문 분석 및 Inverted index table .. 2022. 8. 29.
elastic search 트러블 슈팅(로그 적재) 해당 게시글은 로그 적재용으로 es를 사용할때의 문제점과 해결방식을 정리했습니다. 로그의 경우 검색속도보다는 적재에 포커스를 맞춰서 시스템을 구축하게 되므로 그에 맞는 트러블 슈팅방식을 정리합니다. 1. es의 컴퓨팅 리소스가 부족할때 (1). 에러로그 es의 컴퓨팅 리소스가 부족할때 es가 뱉는 에러는 아래와 같습니다. Error received from Elasticsearch cluster. 429 Too Many Requests /my-index/my-type/_bulk Request to ES cluster timed out. Ensure that the cluster has sufficient capacity for the current workload. {"type":"es_rejected_.. 2022. 8. 17.
lambda 트러블 슈팅(concurrent execution limit is exceeded) 이번 게시글에서는 람다의 트러블 슈팅내용을 정리합니다. 1. 에러로그 The Lambda concurrent execution limit is exceeded. Increase the concurrent execution limit. 2. 이유 lambda는 동시에 실행될 수 있는 갯수의 한계가 있습니다. Invoke숫자와 duration이 합산된 데이터로 요청이 많다고 걸리게 되는것이 아니라 수행시간도 길때 발생합니다. 예를들어 5초동안 수행되는 요청이 초당 10개씩 request가 들어오게 되면 concurrent execution은 50이 유지되는 형태입니다. 이는 계정(리전)별로 적용되며 서울리전 기준 1000개가 default입니다. 이를 초과하게 되면 람다 쓰로틀이 발생하게 됩니다. 3. 해결.. 2022. 8. 11.
fluent bit 트러블 슈팅 이번 게시글에서는 fluent bit의 에러로그와 해결방법에 대해 정리합니다. 1. fluent bit이란 수집기의 한 종류로 다양한 input과 output을 지원하는 솔루션입니다. 쿠버네티스 로그수집기로 사용한다면 도커 컨테이너가 제공하는 /var/log/containers 아래의 로그파일을 읽어 외부로 보낸는데 사용되는 솔루션입니다. 구축방법과 아키텍쳐는 아래 게시글을 참고해주세요 [devops] fluent bit 으로 k8s(eks)로그 관리하기(bluent-bit 사용법, EFK) 이번 게시글에서는 fluent-bit 사용법에 대해 정리합니다. 1. fluent-bit이란 일반적으로 로깅은 Elastic search, LogStatsh, Kibana의 앞자리를 가져온 ELK 스택이 많이 사용됩.. 2022. 7. 21.
반응형