본문 바로가기

인프라,데이터

(49)
카프카 SASL_SSL 방식 + jks truststore로 로그스태시 연결하기 [주의] 클라이언트 전용 jks 키를 받아 깔끔하게 연결하면 좋았겠으나, 그 클라이언트 전용 키를 못 받아서 컨플루언스를 떠돌다 구한 다른 팀의 키로 어떻게든 카프카-로그스태시를 연결해보려고 한 이야기입니다... *** 삽질이 난무합니다.*** *** 반전이 있으니 당장 사용하셔야 하는 용도로 이 글을 보고 계신다면 맨 밑으로 내려서 밑부터 읽어주세요.**** 준비물 : 컨플루언스에서 어떻게 구한 다른 팀에서 쓰는 클라이언트용 keystore, truststore 키 카프카와의 클라이언트 SSL 인증에서 필요한 계정, 비밀번호는 받았다고 가정 다른 팀 클라이언트 키스토어에 우리팀 서명을 해보자! keytool -keystore kafka.client.keystore.jks -alias CARoot -ke..
Fluentd tail input 로그 1개 손실 & 로그 느리게 들어오는 이유 해결 한줄요약 : multiline 때문입니다. multiline_flush_interval 옵션을 사용하면 해결됩니다. Fluentd로 로그를 수집하는데, 초당 로그를 일정하게 발생시키는 스크립트를 짜고 로그 수집을 테스트해보는데 왜인지 테스트 할때마다 로그가 1개씩 덜 들어왔다. 왜 그러지..? 싶었으나 원인을 쉽게 찾을 수 없었다. 그리고 Kinesis output을 사용할 때, 로그가 1초에 여러번 들어오면 '로그 발생 -> Kinesis -> ES 적재'까지 몇 초 내로 적재되었으나 로그를 1분에 한 번 꼴로 발생시킬 경우 '로그 발생 -> Kinesis -> ES 적재'까지 60초 + flush interval에 해당하는 시간이 걸렸다. (여기서 알아챘어야 했다.. ㅎㅎ) 왜 위의 두가지 현상이 발..
Fluentd로 S3 output path에 field(key) 값 넣기 {"filename":"test.log"} 와 같은 데이터가 있을 때, Fluentd를 사용해서 "filename" 키의 값에 해당하는 "test.log"를 s3으로 보내는 경로에 넣어주고 싶다면 어떻게 해야 할까요? 먼저 rewrite_tag_filter를 사용해서 필요한 key 값들을 tag에 추가해 줍니다. @type rewrite_tag_filter key instance_name pattern ^(.+)$ tag s3_mid.$1 @type rewrite_tag_filter key filename pattern ^(.+)$ tag s3.${tag}.$1 저는 path에 key를 2개 넣어야 해서 필터를 2번 사용해 줬습니다. 처음엔 한 번에 2개의 rule을 사용하면 안 될까? 했는데 안 됩니다..
Fluentd add Record Field by Ruby 'Case when~' Conditional Statements I used to config logstash with something like this : mutate { copy => {"test" => "test_s3path"} } if [test_s3path] =~ /^A-/ { mutate { update => { "test_s3path" => "A-INSTANCES" } } } else if [test_s3path] =~ /^B-/ { mutate { update => { "test_s3path" => "B-INSTANCES" } } } else if [test_s3path] =~ /^C-/ { mutate { update => { "test_s3path" => "C-INSTANCES" } } } else if [test_s3path] =~ /^D-/ {..
데이터 중심 애플리케이션 설계 4장 정리 부호화와 발전 관계형 데이터베이스 일반적으로 모든 데이터베이스의 모든 데이터가 하나의 스키마를 따른다고 가정한다. 읽기 스키마(스키마리스) 데이터베이스 스키마를 강요하지 않으므로 다른 시점에 쓰여진 이전 데이터 타입과 새로운 데이터 타입이 섞여 포함될 수 있다. 데이터 구조 object, struct(구조체), list, array, hash table, tree 등 CPU에서 효율적으로 접근하고 조작할 수 있게 (보통은 포인터를 이용해) 최적화된다. 부호화 인메모리 표현 -> 바이트열(ex : JSON 문서)로의 전환 - 직렬화, 마샬링이라고 함 파이썬의 pickle, 루비의 Marchal 바이트열 -> 인메모리 표현 : 복호화 - 파싱, 역직렬화, 언마샬링이라고도 함 보통 특정 프로그래밍 언어와 묶여..
데이터 중심 애플리케이션 설계 3장 정리 데이터베이스 데이터를 저장 나중에 데이터를 요청하면 다시 데이터를 제공 로그 연속된 추가 전용 레코드 색인 데이터베이스에서 특정 키의 값을 효율적으로 찾기 위해서는 데이터베이스 파일을 처음부터 끝까지 스캔하는 것 외에, 색인이 필요 색인은 질의 성능에 영향을 줌. 어떤 종류의 색인이라도 대개 쓰기 속도를 느리게 만들음. 그래서 애플리케이션 개발자나 데이터베이스 관리자가 애플리케이션의 질의 패턴을 활용해 수동적으로 색인을 선택 필요 이상으로 오버헤드를 발생시키지 않으면서 애플리케이션에 가장 큰 이익을 안겨주는 색인을 선택할 수 있음 키-값 저장소는 해시 맵(해시 테이블)로 구현 Sorted String Table(SS Table) 키-값 쌍을 키로 정렬한 형식 병합 정렬 알고리즘에서 사용하는 방식과 유사한..
Kubernetes 배포 시 가능한 hook 들 + 특정 스크립트 hook으로 실행하기 AWS ECS(관리형 컨테이너)나 CodeDeploy에는 위와 같은 LifeCycle이 있어, 해당 단계에 hook을 걸 수 있다. hook이란? 배포 Life Cycle의 특정한 부분에 개입할 수 있게 해준다. version: 0.0 os: linux files: - source: /index.html destination: /var/www/html hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location..
Mac ssh to docker-desktop node https://github.com/luksa/kubectl-plugins GitHub - luksa/kubectl-plugins: My own plugins for kubectl My own plugins for kubectl. Contribute to luksa/kubectl-plugins development by creating an account on GitHub. github.com 위 플러그인을 사용한다. /usr/local/bin 위치에 kubectl-ssh 파일을 아래의 내용으로 생성한다. https://github.com/luksa/kubectl-plugins/blob/master/kubectl-ssh chmod +x kubectl-ssh kubectl-ssh node docker-des..