Das Erstellen effektiver Dashboards ist eine Kunst, die Verständnis sowohl für Datenvisualisierung als auch für Benutzerinteraktion erfordert. In diesem Kapitel lernen Sie, wie Sie aussagekräftige und benutzerfreundliche Dashboards erstellen.
Bevor Sie mit der technischen Umsetzung beginnen, sollten Sie folgende Aspekte planen:
Implementieren Sie globale Filter:
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "now-24h",
"lte": "now"
}
}
}
],
"filter": [
{
"terms": {
"environment": ["production", "staging"]
}
}
]
}
}
}
{
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"7d",
"30d",
"90d",
"1y"
]
}
}
{
"panels": [
{
"gridData": {
"x": 0,
"y": 0,
"w": 24,
"h": 15,
"i": "1"
},
"version": "7.10.2",
"panelIndex": "1",
"embeddableConfig": {
"title": "System Metrics Overview"
},
"panelRefName": "panel_0"
}
]
}
{
"layout": {
"dimensions": {
"width": 1200,
"height": 900
},
"grid": {
"columns": 24,
"rows": "auto",
"margin": [10, 10],
"padding": [15, 15]
}
}
}
// Dashboard-Komponente mit responsivem Verhalten
const DashboardPanel = () => {
const [dimensions, setDimensions] = useState({ width: 0, height: 0 });
useEffect(() => {
const updateDimensions = () => {
setDimensions({
width: window.innerWidth,
height: window.innerHeight
});
};
window.addEventListener('resize', updateDimensions);
return () => window.removeEventListener('resize', updateDimensions);
}, []);
return (
<div className="dashboard-panel">
{/* Responsive Visualisierungen */}
</div>
);
};{
"drilldowns": [
{
"name": "Details View",
"triggerId": "ERROR_DETAILS",
"actionTypeId": ".dashboard",
"config": {
"dashboardId": "error-details-dashboard",
"useCurrentFilters": true
}
}
]
}
{
"links": [
{
"url": "/app/dashboards#/view/related-dashboard",
"label": "Related Analysis",
"icon": "visualizeApp",
"tooltip": "View detailed analysis"
}
]
}
{
"dashboard_settings": {
"auto_refresh": {
"pause": false,
"value": "1m"
},
"use_markerType": "line",
"visualization": {
"lazy_loading": true,
"batch_size": 500
}
}
}
{
"cache_settings": {
"panel_cache": {
"enabled": true,
"maxAge": 300000
},
"query_cache": {
"enabled": true,
"maxAge": 60000
}
}
}
{
"title": "System Monitoring",
"panels": [
{
"type": "metric",
"title": "System Load",
"gridData": {
"x": 0,
"y": 0,
"w": 12,
"h": 6
},
"config": {
"metrics": [
{
"id": "1",
"type": "avg",
"field": "system.cpu.total.pct"
}
]
}
},
{
"type": "line",
"title": "Memory Usage",
"gridData": {
"x": 12,
"y": 0,
"w": 12,
"h": 6
},
"config": {
"metrics": [
{
"id": "1",
"type": "avg",
"field": "system.memory.actual.used.pct"
}
]
}
}
]
}
{
"title": "Sales Overview",
"panels": [
{
"type": "gauge",
"title": "Revenue Target",
"gridData": {
"x": 0,
"y": 0,
"w": 6,
"h": 6
},
"config": {
"gauge": {
"verticalSplit": false,
"extendRange": true,
"percentageMode": true,
"gaugeType": "Arc",
"gaugeStyle": "Full",
"backStyle": "Full",
"orientation": "vertical",
"colorSchema": "Green to Red",
"gaugeColorMode": "Labels",
"useRange": false,
"colorsRange": [
{
"from": 0,
"to": 50
},
{
"from": 50,
"to": 75
},
{
"from": 75,
"to": 100
}
],
"invertColors": false,
"labels": {
"show": true,
"color": "black"
},
"scale": {
"show": true,
"labels": false,
"color": "#333"
},
"type": "meter",
"style": {
"bgWidth": 0.9,
"width": 0.9,
"mask": false,
"bgMask": false,
"maskBars": 50,
"bgFill": "#eee",
"bgColor": false,
"subText": "",
"fontSize": 60,
"labelFontSize": 20
}
}
}
}
]
}