AZKABAN(三)curl命令

    因为很多服务器并不能连接外网。那么这时web页面就没法使用了。这时可以使用azkaban接口代码,写自己的交互式命令。也可以直接使用提供的curl命令。

    Azkaban 操作需要登录鉴权。登录成功后返回一个session.id,以后通过session.id进行身份验证。因此每次使用curl指令除了登录操作,其他都需要这个参数。

本文中$id $p 之类。都是 使用shell变量 保存id,工程id等变量。如有问题可以留言。会一一解答。

登录

curl -k -X POST --data "action=login&username=$name&password=$pw"https://localhost:8443

登录成功返回体

{

  "status" :"success",

  "session.id" :"c001aba5-a90f-4daf-8f11-62330d034c0a"

}

Session.id 后续操作需要重复使用。

创建工程

curl -k -X POST --data "session.id=$id&name=sh&description=sh"https://localhost:8443/manager?action=create

       成功返回体

       {

  "status":"success",

 "path":"manager?project=aaaa", //工程创建后路径

            "action":"redirect"

}

删除工程

curl -k --get --data "session.id=session.id&delete=true&project=工程名称"https://localhost:8443/manager

没有返回

上传工程

curl -k -i -H "Content-Type:

multipart/mixed" -X POST --form “session.id=$id” --form 'ajax=upload'

--form 'file=@myproject.zip;type=application/zip' --form 'project=sh' https://localhost:8443/manager

原azkaban doc中工程名后面有 ;type/plain 但是执行出错。去掉执行真确。正确返回为。

HTTP/1.1 100 Continue


HTTP/1.1 200 OK

Content-Type: application/json

Content-Length: 42

Server: Jetty(6.1.26)


{

  "projectId" :"6",

  "version" :"1"

}

注意点,上传文件格式为zip。且注意上传路径。

获取工程流。

curl -k --get --data "session.id=$id&ajax=fetchprojectflows&project=$p"https://localhost:8443/manager

正确返回

{

  "flows" : [ {

    "flowId" :"o2o_2_hive"

  } ],

  "project" :"curl-test",

  "projectId" : 6

}

获取工作流

curl -k --get --data "session.id=$id&ajax=fetchflowgraph&project=$p&flow=$fd"https://localhost:8443/manager

正确返回:

{

  "nodes" : [ {

    "in" : ["o2o_clean_data" ],

    "id" :"o2o_2_hive",

    "type" :"command "

  }, {

    "in" : ["o2o_up_2_hdfs" ],

    "id" :"o2o_clean_data",

    "type" :"command "

  }, {

    "id" :"o2o_get_file_ftp1",

    "type" :"command "

  }, {

    "id" :"o2o_get_file_ftp2",

    "type" :"command "

  }, {

    "in" : ["o2o_get_file_ftp1", "o2o_get_file_ftp2" ],

    "id" : "o2o_up_2_hdfs",

    "type" :"command "

  } ],

  "project" :"curl-test",

  "projectId" : 6,

  "flow" :"o2o_2_hive"

}

In表示依赖的意思。Id表示工程名。Type表示job类型。


获取执行流

curl -k --get --data "session.id=$id&ajax=fetchFlowExecutions&project=$p&flow=$fd&start=0&length=5"https://localhost:8443/manager

{

  "executions" : [ {

    "startTime" :1407779928865,

    "submitUser" :"1",

    "status" :"FAILED",

    "submitTime" :1407779928829,

    "execId" : 306,

    "projectId" :192,

    "endTime" :1407779950602,

    "flowId" :"test"

  }, {

    "startTime" :1407779877807,

    "submitUser" :"1",

    "status" :"FAILED",

    "submitTime" :1407779877779,

    "execId" : 305,

    "projectId" :192,

    "endTime" :1407779899599,

    "flowId" :"test"

  }, {

    "startTime" :1407779473354,

    "submitUser" :"1",

    "status" :"FAILED",

    "submitTime" :1407779473318,

    "execId" : 304,

    "projectId" : 192,

    "endTime" :1407779495093,

    "flowId" :"test"

  } ],

  "total" : 16,

  "project" : "curl-test",

  "length" : 3,

  "from" : 0,

  "flow" : "o2o_2_hive",

  "projectId" : 192

}

