前言
kala是go版本類crontab調(diào)度的服務(wù),默認存儲bolt扳抽,用redis存儲時有點問題湖员,密碼為空會拋異常,修改了kala\job\storage\redis\redis.go和main.go增加密碼判斷诡渴,目前作者已經(jīng)合并了PR。
問題原因是建立連接的時候redis.DialOption生成空結(jié)構(gòu)體在redigo.Dial時會引起panic: runtime error: invalid memory address or nil pointer dereference報錯菲语。
提交PR的時候主要遇到結(jié)構(gòu)體nil問題妄辩,吐槽下golang結(jié)構(gòu)體為空判斷,簡直就是災(zāi)難山上。眼耀。
kala啟動,修改后重新go build項目
//密碼為空啟動
[slview@YFTEST1 kala]$ ./kala run -p 40001 --jobDB=redis --jobDBAddress=192.168.6.151:6379 --jobDBPassword=""
INFO[0000] Starting server on port :40001...
//默認沒密碼胶哲,沒修改前會默認密碼是password畔塔。。
[slview@YFTEST1 kala]$ ./kala run -p 40001 --jobDB=redis --jobDBAddress=192.168.6.151:6379
INFO[0000] Starting server on port :40001...
http創(chuàng)建job鸯屿,目標是每隔30秒采集一次思科路由器某端口的出和入流量
//create job , get job id ,can use job-id view status
curl http://127.0.0.1:40001/api/v1/job/ -d '{"epsilon": "PT10S", "command": "/slview/test/zhangqi/snmpwalk.sh", "name": "zhangqi_job", "schedule": "R/2017-06-08T11:15:00.819236718+08:00/PT30S"}'
{"id":"6973f82d-09d2-474f-630f-16d9ad27b484"}
//shell
#!/bin/sh
more snmpwalk.sh
Dev_Ip=192.168.6.87
Comm=public
File=/slview/test/zhangqi/CI_$Dev_Ip
date >>$File
snmpwalk -v2c -c $Comm $Dev_Ip .1.3.6.1.2.1.31.1.1.1.6.1 >>$File
snmpwalk -v2c -c $Comm $Dev_Ip .1.3.6.1.2.1.31.1.1.1.10.1 >>$File
查看是否正常調(diào)度澈吨,每隔30秒生成文件正常
tail -f CI_192.168.6.87
2017年 06月 08日 星期四 11:15:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831783500
IF-MIB::ifHCOutOctets.1 = Counter64: 1033990306
2017年 06月 08日 星期四 11:15:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831793637
IF-MIB::ifHCOutOctets.1 = Counter64: 1033997648
2017年 06月 08日 星期四 11:16:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831815957
IF-MIB::ifHCOutOctets.1 = Counter64: 1034010252
2017年 06月 08日 星期四 11:16:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831826698
IF-MIB::ifHCOutOctets.1 = Counter64: 1034016972
2017年 06月 08日 星期四 11:17:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831851051
IF-MIB::ifHCOutOctets.1 = Counter64: 1034031575
2017年 06月 08日 星期四 11:17:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831862726
IF-MIB::ifHCOutOctets.1 = Counter64: 1034040076
查看redis存儲,是一個hset
127.0.0.1:6379> hkeys kala:jobs
1) "6973f82d-09d2-474f-630f-16d9ad27b484"
可以用curl或者瀏覽器查看job在何時調(diào)度了程序寄摆,retry是幾次
bash-4.1$ curl -s http://192.168.6.26:40001/api/v1/job/stats/6973f82d-09d2-474f-630f-16d9ad27b484/ | jq .
{
"job_stats": [
{
"execution_duration": 219580517,
"success": true,
"number_of_retries": 0,
"ran_at": "2017-06-08T11:15:00.819908161+08:00",
"job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
},
{
"execution_duration": 215259152,
"success": true,
"number_of_retries": 0,
"ran_at": "2017-06-08T11:15:30.820510442+08:00",
"job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
},
{
"execution_duration": 129358057,
"success": true,
"number_of_retries": 0,
"ran_at": "2017-06-08T11:16:00.821014506+08:00",
"job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
},
其他功能
kala可以設(shè)置retries和epsilon谅辣,規(guī)定重復(fù)時間內(nèi)的重試次數(shù),格式遵循標準為ISO8601婶恼,如:{"retries": 3, "epsilon": "PT10S",桑阶。。勾邦。}
刪除job
curl -XDELETE http://127.0.0.1:40001/api/v1/job/6973f82d-09d2-474f-630f-16d9ad27b484/