본문 바로가기
Hand-made Software

Cronometik

by romainefabula 2017. 12. 15.

Cronometik

 

잡스케줄러인 Cronometik(크로노메틱)입니다. 쉽게 무료로 쓸 수 있는 잡스케줄러가 없어서 대부분 crontab에 등록해서 사용하는데, 관리도 힘들고 결과를 확인하기도 힘들어 보여서 만들어 봤습니다. Java 기반으로 만들어서 JDK만 있으면 기동할 수 있습니다. 단, 같은 서버 안에서만 명령을 실행할 수 있고, 원격에 있는 명령은 실행할 수 없습니다.

 

이 프로그램은 무료로 공개하며, 저는 이를 사용함으로 인해 발생하는 문제에 대해서는 책임을 지지 않습니다.

제가 테스트를 많이 해 봤지만 혹시 문제가 생길 수 있으니 충분히 테스트하신 후에 사용하세요.

소스도 공개하고 싶지만 오래 전에 만든 거라 찾지 못 하겠네요.

디컴파일해서 원하시는대로 마음껏 무료로 사용하세요.

원격서버 호출 가능한 에이전트를 만들어 붙이면 거의 완성형이 될 것 같네요.

 

사전준비

- JDK 1.7 이상이 설치되어 있어야 합니다.

 

설치파일

<Maria DB용>

cronometik-1.0-maria.zip

sql_maria.txt

 

<Oracle용>

cronometik-1.0-oracle.zip

sql_oracle.txt

 

설치과정

1. 사용하는 DB에 따라 sql_maria.txt나 sql_oracle.txt에 있는 테이블 생성 스크립트를 실행합니다.

2. cronometik-1.0.zip 파일의 압축을 풀면 cronometik 디렉토리가 생성됩니다.

3 cronometik/config/jdbc.properties 파일을 열고 DB 접속정보를 입력합니다.

4. 각 DB에 맞는 JDBC Driver를 다운로드해서 cronometik/webapps/ROOT/WEB-INF/lib 에 저장합니다.

   아래 링크에서 자신이 사용하는 DB와 Java 버전에 맞는 드라이버를 받으세요.

   - MariaDB용 JDBC Driver 다운로드 : https://mariadb.com/downloads/connector

   - Oracle용 JDBC Driver 다운로드 : http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

 

서버 기동

- 일반적으로 JAVA_HOME 변수가 선언되어 있어야 기동됩니다.

- Windows : cronometik/bin/startup.bat 을 실행합니다.

- Linux/Unix : cronometik/bin/startup.sh 를 실행합니다.

 

로그 확인

- cronometik/logs/의 파일

 

처음 화면 접속

- 웹브라우저로 http://서버IP:8088 에 접속합니다.

- 아래 화면이 뜨면 성공적으로 서버가 기동되었고, DB도 접속이 된 것입니다.

- 이 화면에서 '관리자 계정 생성' 버튼을 클릭하세요.

※ 서버는 8088, 8005, 8009 포트를 사용하므로 이미 이 포트를 사용하는 프로그램이 있다면 충돌로 기동이 되지 않습니다. 이 경우, cronometik/conf/server.xml을 열어 충돌하는 포트를 변경하고 저장하고 다시 기동해 보세요.

 

관리자 패스워드 입력

- 8자리 이상의 패스워드를 2번 입력하고 '저장' 버튼을 클릭합니다.

 

관리자 로그인

- 아이디에 admin, 패스워드에 앞 페이지에서 입력한 패스워드를 입력하고 '로그인' 버튼을 클릭합니다.

 

Job 목록 화면

- 로그인에 성공하면 등록된 Job 목록 조회화면이 나타납니다.

- 여기서 검색어를 이용해 원하는 Job을 검색할 수도 있습니다.

- Job 목록 항목 설명

  . 이름 : Job 이름

  . CRON : 스케줄을 등록할 CRON 표현식. 물음표에 마우스를 올려 나오는 설명에 따라 입력합니다.

  . 명령 : 스케줄에 따라 실행할 명령으로, 절대경로를 입력합니다.

  . 파라미터 : 명령을 실행할 때 사용될 파라미터입니다. 물음표에 마우스를 올리면 나오는 변수들을 입력하면 Job 실행시간에 해당하는 값이 자동으로 파라미터로 사용됩니다.

  . 활성 : Job의 활성여부로, 활성 상태면 스케줄에 등록된 시간에 Job이 자동으로 실행되고, 비활성 상태이면 자동실행이 되지 않습니다.

  . 최종실행 : 이 Job이 가장 최근에 실행되었던 시간

  . 최종상태 : 최근 실행된 Job의 현재상태

  . 다음실행 : 현재 시간 이후에 첫번째 실행 예정시간

 

