JuyeoungJun / cron-monitoring

for cron-monitoring
0 stars 0 forks source link

3주차 이슈 #13

Closed JuyeoungJun closed 3 years ago

JuyeoungJun commented 3 years ago

In GitLab by @gm1902902 on May 25, 2021, 10:51

JuyeoungJun commented 3 years ago

In GitLab by @gm2202983 on May 25, 2021, 16:10

크론 중복 실행 고려

질문)

먼저 실행된 cron 스크립트가 끝나지 않고 "중복 실행" 이 되는 경우를 고려해야 하는지 궁금합니다.

상세 내용)

"중복 실행" : < * 실행파일 > 와 같이 매 분마다 실행되는 크론 스케줄이 있고 이 스케줄에 의해 진행되는 잡이 1분 초과 작업일때 선행 작업이 완료되지 않았음에도 잡이 스케줄링 되는 경우를 "중복 실행" 이라고 하겠습니다.

일반적으로 크론을 사용하는 경우 중복실행을 하지 않는 배치성 작업들을 크론으로 쓴다고 알고있습니다. 따라서 사용자들이 cron 작업을 의도적으로 중복 실행하는 케이스까지 고려해야 할 지 질문드립니다.

질문 이유)

로그 묶음 단위를 결정 할 때 크론 스케줄 단위로 정할 지, 크론 스케줄에 의해 진행되는 잡(process) 단위로 정할지 결정하기 위해 질문드립니다.

JuyeoungJun commented 3 years ago

In GitLab by @gm1902902 on May 25, 2021, 16:24

제 생각엔 중복실행이 되는 케이스도 고려를 해야합니다.

모든 작업의 실행(process)은 별개의 실행 내역(실행시각, 종료시각), 로그를 가지고 있어야 합니다.

로그 조회 플로우는

  1. 등록된 커맨드(크론 스케줄) 리스트 조회
  2. 커맨드 선택 -> 커맨드 실행 내역 리스트 조회
  3. 실행 내역 선택 -> 해당 실행 내역의 로그 조회

정도 일 것 같네요

JuyeoungJun commented 3 years ago

In GitLab by @gm2202983 on May 25, 2021, 16:25

넵 알겠습니다. 감사합니다~!

JuyeoungJun commented 3 years ago

In GitLab by @gm2202985 on May 26, 2021, 09:11

Cron 이 실행하는 프로그램의 종류

질문

Cron 이 실행하는 프로그램이 서버 프로그램인지 시스템 프로그램인지 아니면 둘 다 실행하는 지 여부가 궁금합니다.

상세 내용

Cron 을 실행하는 서버에서 직접 모니터링 서버로 Log 를 남기는 방법에 대해 생각하는 중에 Cron 이 실행하는 프로그램 종류에 따라 Log 를 모니터링 서버로 직접 전송하는 방법이 상이할 수 있겠다 생각이 들어서 질문드립니다.

JuyeoungJun commented 3 years ago

In GitLab by @gm1902902 on May 26, 2021, 10:47

준님이 생각하시는 서버프로그램과 시스템 프로그램이 어떤걸까요? 제 생각에는 크론이 실행하는 프로그램 종류와 Log 를 모니터링 서버로 직접 전송하는 방법은 직접적인 연관이 없어 보여서요

JuyeoungJun commented 3 years ago

In GitLab by @gm2202981 on May 26, 2021, 11:20

저희가 생각하는 서버 프로그램은 톰캣, 아파치와 같은 서버이고 시스템 프로그램은 CPU 사용량과 같은 시스템 정보를 확인하는 프로그램입니다.

어제 회의 이후 크론 로그를 DB에 남기는 경우

방법 1) 파일워치를 통해 로그감지를 해서 직접 DB에남기는 방법(기존에 말씀드렸던 파일워치 방법) 과 방법 2) 유저가 직접 DB에 로그를 쌓도록 컨벤션만 제공하는 방법을 추가 고려했습니다.

이때, 방법 2를 사용하는 경우 크론 잡 프로그램이

-서버 프로그램이라면(ex - 톰캣) 서버에 발생하는 로그를 axios나 Post같은 방법으로 저희가 제공하는 모니터링 서버의 url로 로그가 쌓이고 있다는 신호를 보내도록 컨벤션을 제공함과 더불어 직접 DB에 데이터를 쌓도록 컨벤션을 제공 할 수 있지만 ,

-시스템 프로그램 같은 경우에는 위와 같은 작업이 유저가 하는게 어려울 것 같아서 질문드렸습니다. 어려울 것 같다고 생각한 이유는 c언어의 경우 통신 프로그램을 짤 수는 있겠지만 매우 번거롭다고 생각하기 때문입니다.

JuyeoungJun commented 3 years ago

In GitLab by @gm2202981 on May 26, 2021, 11:47

질문

한 프로그램을 동일한 Cron expression으로 등록한 복수의 커맨드가 존재한 경우, 모니터링 서버에서 이런 복수의 커맨드를 별도로 취급해서 개별 커맨드마다 실행 내역을 남겨야 하는지, 아니면 동일한 커맨드로 취급하고 해당 커맨드의 실행내역을 하나의 커맨드(크론 스케줄)에서 보여줘야 할지 알고 싶습니다.

예시로, crontab:

* * * * * asdasd.sh
* * * * * asdasd.sh
* * * * * asdasd.sh

위와 같은 경우, 로그 조회 플로우에서 하나의 커맨드로 인식할지, 아니면 별개로 구분해야 하는지 확인받고 싶습니다.

상세내용

위처럼 같은 Cron expression으로 동시에 같은 프로그램을 여러 번 실행시키는 경우, 병렬적으로 작동하는 동일한 프로그램(다른 프로세스)의 로그를 모니터링하는 것인데, 이 경우 서로 다른 로그를 남기더라도 결국 같은 프로그램에서 발생하는 로그이고, 그 로그가 크론에 의해 변경되는 것이 아니기 때문에 프로세스는 별도로 구분하더라도 커맨드(크론 스케줄)를 분리할 필요성이 없다고 생각합니다.

JuyeoungJun commented 3 years ago

In GitLab by @gm1902902 on May 26, 2021, 11:56

저런식으로 동일한 프로그램이 동일한 스케줄로 등록되어 있다면 개발자의 의도는 별개의 프로그램으로 인식할 것 같습니다(본적은 없습니다) 그렇다면 별개로 구분해야 사용자가 로그/실행내역 확인 시 자연스러울것 같네요

JuyeoungJun commented 3 years ago

In GitLab by @gm1902902 on May 26, 2021, 11:59

사용자가 프로그램을 만들 때, 관리 서비스를 이용하기 위해 네트워크 통신을 직접 구현해야 한다면 사용도가 떨어질 것 같습니다. 어떤 프로그램을 구현하든 관리 서버와 통신하는 클라이언트단은 제공을 해주는게 더 나아보이네요(각 언어별 sdk, 프로세스 래퍼, 사이드카 etc...)

JuyeoungJun commented 3 years ago

In GitLab by @gm2202981 on May 26, 2021, 12:46

답변 감사합니다!!

JuyeoungJun commented 3 years ago

In GitLab by @gm2202985 on May 26, 2021, 12:47

답변 감사드립니다!