рд╕реНрдкреНрд▓рдВрдХ рдореЗрдВ рдЙрдиреНрдирдд рдбреИрд╢рдмреЛрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 10 рдЯреНрд░рд┐рдХреНрд╕ред рднрд╛рдЧ реи



рд╢реБрдн рджреЛрдкрд╣рд░

рдЖрдЬ рд╣рдо рд╕реНрдкреНрд▓рдВрдХ рдореЗрдВ рдЙрдиреНрдирдд рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдкрдардиреАрдп рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдг рдкрдврд╝реЗрдВред

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ 5 рдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдкреИрдЯрд░реНрди рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЖрдЬ рд╣рдо рдЗрд╕ рдХрд╣рд╛рдиреА рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдбреИрд╢рдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░рдХреЗ рдФрд░ рдПрдХ рдЖрд╕рд╛рди рд░рд┐рдмреВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдореЛрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд▓рд┐рдЦрд╛ рдерд╛ред

6. рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЯреВрд▓рдЯрд┐рдкреНрд╕


рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд▓рдВрдмреЗ рдореВрд▓реНрдп рд╣реИрдВ? рдмреЗрд╢рдХ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд▓рдЧрд╛рддрд╛рд░ рджреЗрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ: рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЬрдм рдЖрдк рдУрд╡рд░рдУрд╡рд░ рдХрд░реЗрдВрдЧреЗ, рддреЛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред





рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдХреЛрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕рдВрд╕рд╛рдзрди рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрд╛рдд рдХреА рдереА ред

рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ ... / Splunk / etc / apps / dashboard_tips / appserver / static

рдФрд░ рдлрд┐рд░ рдбреИрд╢рдмреЛрд░реНрдб рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред



<form stylesheet="tooltip.css" script="tooltip.js"> 

рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╕реАрдПрд╕рдПрд╕-рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред

 .tooltip-inner { max-width: 800px; text-align: left; font-size: 14px; font-weight: normal; } 

