testauth.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. package main
  2. import (
  3. //"fmt"
  4. "encoding/json"
  5. . "git.wecise.com/wecise/odbserver/odb"
  6. "git.wecise.com/wecise/odbserver/odb/test"
  7. "gitee.com/wecisecode/util/logger"
  8. )
  9. // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testauth.go
  10. // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl
  11. // #include "/opt/odbserver/sqlite/sqlite.h"
  12. // #include <stdint.h>
  13. // #include <stdlib.h>
  14. // extern int64_t uhaha_seed;
  15. // extern int64_t uhaha_ts;
  16. // void uhaha_begin_reader();
  17. // void uhaha_end_reader();
  18. func main() {
  19. //options := map[string]interface{} {"cache":odb.CacheAll}
  20. //g,err:= odb.New( options )
  21. //option := &StoreOption{Cache:CacheAll}
  22. option := &Option{Cache: CacheAll, Keyspace: "matrix", DisableInitialHostLookup: true}
  23. g, err := test.NewG(option)
  24. if err != nil {
  25. logger.Error(err.Error())
  26. } else {
  27. defer g.Close()
  28. }
  29. /*
  30. rst,err := g.Search(`/matrix/devops/log/:
  31. | id=8871587300017613452
  32. | top 2
  33. | within 3day| print vtime
  34. | sort vtime desc, severity desc
  35. `)
  36. */
  37. //rst,meta,err := g.Search(`#| host=wecise | value > 30 | value < 100 | sort value | nearest 1 day `)
  38. //rst,meta,err := g.Search(`/matrix/devops/test@tinycol=警告`)
  39. //rst,meta,err := g.Search(`/matrix/devops/test | 警告`)
  40. //rst,meta,err := g.Search(`/matrix/devops/event/:|ctime=2017-12-16 07:26:40.000`)
  41. //rst,meta,err := g.Search(`/matrix/devops/event/:|ctime=2017-12-16| print ctime`)
  42. //rst,meta,err := g.Search(`/matrix/devops/event/:|at 2017-12-16| print ctime`)
  43. //rst,meta,err := g.Search(`/matrix/devops/event/:|at 2017/12/15 11 for ctime| print ctime`)
  44. //rst,meta,err := g.Search(`/matrix/devops/performance/baseline/max: | sort vtime desc | top 1 | src=14977718774318726019 | nearest 1day for vtime`)
  45. //rst,meta,err := g.Search(`#/matrix/devops/event/: | manager=ALCATEL5529OA* | nearest 1 day for vtime `)
  46. //rst,meta,err := g.Search(`debug>/matrix/devops/performance/:, /matrix/devops/event/: | host=DB | top 5`)
  47. //rst,meta,err := g.Search(`debug>#/matrix/devops/log/: | nearest 1 day | top 200`)
  48. //rst,meta,err := g.Search(`debug>/matrix/devops/event/: | forward | join /matrix/devops/performance/ with host | app=app2 | top 3 `)
  49. //rst,meta,err := g.Search(`app=etcd`)
  50. //rst,meta,err := g.Search(`#/matrix/portal/tools |enname ~ Event`,map[string]interface{}{"meta":true})
  51. //rst,meta,err := g.Search(`#/matrix/devops/event/ | facet host as 服务器 `)
  52. // compile
  53. //rst,meta,err := g.Search(`/matrix/entity/linux | print class,id,name | id=linux:test1 `)
  54. //rst,meta,err := g.Search(`#/matrix/entity/cmdb_ci_instance_4,/matrix/entity/cmdb_ci_instance_5,/matrix/entity/cmdb_ci_instance_6,/matrix/entity/cmdb_ci_instance_7,/matrix/entity/cmdb_ci_instance_8,/matrix/entity/cmdb_ci_instance_9,/matrix/entity/cmdb_ci_instance_10,/matrix/entity/cmdb_ci_instance_11,/matrix/monitor/notify,/matrix/monitor/log/business_log,/matrix/monitor/log/device_log,/matrix/monitor/log/software_log | ~ 123`)
  55. //rst,meta,err := g.Search(`#/matrix/entity/cmdb_ci_instance_4,/matrix/entity/cmdb_ci_instance_5,/matrix/entity/cmdb_ci_instance_6,/matrix/entity/cmdb_ci_instance_7,/matrix/entity/cmdb_ci_instance_8,/matrix/entity/cmdb_ci_instance_9,/matrix/entity/cmdb_ci_instance_10,/matrix/entity/cmdb_ci_instance_11,/matrix/monitor/notify,/matrix/monitor/log/business_log,/matrix/monitor/log/device_log,/matrix/monitor/log/software_log | ~ 123`)
  56. //rst,meta,err := g.Search(`#/matrix/portal/tools/: | sort by seat asc`, map[string]interface{}{"meta":true})
  57. //rst,meta,err := g.Search(`#/matrix/devops/event/: | biz != null`, map[string]interface{}{"meta":true})
  58. ///wecise | facet severity{"critical":[5,],"warning":[,4]}
  59. //rst,meta,err := g.Search(`debug>#/matrix/devops/event/omnibus | status = 1;host != 2 | top 10`,map[string]interface{}{"meta":true})
  60. //rst,meta,err := g.Search(`debug>id=14531092434866036616 | sort vtime desc | nearest 1 hour for vtime | top 3000 `)
  61. //rst,meta,err := g.Search(`debug> id=cassandra:wecise | vtime=2018-02-08T07:23:41.848Z `)
  62. //rst,meta,err := g.Search(`debug> /matrix/system/kpi | thred.8 = '95' `)
  63. //rst,meta,err := g.Search(`debug>/matrix/devops/event/: | forward `)
  64. //rst,meta,err := g.Search(`debug>call tree {"ftype":"class", "parent":"/matrix/system/kpi","fields":["agent","catalog","name"]}`)
  65. //rst,meta,err := g.Search(`debug> #/matrix/portal/tools: | sort by seat asc`)
  66. /*if v, err:= g.ClassTree.Get("/matrix/jobs/cmdrun");v == nil {
  67. logger.Errorf("111===%v,%v", err, v)
  68. }else{
  69. logger.Errorf("2222===%v, %v", err,v)
  70. }*/
  71. //rst,meta,err := g.Search(`#/matrix/devops/performance:| at 2017-12-16 18:30:01 `)
  72. //rst,meta,err := g.Search(`#/matrix/entity/: | id=*linux:app2#Interface:eth0 | call graph {"level":3, "rels":["contain","depend","connect"]}`)
  73. //rst,meta,err := g.Search(`#/matrix/entity/ | id=linux:wecise | call graph {"level":2, "rels":["contain"]}`)
  74. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:matrix | call graph {"level":3, "rels":["contain","depend"]}`)
  75. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:统一数据平台 | call graph {level:1, rels:["contain"] }`)
  76. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:统一数据平台 | call graph {"level":1, "rels":["contain","depend","connect","runon"] }`)
  77. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:统一数据平台`)
  78. //rst,meta,err := g.Search(`#/matrix/entity/: | id=cluster:amq`)
  79. //rst,meta,err := g.Search(`/matrix/devops/ | wecise | severity=5 | sort by vtime | print +ctel`)
  80. //rst,meta,err := g.Search(`#/matrix/filesystem: | admin昨天上传的文档* | parent=/opt/knowledge*`)
  81. //rst,meta,err := g.Search(`#/matrix/jobs/jobrun: | status < 9 | facet status as status_状态维度, class as class_类维度, tags as tags_标签维度,vtime as vtime_时间维度`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false , User:"U/testorg/sss/2" , Group:[]string{ "/testorg/sss"}} )
  82. rst, meta, err := g.Search(`#/matrix/entity/node/ | tags=核心交换机 | top 500`, &QueryMeta{Return: ReturnAll, User: "U/测试部/test01"})
  83. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:matrix | print id`)
  84. //rst,meta,err := g.Search(`app != syslog`)
  85. //rst,meta,err := g.Search(`call tree {"ftype":"class", "parent":"/matrix/entity","fields":["cid","name"]} `)
  86. //rst,meta,err := g.Search(`#/matrix/entity/: | id=biz:matrix`)
  87. //rst,meta,err := g.Search(`class=/matrix/`)
  88. //rst,meta,err := g.Search(`mxsvr201`)
  89. //rst,err := g.OnlySearch(`mxsvr201 | grep value>2.76`)
  90. //rst,err := g.OnlySearch(`cpu0| grep value=2.76|print value`)
  91. //rst,err := g.Search(`#/matrix/portal/tools: | sort by seat asc`)
  92. //rst,err := g.Search(`这是中文 这是中文2 aaaa|grep bbb|within 1 hour|top 10`)
  93. //rst,err := g.Search(`~这是中文 这是中文2 aaaa|grep ~bbb|print host|sort host|within 1 hour|top 10`)
  94. //rst,err := g.Search(`/matrix/devops/performance: | within 1day | top 10 | sort ctime asc | mxsvr201 or mxsvr231 | print name,id `)
  95. //rst,err := g.Search(`id=6619596727648121104 or id=4103214017054340550`,false)
  96. //rst,meta,err := g.Search(`#/matrix/ldap/: | parent=/系统组`)
  97. //rst,err := g.Search(`/matrix/entity/: | contain etcd | print name `,false)
  98. //
  99. //rst,err := g.Search(`#/matrix/devops/log/: | print id,name | sort vtime desc, severity desc `,false)
  100. /*
  101. rst,err := g.Search(`/matrix/devops/event/:
  102. | top 100
  103. | within 1day
  104. | lua severity=<lua> if severity == 'FATAL' then
  105. return "<kbd style='background-color:#000000;'>重大</kbd>"
  106. elseif severity == 'ERROR' or severity == '5' or severity == 'CRITICAL' then
  107. return "<kbd style='background-color:#FF0000;'>严重</kbd>"
  108. elseif severity == 'WARN' or severity == '4' or severity == 'MINOR' then
  109. return "<kbd style='background-color:#F0AD4E;'>警告</kbd>"
  110. elseif severity == '一般' or severity == '3' or severity == '2' or severity == '1' then
  111. return "<kbd style='background-color:#3BC303;'>一般</kbd>"
  112. elseif severity== '6' then
  113. return "<kbd style='background-color:#6BD2D2;'>未知</kbd>"
  114. end
  115. </lua>
  116. | lua msg=<lua>
  117. s = string.gsub(msg, "Failed", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  118. return s
  119. </lua>
  120. | lua msg=<lua>
  121. s = string.gsub(msg, "failed", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  122. return s
  123. </lua>
  124. | lua msg=<lua>
  125. s = string.gsub(msg, "error", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  126. return s
  127. </lua>
  128. | lua msg=<lua>
  129. s = string.gsub(msg, "matrix", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  130. return s
  131. </lua>
  132. | lua msg=<lua>
  133. s = string.gsub(msg, "Error", "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  134. return s
  135. </lua>
  136. | lua msg=<lua>
  137. s = string.gsub(msg, host, "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  138. return s
  139. </lua>
  140. | sort vtime desc, severity desc`,false)*/
  141. //rst,meta,err := g.Search(`#/matrix/devops/performance:| sort ctime desc, biz asc,host asc,app asc,inst asc,param asc,value asc`)
  142. /*rst,err := g.Search(`#/matrix/devops/log/: | top 100 | sort host desc, severity desc| print id,vtime,class,biz,host,app,inst,param,msg,severity,src,ctime
  143. | sort vtime desc, severity desc
  144. | lua severity=<lua> if severity == 'FATAL' then
  145. return "<kbd style='background-color:#000000;'>重大</kbd>"
  146. elseif severity == 'ERROR' or severity == '5' or severity == 'ERR' then
  147. return "<kbd style='background-color:#FF0000;'>严重</kbd>"
  148. elseif severity == 'WARN' or severity == '4' then
  149. return "<kbd style='background-color:#F0AD4E;'>警告</kbd>"
  150. elseif severity == 'INFO' or severity == '一般' or severity == '3' or severity == '2' or severity == '1' then
  151. return "<kbd style='background-color:#3BC303;'>一般</kbd>"
  152. elseif severity== '6' then
  153. return "<kbd style='background-color:#6BD2D2;'>未知</kbd>"
  154. end
  155. </lua>
  156. | lua msg=<lua>
  157. s = string.gsub(msg, host, "<span style='background-color:#fae4ae;'>".."%1".."</span>")
  158. return s
  159. </lua>
  160. | lua msg=<lua>
  161. if src=="shell" then
  162. return "<pre style='border:0px;'>"..string.gsub(msg, "UN", "<kbd style='background-color:#4AB93D;'>".."%1".."</kbd>").."</pre>"
  163. end
  164. </lua>
  165. | lua msg=<lua>
  166. if src=="shell" then
  167. return "<pre style='border:0px;'>"..string.gsub(msg, "DN", "<kbd style='background-color:#ff0000;'>".."%1".."</kbd>").."</pre>"
  168. end
  169. </lua>`)*/
  170. /*rst, meta, err := g.Search(`#/matrix/entity/hardware/: | print assetid,
  171. biz,
  172. class,
  173. company,
  174. config,
  175. contact,
  176. ctel,
  177. day,
  178. dc,
  179. department,
  180. files,
  181. host,
  182. id,
  183. ip,
  184. location,
  185. model,
  186. name,
  187. period,
  188. rack,
  189. region,
  190. room,
  191. sn,
  192. status,
  193. tel,
  194. type,
  195. unit,
  196. vtime | except id=*#*`)*/
  197. //rst,err := g.Search(`select * from /matrix/ldap where id = 16882012185573752086`)
  198. /*rst,err := g.Search(`#/matrix/devops/log/: | top 1000| print id,vtime,class,biz,host,app,inst,param,msg,severity,src
  199. | sort vtime desc, severity desc`) */
  200. /*
  201. rst,err := g.Search(`#/matrix/devops/performance/:| top 1000| lua value=<lua>
  202. return "hhh"
  203. </lua> | inst=cpu* | top 5`,false)
  204. */
  205. //rst,err := g.OnlySearch(`~mxsvr01|grep Matrix|print host|sort host|after '09:08'|top 10`)
  206. //rst,err := g.Search(`mxsvr01|print host,vtime|sort host|window "01:01" to "09:08"|top 10|count`)
  207. /*rst,err := g.OnlySearch(`/matrix/devops/performance/:
  208. | id=8042811419123646451
  209. | sort vtime asc
  210. | top 2880
  211. | within 8hour`)*/
  212. //rst,err := g.OnlySearch(`mxsvr201 | ERROR | contain @biz -> @host, @host -> @app, @app -> @inst`)
  213. //rst,meta, err := g.Search(`debug> /matrix/devops/event/: | mxsvr221 | tags="严重错误"`)
  214. //rst,meta, err := g.Search(`debug> /matrix/test | print class,id,name,value1,value2 | name=test|tags -'测试3'`)
  215. //rst,meta, err := g.Search(`debug>#/matrix/testgroup: | avg(v1) as name_avgv1,sum(v2) as name_sumv2 | group by g1 `)
  216. //rst,meta, err := g.Search(`debug> #/matrix/entity/: top 200`)
  217. //rst,meta, err := g.Search(`debug> /matrix/test | print class,id,name | name = test2 | tag +测试2`)
  218. //rst,meta, err := g.Search(`debug> /matrix/devops/event/: | mxsvr221 `)
  219. /*rst,err := g.OnlySearch(`#/matrix/devops/performance:
  220. | sort biz asc,host asc,app asc,inst asc,param asc,value asc,vtime desc
  221. | top 1000
  222. | except ip=null`)*/
  223. //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{$.id}}附加说明/g' `)
  224. //rst,err := g.OnlySearch(`#/matrix/dashboard: | name=dashboard_1481167032 | delete `)
  225. //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{.id}}附加说明/g' `)
  226. //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's/mxsvr201/{{$.id}}附加说明/g' `)
  227. //rst,err := g.OnlySearch(`mxsvr201 | top2 | sed 's//{{$.id}}附加说明/g' `)
  228. //rst,err := g.OnlySearch(`# /matrix/devops/event/:`)
  229. //rst,err := g.Search(`mxsvr201 | top2 | sed s//(mx)(svr[\d]+)//${1}附加${2}//g `,false)
  230. //rst,err := g.Search(`mxsvr201 | top10 | print host, id | expr host:<s> "hello " + host + id </s> `,false)
  231. //rst,err := g.OnlySearch("# /matrix/devops/performance | print value, host | expr value=`\"ppp\"+value` , host=`\"pppp\"+host+\"444\"` ")
  232. //rst,err := g.OnlySearch(`# /matrix/devops/performance/ | print value, host | top 1 | lua host=<lua> return "pppp"..host.."444" </lua>`)
  233. /*rst,err := g.OnlySearch(`#/matrix/devops/performance/: | param = usedpercent
  234. | inst = cpu1
  235. | sort vtime desc, host
  236. | top 10
  237. | uniq host
  238. | print host,inst,param,value`)*/
  239. /*rst,err := g.OnlySearch(`/matrix/devops/performance/: | id=13722093446131916505
  240. | within 600 minutes
  241. | sort vtime asc
  242. | top 10`)*/
  243. //rst,err := g.OnlySearch(`mxsvr201 |error event | top 10 | id=-5062375036196941011`)
  244. //rst,err := g.OnlySearch(`id='13722093446131916505'`)
  245. //rst,err := g.OnlySearch(`ticketid='IM201701170004234' | update remark = 'tsoracle.bmc.com'`)
  246. //rst,err := g.OnlySearch(`error | print severity | lua severity=<lua>return "<kbd>"..severity.."</kbd>"</lua>`)
  247. /*rst,err := g.OnlySearch(`/matrix/devops/performance | sort vtime desc
  248. | top 10
  249. | 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>"
  250. </s>` )*/
  251. //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' `)
  252. //rst,err := g.OnlySearch(`# /matrix/devops/performance/:| print value | sed value:'i asdfasdfsadf' `)
  253. /*rst,err := g.OnlySearch(`# /matrix/devops/performance/:
  254. | sort biz asc,host asc,app asc,inst asc,param asc,value asc,vtime desc
  255. | top 1000| except ip=null
  256. | lua value=<lua>
  257. if param == 'usedpercent' then
  258. if value > 60 then
  259. return "<span class='pull-right' style='color:#FF0000;' title='超过阈值{60%}'><b>" .. string.format("%.2f",value) .. " %</b> <i class='fa fa-sort-up'></i></span>"
  260. else
  261. return "<span class='pull-right' style='color:#0088CC;'><b>" .. string.format("%.2f",value) .. " %</b></span>"
  262. end
  263. elseif param == 'cores' then
  264. return "<span class='pull-right' style='color:#0088CC;'><b>" .. value .. "</b></span>"
  265. else
  266. return "<span class='pull-right' style='color:#9999CC;'><b>" .. string.format("%.2f",value/1024/1024) .. " MB</b></span>"
  267. end
  268. </lua>`)*/
  269. //rst,err := g.OnlySearch(`#/matrix/devops/performance/: | inst=cpu1 | param=usedpercent`)
  270. //rst,err := g.OnlySearch(`# /matrix/devops/performance/: | value > 5000 | top 1000 `)
  271. /*
  272. rst,err := g.OnlySearch(`#/matrix/devops/performance:
  273. | sort biz asc,host asc,app asc,inst asc,param asc,value asc,ctime desc
  274. | top 1000
  275. | except ip=null`)
  276. */
  277. /*
  278. if fields, err := g.Query("select node,agent,summary from /matrix/event/tivoli where severity>=0 "); err != nil {
  279. fmt.Println(err.Error())
  280. }else{
  281. for i:=0 ; i< len(fields) ;i++ {
  282. fmt.Println(fields[i]["agent"].(string),fields[i]["summary"].(string))
  283. }
  284. }
  285. */
  286. /*
  287. if _, err := g.Query("truncate /matrix/event/open"); err != nil {
  288. fmt.Println(err.Error())
  289. }else{
  290. }
  291. */
  292. // 测试 Alter Table
  293. /*
  294. for i:=0 ; i<1000 ;i++ {
  295. sql := fmt.Sprintf(`ALTER TABLE object ADD H%d %s`,i,"text")
  296. logger.Debugf(sql)
  297. if err := g.GetSession().Query(sql).Consistency(gocql.Quorum).Exec(); err != nil {
  298. logger.Fatalf("ADD ERROR %v",err)
  299. }
  300. */
  301. /*
  302. for i:=0 ; i<1000 ;i++ {
  303. sql := fmt.Sprintf(`ALTER TABLE object DROP H%d `,i)
  304. logger.Debugf(sql)
  305. if err := g.GetSession().Query(sql).Consistency(gocql.Quorum).Exec(); err != nil {
  306. logger.Fatalf("DROP ERROR %v",err)
  307. }
  308. }
  309. */
  310. if err != nil {
  311. logger.Info("Query error:" + err.Error())
  312. } else {
  313. logger.Info("rst ===>", rst)
  314. // for graph
  315. if graph, err := json.Marshal(rst); err != nil {
  316. logger.Error(err.Error())
  317. } else {
  318. logger.Error("graph ===>", string(graph))
  319. }
  320. logger.Error("meta ===>", meta)
  321. if meta["trace"] != nil && len(meta["trace"].([]string)) > 0 {
  322. for _, msg := range meta["trace"].([]string) {
  323. logger.Error(msg)
  324. }
  325. }
  326. logger.Warn(meta["columns"])
  327. logger.Warn(meta["summary"])
  328. }
  329. }