분류 전체보기 (262) 썸네일형 리스트형 6월 회고 업무 EC2 골든 이미지에 기존 로그 수집 프로그램인 Logstash 대신 Fluentd를 세팅하는 업무를 끝냈다. 생각 외로 작업이 지연되어 꽤 스트레스를 받았는데, 자그마한 것을 하나씩 레고처럼 쌓아 올리더라도 초기부터 철저하게, 꼼꼼히 하나하나 검증하는 자세의 필요성을 실감했다. 이번 작업을 통해서, 나는 처음 접하는 오픈 소스라도 공식 문서를 참조하며 원하는 기능을, 원하는 성능을 내도록 튜닝을 할 수 있는 사람이라는 것을 알았다. 요건 팀 내에서도 인정받은 부분이라 기쁘다. Fluentd로 S3 output path에 field(key) 값 넣기 Fluentd tail input 로그 1개 손실 & 로그 느리게 들어오는 이유 해결 Fluent Bit을 다루면서 C 코드를 보다가 Fluentd의 .. 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~5월 회고 업무 회사 기술 블로그에 글을 업로드했다! (고료도 받았다 🎉) 사수님이 5고에 걸쳐 봐주셨는데 😇 그만큼 빠꾸도 많이 맞았지만 여러모로 글을 다듬으며 보완할 수 있는 계기가 되었다. EKS 환경에서 로그 모니터링을 꾸준히 하고, 여러 가지 에러 로그를 만나며 대응을 했다. 로그를 보며 문제의 근본적인 원인을 찾고 해결해나가는 법을 배우고 있다. 업무 시 마주치는 문제 상황에서 어떻게 처리해야 하는지 점점 체감되고 있다. 예전에는 이거 어떻게 하죠???? 하는 뉘앙스로 물어봤다면 이제는 문제의 원인을 나름 찾아보고, 해결책도 찾아보고, 근데 거기엔 이런 문제가 있더라고요. 그러면 이 방법은 어떨까요?? 하는 식으로 여쭤보고 있다. 3달 전에는 못 하던 것을 할 수 있게 되었다. Fluent Bit에는 오.. 데이터 중심 애플리케이션 설계 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.. 이전 1 2 3 4 5 6 7 8 ··· 33 다음