Skip to content

etl crontab调度

hw2499 edited this page Jul 28, 2024 · 18 revisions

默认情况etl-designer已经集成到etl_crontab服务中,启动etl_crontab服务后,通过浏览器访问后台管理系统进行使用

支持配置调度来执行etl-engine任务

  1. 支持通过crontab表达式配置并执行周期性etl-engine任务
  2. 支持将调度执行日志输出到数据库中
  3. 日志支持适配输出到mysql或postgre或oracle或sqlserver
  4. 支持将执行失败情况发送预警通知

功能特性

  1. etl_crontab支持启动http/https服务(整合etl-designer和etl-crontab功能)。
  2. etl_crontab服务端暴露接口支持https双向认证,支持Basic Auth认证、支持Token认证功能。
  3. etl_crontab支持执行过程中,失败情况通过http/https协议发送预警功能(根据用户需求提供sms发送预警)。
  4. etl_crontab支持集中模式部署和分离模式部署两种场景,方便用户根据实际场景进行集成。
  5. etl_crontab为实现高可用,支持自动向consul进行服务注册。
  6. etl_crontab支持浏览http|mq 阻塞式服务的心跳轨迹。

执行方式

etl_crontab.exe -fileUrl conf.cron

自动生成使用授权

使用体验到期后,如希望继续试用,可通过下面方式自行生成试用授权

etl_crontab.exe -freeLicense true

访问方式

访问管理后台,默认浏览http://127.0.0.1:11100/etl_designer
登录用户名称admin,登录用户口令123456

conf.cron配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Jobs logLevel="trace" showLogo="true" port="11100" engineFile="d:/etl_engine.exe" confDir="d:/" startHttp="true" outDbLog="true" alterLog="false" serverCertFile="" serverKeyFile="" releasePage="false" webSocketPort="11101">
</Jobs>
  1. logLevel 控制台输出日志级别(info,debug,trace)
  2. showLogo 控制台输出logo
  3. port 默认启动http/https服务的监听端口(默认11100)
  4. engineFile 引擎文件所在位置(根据实际部署情况修改)
  5. confDir 任务配置文件的根目录(根据实际部署情况修改)
  6. startHttp 是否启动http/https服务
  7. outDbLog 是否输出日志信息到日志数据库
  8. alterLog 是否输出预警信息
  9. serverCertFile https服务证书文件位置
  10. serverKeyFile https服务秘钥文件位置
  11. releasePage 是否允许第三方系统集成本系统
  12. webSocketPort 配置监听端口号(默认11101),向前端推送系统控制台日志信息,不配置则关闭该功能.
  13. ip 配置WEBUI监听IP,配合port使用.
  14. ip2 配置日志监控监听IP,配合webSocketPort使用.

配置文件sys.properties

该配置文件与etl_crontab在一个目录下。

db.type=mysql
db.url=127.0.0.1:3306
db.database=db1
db.username=root
db.password=123456

auth.type=file
auth.username=admin
auth.password=paI+Td8SvwQtpZwOsIyO6Q==
auth.key=hskj_123456_hskj
auth.usetoken=true1
auth.basicauth=true1

#auth.authdbtype=mysql
#auth.authdburl=127.0.0.1:3306
#auth.authdbdatabase=db1
#auth.authdbusername=root
#auth.authdbpassword=123456

alter.type=http
alter.http.url=http://127.0.0.1:18000/fr/postDeviceNotify
alter.http.method=post
alter.http.contenttype=application/x-www-form-urlencoded
alter.http.fixedtoken=
alter.http.username=
alter.http.password=
alter.http.extinfo=devicdCode=001;address=北京
alter.http.isdetail=false

##heartbeat
#service.http.heartbeat.flag=true
#service.http.heartbeat.interval=60
#service.mq.heartbeat.flag=true
#service.mq.heartbeat.interval=60
#service.prometheus.exporter.heartbeat.flag=true1
#service.prometheus.exporter.heartbeat.interval=60
##redis
#redis.url=127.0.0.1:16379
#redis.password=123456
#redis.database=0
#redis.pool.max.active.connection=0
#redis.pool.max.idle.connection=16
#redis.pool.idle.timeout=300

db.参数 日志数据输出的数据库配置相关信息

  • db.type 连接数据库类型,支持mysql,oracle,postgre,sqlserver
  • db.url 连接数据库URL信息
  • db.database 连接数据库DB信息
  • db.username 连接数据库用户名称
  • db.password 连接数据库用户口令

auth.参数 登录认证配置相关信息

  • auth.type 支持file和db类型,db支持mysql,oracle,postgre,sqlserver
  • auth.username 登录用户名称
  • auth.password 登录口令(密文)paI+Td8SvwQtpZwOsIyO6Q== 匹配明文123456
  • auth.key 加密盐值(不可修改)

alter.参数 输出预警信息

  • alter.type 支持类型,默认http
  • alter.http.url http/https服务端地址
  • alter.http.method post方式
  • alter.http.contenttype header头信息,推荐使用application/x-www-form-urlencoded
  • alter.http.fixedtoken 固定token,需要服务端支持
  • alter.http.username baseAuth认证用户名称,需要服务端支持
  • alter.http.password baseAuth认证用户密码,需要服务端支持
  • alter.http.extinfo 额外信息,需要服务端支持
  • alter.http.isdetail 是否输出日志明细

service.参数 服务心跳配置

  • service.http.heartbeat.flag 是否输出http服务心跳,true代表输出
  • service.http.heartbeat.interval 心跳输出频率,默认60秒
  • service.mq.heartbeat.flag 是否输出mq心跳,true代表输出
  • service.mq.heartbeat.interval 心跳输出频率,默认60秒

