흔히 말하는 데이터파이프라인은 4단계로 구성되어있다.
수집 - 정제 - 적재 - 분석 단계다.
이에 대해서 간략히 설명해보면
수집 : 실질적으로 데이터를 가져오는 부분. 어떤 데이터를 사용할지에 대해서 미리 논의가 필요하다.
정제 : 로우데이터를 그대로 가져와도 사용하기 불편하기때문에, 이를 비즈니스에서 사용하기 편하게 가공하는것이다.
적재 : 데이터 마트, 혹은 데이터테이블에 데이터를 적재하는과정이다.
분석 : 데이터사이언스분들이 해야할 일이다. 데이터를 기반으로 인사이트를 도출해낸다.
오늘 이야기할 내용은 ‘수집’ 부분에 대한 내용이다.
왜 문제가 되는가?
를 이해하려면 수집기가 작동하는 방식을 이해해야한다. 여기서는 Filebeat를 예로 들었다.
Filebeat에서의 순서는
구성파일을 읽고(일반적으로 filebeat.yml) → 해당 파일에 지정된 설정을 확인하고(output.{}) → 출력 연결을 시도하고(established됨) → 연결을 유지하며 → 일정한 시간마다 전송한다.
여기서 중요한점은 ‘한번 연결된 output지점에 대해서 계속 connection을 가지고 있다는것’ 이라는것이다.
connection을 가지고있다면, 포트(default는 5044) 를 계속 물고있을것이며 지정된 시간마다 수집기가 작동하여 파일을 가져온다.
그래서 진짜 문제는 뭐냐면
그래서 진짜 문제는 수집기가 진짜 데이터를 잘 가져오고있는지 알아차리는 단계가 ‘적재’ 단계 라는것이다.
현재는 ELK를 기반으로 하는 파이프라인을 사용중이고, Beats에서 데이터를 수집해서 Logstash의 filter로 넣고, 이를 ES에 저장하고 있다.
근데, 데이터가 잘 들어오고있는지 확인하는 방법으로 ES에서 DSL쿼리를 날려서 확인하는 방식을 사용하고 있는데, 너무 비효율적인것같다.
사실 이럴수밖에 없는 이유가 있다. VM에 Beats를 설치해서 데이터르 가져오고있는데, VM의 갯수가 얼마 안된다면 로그를 직접 확인하면 된다.
그러나, VM의 갯수가 많다면? VM이 10개, 100개, 1000개가 된다면?
현재의 체계로는 데이터수집단계에서 절대 확인할수 없었다.
(처음 설치할때는 connection established 로그랑, 로그 발생한것만 확인하지, 누가 전부 모니터링 하고있을수있나? ㅠㅠ 말이 안되지
그래도 해결책이 없는거같진않다.
곰곰히 생각해봤는데 불가능한건 아닌것같다.
생각한 아이디어는 Beats는 ‘output에 연결하는 부분’ 과 ‘harvest가 데이터를 보내는 부분’ 으로 구분되니까, 이거를 구분시켜서 받을수 있지않나? 라는거다
Airflow를 사용해서 Connection Established 시키는 부분과, Harvest를 작동시키는 부분을 둘로 나누면 가능할것같다.
이렇게 한다면 VM이 1개가 되었든, 100개가 되었든 Harvest가 작동을 잘하고 있는지 확인도 가능하고,
내가 원하는 주기마다 데이터를 가져오는것도 가능하며
무엇보다 데이터를 적재하는 단계가 아니라, 수집하는 단계에서 확인할수 있다는게 제일 좋은것같다.
물론 리소스는 또다른 문제니까, 나중에 다시한번 확인해봐야할것같다.
'프로젝트의 고민들' 카테고리의 다른 글
티스토리 포스팅 할때 동글(Dong-gle) 사용해본 후기 (2) | 2023.11.13 |
---|---|
올바르게 일하기 (3) | 2023.09.21 |
제 PC 에서는 되는데요? (3) | 2023.09.06 |
어쩌다 홈 PC 클러스터링 (2) | 2023.03.06 |
데이터 인프라는 K8s에 올라가있는게 좋을까 (진짜모름) (0) | 2023.02.19 |