Job 추가

- '추가' 버튼을 클릭하면 Job 목록 맨 아래에 새로운 Job 정보를 입력할 수 있는 행이 나타납니다.

- 여기에 Job 정보를 입력하고 '저장' 버튼을 클릭합니다.

 

Job 추가 결과

- Job이 저장되면 아래와 같이 저장된 정보가 나타나며, CRON 표현식에 따라 현재로부터 가장 가까운 시간의 Job 실행시간을 '다음실행' 컬럼에 표시합니다.

 

Job 실행대기 목록

- 실행대기큐에 저장되어 있는 Job 목록과 다음실행시간이 표시됩니다.

 

Job 수정

- Job 목록에서 톱니모양 이미지를 클릭하면 아래와 같이 메뉴가 나타납니다.

- 여기서 '수정'을 클릭합니다.

 

Job 내용 수정

- 바꾸고 싶은 내용을 변경하고 '저장' 버튼을 클릭합니다.

 

Job 수정 결과

- 위에서 변경한대로 CRON 표현식이 저장되었고, 다음실행시간도 바뀌었습니다.

 

Job 비활성화

- 톱니 이미지를 클릭하고 '비활성화'를 클릭합니다.

 

Job 비활성화 결과

- 비활성화되면 배경색이 어두운 색으로 바뀌고 활성컬럼의 이미지가 빨간색 X 이미지로 바뀝니다.

- 비활성화된 Job은 그 이후로 CRON 표현식에 해당하는 시간이 되어서 Job이 실행되지 않습니다.

 

Job 활성화

- 톱니 이미지를 클릭하고 '활성화'를 클릭합니다.

 

Job 수동실행

- 톱니 이미지를 클릭하고 '수동실행'을 클릭합니다.

- 여기서 파라미터를 변경하거나 추가한 후에 '수동실행'을 클릭하면 스케줄에 상관없이 Job이 즉시 실행됩니다.

- 이 기능은 원래 스케줄에 Job 실행중 오류가 발생해서 재처리를 해야 하거나, 비정기로 수행해야 하는 Job일 경우 이렇게 실행이 가능합니다.

 

실행중인 Job 목록 조회

- 왼쪽 메뉴에서 'Job 실행중 목록'을 클릭하면 현재 실행중인 Job 목록이 표시됩니다.

- 이 화면이 뜨면 매 3초마다 계속 리프레쉬됩니다.

 

Job 목록

- 한번이라도 Job이 실행된 후에는 Job목록의 최종실행과 최종상태 컬럼에 데이터가 표시된다.

 

Job 실행이력 조회

- 톱니 이미지를 클릭하고 '실행이력'을 클릭합니다.

 

Job 실행이력 확인

- Job 실행이력 화면에 선택한 Job의 실행이력이 표시됩니다.

- 컬럼 설명

  . 실행ID : 매 Job 실행할 때마다 새롭게 생성되는 ID
  . CRON : Job을 실행할 때 사용된 CRON 표현식
  . 명령 : Job을 실행할 때 사용된 명령
  . 파라미터 : Job을 실행할 때 사용된 파라미터
  . 호스트명 : Job이 실행된 서버의 호스트명
  . 시작 : Job 실행이 시작된 시간
  . 종료 : Job 실행이 종료된 시간
  . 초 : Job 실행에 소요된 시간
  . 상태 : Job 실행의 현재 상태
  . 성공 : Job 실행 성공여부(성공은 초록색, 실패는 빨간색)
  . 에러 : 실행이 실패한 경우 여기에 일부 내용이 표시되며, 여기에 마우스를 올리면 전체 에러메시지가 표시됩니다.

 

상단 메뉴에서 사용자 관리 메뉴는 너무나 일반적인 내용이라 설명을 생략합니다.

여기서 생성하는 사용자는 모든 화면에서 조회만 가능한 사용자입니다. 

Job의 추가/변경/삭제하는 권한은 맨처음 설치시 생성한 admin 계정으로만 가능합니다.

 

 

사용하시면서 에러가 있거나 질문이 있으면 글 남겨 주세요.