redis.参数 配合服务心跳使用

  • redis.url redis服务器地址
  • redis.password redis服务器密码
  • redis.database 数据库ID号
  • redis.pool.max.active.connection 最大激活连接
  • redis.pool.max.idle.connection 最大空闲连接
  • redis.pool.idle.timeout 空闲超时时间


更多配置信息持续更新...

日志数据库表结构

mysql数据库脚本

CREATE DATABASE  `db1`  ;

USE `db1`;

/*Table structure for table `t_etl_logs` */

DROP TABLE IF EXISTS `t_etl_logs`;

CREATE TABLE `t_etl_logs` (
  `UUID` varchar(32) NOT NULL,
  `username` varchar(32) ,
  `flag` varchar(32) DEFAULT '0',
  `taskuuid` varchar(32) DEFAULT NULL,
  `fileurl` varchar(300) DEFAULT NULL,
  `taskdesc` varchar(200) DEFAULT NULL,
  `nodeid` varchar(100) DEFAULT NULL,
  `STATUS` varchar(32) DEFAULT NULL,
  `recordnum` varchar(100) DEFAULT NULL,
  `ERRORS` varchar(300) DEFAULT NULL,
  `writetime` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`UUID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Table structure for table `t_etl_job_list` */

DROP TABLE IF EXISTS `t_etl_job_list`;

CREATE TABLE `t_etl_job_list` (
  `UUID` varchar(32) NOT NULL,
  `username` varchar(32) ,
  `PORT` varchar(32) DEFAULT NULL,
  `jobid` varchar(32) DEFAULT NULL,
  `jobdesc` varchar(300) DEFAULT NULL,
  `STATUS` varchar(32) DEFAULT NULL,
  `ERRORS` varchar(300) DEFAULT NULL,
  `writetime` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`UUID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Table structure for table `t_etl_job_logs` */

DROP TABLE IF EXISTS `t_etl_job_logs`;

CREATE TABLE `t_etl_job_logs` (
  `UUID` varchar(32) NOT NULL,
  `username` varchar(32) ,
  `PORT` varchar(32) DEFAULT NULL,
  `jobuuid` varchar(32) DEFAULT NULL,
  `taskuuid` varchar(32) DEFAULT NULL,
  `cronexpress` varchar(100) DEFAULT NULL,
  `cronfileurl` varchar(300) DEFAULT NULL,
  `graphfileurl` varchar(300) DEFAULT NULL,
  `STATUS` varchar(32) DEFAULT NULL,
  `errors` varchar(300) DEFAULT NULL,
  `writetime` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`UUID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `t_etl_auth_user_info` (
  `username` varchar(32) NOT NULL,
  `password` varchar(100) DEFAULT NULL,
  `writetime` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into t_etl_auth_user_info (username,password,writetime) values ('admin','paI+Td8SvwQtpZwOsIyO6Q==','2022-09-27 10:11:12');

CREATE TABLE t_etl_service_heart (
     UUID varchar(32) NOT NULL,
     extinfo varchar(100) DEFAULT NULL,
     username varchar(32) DEFAULT NULL,
     flag varchar(32) DEFAULT '0',
     type varchar(32) DEFAULT '0',
     taskuuid varchar(32) DEFAULT NULL,
     fileurl varchar(300) DEFAULT NULL,
     taskdesc varchar(200) DEFAULT NULL,
     nodeid varchar(100) DEFAULT NULL,
     STATUS varchar(32) DEFAULT NULL,
     writetime varchar(32) DEFAULT NULL,
     ip VARCHAR(30) DEFAULT NULL,
     PRIMARY KEY (UUID)
);

CREATE TABLE t_etl_ip_logs (
   UUID VARCHAR(32) NOT NULL,
   ip VARCHAR(30) DEFAULT NULL,
   username VARCHAR(50) DEFAULT NULL,
   describer VARCHAR(100) DEFAULT NULL,
   writetime VARCHAR(32) DEFAULT NULL,
   PRIMARY KEY (UUID)
);

Http/Https API 接口

方式 接口名称 接口地址 参数 说明 返回内容
POST 立即运行指定的Job,供外部系统使用 /runJobForGraphFile "jsondata":{ "method":"runjobforgraphfile","username":"u1","graphfile":"d:/读写数据表1.grf","globalargs":"arg1=abc;arg2=上海" } Body:x-www-form-urlencoded {"status":"success","msg":""}

第三方系统集成etl_crontab管理端界面

  1. 为方便第三方系统集成管理端页面,公开管理端URL

    /etldesigner 任务设计器
    /etlcrondesigner 调度设计器
    /etlquerylogs 任务日志分析
    /etlqueryjobstatus 调度执行日志
    /etlbashboard 监控面板

  2. 第三方系统集成 etl_crontab 管理页面样本

<template>
<div>
  <iframe :src="this.EtlServerUiUrl"
          width="100%"
          scrolling="no"
          style="margin: 0px;padding: 0px;height: calc(100vh);border:none;overflow:hidden;"
  />
</div>
</template>

<script>
let Base64 = require('js-base64').Base64
export default {
name: "commIntegrationPage.vue",
  data(){
    return{
      EtlServerUiUrl : "http://127.0.0.1:8080/etl_designer/etlbashboard?username=admin&password="+Base64.encode("paI+Td8SvwQtpZwOsIyO6Q==")+"&serverAddress=http://127.0.0.1:11100",
    }
  }
}
</script>