123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- var input = JSON.parse(decodeURIComponent(INPUT));
- var getSerial = function(id){
- try{
- var mql = "select serverserial from /matrix/devops/ where id='"+id+"'";
-
- return odb.mql(mql).data[0]['serverserial'];
- }catch(err){
- log.error(err);
- return null;
- }
- }
- var getLdap = function(param){
- try{
- var rtn = [];
- param.forEach(function(v){
- var mql = "select firstname,lastname,email,mobile,wechat from /matrix/ldap where username='"+v.name+"'";
- log.info(mql)
- var p = odb.mql(mql).data[0];
- var rt = [];
- rt.push(p.firstname + p.lastname);
- rt.push(p.email.join(","));
- rt.push(p.mobile.join(","));
- rt.push(p.wechat);
- _.compact(rt)
- rtn.push(rt.join(","))
- })
-
- return _.compact(rtn);
- }catch(err){
- log.error(err);
- return null;
- }
- }
- var columns = [{
- field: "serverserial",
- title: "告警ID",
- width: "160"
- },
- {
- field: "people",
- title: "接收人",
- width: "160"
- },
- {
- field: "rule",
- title: "通知策略",
- width: "160"
- },
- {
- field: "msg",
- title: "通知内容"
- },
- {
- field: "sendtime",
- title: "发送时间",
- width: "160",
- render: 'var s=function(row, column, cellValue, index){return moment(cellValue).format("YYYY-MM-DD HH:mm:ss");};eval(s);'
- },
- {
- field: "sendstatus",
- title: "发送状态",
- render: 'var s=function(row, column, cellValue, index){ return cellValue.status; };eval(s);',
- visible: false
- },
- {
- field: "tags",
- title: "标签",
- width: "180",
- visible: false
- },
- {
- field: "name",
- title: "名称",
- width: "120",
- visible: false
- },
- {
- field: "id",
- title: "ID",
- width: "80",
- visible: false
- },
- {
- field: "class",
- title: "类",
- width: "80",
- visible: false
- }
- ];
- var logList = function(data) {
- try {
- var rt = [];
- data.forEach(function(v){
- var content = JSON.parse(v.content);
- var sendstatus = JSON.parse(v.sendstatus);
- content.forEach(function(val){
- var status = _.find(sendstatus,{id:val.id}) || null;
- var serverserial = getSerial(val.id);
- var people = getLdap(val.to)
- rt.push( { id:val.id, serverserial: serverserial, rule:val.rule, msg:val.msg, people: people, sendstatus:status, sendtime:v.sendtime } )
- })
- })
- return rt;
- }catch(err) {
- log.error(err);
- return [];
- }
- };
- var actions = function() {
- try {
- if (input.action === 'search') {
- var params = [];
- if(input.data.time){
- params.push(['window '+input.data.time[0] + ' to ' + input.data.time[1] + ' for sendtime']);
- }
- if(input.data.id){
- params.push(input.data.id);
- }
- if(input.data.person){
- params.push(input.data.person);
- }
- params.push("top 20")
- var mql = "#/matrix/notification/log | " + params.join(" | ") + " | sort by sendtime desc";
- log.info(mql)
- var rows = logList(odb.search(mql).data);
- return {
- rows: rows,
- columns: columns
- };
- } else {
- var mql = "select * from /matrix/notification/log limit 20 order by vtime desc";
- var rows = logList(odb.mql(mql).data);
- return {
- rows: rows,
- columns: columns
- };
- }
- } catch(err) {
- log.error(err);
- return err;
- }
- }
- OUTPUT = actions();
|