From b56d5d42772a1aed0dc14af6f8c9c90ca41280ca Mon Sep 17 00:00:00 2001 From: denz Date: Thu, 2 Apr 2015 14:10:54 +0900 Subject: [PATCH 1/3] Add various merging type besides "unknown" minor UI change --- .../js/jquery.ServerMap2.js | 126 ++++++-- .../main/webapp/images/icons/CUBRID_GROUP.png | Bin 0 -> 2617 bytes .../webapp/images/icons/MONGODB_GROUP.png | Bin 0 -> 2270 bytes .../webapp/images/icons/MSSQLSERVER_GROUP.png | Bin 0 -> 5060 bytes .../main/webapp/images/icons/MYSQL_GROUP.png | Bin 0 -> 4011 bytes .../main/webapp/images/icons/ORACLE_GROUP.png | Bin 0 -> 2205 bytes .../webapp/scripts/controllers/filteredMap.js | 2 +- .../main/webapp/scripts/controllers/main.js | 4 +- .../scripts/controllers/transactionList.js | 2 +- .../scripts/directives/nodeInfoDetails.js | 6 +- .../webapp/scripts/directives/serverMap.js | 97 ++++-- .../scripts/directives/transactionTable.js | 3 + .../webapp/scripts/services/ServerMapDao.js | 295 +++++++++--------- web/src/main/webapp/styles/serverMap.css | 6 +- .../main/webapp/views/linkInfoDetails.html | 4 +- .../main/webapp/views/nodeInfoDetails.html | 8 +- web/src/main/webapp/views/serverMap.html | 7 +- 17 files changed, 351 insertions(+), 209 deletions(-) create mode 100644 web/src/main/webapp/images/icons/CUBRID_GROUP.png create mode 100644 web/src/main/webapp/images/icons/MONGODB_GROUP.png create mode 100644 web/src/main/webapp/images/icons/MSSQLSERVER_GROUP.png create mode 100644 web/src/main/webapp/images/icons/MYSQL_GROUP.png create mode 100644 web/src/main/webapp/images/icons/ORACLE_GROUP.png diff --git a/web/src/main/webapp/components/pinpoint-servermap/js/jquery.ServerMap2.js b/web/src/main/webapp/components/pinpoint-servermap/js/jquery.ServerMap2.js index e8d365554..0c9568d10 100644 --- a/web/src/main/webapp/components/pinpoint-servermap/js/jquery.ServerMap2.js +++ b/web/src/main/webapp/components/pinpoint-servermap/js/jquery.ServerMap2.js @@ -20,7 +20,8 @@ * @method $init * @param {Hash Table} options */ - $init: function (htOption) { + $init: function (htOption, $location) { + this._query = ""; this.option({ "sContainerId": '', "sOverviewId": '', @@ -39,7 +40,9 @@ 'MEMCACHED': 'MEMCACHED.png', 'MONGODB': 'MONGODB.png', 'MSSQLSERVER': 'MSSQLSERVER.png', + 'MSSQLSERVER_GROUP': 'MSSQLSERVER.png', 'MYSQL': 'MYSQL.png', + 'MYSQL_GROUP': 'MYSQL.png', 'NBASE': 'NBASE.png', 'NGINX': 'NGINX.png', 'ORACLE': 'ORACLE.png', @@ -47,6 +50,7 @@ 'STAND_ALONE': 'STAND_ALONE.png', 'TOMCAT': 'TOMCAT.png', 'UNDEFINED': 'UNDEFINED.png', + 'UNDEFINED_GROUP': 'UNDEFINED.png', 'UNKNOWN': 'UNKNOWN.png', 'UNKNOWN_GROUP': 'UNKNOWN_GROUP.png', 'REDIS': 'REDIS.png', @@ -58,12 +62,13 @@ "backgroundColor": "#ffffff", "borderColor": "#C5C5C5", "borderWidth": 1, - "fontColor": "#1F1F21" + "fontColor": "#000000" }, "bold": { "backgroundColor": "#f2f2f2", "borderColor": "#666975", - "borderWidth": 2 + "borderWidth": 2, + "fontColor": "#000000" } }, "htLinkType": { @@ -94,7 +99,8 @@ //"borderColor": "#25AFF4", "borderColor": "#53069B", "backgroundColor": "#289E1D", - "fontColor": "#ffffff" + //"fontColor": "#5cb85c" + "fontColor": "#53069B" }, "htHighlightLink": { "fontFamily": "bold 12pt avn55,NanumGothic,ng,dotum,AppleGothic,sans-serif", @@ -130,7 +136,7 @@ this._initNodeTemplates(); this._initLinkTemplates(); this._initDiagramEnvironment(); - this._initOverview(); + this._initOverview( $location ); }, /** @@ -202,7 +208,7 @@ click: function (e, obj) { self._onNodeClicked(e, obj); }, - contextClick: self._onNodeContextClicked.bind(this) + contextClick: self._onNodeContextClicked.bind(self) }, self.$( go.Shape, @@ -388,6 +394,7 @@ self.$( go.TextBlock, { + name: "NODE_APPLICATION_NAME", margin: new go.Margin(1, 2), column: 2, font: self.option('sSmallFont'), @@ -430,7 +437,7 @@ self._onNodeClicked(e, obj); } }, - contextClick: self._onNodeContextClicked.bind(this) + contextClick: self._onNodeContextClicked.bind(self) }, self.$( go.Shape, @@ -452,11 +459,13 @@ go.Panel, go.Panel.Spot, { + name: "NODE_1SUB_PANEL", }, self.$( go.Panel, go.Panel.Vertical, { + name: "NODE_2SUB_PANEL", alignment: go.Spot.TopLeft, alignmentFocus: go.Spot.TopLeft, minSize: new go.Size(130, NaN) @@ -483,12 +492,51 @@ new go.Binding("itemArray", "unknownNodeGroup") ) ) + ), + self.$( + go.Panel, + go.Panel.Auto, + { + alignment: go.Spot.TopRight, + alignmentFocus: go.Spot.TopRight, + visible: false + }, + new go.Binding("visible", "instanceCount", function (v) { + return v > 1 ? true : false; + }), + self.$( + go.Shape, + { + figure: "RoundedRectangle", + fill: "#848484", + strokeWidth: 1, + stroke: "#848484" + } + ), + self.$( + go.Panel, + go.Panel.Auto, + { + margin: new go.Margin(0, 3, 0, 3) + }, + self.$( + go.TextBlock, + new go.Binding("text", "instanceCount"), + { + stroke: "#FFFFFF", + textAlign: "center", + height: 16, + font: self.option('sSmallFont'), + editable: false + } + ) + ) ) ); }; _.each(htIcons, function (sVal, sKey) { - if (sKey === "UNKNOWN_GROUP") { + if ( sKey.indexOf( "_GROUP" ) != -1 ) { this._oDiagram.nodeTemplateMap.add(sKey, getUnknownGroupTemplate(sVal)); } else { this._oDiagram.nodeTemplateMap.add(sKey, getNodeTemplate(sVal)); @@ -711,14 +759,19 @@ * * @method _initOverview */ - _initOverview: function () { - this._oOverview = this.$( go.Overview, - this.option('sOverviewId'), - { observed: this._oDiagram } - ); - this._oOverview.box.elt(0).figure = "RoundedRectangle"; - this._oOverview.box.elt(0).stroke = "#53069B"; - this._oOverview.box.elt(0).strokeWidth = 4; + _initOverview: function ( $location ) { + + if ( /^\/main/.test( $location.path() ) ) { + this._oOverview = this.$( go.Overview, + this.option('sOverviewId'), + { observed: this._oDiagram } + ); + this._oOverview.box.elt(0).figure = "RoundedRectangle"; + this._oOverview.box.elt(0).stroke = "#53069B"; + this._oOverview.box.elt(0).strokeWidth = 4; + } else { + $( "#" + this.option('sOverviewId') ).hide(); + } }, /** @@ -787,7 +840,7 @@ // nodes, including groups while (allNodes.next()) { - this._hightlightNode(allNodes.value.findObject("NODE_SHAPE"), allNodes.value.findObject("NODE_TEXT"), allNodes.value.highlight); + this._highlightNode(allNodes.value.findObject("NODE_SHAPE"), allNodes.value.findObject("NODE_TEXT"), allNodes.value.highlight); } // links while (allLinks.next()) { @@ -853,18 +906,43 @@ * @param theme * @private */ - _hightlightNode: function (nodeShape, nodeText, theme) { + _highlightNode: function (nodeShape, nodeText, theme) { if (nodeShape === null || nodeText === null) { return; } if (theme) { nodeShape.stroke = this.option('htHighlightNode').borderColor; nodeShape.strokeWidth = 2; + nodeShape.part.isShadowed = true; + + if ( this._query != "" ) { + if ( nodeText.type === go.Panel.Table ) { + for( var i = 0 ; i < nodeText.rowCount ; i++ ) { + if ( new RegExp( this._query, "i" ).test( nodeText.elt(i).elt(1).text ) ) { + nodeText.elt(i).elt(1).stroke = this.option('htHighlightNode').fontColor; + } + } + } else { + if ( new RegExp( this._query, "i" ).test( nodeText.text ) ) { + nodeText.stroke = this.option('htHighlightNode').fontColor; + } + } + } // nodeText.stroke = this.option('htHighlightNode')[theme].fontColor; } else { var type = (nodeShape.key === this.option('sBoldKey')) ? 'bold' : 'default'; nodeShape.stroke = this.option('htNodeTheme')[type].borderColor; nodeShape.strokeWidth = 1; + nodeShape.part.isShadowed = false; + + if ( nodeText.type === go.Panel.Table ) { + for( var i = 0 ; i < nodeText.rowCount ; i++ ) { + nodeText.elt(i).elt(1).stroke = this.option('htNodeTheme')[type].fontColor; + } + } else { + nodeText.stroke = this.option('htNodeTheme')[type].fontColor; + } + // nodeText.stroke = this.option('htNodeTheme').default.fontColor; } }, @@ -1070,10 +1148,14 @@ this._oDiagram.contentAlignment = go.Spot.Center; this._oDiagram.contentAlignment = go.Spot.None; }, + clearQuery: function() { + this._query = ""; + }, /** * search node */ - searchNode: function( nodeName, nodeServiceType ) { + searchNode: function( query, nodeServiceType ) { + this._query = query; var allNodes = this._oDiagram.nodes, selectedNode = null, selectedIndex = 0, @@ -1082,17 +1164,17 @@ while (allNodes.next()) { var node = allNodes.value; - if ( node.data.serviceType == this.option("unknownGroupName") && ( nodeServiceType == this.option("unknownGroupName") || nodeServiceType == null ) ) { + if ( node.data.unknownNodeGroup ) { var unknownNodeGroup = node.data.unknownNodeGroup; for( var i = 0; i < unknownNodeGroup.length ; i++ ) { - if ( new RegExp( nodeName, "i" ).test( unknownNodeGroup[i].applicationName ) ) { + if ( new RegExp( query, "i" ).test( unknownNodeGroup[i].applicationName ) ) { this._addNodeToTemporaryList( similarNodeList, returnNodeDataList, node, unknownNodeGroup[i], this.option("unknownGroupName") ); break; } } } else { if ( !angular.isUndefined( node.data.applicationName ) ) { - if ( new RegExp( nodeName, "i" ).test( node.data.applicationName ) ) { + if ( new RegExp( query, "i" ).test( node.data.applicationName ) ) { this._addNodeToTemporaryList( similarNodeList, returnNodeDataList, node, node.data ); if ( new RegExp( nodeServiceType, "i" ).test( node.data.serviceType ) ) { selectedIndex = similarNodeList.length - 1; diff --git a/web/src/main/webapp/images/icons/CUBRID_GROUP.png b/web/src/main/webapp/images/icons/CUBRID_GROUP.png new file mode 100644 index 0000000000000000000000000000000000000000..2521c794895cf245e8b0fca5821c04a3118aec25 GIT binary patch literal 2617 zcmb7Gdpwi-A7A-}M7ecBuW6e_F1ufBi!^&Sl(`I%I)~Yw7`AB}<`SjIipu3kl#WqR z9Jg`~CDAXHP9>_Ni=vAzWJS7=&hJ^LI{k58yrO}GxG8Tc+g1HKKi=Q+uAL=0U9h7><~qObb}(1F9Tsrp)>+Sc!~LuAP?jVlQv!i zU0^VsI#FPVB82PB5J<&XzSah-6vshm7|g{@8OImIfC@we7%7stqBJMlQ3#RH6%|b3 z;<<4wFiPZ^ECU0QeF6o^F#@^}<+cLhqGUh>Vo3h~KA z5#x&b+o=$)AA%*7fd~qggc0Bg1O%0eC6FmpD!~as#1n`(Jakhr1Tup{We}YapDz@o zCKGO8@Bq$dEokM6ic%=z7&u&FVj?z?gq6x7aRfS@uH_&SF^~mDo+MH5l^BWK<_iM= z$^|k}oI)g(AheA92x+{+6$N?vcL?G*o+vU(A^%D)k$+AWls24_ABQ7g@i^Hh8*O}F zP+ac!5n}OIYq^34{^R_=^2-C0;y@e^luP4f0;q}`Y`&5DzL3`Na|{eFUls#GRpjtv z<>03eTrR^Ga$Y3i#{yD8ycm=yyZ~2Je7s1=AQ4C$7KutD(Wo3Ykw9?QPVrP0h0dgs zNHpLJ!M8w23oC@M&IEu0&;T-!1P$o(M zg&dhwjQEswhUj1P$uwswKqHZfOg58Eg5svI-2ps{$z&3#&U8Ez^%*PtzY~UoJi%$Z z?3=FpvIVuWcKY=UL5r`a5R^bglR;<9w(e9W45o|l0+@ly+oPc=u>nCAe+}HZlYl9# zmBf_8ZCn7nniOjMaWjxxvS-t^l z2W_59otkE~DuahhDSEBBE6>o-&GxfRj7nCL3r#%<8)q4I%~ibGnuEV%56?U~FXVwv zge41oajp3Z9BlC{l<7_zi#qoa^WVsA;~qGn<8HrKWOlCpD&iVm*;;f#kjyGkxM|zP zVN5r=S+9>ZZES$KQm-49WYt`5sHvE<+W1`QEj_EXs3mjNt?LVKt=8|z$R>~&vQUFf zs2y3v=2G+F@^@#V4B9ouMP{k3t$8kQdE}L)X&V1;B&j+-okujXV8KC zpfKbR68sNc4?gy8WIGCZW$AUZWj%eDrcBKZ33XQ0;@$^c(bs-g`|s>?_r1X}2IaJ2 z{8D&Ge2>5>6WG6dYr!&ReCOk)dFkyzIPyH(@xAw63mFFyeFgd7e1IquTHz`Z3U6*}LPvQU zi+9~^%zYV}yxm@Shj{rU9KB=lwHqylji#Ai<9(|qTNZYkEGSFZ%W#G_{Ba;)$Rl;~ z=Gk12n`uTLxX%Cz`Vy`}wR_7{Q)K<=%aKQR*7Ye4JMz_M{Folda_pt-;|o;=;q>Ke zXn7VGN$|qKSFqvyeS1z6-Q!};ZQ-rEc)WfhXQo7VzcQ+6-jm^wa*J&2$cai|X%TuT zYo*6s`0nX|Z2b&X_HEapvEk7B>GgI_WkF^n6V<{sT@#1Qk3>q3T)FWuVQ}_}!^b9g z`Ea&+7?yfjZtKI@uH574G>Xg%EUc+O$I0^HcIRUEh1JY-`UgFktJiRS$)H2zf!>Zu z8(mhfL)w0i$Q);Gy7A%4yJpnICW9XZg*?y7o%>IC-g6g@(EL^F>JBo?>(%}vqIb#< zEk$v*FLu>`gj)_?xN7#36VOs#m8LVbVhoo_sdgPF^G7`2+N2IIGTybw^AVxbvEmTx zx`N2v_Iy@;Kk0U}_eImu9~jn|(Hnc;KTad|lg-gGkJ^y3+IHiO3w|${V}<<__Kqj!i+tVPy#@546F Zg4O(BjZvL7D%JkXd9i(fU){qq{s)VAJUIXW literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/images/icons/MONGODB_GROUP.png b/web/src/main/webapp/images/icons/MONGODB_GROUP.png new file mode 100644 index 0000000000000000000000000000000000000000..f7faabfaae4a33696a44d4be815c32ae1fdc1e35 GIT binary patch literal 2270 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 B_?G|x literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/images/icons/MYSQL_GROUP.png b/web/src/main/webapp/images/icons/MYSQL_GROUP.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7133f28f2e186a2efb004b739171342ea01eaf GIT binary patch literal 4011 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 bv=ekNHSFtgknqjz-)9qo1^&Ll*(?7C9e4K! literal 0 HcmV?d00001 diff --git a/web/src/main/webapp/images/icons/ORACLE_GROUP.png b/web/src/main/webapp/images/icons/ORACLE_GROUP.png new file mode 100644 index 0000000000000000000000000000000000000000..77044a3a271752d1ea05d0637c2a5ea2dfa427e8 GIT binary patch literal 2205 zcmb7G2~ZQ~9*LN*b^K!ikjU`Il-K!9XJ5==l4Dy3ra z0FQ_A5UE-ekV}q-prXhOV7*X~Lj)WS1qB4uzF4epL&4gajx%p(cmLn_?f>`t-!r?H z@4vyq+{PS(!C3hEK!KK{{M^!=q*MkOj%sX4*wAS6Pq5h-B|OM-;MfUisx2?xR= zNkUv3ydHxwESCy`)xo??bTJ~siS#-+txSQUF_`sUT7^g)1FL~>I8rKSV5b@yv4B*< zz;31R2s{NFj*|K$D&e3+e}OnLM(iQMdU*otwRDs~2CGGYRu(H)(X|ZhJTDzx>yPnR zU|vNX!@&OGR4|VZun{E;P;ewSF#!YtDisHkDO4)x3J?h(5l=vGsvAhAQ>b*JJFswJ zQEN&`1U(SqF4#hM3~ZEIt)S!a8jS|0A>j~ZBp&qe@X&J*iEgNdn<_!B7HQq&Du+b| z2v&)eQiWQI$N@d0C>)7bGq9+qe}o`Y1WF^L)T;O7a@9hz(6r&TA_X4A5%9`+9esR@ zC?4A*45LiSG*@L!-^_8pCBDomW8`Wc_ ze`38qilwuaut<$41qc$m*iHN>M2)DT5Cy;vq5{rarE&?PQMu?#jdG)*La(qgrr2d-K4~v3) z?1jR;w%!0sxA_Q`bHiNCOk*|=> zC%Av^h|b71U1_5Oq1Yq2|resukVUIaWT2QgxU(h2zwH}|HP_gpS3uB&aqm~H=sJG^b}OvQmMLdtlcVR|gZD!IMr z=ExTgf})$7txxour5BWLyr7G{IH1ekfB9i^(aa~CQf8GMpSGG#PSS6+KW3KDZ^0A? zNktZH{i9_0nZtEmm@R;dV^*itM1Z8*c!?im`T2#&m)A{0bw&-(wvRqOO)qtfYia+L zLJO+syDvCz$tgMA zmH$+pSXux)phBn2Uq)D78uyzfoeMi;bSUH(yZS6!pJq~Y#<&!5HZkH2m1%2+PToC;s{2&W60&2dWsG!@Z2O!nnd2woOjJ^XldHPJ*lD z!*9>#2I7fFLz+(y&%P_^5}f*6{?e;PaG+h zKGF=IikqCC_T9t0SUq#xI{loiZ<|5R`IqY~qRQT$nA)|r!&CXYnQ|`S0e8@UqSesA z#M-#AHq}blaN=mRd;2s5OX^pjl1vxWbWQu-n%f@zI*BLx*Xs-S=MGBB^W%JnCN7PS z+O{=u3)XC{krlB> sourceCount == 0 인 경우 root node 라고 생각 할 수 있습니다. + // > sourceCount == 1 인 경우 아마도 merging을 대상이 아님. nodes.forEach(function (node) { - if (!inboundCountMap[node.key]) { - inboundCountMap[node.key] = { - "sourceCount": 0, - "totalCallCount": 0 - }; - } - - links.forEach(function (link) { + var sourceCount = 0; + var totalCallCount = 0; + links.forEach(function (link) { if (link.to === node.key) { - inboundCountMap[node.key].sourceCount++; - inboundCountMap[node.key].totalCallCount += link.totalCount; + sourceCount++; + totalCallCount += link.totalCount; } }); + inboundCountMap[node.key] = { + "sourceCount": sourceCount, + "totalCallCount": totalCallCount + }; }); - - var newNodeList = []; - var newLinkList = []; - - var removeNodeIdSet = {}; - var removeLinkIdSet = {}; - function getNodeByApplicationName(applicationName) { for(var k in nodes) { if (applicationName === nodes[k].applicationName) { @@ -485,128 +480,150 @@ pinpointApp.service('ServerMapDao', [ 'serverMapDaoConfig', function ServerMapDa return false; } - nodes.forEach(function (node, nodeIndex) { - if (node.category === "UNKNOWN") { - return; - } - - var newNode; - var newLink; - var newNodeKey = "UNKNOWN_GROUP_" + node.key; - - var unknownCount = 0; - links.forEach(function (link, linkIndex) { - if (link.from == node.key && - link.targetInfo.serviceType == "UNKNOWN" && - inboundCountMap[link.to] && inboundCountMap[link.to].sourceCount == 1) { - unknownCount++; - } - }); - if (unknownCount < 2) { - return; - } - - // for each children. - links.forEach(function (link, linkIndex) { - if (link.targetInfo.serviceType != "UNKNOWN") { - return; - } - if (inboundCountMap[link.to] && inboundCountMap[link.to].sourceCount > 1) { - return; - } - - // branch out from current node. - if (link.from == node.key) { - if (!newNode) { - newNode = { - "key": newNodeKey, - "unknownNodeGroup": [], - "serviceType": "UNKNOWN_GROUP", - "category": "UNKNOWN_GROUP" - }; - } - if (!newLink) { - newLink = { - "key": node.key + "-" + newNodeKey, - "from": node.key, - "to": newNodeKey, - "sourceInfo": {}, - "targetInfo": [], - "totalCount": 0, - "errorCount": 0, - "slowCount": 0, - "hasAlert": false, - "unknownLinkGroup": [], - "histogram": {} - }; - } - - var thisNode = getNodeByApplicationName(link.targetInfo.applicationName); - delete thisNode.category; - newNode.unknownNodeGroup.push(thisNode); - - link.targetInfo['totalCount'] = link.totalCount; - newLink.totalCount += link.totalCount; - newLink.errorCount += link.errorCount; - newLink.slowCount += link.slowCount; - newLink.sourceInfo = link.sourceInfo; - if (link.hasAlert) { - newLink.hasAlert = link.hasAlert; - } - newLink.unknownLinkGroup.push(link); - -// $.each(link.histogram, function (key, value) { -// if (newLink.histogram[key]) { -// newLink.histogram[key] += value; -// } else { -// newLink.histogram[key] = value; -// } -// }); - - removeNodeIdSet[link.to] = null; - removeLinkIdSet[link.key] = null; - } - }); - - if (newNode) { - newNode.unknownNodeGroup.sort(function (e1, e2) { - return e2.totalCount - e1.totalCount; - }); - newNodeList.push(newNode); - } - - if (newLink) { - newLink.unknownLinkGroup.sort(function (e1, e2) { - return e2.totalCount - e1.totalCount; - }); - newLinkList.push(newLink); - } + mergeTypeList.forEach( function( mergeType ) { + var mergeTypeGroup = mergeType + "_GROUP"; + + var newNodeList = []; + var newLinkList = []; + var removeNodeIdSet = {}; + var removeLinkIdSet = {}; + + nodes.forEach(function (node, nodeIndex) { + if (node.category === mergeType) { + return; + } + + var newNode; + var newLink; + var newNodeKey = mergeTypeGroup + "_" + node.key; + + var unknownCount = 0; + // 현재 확인 중인 node가 "UNKNOWN"으로 요청을 보내는 Node인지 확인하고 그렇다면 갯수를 count 함. + // 또한 "UNKNOWN"의 sourceCount는 1인 것 만 대상으로 함. + // > 즉 두 개 이상의 노드로 부터 request를 받는 "UNKNOWN"은 mergeing 대상이 아님. + // from은 같고 to가 두 개 이상인 노드와 unknown을 골라 냄. + links.forEach(function (link, linkIndex) { + if (link.from == node.key && + link.targetInfo.serviceType == mergeType && + inboundCountMap[link.to] && inboundCountMap[link.to].sourceCount == 1) { + unknownCount++; + } + }); + // merging을 해야 하닌 2개 이하는 의미없음. + if (unknownCount < 2) { + return; + } + + // @@여기까지 오면 현재 노드는 두 개 이상의 UNKNOWN 으로 요청을 보내는 노드가 됨.( 것두 혼자서 보냄 ) + // 고로 현재 노드의 to 가 되는 Unknown 노드들은 merging을 대상이 됨. + links.forEach(function (link, linkIndex) { + // 검증 + if (link.targetInfo.serviceType != mergeType) { + return; + } + // 검증 + if (inboundCountMap[link.to] && inboundCountMap[link.to].sourceCount > 1) { + return; + } + + // 다시 현재 노드로 부터 나가는 링크들을 골라냄. + if (link.from == node.key) { + if (!newNode) { + newNode = { + "key": newNodeKey, + "unknownNodeGroup": [], + "serviceType": mergeTypeGroup, + "category": mergeTypeGroup, + "instanceCount": 0 + }; + } + if (!newLink) { + newLink = { + "key": node.key + "-" + newNodeKey, + "from": node.key, + "to": newNodeKey, + "sourceInfo": {}, + "targetInfo": [], + "totalCount": 0, + "errorCount": 0, + "slowCount": 0, + "hasAlert": false, + "unknownLinkGroup": [], + "histogram": {} + }; + } + + // 자 링크의 target이 되는 unknown 노드를 가져옴. + var thisNode = getNodeByApplicationName(link.targetInfo.applicationName); + delete thisNode.category; + newNode.instanceCount += thisNode.instanceCount; + newNode.unknownNodeGroup.push(thisNode); + + // 각종 count 정보를 합산함. + link.targetInfo['totalCount'] = link.totalCount; + newLink.totalCount += link.totalCount; + newLink.errorCount += link.errorCount; + newLink.slowCount += link.slowCount; + newLink.sourceInfo = link.sourceInfo; + if (link.hasAlert) { + newLink.hasAlert = link.hasAlert; + } + newLink.unknownLinkGroup.push(link); + + // $.each(link.histogram, function (key, value) { + // if (newLink.histogram[key]) { + // newLink.histogram[key] += value; + // } else { + // newLink.histogram[key] = value; + // } + // }); + + // merging으로 인해 삭제할 원 노드와 원 링크의 정보를 저장해 둠.( 나중에 몰아서 삭제하도록 ). + removeNodeIdSet[link.to] = null; + removeLinkIdSet[link.key] = null; + } + }); + + if (newNode) { + newNode.unknownNodeGroup.sort(function (e1, e2) { + return e2.totalCount - e1.totalCount; + }); + newNodeList.push(newNode); + } + + if (newLink) { + newLink.unknownLinkGroup.sort(function (e1, e2) { + return e2.totalCount - e1.totalCount; + }); + newLinkList.push(newLink); + } + }); + + newNodeList.forEach(function (newNode) { + applicationMapData.nodeDataArray.push(newNode); + }); + + newLinkList.forEach(function (newLink) { + applicationMapData.linkDataArray.push(newLink); + }); + + $.each(removeNodeIdSet, function (key, val) { + nodes.forEach(function (node, i) { + if (node.key == key) { + nodes.splice(i, 1); + } + }); + }); + + $.each(removeLinkIdSet, function (key, val) { + links.forEach(function (link, i) { + if (link.key === key) { + links.splice(i, 1); + } + }); + }); }); - - newNodeList.forEach(function (newNode) { - applicationMapData.nodeDataArray.push(newNode); - }); - - newLinkList.forEach(function (newLink) { - applicationMapData.linkDataArray.push(newLink); - }); - - $.each(removeNodeIdSet, function (key, val) { - nodes.forEach(function (node, i) { - if (node.key == key) { - nodes.splice(i, 1); - } - }); - }); - - $.each(removeLinkIdSet, function (key, val) { - links.forEach(function (link, i) { - if (link.key === key) { - links.splice(i, 1); - } - }); - }); - + return applicationMapData; }; diff --git a/web/src/main/webapp/styles/serverMap.css b/web/src/main/webapp/styles/serverMap.css index c7114633a..b9d8097ca 100644 --- a/web/src/main/webapp/styles/serverMap.css +++ b/web/src/main/webapp/styles/serverMap.css @@ -61,9 +61,9 @@ width: 15%; height: 15%; position: absolute; - left: 0px; + right: 16px; bottom: 16px; - background-color: rgba(255, 203, 39, 0.5); + background-color: rgba(44, 160, 44, 0.2); z-index: 2; - border: 1px solid rgb(255, 203, 39); + border: 1px solid rgb(44, 160, 44); } \ No newline at end of file diff --git a/web/src/main/webapp/views/linkInfoDetails.html b/web/src/main/webapp/views/linkInfoDetails.html index 43d403c6d..510a4df3c 100644 --- a/web/src/main/webapp/views/linkInfoDetails.html +++ b/web/src/main/webapp/views/linkInfoDetails.html @@ -1,6 +1,6 @@
-
+
@@ -65,7 +65,7 @@
-