上面显示了总共的执行次数,和开始结束时间的等等信息。




获取运行流。

curl -k --data "session.id=$id&ajax=getRunning&project=$p&flow=$fd"https://localhost:8443/executor

成功返回

{

  "execIds": [301,302]

}

执行一个流

curl -k --get --data'session.id=189b956b-f39f-421e-9a95-e3117e7543c9' --data 'ajax=executeFlow' --data'project=azkaban-test-project' --data 'flow=test'https://localhost:8443/executor

成功返回

{

  "project" :"curl-test",

  "message" :"Execution submitted successfully with exec id 10",

  "flow" : "o2o_2_hive",

  "execid" : 10

}

       具体参数如下:

       ParameterDescription

session.idThe user session id.

Example Values:30d538e2-4794-4e7e-8a35-25a9e2fd5300

ajax=executeFlowThe fixed parameter indicating the current ajax action is  executeFlow.

projectThe project name of the executing flow.

Example Values: run-all-jobs

flowThe flow id to be executed.

Example Values: test-flow

disabled (optional)A list of job names that should be disabled for this  execution. Should be formatted as a JSON Array String.

Example Values: ["job_name_1",  "job_name_2", "job_name_N"]

successEmails (optional)A list of emails to be notified if the execution succeeds. All  emails are delimitted with [,|;|\\s+].

Example Values: foo@email.com,bar@email.com

failureEmails (optional)A list of emails to be notified if the execution fails. All  emails are delimitted with [,|;|\\s+].

Example Values: foo@email.com,bar@email.com

successEmailsOverride (optional)Whether uses system default email settings to override  successEmails.

Possible Values: true,  false

failureEmailsOverride (optional)Whether uses system default email settings to override  failureEmails.

Possible Values: true,  false

notifyFailureFirst (optional)Whether sends out email notifications as long as the first  failure occurs.

Possible Values: true,  false

notifyFailureLast (optional)Whether sends out email notifications as long as the last  failure occurs.

Possible Values: true,  false

failureAction (Optional)If a failure occurs, how should the execution behaves.

Possible Values: finishCurrent,  cancelImmediately, finishPossible

concurrentOption (Optional)Concurrent choices. Use ignore if nothing specifical is  required.

Possible Values: ignore,  pipeline, skip

flowOverride[flowProperty] (Optional)Override specified flow property with specified value.

Example Values : flowOverride[failure.email]=test@gmail.com

完整参数执行如下:

curl -k --get --data'session.id=079f7617-1454-4c85-890fd829d1e3b502' --data 'ajax=executeFlow'--data 'project=curl-test' --data 'flow=o2o_2_hive' --data'disabled=["o2o_up_2_hdfs"]' --data'successEmails=15800968375@163.com' --data 'failureEmails=15800968375@163.com'--data 'notifyFailureFirst=true' --data 'failureEmailsOverride=true' --data'failureAction=finishCurrent'  https://localhost:8443/executor

其中如果想让设置的email发送成功必须emailsoverride设置为true。英文描述有问题,是当前设置覆盖默认设置。描述反了。





取消一个运行流

curl -k --data "session.id=session.id&ajax=cancelFlow&execid=execid"https://localhost:8443/executor

如果没有这个execid那么会报错。

{

"error" : "Execution 14 of flow o2o_2_hive isn'trunning."

}

如果成功返回{}

设置定时任务

curl -k -X POST --data"session.id=$id&ajax=scheduleFlow&projectName=$p&projectId=$pd&flow=$fd&scheduleTime=10,30,am,UTC&scheduleDate=07/02/2018&is_recurring=on&period=1d"https://localhost:8443/schedule

成功返回

{

  "message" :"curl-test.o2o_2_hive scheduled.",

  "status" :"success"

}


