<aside> 💡 ADR: promtail 미들웨어를 사용할지 python library를 사용할지
context
loki에 서버에서 발생한 로그를 넘겨주기 위하여 사용되는 여러가지 방법이 있다. 이 중에 loki에서 자체적으로 사용하라고 추천해주고 가장 통합성이 좋은 툴은 promtail이다. promtail은 편리하게 loki에서 log를 적재할 수 있는 기능들을 제공하고, 간단하고 신뢰성 높게 loki에게 log를 전달할 수 있다는 장점이 있다. 하지만 현재 상황은 log 저장을 위한 library를 만들고 서버가 시작될 때 동적으로 로그를 전달할 수 있는 시스템을 구축해야 하는 상황이다. promtail을 이용하기 위해서는 해당 서버에 docker 환경에 컨테이너를 만들어 이를 추가하거나, 백그라운드 실행으로 promtail을 넣어야 한다.
만약에 library를 사용해서 loki에 로그를 적재한다면 아키텍처에 관한 고민을 너무 깊게 할 필요없이 바로바로 log를 loki에 전달할 수 있을 것이다.
decision python-logging-loki library를 import해서 사용하는 방향으로 결정. 해당 라이브러리가 사용해보고 git issue를 확인하면서 그렇게 안정적이지는 않다고 느꼈으나, 복잡한 아키텍처는 지양하는 방향으로 가닥을 잡았고 동적으로 여러 서비스에 적용하고 설계를 안정적으로 하기에는 라이브러리로 직접 loki에 log를 적재하는 것이 맞다고 판단했기 때문이다.
consequence promtail에서 제공하던 데이터 전송 신뢰성을 잃게 되고, auth 관련해서 python-logging-loki library에 해결하기 어려운 문제가 있어 directory 이름이 fake로 강제되는 부분이 trade-off로 작용한다. 하지만 log를 loki를 이용하여 간단하게 적재하자, library화를 통해서 서비스가 늘어나더라도 간편하게 로깅을 할 수 있도록 하자 라는 측면에서 생각해 보았을 때 이러한 결정이 어울린다고 생각한다.
</aside>