logAction.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. var input = JSON.parse(decodeURIComponent(INPUT));
  2. var getSerial = function(id){
  3. try{
  4. var mql = "select serverserial from /matrix/devops/ where id='"+id+"'";
  5. return odb.mql(mql).data[0]['serverserial'];
  6. }catch(err){
  7. log.error(err);
  8. return null;
  9. }
  10. }
  11. var getLdap = function(param){
  12. try{
  13. var rtn = [];
  14. param.forEach(function(v){
  15. var mql = "select firstname,lastname,email,mobile,wechat from /matrix/ldap where username='"+v.name+"'";
  16. log.info(mql)
  17. var p = odb.mql(mql).data[0];
  18. var rt = [];
  19. rt.push(p.firstname + p.lastname);
  20. rt.push(p.email.join(","));
  21. rt.push(p.mobile.join(","));
  22. rt.push(p.wechat);
  23. _.compact(rt)
  24. rtn.push(rt.join(","))
  25. })
  26. return _.compact(rtn);
  27. }catch(err){
  28. log.error(err);
  29. return null;
  30. }
  31. }
  32. var columns = [{
  33. field: "serverserial",
  34. title: "告警ID",
  35. width: "160"
  36. },
  37. {
  38. field: "people",
  39. title: "接收人",
  40. width: "160"
  41. },
  42. {
  43. field: "rule",
  44. title: "通知策略",
  45. width: "160"
  46. },
  47. {
  48. field: "msg",
  49. title: "通知内容"
  50. },
  51. {
  52. field: "sendtime",
  53. title: "发送时间",
  54. width: "160",
  55. render: 'var s=function(row, column, cellValue, index){return moment(cellValue).format("YYYY-MM-DD HH:mm:ss");};eval(s);'
  56. },
  57. {
  58. field: "sendstatus",
  59. title: "发送状态",
  60. render: 'var s=function(row, column, cellValue, index){ return cellValue.status; };eval(s);',
  61. visible: false
  62. },
  63. {
  64. field: "tags",
  65. title: "标签",
  66. width: "180",
  67. visible: false
  68. },
  69. {
  70. field: "name",
  71. title: "名称",
  72. width: "120",
  73. visible: false
  74. },
  75. {
  76. field: "id",
  77. title: "ID",
  78. width: "80",
  79. visible: false
  80. },
  81. {
  82. field: "class",
  83. title: "类",
  84. width: "80",
  85. visible: false
  86. }
  87. ];
  88. var logList = function(data) {
  89. try {
  90. var rt = [];
  91. data.forEach(function(v){
  92. var content = JSON.parse(v.content);
  93. var sendstatus = JSON.parse(v.sendstatus);
  94. content.forEach(function(val){
  95. var status = _.find(sendstatus,{id:val.id}) || null;
  96. var serverserial = getSerial(val.id);
  97. var people = getLdap(val.to)
  98. rt.push( { id:val.id, serverserial: serverserial, rule:val.rule, msg:val.msg, people: people, sendstatus:status, sendtime:v.sendtime } )
  99. })
  100. })
  101. return rt;
  102. }catch(err) {
  103. log.error(err);
  104. return [];
  105. }
  106. };
  107. var actions = function() {
  108. try {
  109. if (input.action === 'search') {
  110. var params = [];
  111. if(input.data.time){
  112. params.push(['window '+input.data.time[0] + ' to ' + input.data.time[1] + ' for sendtime']);
  113. }
  114. if(input.data.id){
  115. params.push(input.data.id);
  116. }
  117. if(input.data.person){
  118. params.push(input.data.person);
  119. }
  120. params.push("top 20")
  121. var mql = "#/matrix/notification/log | " + params.join(" | ") + " | sort by sendtime desc";
  122. log.info(mql)
  123. var rows = logList(odb.search(mql).data);
  124. return {
  125. rows: rows,
  126. columns: columns
  127. };
  128. } else {
  129. var mql = "select * from /matrix/notification/log limit 20 order by vtime desc";
  130. var rows = logList(odb.mql(mql).data);
  131. return {
  132. rows: rows,
  133. columns: columns
  134. };
  135. }
  136. } catch(err) {
  137. log.error(err);
  138. return err;
  139. }
  140. }
  141. OUTPUT = actions();