рдФрд░ рдПрдХ рдЬреЗрдПрд╕-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░ 48 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдг рд╣реИ, рддреЛ рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдХрд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреИрдЧ рдореЗрдВ, рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рддрдм mvc.Compords.get () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 <table id="tblTooltip"> 

 require([ 'underscore', 'jquery', 'splunkjs/mvc', 'splunkjs/mvc/tableview', 'splunkjs/mvc/simplexml/ready!' ], function(_, $, mvc, TableView) { var CustomTooltipRenderer = TableView.BaseCellRenderer.extend({ canRender: function(cell) { return cell.field === 'Message'; }, render: function($td, cell) { var message = cell.value; var tip = cell.value; if(message.length > 48) { message = message.substring(0,47) + "..." } $td.html(_.template('<a href="#" data-toggle="tooltip" data-container="body" data-placement="top" title="<%- tip%>"><%- message%></a>', { tip: tip, message: message })); // This line wires up the Bootstrap tooltip to the cell markup $td.children('[data-toggle="tooltip"]').tooltip(); } }); mvc.Components.get('tblTooltip').getVisualization(function(tableView) { // Register custom cell renderer tableView.table.addCellRenderer(new CustomTooltipRenderer()); // Force the table to re-render tableView.table.render(); }); }); 

7. рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ


рд╣рдореЗрд╢рд╛ рдЯреЗрдмрд▓ рдирд╣реАрдВ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдкреИрдирдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рдФрд░ рдЙрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред


рдкреНрд░рд╕реНрддреБрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реЛрдВрдЧреЗред рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдг рд╡рд┐рдХрд▓реНрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ | рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝ рдХрдорд╛рдВрдб, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЯреЗрдмрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред CSS рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрд╕ рдХреНрд╡реЗрд░реА рд╕реЗ рдПрдХ рдЖрдИрдбреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо JS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред

 <search id="map_search"> 

рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ XML рдХреЛрдб рдореЗрдВ рднреА, рдЖрдкрдХреЛ .js рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ... / Splunk / etc / apps / dashboard_tips / appserver / static

 <form script="table2list.js"> 

рдФрд░ рд╣рд╛рдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, html рдЯреИрдЧреНрд╕ рдХреЗ рдЕрдВрджрд░, рдПрдХ ID рдСрдмреНрдЬреЗрдХреНрдЯ-рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдПрдХ div рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рднреА рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред

  <html> <h3 class="dashboard-element-title">IP Address Details (table pivot)</h3> <div id="list-view"/> </html> 

рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд╛рда рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 require([ 'underscore', 'jquery', 'splunkjs/mvc', 'splunkjs/mvc/dataview', 'splunkjs/mvc/simplexml/ready!' ], function(_, $, mvc, DataView) { var templateString = "\ <%\ for(var i=0, l=results.length; i<l; i++) { \ var line=results[i]; %> \ <table id='list-view-template' class='table table-bordered'><tbody> \ \ <% for(var key in line) {\ var attrName = key;\ var attrValue = line[key];\ %> \ <tr>\ <td width='100px' style='text-align: right'><%= attrName %>:</td>\ <td><%= attrValue %></td>\ </tr>\ <% } %> \ \ </tbody></table> \ <% }%> \ "; var dtview = new DataView({ id: "dtview", managerid: "map_search", template: templateString, el: $("#list-view") }).render(); }); 

!!! рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╕рдордп, рддрд╛рд▓рд┐рдХрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

8. рдбреИрд╢рдмреЛрд░реНрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛


рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдХреЗ рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рд╕рд╡рд╛рд▓ рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИ - рдХреНрдпреЛрдВ? рдХреЛрдб рдХреА рдорджрдж рд╕реЗ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдФрд░ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдмрдбрд╝реЗ рдФрд░ рдЬрдЯрд┐рд▓ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред





рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдКрдкрд░ рдЬрд╛рдВрдЪ рдХреА рдереАред

рдпрд╣ рд╕рдм рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдпрд╛ рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  <form script="table2list.js, toggle.js, tooltip.js" stylesheet="toggle.css, tooltip.css"> 

рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЖрдЗрдХрди, рдЪрд┐рддреНрд░ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ... / Splunk / etc / apps / dashboard_tips / appserver / static

рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдбреИрд╢рдмреЛрд░реНрдб рдХреЛрдб рдореЗрдВ HTML:

  <html> <div style="float: right"> Show/hide the table below <img id="imgToggle1" class="toggle" title="Show/hide table below" src="/static/app/dashboard_tips/expand.png"/> </div> </html> 

рд╕реАрдПрд╕рдПрд╕ - рдЯреЙрдЧрд▓.рдПрдХреНрд╕

 #tooltip_row { /*visibility: hidden;*/ height: 0px; overflow: hidden; } 

рдЬреЗрдПрд╕ - рдЯреЙрдЧрд▓.рдЬреЗрдПрд╕

 require.config({ paths: { "app": "../app" } }); require(['splunkjs/mvc/simplexml/ready!'], function(){ require(['splunkjs/ready!'], function(){ function toggle(button, target) { if(target.css("height") == "0px" ) { button.attr("src", "/static/app/dashboard_tips/collapse.png"); target.css({ "height": "auto" }); } else { button.attr("src", "/static/app/dashboard_tips/expand.png"); target.css({ "height": "0px" }); } } // Setup the click handlers for the toggle buttons $("#imgToggle1").click(function(){ toggle($(this), $("#tooltip_row")); }); }); }); 

рдлрд┐рд░ рд╣рдо рдЯреВрд▓рдЯрд┐рдк_рд░реЛ рдХреЛ рдЙрд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рдордиреЗ рдбреИрд╢рдмреЛрд░реНрдб рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред

  <row id="tooltip_row"> <panel>  </panel> </row> 

8. рдЗрдирдкреБрдЯ рдкрд░ рдорд╛рд╕реНрдХ




рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдпрд╛ рдХрд╕реНрдЯрдо рдирд┐рдпрдо рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рджрд░реНрдЬ рдХрд░рдиреЗ рдпрд╛ рдХреИрд▓реЗрдВрдбрд░ рд╕реЗ рдПрдХ рддрд╛рд░реАрдЦ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рдВрдЫрд┐рдд рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЬреЗрдПрд╕ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред

  <input type="text" token="numbers" id="numbers_only" searchWhenChanged="true"> <label>Numbers only</label> <default>1</default> </input> <input type="text" token="numbers_0_100" id="numbers_0_100_step10" searchWhenChanged="true"> <label>Numbers 0-100 step=10</label> <default>0</default> </input> <input type="text" token="date" id="date" searchWhenChanged="true"> <label>Date</label> </input> <input type="text" token="date_restrictions" id="date_restrictions" searchWhenChanged="true"> <label>Date after 2018-08-01</label> </input> <input type="text" token="range" id="range" searchWhenChanged="true"> <label>Range (0-10)</label> <default>5</default> </input> 

рдФрд░ рдЬреЗрдПрд╕ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВ

 require(["jquery", "splunkjs/mvc/simplexml/ready!"], function($) { $("[id^=numbers_only]") .find("input") .attr('type','number') $("[id^=numbers_0_100_step10]") .find("input") .attr('type','number') .attr('min','0') .attr('max','100') .attr('step','10') $("[id^=date]") .find("input") .attr('type','date') $("[id^=date_restrictions]") .find("input") .attr('type','date') .attr('min','2018-08-02') $("[id^=range]") .find("input") .attr('type','range') .attr('min','0') .attr('max','10') }); 

10. рдЪрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдкреЙрдк-рдЕрдк




рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реЙрд░реНрд╕рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдЖрд░реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд╡рд┐рд╕реНрддрд╛рд░" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрд┐рд╕ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЪрд╛рд░реНрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛:

  <search id="chart_search"> <query> index=_internal sourcetype=$chart_sourcetype$ | timechart count </query> <earliest>rt-5m</earliest> <latest>rtnow</latest> </search> 

рдЕрдиреБрд░реЛрдз рдЯреЛрдХрди $ рдЪрд╛рд░реНрдЯ_рд╕реЙрд░рд╕реЗрдЯрд╛рдЗрдк $ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕ рдЯреЛрдХрди рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбреНрд░рд┐рд▓рдбрд╛рдЙрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП "рд╡рд┐рдХрд▓реНрдк" рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  <option name="drilldown">cell</option> <drilldown> <set token="chart_sourcetype">$row.sourcetype$</set> </drilldown> 

рдлрд┐рд░, JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдЗрдХрдиреЛрдВ рдХреЛ рдбрд┐рдЯреЗрд▓ рдлреАрд▓реНрдб рдФрд░ рдЪрд╛рд░реНрдЯ рд╡реНрдпреВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

 require([ 'underscore', 'jquery', 'splunkjs/mvc', 'splunkjs/mvc/tableview', 'splunkjs/mvc/chartview', 'splunkjs/mvc/simplexml/ready!' ], function(_, $, mvc, TableView, ChartView) { var CustomIconRenderer = TableView.BaseCellRenderer.extend({ canRender: function(cell) { return cell.field === 'Detail'; }, render: function($td, cell) { $td.html(('<i class="icon-chart-area" style="font-size:2em" />')); } }); mvc.Components.get('tblTooltip').getVisualization(function(tableView) { // Register custom cell renderer tableView.table.addCellRenderer(new CustomIconRenderer()); // Force the table to re-render tableView.table.render(); }); // Listen for token changes var tokens = mvc.Components.get("default"); tokens.on("change:chart_sourcetype", function(model, value, options) { $('#modalChart').modal(); var areaChart = new ChartView({ id: "chart-view", managerid: "chart_search", type: "area", "charting.chart.nullValueMode": "connect", el: $("#chartDetail") }).render(); }); }); 

рдФрд░ рд╣рдо рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛, рдХреЗрд╡рд▓ рдкрд╛рда рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдЙрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЬреЗрдПрд╕ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

 <div id="chartDetail"/> 

  <panel> <html> <!-- Modal Chart --> <div class="modal fade" id="modalChart" tabindex="-1" role="dialog" aria-labelledby="modalChartLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalChartLabel">Details: $chart_sourcetype$</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"/> </button> </div> <div class="modal-body"> <div id="chartDetail"/> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> </div> </div> </div> </div> </html> </panel> 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреЛ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдордиреЗ 10 рджрд┐рд▓рдЪрд╕реНрдк рдбреИрд╢рдмреЛрд░реНрдб рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреМрд╢рд▓ рд╕реЗ рдкрд░реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрди рд╕рднреА рдХрд╣рд╛рдирд┐рдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдм рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк GitHub рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдк рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк рд╕реНрдкреНрд▓рдВрдХ .conf18 рд╕рдореНрдореЗрд▓рди рд╕реЗ рд╡реАрдбрд┐рдпреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi427527/


All Articles