package main import ( //"fmt" "gitee.com/wecisecode/util/logger" "git.wecise.com/wecise/odbserver/odb/test" ) func main() { //options := map[string]interface{} {"cache":odb.CacheAll} //g,err:= odb.New( options ) //option := &StoreOption{Cache:CacheAll} option :test.NewG(option)ion)ion)he: CacheAll} g, err := test.NewG(option) if err != nil { logger.Error(err.Error()) } else { defer g.Close() } //logger.SetRollingDaily("C:/test/zkcron/src/test", "test.log") logger.SetConsole(true) logger.SetLevel(logger.DEBUG) // 测试 返回树形结构 /* str,err := g.GetClassChildren(-1) if err != nil { fmt.Println("GetClassChildren error:"+err.Error()) }else{ fmt.Println("Children:=>" + str) } */ // 测试 删除类 /* err := g.DeleteClass(8) if err != nil { fmt.Println("DeleteClass error:"+err.Error()) } */ // 测试 插入对象 /* objsstr := `[ {"class":"test","id":11}, {"class":"test"}, {"class":"test2","vtime":"1970-01-01T00:00:00Z"}]` if err := g.CreateObjectsFromjson(objsstr,[]string{"class","aaa"}) ;err != nil { logger.Fatal(err.Error()) } */ /* objs := make([]map[string]interface{},3) objs[0] = map[string]interface{}{"class":"test","id" :"1234567890"} objs[1] = map[string]interface{}{"class":"test"} objs[2] = map[string]interface{}{"class":"test2","vtime":"1970-01-01T00:00:00Z"} if err := g.CreateObjectsFromMap(objs,[]string{"class","aaa"}) ;err != nil { logger.Fatal(err.Error()) } */ // 测试 返回对象名称 /* if rtn,err := g.GetDisplayName([]string{"class","id"},"") ;err != nil { logger.Fatal(err.Error()) }else{ for k,v := range rtn { fmt.Printf(" %s :",k) for i:=0 ;i 5 limit 10`,false) //rst,err := g.Query(`select * from /matrix/jobs/jobrun where vtime > '2016-03-07 15:51:43.581'`,false) //rst,err := g.Query(`select host, inst, param, value, vtime from /matrix/devops/performance/ where vtime >= 1461054031485 order by host, vtime asc limit 10 with version`,false) //rst,err := g.Query(`select host, inst, param, value, vtime from /matrix/devops/performance/ where host='mxsvr201' with version`) //rst,err := g.Query(`select parent, username, fullname, lft, rgt, type, day from /matrix/ldap where lft >= 2 and rgt <= 5 order by lft limit -1`,false) //rst,err := g.Query(`select id from /matrix/devops/ where id in ('43310595152101561')`,false) /*rst,err := g.Query(`select app, biz, card, class, ctime, hdware, host, id, inst, ip, name, org, param, src, tags, value, vtime from /matrix/devops/performance limit 200 with version`,false)*/ //rst,err := g.Query(`select * from /matrix/jobs/jobrun order by vtime`,false) /*rst,err := g.Query(`create class /asdsd ( aa text '中文11' '中文22', bb varchar , biza varchar 'refdispname' 'refremedy', keys(aa,bb), indexes(aa{},bb), readonly(aa,bb) )`,false)*/ /* rst,err := g.Query(`create class if not exists /matrix/devopstest ( qqbiz varchar , qqorg varchar , qqhost varchar , qqip varchar , qqapp varchar , qqinst varchar , qqparam varchar , qqhdware varchar , qqcard varchar , qqsrc varchar, qqscript text, keys(qqbiz,qqorg,qqip,qqapp,qqinst,qqparam,qqhdware,qqcard), indexes(qqbiz,qqorg,qqhost,qqip,qqapp,qqinst,qqparam,qqhdware,qqcard) );`) */ /*rst,err := g.Query(`create class if not exists /matrix ( &name , status int '状态', indexes(name,status) ); create class if not exists /matrix/tags ( &name, keys(name) ); create class if not exists /matrix/devops ( biz varchar , org varchar , host varchar , ip varchar , app varchar , inst varchar , param varchar , hdware varchar , card varchar , src varchar, script text, keys(biz,org,ip,app,inst,param,hdware,card), indexes(biz,org,host,ip,app,inst,param,hdware,card, src,script) ); create class if not exists /matrix/jobs (); create class if not exists /matrix/jobs/jobrun ( runid bigint, boxid bigint, dir text, cmds list, jobstatus int, stime timestamp, etime timestamp, keys(dir,name), indexes(runid,boxid,name,dir,cmds,jobstatus,stime{"type":"date", "pattern":"yyyy/MM/dd HH:mm:ss.SSS"},etime{"type":"date", "pattern":"yyyy/MM/dd HH:mm:ss.SSS"}) ); create class if not exists /matrix/jobs/cmdrun ( &runid, &boxid, &dir, &host, jobtype int, source text, cmd text, pid int, &jobstatus, &stime, &etime, code int, out text, err text, keys(dir,name,cmd), indexes(jobtype,source,cmd,pid,code,out,err) ); create class if not exists /matrix/devops/performance ( value float '性能值', ctime timestamp '采集时间', kpiid varchar, kpiencode varchar, indexes(param,value,ctime{"type":"date", "pattern":"yyyy/MM/dd HH:mm:ss.SSS"}, kpiid, kpiencode) ); create class if not exists /matrix/devops/event ( severity varchar '级别', msg text '摘要', eventstatus varchar '告警状态', &ctime '采集时间', &kpiid, &kpiencode, indexes(severity,eventstatus,msg, kpiid, kpiencode) ); `,false)*/ /* rst,err := g.Query(` create class if not exists /matrix/jobs/cmdrun ( &runid, &boxid, &dir, &host, jobtype int, source text, cmd text, pid int, &jobstatus, &stime, &etime, code int, out text, err text, keys(dir,name,cmd), indexes(jobtype,source,cmd,pid,code,out,err) ); `,false)*/ /* rst,err := g.Query(`create class if not exists /matrix/flowmark/wfrun ( &wfid, sid varchar, session map, stage varchar, indexes(name, wfid, sid, session, stage), keys(wfid, sid) );`,false) */ /* rst,err := g.Query(`create class /matrix/aaaaaa ( aadir varchar, aacmds varchar, hello varchar, keys(aadir), indexes(aadir,aacmds,hello) ); `) */ /* rst,err := g.Query(` drop class /matrix/nnnn2; `,false) */ //rst,err := g.Query(`drop class /matrix/ldapaa `,false) /* rst,err := g.Query(`create class if not exists /matrix/ldap ( parent varchar, &name, fullname varchar, firstname varchar, lastname varchar, gender varchar, lft int, rgt int, &type, auth map, email list, tel varchar, mobile varchar, wechat varchar, photo blob, address text, &username, passwd varchar, &remark, usecustomavatar boolean, avatar text, rands text, salt text, isadmin boolean, isactive boolean, indexes(parent, name, fullname, firstname, lft, rgt, lastname, gender, type, email, tel, mobile, wechat, address, username, remark, rands, salt, avatar), keys(fullname) );`) */ //rst,err := g.Query(`select * from /matrix/ldap where username='admin'`,false) //rst,err := g.Query(`select * from /matrix/ldap where username='admin'`,false) //rst,err := g.Query(`drop class /matrix/relations`,false) //rst,err := g.Query(`drop class /matrix`,false) //rst,err := g.Query(`delete from /matrix/performance where inst = 'disk_C'`,false) //rst,err := g.Query(`delete from /matrix/ldap where fullname in ('/测试组','/测试组/testuser')`,false) //rst,err := g.Query(`delete from /matrix/ldap where fullname in ('aaa','testuser')`,false) //rst,err := g.Query(`SELECT id,vtime,class FROM /matrix/ `,false) //rst,err := g.Query(`Insert into /matrix/flowmark/btndef script='return "hello" ',name='test',wfid=-1 `,false) //rst,err := g.Search(`call action {"name":"test", "wfid":"-1" }`,false) /* rst,err := g.Query(` Insert into /matrix/flowmark/btndef script='print("hello")',name='test1',wfid=-1 ; Insert into /matrix/flowmark/btndef script='print("hello")',name='test2',wfid=-1 ; Insert into /matrix/flowmark/btndef script='print("hello")',name='test3',wfid=-1 ; Insert into /matrix/flowmark/btndef script='print("hello")',name='test4',wfid=-1 ; Insert into /matrix/flowmark/btndef script='print("hello")',name='test5',wfid=-1 ; `,false) */ /* rst,err := g.Search(`/matrix/devops/log/: | id=8871587300017613452 | top 2 | within 3day| print vtime | sort vtime desc, severity desc `) */ //rst,err := g.Search(`#/matrix/devops/performance/: mxsvr201 | group by host,app,inst,param`) //rst,err := g.Search(`mxsvr201`) //rst,err := g.Query(`insert json '{"class":"/matrix/ldap","fullname":"/用户组/cnwangzd","config":"{\"seat\":130}" }' `,false) //rst,err := g.Query(`Insert json '{ "class":"/matrix/flowmark/btndef","script":"print(\"hello\")","name":"test","wfid":"-1"}' `,false) //rst,err := g.Query(`insert into /matrix/ldap fullname='wzd' config='{test: "test1", a: "1", c: "2"}'`,false) //rst,err := g.Query(`delete from /matrix/devops/performance where ip is null with version!;`) //rst,err := g.Query(`insert into /matrix/ldap /*fullname='/用户组/cnwangzd' auth='{"Fields":{"add":"","delete":"","update":"","view":["id","class","vtime","biz","host"]},"Conds":{"add":"","delete":"","update":"","view":[{"type":"match","field":"class","value":"/matrix"}]}}' `)*/ //rst,err := g.Query(`delete from /matrix/flowmark/btndef`,false) //rst,err := g.Query(`select count(*) as countval from / where id = '16882012185573752086' and vtime >= '2016/07/20 14:00:00.000' and vtime < '2016/07/20 15:00:00.000' with version `) //rst,err := g.OnlySearch(`mxsvr201 | grep value>2.76`) //rst,err := g.OnlySearch(`cpu0| grep value=2.76|print value`) //rst,err := g.Search(`#/matrix/portal/tools: | sort by seat asc`) //rst,err := g.Search(`这是中文 这是中文2 aaaa|grep bbb|within 1 hour|top 10`) //rst,err := g.Search(`~这是中文 这是中文2 aaaa|grep ~bbb|print host|sort host|within 1 hour|top 10`) //rst,err := g.Search(`/matrix/devops/performance: | within 1day | top 10 | sort ctime asc | mxsvr201 or mxsvr231 | print name,id `) //rst,err := g.Search(`id=6619596727648121104 or id=4103214017054340550`,false) //rst,err := g.Search(`#/matrix/ldap/: | parent=/系统组`) //rst,err := g.Search(`/matrix/entity/: | contain etcd | print name `,false) // //rst,err := g.Search(`#/matrix/devops/log/: | print id,name | sort vtime desc, severity desc `,false) /* rst,err := g.Search(`/matrix/devops/event/: | top 100 | within 1day | lua severity= if severity == 'FATAL' then return "重大" elseif severity == 'ERROR' or severity == '5' or severity == 'CRITICAL' then return "严重" elseif severity == 'WARN' or severity == '4' or severity == 'MINOR' then return "警告" elseif severity == '一般' or severity == '3' or severity == '2' or severity == '1' then return "一般" elseif severity== '6' then return "未知" end | lua msg= s = string.gsub(msg, "Failed", "".."%1".."") return s | lua msg= s = string.gsub(msg, "failed", "".."%1".."") return s | lua msg= s = string.gsub(msg, "error", "".."%1".."") return s | lua msg= s = string.gsub(msg, "matrix", "".."%1".."") return s | lua msg= s = string.gsub(msg, "Error", "".."%1".."") return s | lua msg= s = string.gsub(msg, host, "".."%1".."") return s | sort vtime desc, severity desc`,false)*/ rst, _, err := g.Search(`#/matrix/entity/biz: | top 5 | call graph {"level":1,"rels":["contain"],"reverse":false}`) //rst,err := g.Search(`select * from /matrix/ldap where id = 16882012185573752086`) /*rst,err := g.Search(`#/matrix/devops/log/: | top 1000| print id,vtime,class,biz,host,app,inst,param,msg,severity,src | sort vtime desc, severity desc`) */ /* rst,err := g.Search(`#/matrix/devops/performance/:| top 1000| lua value= return "hhh" | inst=cpu* | top 5`,false) */ //rst,err := g.OnlySearch(`~mxsvr01|grep Matrix|print host|sort host|after '09:08'|top 10`) //rst,err := g.Search(`mxsvr01|print host,vtime|sort host|window "01:01" to "09:08"|top 10|count`) /*rst,err := g.OnlySearch(`/matrix/devops/performance/: | id=8042811419123646451 | sort vtime asc | top 2880 | within 8hour`)*/ //rst,err := g.OnlySearch(`mxsvr201 | ERROR | contain @biz -> @host, @host -> @app, @app -> @inst`) //rst,err := g.OnlySearch(`mxsvr201 | ERROR | tag "严重错误" `) /*rst,err := g.OnlySearch(`#/matrix/devops/performance: | sort biz asc,host asc,app asc,inst asc,param asc,value asc,vtime desc | top 1000 | except ip=null`)*/ //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{$.id}}附加说明/g' `) //rst,err := g.OnlySearch(`#/matrix/dashboard: | name=dashboard_1481167032 | delete `) //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{.id}}附加说明/g' `) //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{$.id}}附加说明/g' `) //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's//{{$.id}}附加说明/g' `) //rst,err := g.OnlySearch(`# /matrix/devops/event/:`) //rst,err := g.Search(`mxsvr201 | top2 | sed s//(mx)(svr[\d]+)//${1}附加${2}//g `,false) //rst,err := g.Search(`mxsvr201 | top10 | print host, id | expr host: "hello " + host + id `,false) //rst,err := g.OnlySearch("# /matrix/devops/performance | print value, host | expr value=`\"ppp\"+value` , host=`\"pppp\"+host+\"444\"` ") //rst,err := g.OnlySearch(`# /matrix/devops/performance/ | print value, host | top 1 | lua host= return "pppp"..host.."444" `) /*rst,err := g.OnlySearch(`#/matrix/devops/performance/: | param = usedpercent | inst = cpu1 | sort vtime desc, host | top 10 | uniq host | print host,inst,param,value`)*/ /*rst,err := g.OnlySearch(`/matrix/devops/performance/: | id=13722093446131916505 | within 600 minutes | sort vtime asc | top 10`)*/ //rst,err := g.OnlySearch(`mxsvr201 |error event | top 10 | id=-5062375036196941011`) //rst,err := g.OnlySearch(`id='13722093446131916505'`) //rst,err := g.OnlySearch(`ticketid='IM201701170004234' | update remark = 'tsoracle.bmc.com'`) //rst,err := g.OnlySearch(`error | print severity | lua severity=return ""..severity..""`) /*rst,err := g.OnlySearch(`/matrix/devops/performance | sort vtime desc | top 10 | lua value= if (value > 0 ) then return "" .. string.format("%.2f", value) .. "" end return "" .. string.format("%.2f", value) .. "" ` )*/ //rst,err := g.OnlySearch(`# /matrix/devops/performance/:| print value | sed value:'s//(.*)//${1}//g' `) //rst,err := g.OnlySearch(`# /matrix/devops/performance/:| print value | sed value:'i asdfasdfsadf' `) /*rst,err := g.OnlySearch(`# /matrix/devops/performance/: | sort biz asc,host asc,app asc,inst asc,param asc,value asc,vtime desc | top 1000| except ip=null | lua value= if param == 'usedpercent' then if value > 60 then return "" .. string.format("%.2f",value) .. " % " else return "" .. string.format("%.2f",value) .. " %" end elseif param == 'cores' then return "" .. value .. "" else return "" .. string.format("%.2f",value/1024/1024) .. " MB" end `)*/ //rst,err := g.OnlySearch(`#/matrix/devops/performance/: | inst=cpu1 | param=usedpercent`) //rst,err := g.OnlySearch(`# /matrix/devops/performance/: | value > 5000 | top 1000 `) /* rst,err := g.OnlySearch(`#/matrix/devops/performance: | sort biz asc,host asc,app asc,inst asc,param asc,value asc,ctime desc | top 1000 | except ip=null`) */ /* if fields, err := g.Query("select node,agent,summary from /matrix/event/tivoli where severity>=0 "); err != nil { fmt.Println(err.Error()) }else{ for i:=0 ; i< len(fields) ;i++ { fmt.Println(fields[i]["agent"].(string),fields[i]["summary"].(string)) } } */ /* if _, err := g.Query("truncate /matrix/event/open"); err != nil { fmt.Println(err.Error()) }else{ } */ // 测试 Alter Table /* for i:=0 ; i<1000 ;i++ { sql := fmt.Sprintf(`ALTER TABLE object ADD H%d %s`,i,"text") logger.Debugf(sql) if err := g.GetSession().Query(sql).Consistency(gocql.Quorum).Exec(); err != nil { logger.Fatalf("ADD ERROR %v",err) } */ /* for i:=0 ; i<1000 ;i++ { sql := fmt.Sprintf(`ALTER TABLE object DROP H%d `,i) logger.Debugf(sql) if err := g.GetSession().Query(sql).Consistency(gocql.Quorum).Exec(); err != nil { logger.Fatalf("DROP ERROR %v",err) } } */ if err != nil { logger.Info("Query error:" + err.Error()) } else { logger.Info(rst) } }