에이전트가 데이터를 수집하는 친구를 부르는 용어 fluentd(ruby : 호환성 낮음) → fluentbit(c : 라이트하고 호환성 높음)
plugin, config 설정을 통해 아웃풋 타겟팅 설정 필요 로그는 되게 다양한 형태(raw log)
카프카는 큐니까 받고 전달하는 역할(메시지 큐) 그래서 로그를 가공하고 추출할 수는 없음 프로세싱 능력이 없음. 주는 놈과 사용하는 놈만 있고, 그걸 그냥 받고 전달하는 역할(스토리지 역할)
그래서 분석(data processing & parsing : 형태는 실행파일[python, go, etc…]), 저장(persistent 공간에 : data storage = RDBMS, TimeseriesDB(시계열), clickhouse(대용량 데이터 처리), elasticsearch(풀텍스트 검색 용이)이 필요
원래는 저장을 별도로 해야하는데, 너무 많이 쓰다보니까 connector라는 개념이 존재(웬만하면 하지말기) 파이썬에는 celery라는게 존재. 쿠버네티스를 사용한다고 하면, celery말고 파드 단위로 워커를 만들면 문제는 없을거야.
API 서버가 데이터 처리. UI가 데이터를 Polling는건 “실시간”이 아님. 그러니 WebSocket이 필요. 그러나 웹소켓이 여러 DB가 변경되었는지 추적하고 있지는 못하므로, 웹소켓과 DB들 사이에서 카프카처럼 무한루프를 돌면서 데이터 변화가 있는지 감지하고 이를 웹소켓에 전달해서 클라이언트에 데이터를 전송해야함
카프카 큐를 여러 개 쓰면서 분석하는 역할에서 이상 감지해야함. 동시에 raw_data를 웹 소켓 쪽에 보내서 UI에 보낼 필요도 있음. 분석하고 나서도 raw log를 normalized_topic 카프카 큐로 보낼 수도 있음
이렇듯이 카프카는 무한 확장할 수 있음 또 다르게는, 큐를 레벨별로 나눠서 토픽을 더 쪼개서 트래픽을 체이닝 걸 수도 있음. 또는 분석 실행 파일 파트를 여러 개 만들어서 여러 토픽에 대해서 분석 및 처리하도록 잘게 쪼갤 수도 있음
에이전트는 프로그램이니, OS 위에 올라가야함. 사용자에게 configuration을 제공해줘야함. fluentbit에서 플러그인을 보면서 어떤 데이터를 수집하는지 체크해야함(이걸 분석했어야지)
쿠버네티스에서, 클러스터는 노드(EC2, 서버)를 홀수 개 단위로 구성. 노드 내에 있는 컴퓨터가 파드 파드 단위로 로그를 받을 수도, 클러스터 단위로 로그를 받을 수도 있음. 아니면 AWS에는 CloudWatch, Logs 서비스가 존재. 모든 서비스가 설정만 해주면 임의의 클라우드 서비스들이 CloudWatch, Logs로 데이터가 수집됨(타겟이 확장됨)
우선 우리는, 카프카 큐를 어떤 형태로 사용할지 설계할 필요가 존재. 또한 DB를 몇 개 쓸 지 체크해야함. 카프카를 잘 쓰는 사람들은 정말 여러 메시지 큐를 사용해서 체이닝(파이프라이닝)을 통해 잘게 나눈다.
UI는, 타겟 설정 및 Configuration 가이드가 필요. 그래야 로그를 수집하지. 그리고 이상탐지 기준이 없잖아. 그러면 사용자가 지표 기준을 제공하고, 그 기준을 통해서 이상 탐지를 저장해두고 notification || 웹소켓 전달 필요
대용량 데이터를 어떻게 DB에 다 넣어. 그 중 대부분은 쓸모없는 내용인거고, 웬만하면 S3에 넣어두는 경우가 많음(raw data는). 그러니 ES, TimeseriesDB 같은 것들은 비싸니 소중한 데이터만 저장하려고 노력해야해.
그리고 이것까진 해내야만 하는거고, 이상탐지까지 해내도록 해야지. APM같은 경우엔 트레이스가 가능하기 때문에, 어느 부분이 느린건지 등을 알아야함. 그래서 로그를 찍을 수 있도록 SDK, 함수 등을 제공해야함? 어떤 로그가 어떤 함수에서 시간이 얼마나 걸려서 얼마나 자주 찍히는지 등을 표현할 수 있어야함..
RUM(Real User Monitoring)같은 Measurement 데이터도 기록해서 처리하고 UI에 표현하기도 함
APM을 기준으로 애플리케이션 로그를 어떻게 표현하는지 분석해서 MVP까지 표현해내라.
카프카를 쓰면 웬만하면 안 죽을텐데, 분석 프로그램 같은 건 죽을 수 있지만 쿠버네티스나 ECS로 하면 자동 복구가 가능하므로 문제가 없을 거다.