하고자 하는 업무의 개요부터 말씀 드리면
다른 어플에서 쌓고 있는 로그파일을 열어 실시간으로 쌓이는 로그를 갱신되는 부분만 파악하여 행단위 처리를 하는 프로그램을 개발하고자 합니다.
상세한 내용은
특정 어플이나 윈도우 서비스에서 발생되는 로그가 일정 단위로 생성이 됩니다. (1시간 또는 1일 단위 등)
예를 들면 1일 단위로 로그파일을 생성 한다면
20230611.log
20230612.log
20230613.log
이렇게 날짜.log 파일이 생성되는데요. 로그파일은 특정 어플이나 윈도우 서비스 등에서 자동으로 생성되고 제가 만들고자 하는 프로그램이 로그파일이 생성되는지 주기적으로 확인하다가 생성이 되면 해당 파일을 열어서 쌓이는 Log를 행단위로 실시간으로 주기적으로 읽어들여 어떤 처리를 하고자 합니다.
예를 들면 내용을 행단위로 읽어들여 DB로 입력 또는 내용을 확인후 Error에 대한 알람 등.
우선 파일을 읽어들이고 파일의 내용의 변화를 감지해야 하는 작업이 필요할 것으로 보여집니다.
그런데 해당 파일은 다른 어플(프로세스)에서 열려있어 동시 접근에 대한 문제(단순 읽기만 필요하긴 합니다)와 파일의 내용이 실시간으로 갱신되는지를 확인하고 갱신되는 내용만 가져와서 처리를 하는 문제.
그리고 하루 단위로 파일 쌓이는 Log 양이 늘어나면 늘어날수록 처리에 문제가 발생할 가능성 등
해당 내용을 개발하기 위해 어떤 부분을 확인해 볼 수 있을까요?
조언 부탁드립니다. 읽어주셔서 감사합니다.
elastic 에 한표입니다 상당히 까다로운 개발일것 같네요 파일생성 이 끝난후 시간차 read 라면 방법 이 많겠지만 실시간 이면 고려할것도많고 성능이슈도있고 방식도 달라져야 해서
동시접근할것 이 아니라 client 에게 바로 쏘고 이걸또 서버에 쏴서 후에 write 하는 방식이 어야 하는것 아닌지 아니연 쏘는것 write 를 동시에
의견 감사합니다. ^^
사실은 elk stack에 filebeat을 직접 개발하고자 함? 이라고 할까요?
해당 내용을 직접 구현해보고 싶음도 있고요. 로그의 내용을 kafka로 보내서 중앙관리의 목적이긴 합니다.
찾아보니 serilog에서 바로 kafka로 보내주는 기능이 있긴 하네요.