| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- 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<len(v) ;i++ {
- fmt.Printf(" %s :",v)
- }
- fmt.Println()
- }
- }
- if rtn,err := g.GetDisplayName([]string{"class","id"},"1") ;err != nil {
- logger.Fatal(err.Error())
- }else{
- for k,v := range rtn {
- fmt.Printf(" %s :",k)
- for i:=0 ;i<len(v) ;i++ {
- fmt.Printf(" %s :",v)
- }
- fmt.Println()
- }
- }
- */
- // 测试MQL
- //rst,err := g.Query(`SELECT id,vtime,usname FROM /core/user/ WHERE usname prefix 'admin' && email like 'admin*' `)
- //rst,err := g.Query(`SELECT id,vtime,usname FROM /core/user `)
- //rst,err := g.Query(`SELECT * FROM /matrix/jobs/runinfo`)
- //rst,err := g.Query(`SELECT id,vtime,class FROM / WHERE class IN ('test') LIMIT 10`)
- //rst,err := g.Query(`SELECT id,vtime,class FROM / WHERE id = 1234567890 LIMIT 10`)
- //rst,err := g.Query(`SELECT type,id FROM /matrix/log/cassandra WHERE type =~ '^[C' limit 10`)
- //rst,err := g.Query(`SELECT id,vtime,class FROM /core/ `)
- //rst,err := g.Query(`SELECT id,vtime,class FROM /matrix/performance WHERE id='13722093446131916505' limit 10`, false)
- //rst,err := g.Query(`SELECT id,vtime,class FROM /matrix/performance WHERE id='13722093446131916505' limit 10`, false)
- //rst,err := g.Query(`SELECT id,vtime,class,kpi_code FROM /matrix/performance WHERE mydate daterange ('20150324','20150325') limit 10`)
- //rst,err := g.Query(`select name,jobstatus as status from /matrix/jobs/jobrun where jobstatus > 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<varchar>,
- 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<varchar,varchar>,
- 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<varchar, varchar>,
- email list<text>,
- 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=<lua> if severity == 'FATAL' then
- return "<kbd style='background-color:#000000;'>重大</kbd>"
- elseif severity == 'ERROR' or severity == '5' or severity == 'CRITICAL' then
- return "<kbd style='background-color:#FF0000;'>严重</kbd>"
- elseif severity == 'WARN' or severity == '4' or severity == 'MINOR' then
- return "<kbd style='background-color:#F0AD4E;'>警告</kbd>"
- elseif severity == '一般' or severity == '3' or severity == '2' or severity == '1' then
- return "<kbd style='background-color:#3BC303;'>一般</kbd>"
- elseif severity== '6' then
- return "<kbd style='background-color:#6BD2D2;'>未知</kbd>"
- end
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, "Failed", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, "failed", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, "error", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, "matrix", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, "Error", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | lua msg=<lua>
- s = string.gsub(msg, host, "<span style='background-color:#fae4ae;'>".."%1".."</span>")
- return s
- </lua>
- | 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=<lua>
- return "hhh"
- </lua> | 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:<s> "hello " + host + id </s> `,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=<lua> return "pppp"..host.."444" </lua>`)
- /*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=<lua>return "<kbd>"..severity.."</kbd>"</lua>`)
- /*rst,err := g.OnlySearch(`/matrix/devops/performance | sort vtime desc
- | top 10
- | lua value=<s> if (value > 0 ) then return "<b><span class='pull-right' style='color:red;'>" .. string.format("%.2f", value) .. "</span></b>" end return "<span class='pull-right'>" .. string.format("%.2f", value) .. "</span>"
- </s>` )*/
- //rst,err := g.OnlySearch(`# /matrix/devops/performance/:| print value | sed value:'s//(.*)//${1}<i class="icon-caret-up icon-1x" style="color:red;"></i>//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=<lua>
- if param == 'usedpercent' then
- if value > 60 then
- return "<span class='pull-right' style='color:#FF0000;' title='超过阈值{60%}'><b>" .. string.format("%.2f",value) .. " %</b> <i class='fa fa-sort-up'></i></span>"
- else
- return "<span class='pull-right' style='color:#0088CC;'><b>" .. string.format("%.2f",value) .. " %</b></span>"
- end
- elseif param == 'cores' then
- return "<span class='pull-right' style='color:#0088CC;'><b>" .. value .. "</b></span>"
- else
- return "<span class='pull-right' style='color:#9999CC;'><b>" .. string.format("%.2f",value/1024/1024) .. " MB</b></span>"
- end
- </lua>`)*/
- //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)
- }
- }
|