ParameterDescription

session.idThe  user session id.

ajax=scheduleFlowThe  fixed parameter indicating the action is to schedule a flow.

projectNameThe  name of the project.

projectIdThe

  id of the project. You can find this with Fetch

  Flows of a Project.

flowThe  name of the flow id.

scheduleTime(with  timezone)The  time to schedule the flow. Example: 12,00,pm,PDT (Unless UTC is specified,  Azkaban will take current server's default timezone instead)

scheduleDateThe  date to schedule the flow. Example: 07/22/2014

is_recurring=on  (optional)Flags  the schedule as a recurring schedule.

period  (optional)Specifies  the recursion period. Depends on the "is_recurring" flag being set.  Example: 5w

Possible Values:

MMonths

wWeeks

dDays

hHours

mMinutes

sSeconds

注:这个官方文档有区别,测试过了官方文档错的。

使用cron设置定时任务(2.5不支持这是最新版本支持)

curl -k -X POST --data"session.id=$id&ajax=scheduleCronFlow&projectName=$p&flow=$fd&cronExpression=0031 10 ? ? ?"https://localhost:8443/schedule

cron定时任务工具:http://cron.qqe2.com/

查看定时工作

curl -k --get --data"session.id=$id&ajax=fetchSchedule&projectId=$pd&flowId=$fd"https://localhost:8443/schedule

成功返回为:

{

  "schedule" : {

    "nextExecTime" :"2018-07-03 03:31:00",

    "period" :"1 day(s)",

    "submitUser" :"admin",

    "scheduleId" :"9",

    "firstSchedTime": "2018-07-02 03:31:00"

  }

}

       请求体中projectId为工程id。

取消一个定时任务

curl -k -X POST --data"session.id=$id&action=removeSched&scheduleId=9"https://localhost:8443/schedule

成功为:

{

  "message" :"flow o2o_2_hive removed from Schedules.",

  "status" :"success"

}

设置sla(定时任务执行通知)

curl -k -X POST --data

"session.id=$id&ajax=setSla&scheduleId=$sd&slaEmails=15800968375@163.com&settings[0]=aaa,SUCCESS,5:00,true,false"

https://localhost:8443/schedule

成功返回:{}

Setting内具体参数的意思是:第一个是id,第二个规则,第三个时间间隔,第四个emailAction,第五个killAction

查看sla

curl -k --get --data "session.id=$id&ajax=slaInfo&scheduleId=$sd"https://localhost:8443/schedule

成功返回:

{

  "settings" : [ {

    "duration" :"300m",

    "rule" :"SUCCESS",

    "id" :"aaa",

    "actions" : ["EMAIL" ]

  } ],

  "slaEmails" : ["15800968375@163.com" ],

 "allJobNames" : [ "o2o_up_2_hdfs","o2o_2_hive", "o2o_get_file_ftp1","o2o_clean_data", "o2o_get_file_ftp2" ]

}

暂停一个工作流

curl -k --get --data"session.id=$id&ajax=pauseFlow&execid=3"https://localhost:8443/executor

如果execid不存在会返回如下:

{

  "error" :"Execution 3 of flow o2o_2_hive isn't running."

}

       成功为{}

重新启动一个工作流

curl -k  --get --data"session.id=$id&ajax=resumeFlow&execid=3"https://localhost:8443/executor

如果exeid不存在:

{

  "resume" :"Execution 3 of flow o2o_2_hive isn't running."

}

       成功返回{}

取得执行流运行状况

curl -k --get --data"session.id=$id&ajax=pauseFlow&execid=3"https://localhost:8443/executor

如果id不存在:{

  "error" :"Execution 3 of flow o2o_2_hive isn't running."

}

成功返回:


{

  "attempt" : 0,

  "submitUser" :"1",

  "updateTime" :1407779495095,

  "status" :"FAILED",

  "submitTime" :1407779473318,

  "projectId" : 192,

  "flow" :"test",

  "endTime" :1407779495093,

  "type" : null,

  "nestedId" :"test",

  "startTime" :1407779473354,

  "id" :"test",

  "project" :"test-azkaban",

  "nodes" : [ {

    "attempt" : 0,

    "startTime" :1407779495077,

    "id" :"test",

    "updateTime" :1407779495077,

    "status" :"CANCELLED",

    "nestedId" :"test",

    "type" :"command",

    "endTime" :1407779495077,

    "in" : ["test-foo" ]

  }, {

    "attempt" : 0,

    "startTime" :1407779473357,

    "id" :"test-bar",

    "updateTime" :1407779484241,

    "status" :"SUCCEEDED",

    "nestedId" :"test-bar",

    "type" :"pig",

    "endTime" :1407779484236

  }, {

    "attempt" : 0,

    "startTime" :1407779484240,

    "id" :"test-foobar",

    "updateTime" :1407779495073,

    "status" :"FAILED",

    "nestedId" :"test-foobar",

    "type" :"java",

    "endTime" : 1407779495068,

    "in" : ["test-bar" ]

  }, {

    "attempt" : 0,

    "startTime" :1407779495069,

    "id" :"test-foo",

    "updateTime" :1407779495069,

    "status" :"CANCELLED",

    "nestedId" :"test-foo",

    "type" :"java",

    "endTime" :1407779495069,

    "in" : ["test-foobar" ]

  } ],

  "flowId" :"test",

  "execid" : 304

}

取得执行日志

curl -k --get --data"session.id=$id&ajax=fetchExecJobLogs&execid=7&jobId=6&offset=0&length=100"https://localhost:8443/executor

执行成功:

{

  "data" :"05-08-2014 16:53:02 PDT test-foobar INFO - Starting job test-foobar at140728278",

  "length" : 100,

  "offset" : 0

}

       失败:

              {

            "error" : "Job 6doesn't exist in 7"

}

获得执行流更新日志

curl -k --get  --data"session.id=$id&ajax=fetchexecflowupdateexecid=6&lastUpdateTime=-1"https://localhost:8443/executor

成功返回:

{

  "nodes" : [ {

    "startTime" :1530194417779,

    "updateTime" :1530194417779,

    "id" :"o2o_up_2_hdfs",

    "endTime" :1530194417779,

    "attempt" : 0,

    "status" :"CANCELLED"

  }, {

    "startTime" :1530194417871,

    "updateTime" :1530194417871,

    "id" :"o2o_2_hive",

    "endTime" :1530194417871,

    "attempt" : 0,

    "status" :"CANCELLED"

  }, {

    "startTime" :1530194417688,

    "updateTime" :1530194417819,

    "id" :"o2o_get_file_ftp1",

    "endTime" :1530194417773,

    "attempt" : 0,

    "status" :"FAILED"

  }, {

    "startTime" :1530194417826,

    "updateTime" :1530194417826,

    "id" :"o2o_clean_data",

    "endTime" :1530194417826,

    "attempt" : 0,

    "status" :"CANCELLED"

  }, {

    "startTime" :1530194417696,

    "updateTime" :1530194417785,

    "id" :"o2o_get_file_ftp2",

    "endTime" :1530194417727,

    "attempt" : 0,

    "status" : "FAILED"

  } ],

  "startTime" :1530194417642,

  "updateTime" :1530194417999,

  "id" :"o2o_2_hive",

  "endTime" :1530194417985,

  "attempt" : 0,

  "flow" :"o2o_2_hive",

  "status" :"FAILED"

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 重要说明:本方是翻译自https://docs.spring.io/spring-cloud-dataflow/d...
    静悟2020阅读 10,492评论 1 12
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,608评论 18 399
  • 关键词:小孩、发育、多动、注意力不集中、姿势、情绪、语言、学习。 每个小孩都像天使一样降临到人间,带着...
    原始反射整合阅读 347评论 3 2
  • 我决定写下很多关于暗恋的小事。 二零一六年的八月二十五号晚上八点,她截图下了《最好的我们》里路星河跟...
    你默默微笑阅读 244评论 0 0