|
--- |
|
apiVersion: apps/v1 |
|
kind: Deployment |
|
metadata: |
|
name: app |
|
labels: |
|
app: app |
|
spec: |
|
replicas: 1 |
|
selector: |
|
matchLabels: |
|
app: app |
|
template: |
|
metadata: |
|
labels: |
|
app: app |
|
annotations: |
|
prometheus.io/scrape: "true" |
|
prometheus.io/port: "80" |
|
spec: |
|
containers: |
|
- name: app |
|
image: grafana/tns-app:latest |
|
imagePullPolicy: IfNotPresent |
|
args: |
|
- -log.level=debug |
|
- http://db |
|
ports: |
|
- name: http-metrics |
|
containerPort: 80 |
|
--- |
|
kind: Service |
|
apiVersion: v1 |
|
metadata: |
|
name: app |
|
spec: |
|
type: NodePort |
|
selector: |
|
app: app |
|
ports: |
|
- protocol: TCP |
|
nodePort: 30030 |
|
port: 80 |
|
targetPort: 80 |
|
--- |
|
apiVersion: apps/v1 |
|
kind: Deployment |
|
metadata: |
|
name: db |
|
labels: |
|
app: db |
|
spec: |
|
replicas: 1 |
|
selector: |
|
matchLabels: |
|
app: db |
|
template: |
|
metadata: |
|
labels: |
|
app: db |
|
annotations: |
|
prometheus.io/scrape: "true" |
|
prometheus.io/port: "80" |
|
spec: |
|
containers: |
|
- name: db |
|
image: grafana/tns-db:latest |
|
imagePullPolicy: IfNotPresent |
|
args: |
|
- -log.level=debug |
|
ports: |
|
- name: http-metrics |
|
containerPort: 80 |
|
--- |
|
kind: Service |
|
apiVersion: v1 |
|
metadata: |
|
name: db |
|
spec: |
|
selector: |
|
app: db |
|
ports: |
|
- protocol: TCP |
|
port: 80 |
|
targetPort: 80 |
|
--- |
|
apiVersion: apps/v1 |
|
kind: Deployment |
|
metadata: |
|
name: loadgen |
|
labels: |
|
app: loadgen |
|
spec: |
|
replicas: 1 |
|
selector: |
|
matchLabels: |
|
app: loadgen |
|
template: |
|
metadata: |
|
labels: |
|
app: loadgen |
|
annotations: |
|
prometheus.io/scrape: "true" |
|
prometheus.io/port: "80" |
|
spec: |
|
containers: |
|
- name: loadgen |
|
image: grafana/tns-loadgen:latest |
|
imagePullPolicy: IfNotPresent |
|
args: |
|
- -log.level=debug |
|
- http://app |
|
ports: |
|
- name: http-metrics |
|
containerPort: 80 |
|
--- |
|
kind: Service |
|
apiVersion: v1 |
|
metadata: |
|
name: loadgen |
|
spec: |
|
selector: |
|
app: loadgen |
|
ports: |
|
- protocol: TCP |
|
port: 80 |
|
targetPort: 80 |
|
--- |
|
apiVersion: v1 |
|
kind: ConfigMap |
|
metadata: |
|
name: tns-demo-dashboard |
|
labels: |
|
grafana_dashboard: "1" |
|
data: |
|
demo-app.json: |- |
|
{ |
|
"annotations": { |
|
"list": [ |
|
{ |
|
"builtIn": 1, |
|
"datasource": "-- Grafana --", |
|
"enable": true, |
|
"hide": true, |
|
"iconColor": "rgba(0, 211, 255, 1)", |
|
"name": "Annotations & Alerts", |
|
"type": "dashboard" |
|
} |
|
] |
|
}, |
|
"editable": true, |
|
"gnetId": null, |
|
"graphTooltip": 0, |
|
"id": 1, |
|
"iteration": 1587404984950, |
|
"links": [], |
|
"panels": [ |
|
{ |
|
"collapsed": false, |
|
"datasource": null, |
|
"gridPos": { |
|
"h": 1, |
|
"w": 24, |
|
"x": 0, |
|
"y": 0 |
|
}, |
|
"id": 7, |
|
"panels": [], |
|
"repeat": null, |
|
"title": "Load balancer", |
|
"type": "row" |
|
}, |
|
{ |
|
"aliasColors": { |
|
"200": "#7EB26D", |
|
"500": "#E24D42" |
|
}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 10, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 0, |
|
"y": 1 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 1, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 0, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": true, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "sum by (status_code) (rate(tns_request_duration_seconds_count{job=~\"($namespace)/loadgen\"}[1m]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "{{status_code}}", |
|
"refId": "A", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "QPS", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
}, |
|
{ |
|
"aliasColors": {}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 1, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 12, |
|
"y": 1 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 2, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 1, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": false, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "histogram_quantile(0.99, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/loadgen\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "99th Percentile", |
|
"refId": "A", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "histogram_quantile(0.50, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/loadgen\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "50th Percentile", |
|
"refId": "B", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "sum(rate(tns_request_duration_seconds_sum{job=~\"($namespace)/loadgen\"}[$__interval])) * 1e3 / sum(rate(tns_request_duration_seconds_count{job=~\"($namespace)/loadgen\"}[$__interval]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "Average", |
|
"refId": "C", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "Latency", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "ms", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
}, |
|
{ |
|
"collapsed": false, |
|
"datasource": null, |
|
"gridPos": { |
|
"h": 1, |
|
"w": 24, |
|
"x": 0, |
|
"y": 8 |
|
}, |
|
"id": 8, |
|
"panels": [], |
|
"repeat": null, |
|
"title": "App", |
|
"type": "row" |
|
}, |
|
{ |
|
"aliasColors": { |
|
"200": "#7EB26D", |
|
"500": "#E24D42" |
|
}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 10, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 0, |
|
"y": 9 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 3, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 0, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": true, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "sum by (status_code) (rate(tns_request_duration_seconds_count{job=~\"($namespace)/app\"}[1m]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "{{status_code}}", |
|
"refId": "A", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "QPS", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
}, |
|
{ |
|
"aliasColors": {}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 1, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 12, |
|
"y": 9 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 4, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 1, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": false, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "histogram_quantile(0.99, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/app\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "99th Percentile", |
|
"refId": "A", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "histogram_quantile(0.50, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/app\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "50th Percentile", |
|
"refId": "B", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "sum(rate(tns_request_duration_seconds_sum{job=~\"($namespace)/app\"}[$__interval])) * 1e3 / sum(rate(tns_request_duration_seconds_count{job=~\"($namespace)/app\"}[$__interval]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "Average", |
|
"refId": "C", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "Latency", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "ms", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
}, |
|
{ |
|
"collapsed": false, |
|
"datasource": null, |
|
"gridPos": { |
|
"h": 1, |
|
"w": 24, |
|
"x": 0, |
|
"y": 16 |
|
}, |
|
"id": 9, |
|
"panels": [], |
|
"repeat": null, |
|
"title": "DB", |
|
"type": "row" |
|
}, |
|
{ |
|
"aliasColors": { |
|
"200": "#7EB26D", |
|
"500": "#E24D42" |
|
}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 10, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 0, |
|
"y": 17 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 5, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 0, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": true, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "sum by (status_code) (rate(tns_request_duration_seconds_count{job=~\"($namespace)/db\"}[1m]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "{{status_code}}", |
|
"refId": "A", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "QPS", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
}, |
|
{ |
|
"aliasColors": {}, |
|
"bars": false, |
|
"dashLength": 10, |
|
"dashes": false, |
|
"datasource": "$datasource", |
|
"fieldConfig": { |
|
"defaults": { |
|
"custom": {} |
|
}, |
|
"overrides": [] |
|
}, |
|
"fill": 1, |
|
"fillGradient": 0, |
|
"gridPos": { |
|
"h": 7, |
|
"w": 12, |
|
"x": 12, |
|
"y": 17 |
|
}, |
|
"hiddenSeries": false, |
|
"id": 6, |
|
"legend": { |
|
"avg": false, |
|
"current": false, |
|
"max": false, |
|
"min": false, |
|
"show": true, |
|
"total": false, |
|
"values": false |
|
}, |
|
"lines": true, |
|
"linewidth": 1, |
|
"links": [], |
|
"nullPointMode": "null as zero", |
|
"options": { |
|
"dataLinks": [] |
|
}, |
|
"percentage": false, |
|
"pointradius": 5, |
|
"points": false, |
|
"renderer": "flot", |
|
"seriesOverrides": [], |
|
"spaceLength": 10, |
|
"stack": false, |
|
"steppedLine": false, |
|
"targets": [ |
|
{ |
|
"expr": "histogram_quantile(0.99, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/db\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "99th Percentile", |
|
"refId": "A", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "histogram_quantile(0.50, sum(rate(tns_request_duration_seconds_bucket{job=~\"($namespace)/db\"}[$__interval])) by (le)) * 1e3", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "50th Percentile", |
|
"refId": "B", |
|
"step": 10 |
|
}, |
|
{ |
|
"expr": "sum(rate(tns_request_duration_seconds_sum{job=~\"($namespace)/db\"}[$__interval])) * 1e3 / sum(rate(tns_request_duration_seconds_count{job=~\"($namespace)/db\"}[$__interval]))", |
|
"format": "time_series", |
|
"interval": "", |
|
"intervalFactor": 2, |
|
"legendFormat": "Average", |
|
"refId": "C", |
|
"step": 10 |
|
} |
|
], |
|
"thresholds": [], |
|
"timeFrom": null, |
|
"timeRegions": [], |
|
"timeShift": null, |
|
"title": "Latency", |
|
"tooltip": { |
|
"shared": false, |
|
"sort": 0, |
|
"value_type": "individual" |
|
}, |
|
"type": "graph", |
|
"xaxis": { |
|
"buckets": null, |
|
"mode": "time", |
|
"name": null, |
|
"show": true, |
|
"values": [] |
|
}, |
|
"yaxes": [ |
|
{ |
|
"format": "ms", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": 0, |
|
"show": true |
|
}, |
|
{ |
|
"format": "short", |
|
"label": null, |
|
"logBase": 1, |
|
"max": null, |
|
"min": null, |
|
"show": false |
|
} |
|
], |
|
"yaxis": { |
|
"align": false, |
|
"alignLevel": null |
|
} |
|
} |
|
], |
|
"refresh": "10s", |
|
"schemaVersion": 22, |
|
"style": "dark", |
|
"tags": [], |
|
"templating": { |
|
"list": [ |
|
{ |
|
"current": { |
|
"selected": true, |
|
"text": "Prometheus", |
|
"value": "Prometheus" |
|
}, |
|
"hide": 0, |
|
"includeAll": false, |
|
"label": null, |
|
"multi": false, |
|
"name": "datasource", |
|
"options": [], |
|
"query": "prometheus", |
|
"refresh": 1, |
|
"regex": "", |
|
"skipUrlSync": false, |
|
"type": "datasource" |
|
}, |
|
{ |
|
"allValue": null, |
|
"current": { |
|
"text": "All", |
|
"value": [ |
|
"$__all" |
|
] |
|
}, |
|
"datasource": "$datasource", |
|
"definition": "", |
|
"hide": 0, |
|
"includeAll": true, |
|
"index": -1, |
|
"label": "namespace", |
|
"multi": true, |
|
"name": "namespace", |
|
"options": [], |
|
"query": "label_values(kube_pod_container_info{image=~\".*grafana/tns.*\"}, namespace)", |
|
"refresh": 1, |
|
"regex": "", |
|
"skipUrlSync": false, |
|
"sort": 2, |
|
"tagValuesQuery": "", |
|
"tags": [], |
|
"tagsQuery": "", |
|
"type": "query", |
|
"useTags": false |
|
} |
|
] |
|
}, |
|
"time": { |
|
"from": "now-1h", |
|
"to": "now" |
|
}, |
|
"timepicker": { |
|
"refresh_intervals": [ |
|
"5s", |
|
"10s", |
|
"30s", |
|
"1m", |
|
"5m", |
|
"15m", |
|
"30m", |
|
"1h", |
|
"2h", |
|
"1d" |
|
], |
|
"time_options": [ |
|
"5m", |
|
"15m", |
|
"1h", |
|
"6h", |
|
"12h", |
|
"24h", |
|
"2d", |
|
"7d", |
|
"30d" |
|
] |
|
}, |
|
"timezone": "", |
|
"title": "Demo App", |
|
"uid": "62440ddb0b6b14e05c6cdd3940eda2d1", |
|
"variables": { |
|
"list": [] |
|
}, |
|
"version": 1 |
|
} |