@cloudcare/guance-front-tools 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.prettierignore +3 -0
  2. package/.prettierrc +6 -0
  3. package/LICENSE +21 -0
  4. package/README.md +31 -0
  5. package/cli.js +16 -0
  6. package/lib/cjs/generated/browserSessionReplay.d.ts +703 -0
  7. package/lib/cjs/generated/browserSessionReplay.js +6 -0
  8. package/lib/cjs/generated/dashboardCharts.d.ts +1372 -0
  9. package/lib/cjs/generated/dashboardCharts.js +6 -0
  10. package/lib/cjs/generated/mobileSessionReplay.d.ts +653 -0
  11. package/lib/cjs/generated/mobileSessionReplay.js +6 -0
  12. package/lib/cjs/generated/sessionReplay.d.ts +1190 -0
  13. package/lib/cjs/generated/sessionReplay.js +6 -0
  14. package/lib/cjs/src/dashboard-charts.d.ts +1 -0
  15. package/lib/cjs/src/dashboard-charts.js +17 -0
  16. package/lib/cjs/src/index.d.ts +2 -0
  17. package/lib/cjs/src/index.js +18 -0
  18. package/lib/cjs/src/session-replay-browser.d.ts +58 -0
  19. package/lib/cjs/src/session-replay-browser.js +69 -0
  20. package/lib/cjs/src/session-replay-mobile.d.ts +30 -0
  21. package/lib/cjs/src/session-replay-mobile.js +42 -0
  22. package/lib/cjs/src/session-replay.d.ts +30 -0
  23. package/lib/cjs/src/session-replay.js +49 -0
  24. package/lib/esm/generated/browserSessionReplay.d.ts +703 -0
  25. package/lib/esm/generated/browserSessionReplay.js +5 -0
  26. package/lib/esm/generated/dashboardCharts.d.ts +1372 -0
  27. package/lib/esm/generated/dashboardCharts.js +5 -0
  28. package/lib/esm/generated/mobileSessionReplay.d.ts +653 -0
  29. package/lib/esm/generated/mobileSessionReplay.js +5 -0
  30. package/lib/esm/generated/sessionReplay.d.ts +1190 -0
  31. package/lib/esm/generated/sessionReplay.js +5 -0
  32. package/lib/esm/src/dashboard-charts.d.ts +1 -0
  33. package/lib/esm/src/dashboard-charts.js +1 -0
  34. package/lib/esm/src/index.d.ts +2 -0
  35. package/lib/esm/src/index.js +2 -0
  36. package/lib/esm/src/session-replay-browser.d.ts +58 -0
  37. package/lib/esm/src/session-replay-browser.js +52 -0
  38. package/lib/esm/src/session-replay-mobile.d.ts +30 -0
  39. package/lib/esm/src/session-replay-mobile.js +25 -0
  40. package/lib/esm/src/session-replay.d.ts +30 -0
  41. package/lib/esm/src/session-replay.js +24 -0
  42. package/lib/example/grafana-dashboard.json +2205 -0
  43. package/lib/example/guance-covert-test.json +629 -0
  44. package/lib/example/guance-dashboard-1.json +672 -0
  45. package/lib/example/guance-dashboard.json +2841 -0
  46. package/lib/scripts/grafana-covert-to-guance.d.ts +1 -0
  47. package/lib/scripts/grafana-covert-to-guance.js +367 -0
  48. package/lib/scripts/grafana-covert-to-guance.ts +374 -0
  49. package/lib/scripts/grafana-dashbord.d.ts +2220 -0
  50. package/lib/scripts/grafana-dashbord.js +1 -0
  51. package/lib/scripts/grafana-dashbord.ts +2427 -0
  52. package/lib/src/dashboard-charts.ts +1 -0
  53. package/lib/src/index.ts +2 -0
  54. package/lib/src/session-replay-browser.ts +98 -0
  55. package/lib/src/session-replay-mobile.ts +54 -0
  56. package/lib/src/session-replay.ts +61 -0
  57. package/package.json +45 -0
  58. package/samples/dashboard/dashboard.json +2842 -0
  59. package/samples/dashboard/promql-dashboard.json +2175 -0
  60. package/samples/session-replay/mobile/record/full-snapshot-record.json +51 -0
  61. package/samples/session-replay/mobile/record/has-focus-record.json +7 -0
  62. package/samples/session-replay/mobile/record/incremental-snapshot-record.json +74 -0
  63. package/samples/session-replay/mobile/record/metadata-record.json +8 -0
  64. package/samples/session-replay/mobile/record/view-end-record.json +4 -0
  65. package/samples/session-replay/mobile/segment/segment.json +110 -0
  66. package/schemas/charts/chart-schema.json +73 -0
  67. package/schemas/charts/common/common-chart-types-schema.json +37 -0
  68. package/schemas/charts/common/common-vars-item-schema.json +117 -0
  69. package/schemas/charts/common/common-vars-schema.json +10 -0
  70. package/schemas/charts/dashboard-schema.json +73 -0
  71. package/schemas/charts/query/queries-schema.json +10 -0
  72. package/schemas/charts/query/query-item-schema.json +42 -0
  73. package/schemas/charts/settings/_common-settings-connect-null-schema.json +7 -0
  74. package/schemas/charts/settings/_common-settings-gradual-color-schema.json +72 -0
  75. package/schemas/charts/settings/_common-settings-groupby-schema.json +22 -0
  76. package/schemas/charts/settings/_common-settings-legend-position-schema.json +14 -0
  77. package/schemas/charts/settings/_common-settings-legend-values-schema.json +19 -0
  78. package/schemas/charts/settings/_common-settings-open-stack-schema.json +8 -0
  79. package/schemas/charts/settings/_common-settings-show-label-schema.json +8 -0
  80. package/schemas/charts/settings/_common-settings-show-line-schema.json +8 -0
  81. package/schemas/charts/settings/_common-settings-stack-content-schema.json +12 -0
  82. package/schemas/charts/settings/_common-settings-stack-type-schema.json +11 -0
  83. package/schemas/charts/settings/chart-alarm-settings-schema.json +48 -0
  84. package/schemas/charts/settings/chart-bar-settings-schema.json +69 -0
  85. package/schemas/charts/settings/chart-chinamap-settings-schema.json +102 -0
  86. package/schemas/charts/settings/chart-funnel-settings-schema.json +34 -0
  87. package/schemas/charts/settings/chart-gauge-settings-schema.json +65 -0
  88. package/schemas/charts/settings/chart-heatmap-settings-schema.json +50 -0
  89. package/schemas/charts/settings/chart-hexgon-settings-schema.json +90 -0
  90. package/schemas/charts/settings/chart-histogram-settings-schema.json +47 -0
  91. package/schemas/charts/settings/chart-iframe-settings-schema.json +24 -0
  92. package/schemas/charts/settings/chart-log-settings-schema.json +84 -0
  93. package/schemas/charts/settings/chart-object-settings-schema.json +52 -0
  94. package/schemas/charts/settings/chart-picture-settings-schema.json +46 -0
  95. package/schemas/charts/settings/chart-pie-settings-schema.json +90 -0
  96. package/schemas/charts/settings/chart-sankey-settings-schema.json +34 -0
  97. package/schemas/charts/settings/chart-scatter-bubble-settings-schema.json +31 -0
  98. package/schemas/charts/settings/chart-sequence-settings-schema.json +76 -0
  99. package/schemas/charts/settings/chart-singlestat-settings-schema.json +163 -0
  100. package/schemas/charts/settings/chart-table-settings-schema.json +184 -0
  101. package/schemas/charts/settings/chart-text-settings-schema.json +20 -0
  102. package/schemas/charts/settings/chart-toplist-settings-schema.json +117 -0
  103. package/schemas/charts/settings/chart-topology-settings-schema.json +71 -0
  104. package/schemas/charts/settings/chart-treemap-settings-schema.json +66 -0
  105. package/schemas/charts/settings/chart-worldmap-settings-schema.json +102 -0
  106. package/schemas/charts/settings/common-settings-schema.json +82 -0
  107. package/schemas/charts/settings/settings-alias-schema.json +47 -0
  108. package/schemas/charts/settings/settings-chart-type-schema.json +27 -0
  109. package/schemas/charts/settings/settings-colors-schema.json +46 -0
  110. package/schemas/charts/settings/settings-compare-schema.json +58 -0
  111. package/schemas/charts/settings/settings-fixed-time-schema.json +49 -0
  112. package/schemas/charts/settings/settings-levels-schema.json +33 -0
  113. package/schemas/charts/settings/settings-schema.json +79 -0
  114. package/schemas/charts/settings/settings-time-schema.json +47 -0
  115. package/schemas/charts/settings/settings-unit-items-schema.json +226 -0
  116. package/schemas/charts/settings/settings-units-schema.json +60 -0
  117. package/schemas/dashboard-schema.json +5 -0
  118. package/schemas/session-replay/browser/attribute-mutation-schema.json +21 -0
  119. package/schemas/session-replay/browser/attributes-schema.json +10 -0
  120. package/schemas/session-replay/browser/cdata-node-schema.json +19 -0
  121. package/schemas/session-replay/browser/creation-reason-schema.json +17 -0
  122. package/schemas/session-replay/browser/document-fragment-node-schema.json +35 -0
  123. package/schemas/session-replay/browser/document-node-schema.json +30 -0
  124. package/schemas/session-replay/browser/document-type-node-schema.json +28 -0
  125. package/schemas/session-replay/browser/element-node-schema.json +33 -0
  126. package/schemas/session-replay/browser/frustration-record-schema.json +49 -0
  127. package/schemas/session-replay/browser/full-snapshot-record-schema.json +26 -0
  128. package/schemas/session-replay/browser/incremental-data-schema.json +36 -0
  129. package/schemas/session-replay/browser/incremental-snapshot-record-schema.json +29 -0
  130. package/schemas/session-replay/browser/input-data-schema.json +27 -0
  131. package/schemas/session-replay/browser/input-state-schema.json +27 -0
  132. package/schemas/session-replay/browser/media-interaction-data-schema.json +23 -0
  133. package/schemas/session-replay/browser/media-interaction-schema.json +20 -0
  134. package/schemas/session-replay/browser/mouse-interaction-data-schema.json +23 -0
  135. package/schemas/session-replay/browser/mouse-interaction-schema.json +47 -0
  136. package/schemas/session-replay/browser/mouse-move-data-schema.json +23 -0
  137. package/schemas/session-replay/browser/mouse-position-schema.json +26 -0
  138. package/schemas/session-replay/browser/mutation-data-schema.json +23 -0
  139. package/schemas/session-replay/browser/mutation-payload-schema.json +42 -0
  140. package/schemas/session-replay/browser/node-added-mutation-schema.json +41 -0
  141. package/schemas/session-replay/browser/node-removed-mutation-schema.json +18 -0
  142. package/schemas/session-replay/browser/node-schema.json +28 -0
  143. package/schemas/session-replay/browser/record-schema.json +30 -0
  144. package/schemas/session-replay/browser/scroll-data-schema.json +23 -0
  145. package/schemas/session-replay/browser/scroll-position-schema.json +22 -0
  146. package/schemas/session-replay/browser/segment-metadata-schema.json +28 -0
  147. package/schemas/session-replay/browser/segment-schema.json +25 -0
  148. package/schemas/session-replay/browser/serialized-node-schema.json +15 -0
  149. package/schemas/session-replay/browser/serialized-node-with-id-schema.json +21 -0
  150. package/schemas/session-replay/browser/stylesheet-rule-add-schema.json +28 -0
  151. package/schemas/session-replay/browser/stylesheet-rule-data-schema.json +23 -0
  152. package/schemas/session-replay/browser/stylesheet-rule-delete-schema.json +24 -0
  153. package/schemas/session-replay/browser/stylesheet-rule-schema.json +29 -0
  154. package/schemas/session-replay/browser/stylesheet-schema.json +30 -0
  155. package/schemas/session-replay/browser/text-mutation-schema.json +27 -0
  156. package/schemas/session-replay/browser/text-node-schema.json +23 -0
  157. package/schemas/session-replay/common/_common-record-schema.json +14 -0
  158. package/schemas/session-replay/common/_common-segment-metadata-schema.json +30 -0
  159. package/schemas/session-replay/common/_slot-supported-common-record-schema.json +21 -0
  160. package/schemas/session-replay/common/focus-record-schema.json +34 -0
  161. package/schemas/session-replay/common/meta-record-schema.json +42 -0
  162. package/schemas/session-replay/common/pointer-interaction-data-schema.json +23 -0
  163. package/schemas/session-replay/common/pointer-interaction-schema.json +34 -0
  164. package/schemas/session-replay/common/segment-context-schema.json +46 -0
  165. package/schemas/session-replay/common/view-end-record-schema.json +23 -0
  166. package/schemas/session-replay/common/viewport-resize-data-schema.json +23 -0
  167. package/schemas/session-replay/common/viewport-resize-dimension-schema.json +18 -0
  168. package/schemas/session-replay/common/visual-viewport-record-schema.json +50 -0
  169. package/schemas/session-replay/full-snapshot-record-schema.json +14 -0
  170. package/schemas/session-replay/incremental-data-schema.json +14 -0
  171. package/schemas/session-replay/incremental-snapshot-record-schema.json +14 -0
  172. package/schemas/session-replay/mobile/_common-shape-wireframe-schema.json +22 -0
  173. package/schemas/session-replay/mobile/_common-shape-wireframe-update-schema.json +22 -0
  174. package/schemas/session-replay/mobile/_common-wireframe-schema.json +38 -0
  175. package/schemas/session-replay/mobile/_common-wireframe-update-schema.json +38 -0
  176. package/schemas/session-replay/mobile/full-snapshot-record-schema.json +38 -0
  177. package/schemas/session-replay/mobile/image-wireframe-schema.json +43 -0
  178. package/schemas/session-replay/mobile/image-wireframe-update-schema.json +43 -0
  179. package/schemas/session-replay/mobile/incremental-data-schema.json +21 -0
  180. package/schemas/session-replay/mobile/incremental-snapshot-record-schema.json +26 -0
  181. package/schemas/session-replay/mobile/mutation-data-schema.json +23 -0
  182. package/schemas/session-replay/mobile/mutation-payload-schema.json +55 -0
  183. package/schemas/session-replay/mobile/placeholder-wireframe-schema.json +28 -0
  184. package/schemas/session-replay/mobile/placeholder-wireframe-update-schema.json +28 -0
  185. package/schemas/session-replay/mobile/record-schema.json +27 -0
  186. package/schemas/session-replay/mobile/segment-metadata-schema.json +25 -0
  187. package/schemas/session-replay/mobile/segment-schema.json +25 -0
  188. package/schemas/session-replay/mobile/shape-border-schema.json +25 -0
  189. package/schemas/session-replay/mobile/shape-style-schema.json +29 -0
  190. package/schemas/session-replay/mobile/shape-wireframe-schema.json +23 -0
  191. package/schemas/session-replay/mobile/shape-wireframe-update-schema.json +23 -0
  192. package/schemas/session-replay/mobile/text-position-schema.json +57 -0
  193. package/schemas/session-replay/mobile/text-style-schema.json +31 -0
  194. package/schemas/session-replay/mobile/text-wireframe-schema.json +34 -0
  195. package/schemas/session-replay/mobile/text-wireframe-update-schema.json +34 -0
  196. package/schemas/session-replay/mobile/touch-data-schema.json +51 -0
  197. package/schemas/session-replay/mobile/webview-wireframe-schema.json +33 -0
  198. package/schemas/session-replay/mobile/webview-wireframe-update-schema.json +33 -0
  199. package/schemas/session-replay/mobile/wireframe-clip-schema.json +29 -0
  200. package/schemas/session-replay/mobile/wireframe-schema.json +24 -0
  201. package/schemas/session-replay/mobile/wireframe-update-mutation-schema.json +24 -0
  202. package/schemas/session-replay/mutation-data-schema.json +14 -0
  203. package/schemas/session-replay/mutation-payload-schema.json +14 -0
  204. package/schemas/session-replay/record-schema.json +14 -0
  205. package/schemas/session-replay/segment-metadata-schema.json +14 -0
  206. package/schemas/session-replay/segment-schema.json +15 -0
  207. package/schemas/session-replay-browser-schema.json +5 -0
  208. package/schemas/session-replay-mobile-schema.json +5 -0
  209. package/schemas/session-replay-schema.json +33 -0
  210. package/scripts/generate.mjs +96 -0
  211. package/scripts/utils.mjs +16 -0
  212. package/scripts/validate.mjs +144 -0
  213. package/tsconfig.cjs.json +7 -0
  214. package/tsconfig.esm.json +7 -0
  215. package/tsconfig.json +13 -0
  216. package/tsconfig.script.json +15 -0
@@ -0,0 +1,2175 @@
1
+ {
2
+ "annotations": {
3
+ "list": [
4
+ {
5
+ "builtIn": 1,
6
+ "datasource": {
7
+ "type": "datasource",
8
+ "uid": "grafana"
9
+ },
10
+ "enable": true,
11
+ "hide": true,
12
+ "iconColor": "rgba(0, 211, 255, 1)",
13
+ "name": "Annotations & Alerts",
14
+ "target": {
15
+ "limit": 100,
16
+ "matchAny": false,
17
+ "tags": [],
18
+ "type": "dashboard"
19
+ },
20
+ "type": "dashboard"
21
+ }
22
+ ]
23
+ },
24
+ "description": "Loki v2+ showcase using JSON NGINX access logs.",
25
+ "editable": true,
26
+ "fiscalYearStartMonth": 0,
27
+ "graphTooltip": 0,
28
+ "id": 2001,
29
+ "links": [],
30
+ "panels": [
31
+ {
32
+ "collapsed": false,
33
+ "gridPos": {
34
+ "h": 1,
35
+ "w": 24,
36
+ "x": 0,
37
+ "y": 0
38
+ },
39
+ "id": 43,
40
+ "panels": [],
41
+ "title": "WELCOME TO GRAFANA PLAY!",
42
+ "type": "row"
43
+ },
44
+ {
45
+ "fieldConfig": {
46
+ "defaults": {},
47
+ "overrides": []
48
+ },
49
+ "gridPos": {
50
+ "h": 8,
51
+ "w": 6,
52
+ "x": 0,
53
+ "y": 1
54
+ },
55
+ "id": 42,
56
+ "options": {
57
+ "code": {
58
+ "language": "plaintext",
59
+ "showLineNumbers": false,
60
+ "showMiniMap": false
61
+ },
62
+ "content": "![foo](https://grafana.com/about/events/grafanacon/assets/2023/graphic-golden-grot2.svg)\n",
63
+ "mode": "markdown"
64
+ },
65
+ "pluginVersion": "11.3.0-75826",
66
+ "title": "",
67
+ "type": "text"
68
+ },
69
+ {
70
+ "gridPos": {
71
+ "h": 8,
72
+ "w": 3,
73
+ "x": 6,
74
+ "y": 1
75
+ },
76
+ "id": 40,
77
+ "libraryPanel": {
78
+ "name": "What's New",
79
+ "uid": "cfea5e82-3ff1-4641-9c9b-309c4f6a68b3"
80
+ },
81
+ "title": "What's New"
82
+ },
83
+ {
84
+ "gridPos": {
85
+ "h": 11,
86
+ "w": 8,
87
+ "x": 9,
88
+ "y": 1
89
+ },
90
+ "id": 38,
91
+ "libraryPanel": {
92
+ "name": "Data source demos",
93
+ "uid": "e33bea41-1de7-49bf-94d6-8bc70081a047"
94
+ },
95
+ "title": "Data source demos"
96
+ },
97
+ {
98
+ "gridPos": {
99
+ "h": 11,
100
+ "w": 7,
101
+ "x": 17,
102
+ "y": 1
103
+ },
104
+ "id": 36,
105
+ "libraryPanel": {
106
+ "name": "Feature showcases",
107
+ "uid": "fc1155dd-247c-49d5-8c8b-108606953451"
108
+ },
109
+ "title": "Feature showcases"
110
+ },
111
+ {
112
+ "fieldConfig": {
113
+ "defaults": {},
114
+ "overrides": []
115
+ },
116
+ "gridPos": {
117
+ "h": 3,
118
+ "w": 9,
119
+ "x": 0,
120
+ "y": 9
121
+ },
122
+ "id": 41,
123
+ "options": {
124
+ "code": {
125
+ "language": "plaintext",
126
+ "showLineNumbers": false,
127
+ "showMiniMap": false
128
+ },
129
+ "content": "# THE DASHBOARD SHOWCASE FOR JULY, 2023:\n\n## The [Loki NGINX Service Mesh](https://play.grafana.org/d/T512JVH7z/loki-nginx-service-mesh-json-version?orgId=1), by [Ward Bekker](https://twitter.com/i/flow/login?redirect_after_login=%2Fwardbekker). 👇",
130
+ "mode": "markdown"
131
+ },
132
+ "pluginVersion": "11.3.0-75826",
133
+ "title": "",
134
+ "type": "text"
135
+ },
136
+ {
137
+ "collapsed": false,
138
+ "gridPos": {
139
+ "h": 1,
140
+ "w": 24,
141
+ "x": 0,
142
+ "y": 12
143
+ },
144
+ "id": 24,
145
+ "panels": [],
146
+ "title": "KPI's",
147
+ "type": "row"
148
+ },
149
+ {
150
+ "datasource": {
151
+ "uid": "$datasource"
152
+ },
153
+ "description": "",
154
+ "fieldConfig": {
155
+ "defaults": {
156
+ "color": {
157
+ "mode": "thresholds"
158
+ },
159
+ "mappings": [],
160
+ "thresholds": {
161
+ "mode": "absolute",
162
+ "steps": [
163
+ {
164
+ "color": "purple",
165
+ "value": null
166
+ }
167
+ ]
168
+ },
169
+ "unit": "short"
170
+ },
171
+ "overrides": []
172
+ },
173
+ "gridPos": {
174
+ "h": 4,
175
+ "w": 5,
176
+ "x": 0,
177
+ "y": 13
178
+ },
179
+ "hideTimeOverride": false,
180
+ "id": 4,
181
+ "maxDataPoints": 300,
182
+ "options": {
183
+ "colorMode": "background",
184
+ "graphMode": "area",
185
+ "justifyMode": "center",
186
+ "orientation": "auto",
187
+ "percentChangeColorMode": "standard",
188
+ "reduceOptions": {
189
+ "calcs": [
190
+ "sum"
191
+ ],
192
+ "fields": "",
193
+ "values": false
194
+ },
195
+ "showPercentChange": false,
196
+ "text": {},
197
+ "textMode": "value",
198
+ "wideLayout": true
199
+ },
200
+ "pluginVersion": "11.3.0-75826",
201
+ "targets": [
202
+ {
203
+ "datasource": {
204
+ "uid": "$datasource"
205
+ },
206
+ "expr": "sum by(host) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"}[$__interval])) ",
207
+ "legendFormat": "",
208
+ "refId": "A"
209
+ }
210
+ ],
211
+ "timeFrom": "24h",
212
+ "title": "Total requests ",
213
+ "type": "stat"
214
+ },
215
+ {
216
+ "datasource": {
217
+ "uid": "$datasource"
218
+ },
219
+ "description": "",
220
+ "fieldConfig": {
221
+ "defaults": {
222
+ "color": {
223
+ "mode": "thresholds"
224
+ },
225
+ "mappings": [],
226
+ "thresholds": {
227
+ "mode": "percentage",
228
+ "steps": [
229
+ {
230
+ "color": "rgba(110, 157, 228, 0.76)",
231
+ "value": null
232
+ },
233
+ {
234
+ "color": "rgba(73, 124, 202, 1)",
235
+ "value": 20
236
+ }
237
+ ]
238
+ },
239
+ "unit": "short"
240
+ },
241
+ "overrides": []
242
+ },
243
+ "gridPos": {
244
+ "h": 8,
245
+ "w": 7,
246
+ "x": 5,
247
+ "y": 13
248
+ },
249
+ "id": 5,
250
+ "maxDataPoints": 20,
251
+ "options": {
252
+ "colorMode": "background",
253
+ "graphMode": "area",
254
+ "justifyMode": "auto",
255
+ "orientation": "auto",
256
+ "percentChangeColorMode": "standard",
257
+ "reduceOptions": {
258
+ "calcs": [
259
+ "sum"
260
+ ],
261
+ "fields": "",
262
+ "values": false
263
+ },
264
+ "showPercentChange": false,
265
+ "text": {},
266
+ "textMode": "auto",
267
+ "wideLayout": true
268
+ },
269
+ "pluginVersion": "11.3.0-75826",
270
+ "targets": [
271
+ {
272
+ "datasource": {
273
+ "uid": "$datasource"
274
+ },
275
+ "expr": "sum by (status) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\" [$__interval]))",
276
+ "instant": false,
277
+ "legendFormat": "HTTP Status: {{status}}",
278
+ "range": true,
279
+ "refId": "A"
280
+ }
281
+ ],
282
+ "title": "Requests per status code",
283
+ "type": "stat"
284
+ },
285
+ {
286
+ "datasource": {
287
+ "uid": "$datasource"
288
+ },
289
+ "description": "",
290
+ "fieldConfig": {
291
+ "defaults": {
292
+ "color": {
293
+ "mode": "thresholds"
294
+ },
295
+ "decimals": 0,
296
+ "mappings": [],
297
+ "thresholds": {
298
+ "mode": "absolute",
299
+ "steps": [
300
+ {
301
+ "color": "semi-dark-orange",
302
+ "value": null
303
+ }
304
+ ]
305
+ },
306
+ "unit": "decbytes"
307
+ },
308
+ "overrides": []
309
+ },
310
+ "gridPos": {
311
+ "h": 4,
312
+ "w": 3,
313
+ "x": 12,
314
+ "y": 13
315
+ },
316
+ "id": 30,
317
+ "maxDataPoints": 1,
318
+ "options": {
319
+ "colorMode": "background",
320
+ "graphMode": "none",
321
+ "justifyMode": "auto",
322
+ "orientation": "auto",
323
+ "percentChangeColorMode": "standard",
324
+ "reduceOptions": {
325
+ "calcs": [
326
+ "sum"
327
+ ],
328
+ "fields": "",
329
+ "values": false
330
+ },
331
+ "showPercentChange": false,
332
+ "text": {},
333
+ "textMode": "auto",
334
+ "wideLayout": true
335
+ },
336
+ "pluginVersion": "11.3.0-75826",
337
+ "targets": [
338
+ {
339
+ "datasource": {
340
+ "uid": "$datasource"
341
+ },
342
+ "expr": "bytes_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"}[$__interval])",
343
+ "instant": true,
344
+ "legendFormat": "$label_value",
345
+ "range": false,
346
+ "refId": "A"
347
+ }
348
+ ],
349
+ "title": "NGINX logs in bytes",
350
+ "type": "stat"
351
+ },
352
+ {
353
+ "datasource": {
354
+ "uid": "$datasource"
355
+ },
356
+ "description": "",
357
+ "fieldConfig": {
358
+ "defaults": {
359
+ "color": {
360
+ "mode": "thresholds"
361
+ },
362
+ "decimals": 1,
363
+ "mappings": [],
364
+ "max": 100,
365
+ "min": 0,
366
+ "thresholds": {
367
+ "mode": "absolute",
368
+ "steps": [
369
+ {
370
+ "color": "purple",
371
+ "value": null
372
+ },
373
+ {
374
+ "color": "red",
375
+ "value": 80
376
+ }
377
+ ]
378
+ },
379
+ "unit": "percent"
380
+ },
381
+ "overrides": []
382
+ },
383
+ "gridPos": {
384
+ "h": 4,
385
+ "w": 3,
386
+ "x": 15,
387
+ "y": 13
388
+ },
389
+ "hideTimeOverride": true,
390
+ "id": 19,
391
+ "maxDataPoints": 1,
392
+ "options": {
393
+ "colorMode": "background",
394
+ "graphMode": "none",
395
+ "justifyMode": "center",
396
+ "orientation": "auto",
397
+ "percentChangeColorMode": "standard",
398
+ "reduceOptions": {
399
+ "calcs": [
400
+ "max"
401
+ ],
402
+ "fields": "",
403
+ "values": false
404
+ },
405
+ "showPercentChange": false,
406
+ "text": {},
407
+ "textMode": "value",
408
+ "wideLayout": true
409
+ },
410
+ "pluginVersion": "11.3.0-75826",
411
+ "targets": [
412
+ {
413
+ "datasource": {
414
+ "uid": "$datasource"
415
+ },
416
+ "expr": "sum(count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | status >= 500 |__error__=\"\"[$__interval])) / (sum(count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\"[$__interval]))/ 100)",
417
+ "instant": false,
418
+ "legendFormat": "",
419
+ "range": true,
420
+ "refId": "A"
421
+ }
422
+ ],
423
+ "timeFrom": "1h",
424
+ "title": "% of 5xx requests ",
425
+ "type": "stat"
426
+ },
427
+ {
428
+ "description": "",
429
+ "fieldConfig": {
430
+ "defaults": {},
431
+ "overrides": []
432
+ },
433
+ "gridPos": {
434
+ "h": 4,
435
+ "w": 6,
436
+ "x": 18,
437
+ "y": 13
438
+ },
439
+ "id": 34,
440
+ "options": {
441
+ "code": {
442
+ "language": "plaintext",
443
+ "showLineNumbers": false,
444
+ "showMiniMap": false
445
+ },
446
+ "content": "📊 Dashboard created by Ward Bekker (hope you like it!)\n\n🐦 Follow me on [Twitter](https://twitter.com/wardbekker) & [LinkedIn](https://www.linkedin.com/in/wardbekker/) for Grafana Loki updates \n\n🎥 Check out my [Grafana Loki video's](https://www.youtube.com/playlist?list=PLDGkOdUX1UjqEzcxQrbROMy8DN7MZv_h4) on Youtube",
447
+ "mode": "markdown"
448
+ },
449
+ "pluginVersion": "11.3.0-75826",
450
+ "title": "",
451
+ "transparent": true,
452
+ "type": "text"
453
+ },
454
+ {
455
+ "datasource": {
456
+ "uid": "$datasource"
457
+ },
458
+ "description": "",
459
+ "fieldConfig": {
460
+ "defaults": {
461
+ "color": {
462
+ "mode": "thresholds"
463
+ },
464
+ "mappings": [],
465
+ "thresholds": {
466
+ "mode": "absolute",
467
+ "steps": [
468
+ {
469
+ "color": "purple",
470
+ "value": null
471
+ }
472
+ ]
473
+ }
474
+ },
475
+ "overrides": []
476
+ },
477
+ "gridPos": {
478
+ "h": 4,
479
+ "w": 5,
480
+ "x": 0,
481
+ "y": 17
482
+ },
483
+ "id": 22,
484
+ "interval": "5m",
485
+ "options": {
486
+ "colorMode": "background",
487
+ "graphMode": "none",
488
+ "justifyMode": "auto",
489
+ "orientation": "auto",
490
+ "percentChangeColorMode": "standard",
491
+ "reduceOptions": {
492
+ "calcs": [
493
+ "mean"
494
+ ],
495
+ "fields": "",
496
+ "values": false
497
+ },
498
+ "showPercentChange": false,
499
+ "text": {},
500
+ "textMode": "value",
501
+ "wideLayout": true
502
+ },
503
+ "pluginVersion": "11.3.0-75826",
504
+ "targets": [
505
+ {
506
+ "datasource": {
507
+ "uid": "$datasource"
508
+ },
509
+ "expr": "count(sum by (remote_addr) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\" [$__interval])))",
510
+ "instant": true,
511
+ "legendFormat": "",
512
+ "range": false,
513
+ "refId": "A"
514
+ }
515
+ ],
516
+ "timeFrom": "5m",
517
+ "title": "Realtime visitors ",
518
+ "type": "stat"
519
+ },
520
+ {
521
+ "datasource": {
522
+ "uid": "$datasource"
523
+ },
524
+ "description": "",
525
+ "fieldConfig": {
526
+ "defaults": {
527
+ "color": {
528
+ "mode": "thresholds"
529
+ },
530
+ "decimals": 0,
531
+ "mappings": [],
532
+ "thresholds": {
533
+ "mode": "absolute",
534
+ "steps": [
535
+ {
536
+ "color": "semi-dark-orange",
537
+ "value": null
538
+ }
539
+ ]
540
+ },
541
+ "unit": "short"
542
+ },
543
+ "overrides": []
544
+ },
545
+ "gridPos": {
546
+ "h": 4,
547
+ "w": 3,
548
+ "x": 12,
549
+ "y": 17
550
+ },
551
+ "id": 31,
552
+ "maxDataPoints": 1,
553
+ "options": {
554
+ "colorMode": "background",
555
+ "graphMode": "none",
556
+ "justifyMode": "auto",
557
+ "orientation": "auto",
558
+ "percentChangeColorMode": "standard",
559
+ "reduceOptions": {
560
+ "calcs": [
561
+ "sum"
562
+ ],
563
+ "fields": "",
564
+ "values": false
565
+ },
566
+ "showPercentChange": false,
567
+ "text": {},
568
+ "textMode": "auto",
569
+ "wideLayout": true
570
+ },
571
+ "pluginVersion": "11.3.0-75826",
572
+ "targets": [
573
+ {
574
+ "datasource": {
575
+ "uid": "$datasource"
576
+ },
577
+ "expr": "count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"}[$__interval])",
578
+ "instant": true,
579
+ "range": false,
580
+ "refId": "A"
581
+ }
582
+ ],
583
+ "title": "# NGINX log lines",
584
+ "type": "stat"
585
+ },
586
+ {
587
+ "datasource": {
588
+ "uid": "$datasource"
589
+ },
590
+ "description": "",
591
+ "fieldConfig": {
592
+ "defaults": {
593
+ "color": {
594
+ "mode": "thresholds"
595
+ },
596
+ "mappings": [],
597
+ "thresholds": {
598
+ "mode": "absolute",
599
+ "steps": [
600
+ {
601
+ "color": "purple",
602
+ "value": null
603
+ }
604
+ ]
605
+ },
606
+ "unit": "decbytes"
607
+ },
608
+ "overrides": []
609
+ },
610
+ "gridPos": {
611
+ "h": 4,
612
+ "w": 3,
613
+ "x": 15,
614
+ "y": 17
615
+ },
616
+ "id": 8,
617
+ "maxDataPoints": 1,
618
+ "options": {
619
+ "colorMode": "background",
620
+ "graphMode": "none",
621
+ "justifyMode": "center",
622
+ "orientation": "auto",
623
+ "percentChangeColorMode": "standard",
624
+ "reduceOptions": {
625
+ "calcs": [
626
+ "sum"
627
+ ],
628
+ "fields": "",
629
+ "values": false
630
+ },
631
+ "showPercentChange": false,
632
+ "text": {},
633
+ "textMode": "value",
634
+ "wideLayout": true
635
+ },
636
+ "pluginVersion": "11.3.0-75826",
637
+ "targets": [
638
+ {
639
+ "datasource": {
640
+ "uid": "$datasource"
641
+ },
642
+ "expr": "sum by (host) (sum_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | unwrap body_bytes_sent | __error__=\"\" [$__interval]))",
643
+ "instant": true,
644
+ "legendFormat": "Bytes sent",
645
+ "range": false,
646
+ "refId": "A"
647
+ }
648
+ ],
649
+ "title": "Total Bytes Sent",
650
+ "type": "stat"
651
+ },
652
+ {
653
+ "datasource": {
654
+ "uid": "$datasource"
655
+ },
656
+ "description": "",
657
+ "fieldConfig": {
658
+ "defaults": {
659
+ "color": {
660
+ "mode": "thresholds"
661
+ },
662
+ "mappings": [],
663
+ "max": 100,
664
+ "min": 0,
665
+ "thresholds": {
666
+ "mode": "absolute",
667
+ "steps": [
668
+ {
669
+ "color": "purple",
670
+ "value": null
671
+ }
672
+ ]
673
+ },
674
+ "unit": "percent"
675
+ },
676
+ "overrides": []
677
+ },
678
+ "gridPos": {
679
+ "h": 4,
680
+ "w": 6,
681
+ "x": 18,
682
+ "y": 17
683
+ },
684
+ "hideTimeOverride": true,
685
+ "id": 18,
686
+ "interval": "10m",
687
+ "maxDataPoints": 1,
688
+ "options": {
689
+ "colorMode": "background",
690
+ "graphMode": "none",
691
+ "justifyMode": "auto",
692
+ "orientation": "auto",
693
+ "percentChangeColorMode": "standard",
694
+ "reduceOptions": {
695
+ "calcs": [
696
+ "last"
697
+ ],
698
+ "fields": "",
699
+ "values": false
700
+ },
701
+ "showPercentChange": false,
702
+ "text": {},
703
+ "textMode": "value",
704
+ "wideLayout": true
705
+ },
706
+ "pluginVersion": "11.3.0-75826",
707
+ "targets": [
708
+ {
709
+ "datasource": {
710
+ "uid": "$datasource"
711
+ },
712
+ "expr": "sum(count_over_time(({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} |= \"Googlebot\")[$__interval])) / (sum(count_over_time(({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} != \"Googlebot\")[$__interval])) / 100)",
713
+ "instant": true,
714
+ "legendFormat": "",
715
+ "range": false,
716
+ "refId": "A"
717
+ }
718
+ ],
719
+ "timeFrom": "1h",
720
+ "title": "% of requests by Googlebot",
721
+ "type": "stat"
722
+ },
723
+ {
724
+ "datasource": {
725
+ "uid": "$datasource"
726
+ },
727
+ "description": "",
728
+ "fieldConfig": {
729
+ "defaults": {
730
+ "color": {
731
+ "mode": "thresholds"
732
+ },
733
+ "custom": {
734
+ "hideFrom": {
735
+ "legend": false,
736
+ "tooltip": false,
737
+ "viz": false
738
+ }
739
+ },
740
+ "mappings": [],
741
+ "thresholds": {
742
+ "mode": "absolute",
743
+ "steps": [
744
+ {
745
+ "color": "#96D98D",
746
+ "value": null
747
+ },
748
+ {
749
+ "color": "#73BF69",
750
+ "value": 5
751
+ },
752
+ {
753
+ "color": "#56A64B",
754
+ "value": 10
755
+ }
756
+ ]
757
+ }
758
+ },
759
+ "overrides": []
760
+ },
761
+ "gridPos": {
762
+ "h": 11,
763
+ "w": 12,
764
+ "x": 0,
765
+ "y": 21
766
+ },
767
+ "id": 14,
768
+ "maxDataPoints": 1,
769
+ "options": {
770
+ "basemap": {
771
+ "config": {
772
+ "server": "streets"
773
+ },
774
+ "name": "Layer 0",
775
+ "type": "esri-xyz"
776
+ },
777
+ "controls": {
778
+ "mouseWheelZoom": false,
779
+ "showAttribution": true,
780
+ "showDebug": false,
781
+ "showMeasure": false,
782
+ "showScale": false,
783
+ "showZoom": true
784
+ },
785
+ "layers": [
786
+ {
787
+ "config": {
788
+ "color": {
789
+ "fixed": "semi-dark-blue"
790
+ },
791
+ "fillOpacity": 0.3,
792
+ "shape": "circle",
793
+ "showLegend": true,
794
+ "size": {
795
+ "field": "Value",
796
+ "fixed": 5,
797
+ "max": 50,
798
+ "min": 10
799
+ },
800
+ "style": {
801
+ "color": {
802
+ "fixed": "purple"
803
+ },
804
+ "size": {
805
+ "field": "Total",
806
+ "fixed": 5,
807
+ "max": 40,
808
+ "min": 10
809
+ }
810
+ }
811
+ },
812
+ "location": {
813
+ "lookup": "Field",
814
+ "mode": "lookup"
815
+ },
816
+ "name": "Layer 1",
817
+ "type": "markers"
818
+ }
819
+ ],
820
+ "tooltip": {
821
+ "mode": "details"
822
+ },
823
+ "view": {
824
+ "allLayers": true,
825
+ "id": "zero",
826
+ "lat": 0,
827
+ "lon": 0,
828
+ "zoom": 2
829
+ }
830
+ },
831
+ "pluginVersion": "11.3.0-75826",
832
+ "targets": [
833
+ {
834
+ "datasource": {
835
+ "uid": "$datasource"
836
+ },
837
+ "expr": "sum by (geoip_country_code) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | geoip_country_code != \"\" | __error__=\"\" [$__interval]))",
838
+ "instant": false,
839
+ "legendFormat": "{{geoip_country_code}}",
840
+ "range": true,
841
+ "refId": "A"
842
+ }
843
+ ],
844
+ "title": "Requests per Country",
845
+ "transformations": [
846
+ {
847
+ "id": "reduce",
848
+ "options": {
849
+ "reducers": [
850
+ "sum"
851
+ ]
852
+ }
853
+ }
854
+ ],
855
+ "type": "geomap"
856
+ },
857
+ {
858
+ "datasource": {
859
+ "uid": "$datasource"
860
+ },
861
+ "description": "",
862
+ "fieldConfig": {
863
+ "defaults": {
864
+ "color": {
865
+ "mode": "continuous-BlPu"
866
+ },
867
+ "custom": {
868
+ "align": "center",
869
+ "cellOptions": {
870
+ "type": "auto"
871
+ },
872
+ "filterable": false,
873
+ "inspect": false
874
+ },
875
+ "mappings": [
876
+ {
877
+ "options": {
878
+ "CN": {
879
+ "color": "transparent",
880
+ "index": 4,
881
+ "text": "🇨🇳CN"
882
+ },
883
+ "DE": {
884
+ "color": "transparent",
885
+ "index": 2,
886
+ "text": "🇩🇪DE"
887
+ },
888
+ "FR": {
889
+ "color": "transparent",
890
+ "index": 3,
891
+ "text": "🇫🇷FR"
892
+ },
893
+ "GB": {
894
+ "color": "transparent",
895
+ "index": 7,
896
+ "text": "🇬🇧GB"
897
+ },
898
+ "IN": {
899
+ "color": "transparent",
900
+ "index": 5,
901
+ "text": "🇮🇳IN"
902
+ },
903
+ "IT": {
904
+ "color": "transparent",
905
+ "index": 6,
906
+ "text": "🇮🇹IT"
907
+ },
908
+ "NL": {
909
+ "color": "transparent",
910
+ "index": 1,
911
+ "text": "🇳🇱NL"
912
+ },
913
+ "US": {
914
+ "color": "transparent",
915
+ "index": 0,
916
+ "text": "🇺🇸 US"
917
+ }
918
+ },
919
+ "type": "value"
920
+ }
921
+ ],
922
+ "thresholds": {
923
+ "mode": "absolute",
924
+ "steps": [
925
+ {
926
+ "color": "transparent",
927
+ "value": null
928
+ }
929
+ ]
930
+ }
931
+ },
932
+ "overrides": []
933
+ },
934
+ "gridPos": {
935
+ "h": 11,
936
+ "w": 3,
937
+ "x": 12,
938
+ "y": 21
939
+ },
940
+ "hideTimeOverride": true,
941
+ "id": 32,
942
+ "maxDataPoints": 1,
943
+ "options": {
944
+ "cellHeight": "sm",
945
+ "footer": {
946
+ "countRows": false,
947
+ "fields": "",
948
+ "reducer": [
949
+ "sum"
950
+ ],
951
+ "show": false
952
+ },
953
+ "showHeader": false,
954
+ "sortBy": [
955
+ {
956
+ "desc": true,
957
+ "displayName": "Requests"
958
+ }
959
+ ]
960
+ },
961
+ "pluginVersion": "11.3.0-75826",
962
+ "targets": [
963
+ {
964
+ "datasource": {
965
+ "uid": "$datasource"
966
+ },
967
+ "expr": "topk(10, sum by (geoip_country_code) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | geoip_country_code != \"\" and __error__=\"\" [$__interval])))",
968
+ "instant": true,
969
+ "legendFormat": "{{remote_addr}}",
970
+ "range": false,
971
+ "refId": "A"
972
+ }
973
+ ],
974
+ "timeFrom": "15m",
975
+ "title": "Top Countries",
976
+ "transformations": [
977
+ {
978
+ "id": "organize",
979
+ "options": {
980
+ "excludeByName": {
981
+ "Field": false,
982
+ "Time": true,
983
+ "Value #A": true
984
+ },
985
+ "indexByName": {
986
+ "Time": 0,
987
+ "Value #A": 3,
988
+ "geoip_country_code": 2,
989
+ "remote_addr": 1
990
+ },
991
+ "renameByName": {
992
+ "Field": "IP Address",
993
+ "Total": "Requests",
994
+ "Value #A": "Requests",
995
+ "geoip_country_code": "Country",
996
+ "remote_addr": "IP Address "
997
+ }
998
+ }
999
+ }
1000
+ ],
1001
+ "type": "table"
1002
+ },
1003
+ {
1004
+ "datasource": {
1005
+ "uid": "$datasource"
1006
+ },
1007
+ "description": "",
1008
+ "fieldConfig": {
1009
+ "defaults": {},
1010
+ "overrides": []
1011
+ },
1012
+ "gridPos": {
1013
+ "h": 11,
1014
+ "w": 9,
1015
+ "x": 15,
1016
+ "y": 21
1017
+ },
1018
+ "id": 11,
1019
+ "options": {
1020
+ "dedupStrategy": "signature",
1021
+ "enableLogDetails": false,
1022
+ "prettifyLogMessage": false,
1023
+ "showCommonLabels": false,
1024
+ "showLabels": false,
1025
+ "showTime": false,
1026
+ "sortOrder": "Descending",
1027
+ "wrapLogMessage": false
1028
+ },
1029
+ "pluginVersion": "11.3.0-75826",
1030
+ "targets": [
1031
+ {
1032
+ "datasource": {
1033
+ "uid": "$datasource"
1034
+ },
1035
+ "expr": "{$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | line_format \"➡️ {{.request_method}} {{.request_uri}} with HTTP status: {{.status}} \"",
1036
+ "legendFormat": "",
1037
+ "refId": "A"
1038
+ }
1039
+ ],
1040
+ "title": "Recent requests",
1041
+ "type": "logs"
1042
+ },
1043
+ {
1044
+ "collapsed": false,
1045
+ "gridPos": {
1046
+ "h": 1,
1047
+ "w": 24,
1048
+ "x": 0,
1049
+ "y": 32
1050
+ },
1051
+ "id": 26,
1052
+ "panels": [],
1053
+ "title": "Request statistics over time",
1054
+ "type": "row"
1055
+ },
1056
+ {
1057
+ "datasource": {
1058
+ "uid": "$datasource"
1059
+ },
1060
+ "description": "",
1061
+ "fieldConfig": {
1062
+ "defaults": {
1063
+ "color": {
1064
+ "mode": "palette-classic"
1065
+ },
1066
+ "custom": {
1067
+ "axisBorderShow": false,
1068
+ "axisCenteredZero": false,
1069
+ "axisColorMode": "text",
1070
+ "axisLabel": "",
1071
+ "axisPlacement": "auto",
1072
+ "barAlignment": 0,
1073
+ "barWidthFactor": 0.6,
1074
+ "drawStyle": "line",
1075
+ "fillOpacity": 100,
1076
+ "gradientMode": "hue",
1077
+ "hideFrom": {
1078
+ "legend": false,
1079
+ "tooltip": false,
1080
+ "viz": false
1081
+ },
1082
+ "insertNulls": false,
1083
+ "lineInterpolation": "smooth",
1084
+ "lineWidth": 1,
1085
+ "pointSize": 5,
1086
+ "scaleDistribution": {
1087
+ "log": 2,
1088
+ "type": "log"
1089
+ },
1090
+ "showPoints": "never",
1091
+ "spanNulls": false,
1092
+ "stacking": {
1093
+ "group": "A",
1094
+ "mode": "none"
1095
+ },
1096
+ "thresholdsStyle": {
1097
+ "mode": "area"
1098
+ }
1099
+ },
1100
+ "mappings": [],
1101
+ "thresholds": {
1102
+ "mode": "absolute",
1103
+ "steps": [
1104
+ {
1105
+ "color": "green",
1106
+ "value": null
1107
+ },
1108
+ {
1109
+ "color": "#EAB839",
1110
+ "value": 0.2
1111
+ },
1112
+ {
1113
+ "color": "red",
1114
+ "value": 0.3
1115
+ }
1116
+ ]
1117
+ },
1118
+ "unit": "s"
1119
+ },
1120
+ "overrides": [
1121
+ {
1122
+ "matcher": {
1123
+ "id": "byName",
1124
+ "options": "95th percentile"
1125
+ },
1126
+ "properties": [
1127
+ {
1128
+ "id": "color",
1129
+ "value": {
1130
+ "fixedColor": "blue",
1131
+ "mode": "fixed"
1132
+ }
1133
+ }
1134
+ ]
1135
+ },
1136
+ {
1137
+ "matcher": {
1138
+ "id": "byName",
1139
+ "options": "max latency"
1140
+ },
1141
+ "properties": [
1142
+ {
1143
+ "id": "color",
1144
+ "value": {
1145
+ "fixedColor": "super-light-blue",
1146
+ "mode": "fixed"
1147
+ }
1148
+ }
1149
+ ]
1150
+ },
1151
+ {
1152
+ "matcher": {
1153
+ "id": "byName",
1154
+ "options": "max latency"
1155
+ },
1156
+ "properties": [
1157
+ {
1158
+ "id": "custom.fillOpacity",
1159
+ "value": 30
1160
+ }
1161
+ ]
1162
+ }
1163
+ ]
1164
+ },
1165
+ "gridPos": {
1166
+ "h": 9,
1167
+ "w": 8,
1168
+ "x": 0,
1169
+ "y": 33
1170
+ },
1171
+ "id": 16,
1172
+ "maxDataPoints": 50,
1173
+ "options": {
1174
+ "legend": {
1175
+ "calcs": [],
1176
+ "displayMode": "list",
1177
+ "placement": "bottom",
1178
+ "showLegend": true
1179
+ },
1180
+ "tooltip": {
1181
+ "mode": "single",
1182
+ "sort": "none"
1183
+ }
1184
+ },
1185
+ "pluginVersion": "11.3.0-75826",
1186
+ "targets": [
1187
+ {
1188
+ "datasource": {
1189
+ "uid": "$datasource"
1190
+ },
1191
+ "expr": "quantile_over_time(0.95,{$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | unwrap request_time | __error__=\"\" [$__interval]) by (host)",
1192
+ "legendFormat": "95th percentile",
1193
+ "refId": "C"
1194
+ },
1195
+ {
1196
+ "datasource": {
1197
+ "uid": "$datasource"
1198
+ },
1199
+ "expr": "max by (host) (max_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | unwrap request_time | __error__=\"\" [$__interval]))",
1200
+ "legendFormat": "max latency",
1201
+ "refId": "D"
1202
+ }
1203
+ ],
1204
+ "title": "95th percentile of Request Time",
1205
+ "type": "timeseries"
1206
+ },
1207
+ {
1208
+ "datasource": {
1209
+ "uid": "$datasource"
1210
+ },
1211
+ "description": "",
1212
+ "fieldConfig": {
1213
+ "defaults": {
1214
+ "color": {
1215
+ "mode": "palette-classic"
1216
+ },
1217
+ "custom": {
1218
+ "axisBorderShow": false,
1219
+ "axisCenteredZero": false,
1220
+ "axisColorMode": "text",
1221
+ "axisLabel": "",
1222
+ "axisPlacement": "auto",
1223
+ "barAlignment": 0,
1224
+ "barWidthFactor": 0.6,
1225
+ "drawStyle": "line",
1226
+ "fillOpacity": 39,
1227
+ "gradientMode": "hue",
1228
+ "hideFrom": {
1229
+ "legend": false,
1230
+ "tooltip": false,
1231
+ "viz": false
1232
+ },
1233
+ "insertNulls": false,
1234
+ "lineInterpolation": "smooth",
1235
+ "lineWidth": 1,
1236
+ "pointSize": 5,
1237
+ "scaleDistribution": {
1238
+ "log": 2,
1239
+ "type": "log"
1240
+ },
1241
+ "showPoints": "never",
1242
+ "spanNulls": true,
1243
+ "stacking": {
1244
+ "group": "A",
1245
+ "mode": "none"
1246
+ },
1247
+ "thresholdsStyle": {
1248
+ "mode": "off"
1249
+ }
1250
+ },
1251
+ "decimals": 0,
1252
+ "mappings": [],
1253
+ "thresholds": {
1254
+ "mode": "absolute",
1255
+ "steps": [
1256
+ {
1257
+ "color": "green",
1258
+ "value": null
1259
+ },
1260
+ {
1261
+ "color": "red",
1262
+ "value": 80
1263
+ }
1264
+ ]
1265
+ },
1266
+ "unit": "short"
1267
+ },
1268
+ "overrides": [
1269
+ {
1270
+ "matcher": {
1271
+ "id": "byName",
1272
+ "options": "HTTP Status 500"
1273
+ },
1274
+ "properties": [
1275
+ {
1276
+ "id": "color",
1277
+ "value": {
1278
+ "fixedColor": "dark-orange",
1279
+ "mode": "fixed"
1280
+ }
1281
+ }
1282
+ ]
1283
+ },
1284
+ {
1285
+ "matcher": {
1286
+ "id": "byName",
1287
+ "options": "{statuscode=\"200\"} 200"
1288
+ },
1289
+ "properties": [
1290
+ {
1291
+ "id": "color",
1292
+ "value": {
1293
+ "fixedColor": "green",
1294
+ "mode": "fixed"
1295
+ }
1296
+ }
1297
+ ]
1298
+ },
1299
+ {
1300
+ "matcher": {
1301
+ "id": "byName",
1302
+ "options": "{statuscode=\"404\"} 404"
1303
+ },
1304
+ "properties": [
1305
+ {
1306
+ "id": "color",
1307
+ "value": {
1308
+ "fixedColor": "semi-dark-purple",
1309
+ "mode": "fixed"
1310
+ }
1311
+ }
1312
+ ]
1313
+ },
1314
+ {
1315
+ "matcher": {
1316
+ "id": "byName",
1317
+ "options": "{statuscode=\"500\"} 500"
1318
+ },
1319
+ "properties": [
1320
+ {
1321
+ "id": "color",
1322
+ "value": {
1323
+ "fixedColor": "dark-red",
1324
+ "mode": "fixed"
1325
+ }
1326
+ }
1327
+ ]
1328
+ },
1329
+ {
1330
+ "matcher": {
1331
+ "id": "byName",
1332
+ "options": "HTTP Status 404"
1333
+ },
1334
+ "properties": [
1335
+ {
1336
+ "id": "color",
1337
+ "value": {
1338
+ "fixedColor": "light-orange",
1339
+ "mode": "fixed"
1340
+ }
1341
+ }
1342
+ ]
1343
+ },
1344
+ {
1345
+ "matcher": {
1346
+ "id": "byName",
1347
+ "options": "HTTP Status 301"
1348
+ },
1349
+ "properties": [
1350
+ {
1351
+ "id": "color",
1352
+ "value": {
1353
+ "fixedColor": "light-blue",
1354
+ "mode": "fixed"
1355
+ }
1356
+ }
1357
+ ]
1358
+ },
1359
+ {
1360
+ "matcher": {
1361
+ "id": "byName",
1362
+ "options": "HTTP Status 200"
1363
+ },
1364
+ "properties": [
1365
+ {
1366
+ "id": "color",
1367
+ "value": {
1368
+ "fixedColor": "semi-dark-blue",
1369
+ "mode": "fixed"
1370
+ }
1371
+ }
1372
+ ]
1373
+ }
1374
+ ]
1375
+ },
1376
+ "gridPos": {
1377
+ "h": 9,
1378
+ "w": 8,
1379
+ "x": 8,
1380
+ "y": 33
1381
+ },
1382
+ "id": 2,
1383
+ "maxDataPoints": 50,
1384
+ "options": {
1385
+ "legend": {
1386
+ "calcs": [],
1387
+ "displayMode": "list",
1388
+ "placement": "bottom",
1389
+ "showLegend": true
1390
+ },
1391
+ "tooltip": {
1392
+ "mode": "single",
1393
+ "sort": "none"
1394
+ }
1395
+ },
1396
+ "pluginVersion": "11.3.0-75826",
1397
+ "targets": [
1398
+ {
1399
+ "datasource": {
1400
+ "uid": "$datasource"
1401
+ },
1402
+ "expr": "sum by (status) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\" [$__interval]))",
1403
+ "legendFormat": "HTTP Status {{status}}",
1404
+ "refId": "A"
1405
+ }
1406
+ ],
1407
+ "title": "HTTP status codes over time",
1408
+ "transformations": [
1409
+ {
1410
+ "id": "filterFieldsByName",
1411
+ "options": {
1412
+ "include": {
1413
+ "names": [
1414
+ "Time",
1415
+ "HTTP Status 200",
1416
+ "HTTP Status 301",
1417
+ "HTTP Status 304",
1418
+ "HTTP Status 404",
1419
+ "HTTP Status 406",
1420
+ "HTTP Status 500"
1421
+ ]
1422
+ }
1423
+ }
1424
+ }
1425
+ ],
1426
+ "type": "timeseries"
1427
+ },
1428
+ {
1429
+ "datasource": {
1430
+ "uid": "$datasource"
1431
+ },
1432
+ "description": "",
1433
+ "fieldConfig": {
1434
+ "defaults": {
1435
+ "color": {
1436
+ "mode": "palette-classic"
1437
+ },
1438
+ "custom": {
1439
+ "axisBorderShow": false,
1440
+ "axisCenteredZero": false,
1441
+ "axisColorMode": "text",
1442
+ "axisLabel": "",
1443
+ "axisPlacement": "auto",
1444
+ "barAlignment": 0,
1445
+ "barWidthFactor": 0.6,
1446
+ "drawStyle": "line",
1447
+ "fillOpacity": 100,
1448
+ "gradientMode": "hue",
1449
+ "hideFrom": {
1450
+ "legend": false,
1451
+ "tooltip": false,
1452
+ "viz": false
1453
+ },
1454
+ "insertNulls": false,
1455
+ "lineInterpolation": "smooth",
1456
+ "lineWidth": 1,
1457
+ "pointSize": 5,
1458
+ "scaleDistribution": {
1459
+ "type": "linear"
1460
+ },
1461
+ "showPoints": "never",
1462
+ "spanNulls": false,
1463
+ "stacking": {
1464
+ "group": "A",
1465
+ "mode": "none"
1466
+ },
1467
+ "thresholdsStyle": {
1468
+ "mode": "off"
1469
+ }
1470
+ },
1471
+ "mappings": [],
1472
+ "thresholds": {
1473
+ "mode": "absolute",
1474
+ "steps": [
1475
+ {
1476
+ "color": "green",
1477
+ "value": null
1478
+ },
1479
+ {
1480
+ "color": "red",
1481
+ "value": 80
1482
+ }
1483
+ ]
1484
+ },
1485
+ "unit": "decbytes"
1486
+ },
1487
+ "overrides": [
1488
+ {
1489
+ "matcher": {
1490
+ "id": "byName",
1491
+ "options": "Bytes sent"
1492
+ },
1493
+ "properties": [
1494
+ {
1495
+ "id": "color",
1496
+ "value": {
1497
+ "fixedColor": "light-blue",
1498
+ "mode": "fixed"
1499
+ }
1500
+ }
1501
+ ]
1502
+ },
1503
+ {
1504
+ "matcher": {
1505
+ "id": "byName",
1506
+ "options": "appfelstrudel"
1507
+ },
1508
+ "properties": [
1509
+ {
1510
+ "id": "color",
1511
+ "value": {
1512
+ "fixedColor": "yellow",
1513
+ "mode": "fixed"
1514
+ }
1515
+ }
1516
+ ]
1517
+ }
1518
+ ]
1519
+ },
1520
+ "gridPos": {
1521
+ "h": 9,
1522
+ "w": 8,
1523
+ "x": 16,
1524
+ "y": 33
1525
+ },
1526
+ "id": 9,
1527
+ "maxDataPoints": 50,
1528
+ "options": {
1529
+ "legend": {
1530
+ "calcs": [],
1531
+ "displayMode": "list",
1532
+ "placement": "bottom",
1533
+ "showLegend": true
1534
+ },
1535
+ "tooltip": {
1536
+ "mode": "single",
1537
+ "sort": "none"
1538
+ }
1539
+ },
1540
+ "pluginVersion": "11.3.0-75826",
1541
+ "targets": [
1542
+ {
1543
+ "datasource": {
1544
+ "uid": "$datasource"
1545
+ },
1546
+ "expr": "sum by (host) (sum_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | status=200 | unwrap body_bytes_sent | __error__=\"\" [$__interval]))",
1547
+ "legendFormat": "Bytes sent",
1548
+ "refId": "A"
1549
+ }
1550
+ ],
1551
+ "title": "Bytes Sent",
1552
+ "type": "timeseries"
1553
+ },
1554
+ {
1555
+ "collapsed": true,
1556
+ "gridPos": {
1557
+ "h": 1,
1558
+ "w": 24,
1559
+ "x": 0,
1560
+ "y": 42
1561
+ },
1562
+ "id": 28,
1563
+ "panels": [
1564
+ {
1565
+ "datasource": {
1566
+ "uid": "$datasource"
1567
+ },
1568
+ "description": "",
1569
+ "fieldConfig": {
1570
+ "defaults": {
1571
+ "color": {
1572
+ "mode": "thresholds"
1573
+ },
1574
+ "custom": {
1575
+ "cellOptions": {
1576
+ "type": "auto"
1577
+ },
1578
+ "filterable": false
1579
+ },
1580
+ "mappings": [],
1581
+ "thresholds": {
1582
+ "mode": "absolute",
1583
+ "steps": [
1584
+ {
1585
+ "color": "green"
1586
+ },
1587
+ {
1588
+ "color": "red",
1589
+ "value": 80
1590
+ }
1591
+ ]
1592
+ }
1593
+ },
1594
+ "overrides": [
1595
+ {
1596
+ "matcher": {
1597
+ "id": "byName",
1598
+ "options": "Requests"
1599
+ },
1600
+ "properties": [
1601
+ {
1602
+ "id": "custom.cellOptions",
1603
+ "value": {
1604
+ "mode": "gradient",
1605
+ "type": "gauge"
1606
+ }
1607
+ },
1608
+ {
1609
+ "id": "color",
1610
+ "value": {
1611
+ "mode": "continuous-BlPu"
1612
+ }
1613
+ }
1614
+ ]
1615
+ },
1616
+ {
1617
+ "matcher": {
1618
+ "id": "byName",
1619
+ "options": "Requests"
1620
+ },
1621
+ "properties": [
1622
+ {
1623
+ "id": "custom.width",
1624
+ "value": 300
1625
+ }
1626
+ ]
1627
+ }
1628
+ ]
1629
+ },
1630
+ "gridPos": {
1631
+ "h": 6,
1632
+ "w": 9,
1633
+ "x": 0,
1634
+ "y": 79
1635
+ },
1636
+ "id": 6,
1637
+ "maxDataPoints": 1,
1638
+ "options": {
1639
+ "showHeader": true,
1640
+ "sortBy": [
1641
+ {
1642
+ "desc": true,
1643
+ "displayName": "Requests"
1644
+ }
1645
+ ]
1646
+ },
1647
+ "pluginVersion": "8.2.0",
1648
+ "targets": [
1649
+ {
1650
+ "datasource": {
1651
+ "uid": "$datasource"
1652
+ },
1653
+ "expr": "topk(10, sum by (http_referer) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | http_referer != \"\" and http_referer !~ \".*?$host.*?\" and http_referer !~ \".*?\\\\*\\\\*\\\\*.*?\" | __error__=\"\" [15m])))",
1654
+ "instant": true,
1655
+ "legendFormat": "{{http_referer}}",
1656
+ "range": false,
1657
+ "refId": "A"
1658
+ }
1659
+ ],
1660
+ "timeFrom": "15m",
1661
+ "title": "Top 10 HTTP Referers",
1662
+ "transformations": [
1663
+ {
1664
+ "id": "organize",
1665
+ "options": {
1666
+ "excludeByName": {
1667
+ "Time": true
1668
+ },
1669
+ "indexByName": {},
1670
+ "renameByName": {
1671
+ "Field": "Referer",
1672
+ "Total": "Requests",
1673
+ "Value #A": "Requests",
1674
+ "http_referer": "HTTP Referrer"
1675
+ }
1676
+ }
1677
+ }
1678
+ ],
1679
+ "type": "table"
1680
+ },
1681
+ {
1682
+ "datasource": {
1683
+ "uid": "$datasource"
1684
+ },
1685
+ "description": "",
1686
+ "fieldConfig": {
1687
+ "defaults": {
1688
+ "color": {
1689
+ "mode": "thresholds"
1690
+ },
1691
+ "custom": {
1692
+ "cellOptions": {
1693
+ "type": "auto"
1694
+ },
1695
+ "filterable": false
1696
+ },
1697
+ "mappings": [],
1698
+ "thresholds": {
1699
+ "mode": "absolute",
1700
+ "steps": [
1701
+ {
1702
+ "color": "green"
1703
+ },
1704
+ {
1705
+ "color": "red",
1706
+ "value": 80
1707
+ }
1708
+ ]
1709
+ }
1710
+ },
1711
+ "overrides": [
1712
+ {
1713
+ "matcher": {
1714
+ "id": "byName",
1715
+ "options": "Requests"
1716
+ },
1717
+ "properties": [
1718
+ {
1719
+ "id": "custom.width",
1720
+ "value": 300
1721
+ },
1722
+ {
1723
+ "id": "custom.cellOptions",
1724
+ "value": {
1725
+ "mode": "gradient",
1726
+ "type": "gauge"
1727
+ }
1728
+ },
1729
+ {
1730
+ "id": "color",
1731
+ "value": {
1732
+ "mode": "continuous-BlPu"
1733
+ }
1734
+ }
1735
+ ]
1736
+ }
1737
+ ]
1738
+ },
1739
+ "gridPos": {
1740
+ "h": 6,
1741
+ "w": 15,
1742
+ "x": 9,
1743
+ "y": 79
1744
+ },
1745
+ "id": 7,
1746
+ "maxDataPoints": 1,
1747
+ "options": {
1748
+ "showHeader": true,
1749
+ "sortBy": [
1750
+ {
1751
+ "desc": true,
1752
+ "displayName": "Requests"
1753
+ }
1754
+ ]
1755
+ },
1756
+ "pluginVersion": "8.2.0",
1757
+ "targets": [
1758
+ {
1759
+ "datasource": {
1760
+ "uid": "$datasource"
1761
+ },
1762
+ "expr": "topk(10, sum by (http_user_agent) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\" [15m])))",
1763
+ "instant": true,
1764
+ "legendFormat": "{{http_user_agent}}",
1765
+ "range": false,
1766
+ "refId": "A"
1767
+ }
1768
+ ],
1769
+ "timeFrom": "15m",
1770
+ "title": "Top 10 User Agents",
1771
+ "transformations": [
1772
+ {
1773
+ "id": "organize",
1774
+ "options": {
1775
+ "excludeByName": {
1776
+ "Field": false,
1777
+ "Time": true
1778
+ },
1779
+ "indexByName": {},
1780
+ "renameByName": {
1781
+ "Field": "Agent",
1782
+ "Total": "Requests",
1783
+ "Value #A": "Requests",
1784
+ "http_user_agent": "User agent"
1785
+ }
1786
+ }
1787
+ }
1788
+ ],
1789
+ "type": "table"
1790
+ },
1791
+ {
1792
+ "datasource": {
1793
+ "uid": "$datasource"
1794
+ },
1795
+ "description": "",
1796
+ "fieldConfig": {
1797
+ "defaults": {
1798
+ "color": {
1799
+ "mode": "thresholds"
1800
+ },
1801
+ "custom": {
1802
+ "cellOptions": {
1803
+ "type": "auto"
1804
+ },
1805
+ "filterable": false
1806
+ },
1807
+ "mappings": [
1808
+ {
1809
+ "options": {
1810
+ "NL": {
1811
+ "index": 1,
1812
+ "text": "🇳🇱"
1813
+ },
1814
+ "US": {
1815
+ "index": 0,
1816
+ "text": "🇺🇸"
1817
+ }
1818
+ },
1819
+ "type": "value"
1820
+ }
1821
+ ],
1822
+ "thresholds": {
1823
+ "mode": "absolute",
1824
+ "steps": [
1825
+ {
1826
+ "color": "green"
1827
+ },
1828
+ {
1829
+ "color": "red",
1830
+ "value": 80
1831
+ }
1832
+ ]
1833
+ }
1834
+ },
1835
+ "overrides": [
1836
+ {
1837
+ "matcher": {
1838
+ "id": "byName",
1839
+ "options": "Requests"
1840
+ },
1841
+ "properties": [
1842
+ {
1843
+ "id": "custom.width",
1844
+ "value": 300
1845
+ },
1846
+ {
1847
+ "id": "custom.cellOptions",
1848
+ "value": {
1849
+ "mode": "gradient",
1850
+ "type": "gauge"
1851
+ }
1852
+ },
1853
+ {
1854
+ "id": "color",
1855
+ "value": {
1856
+ "mode": "continuous-BlPu"
1857
+ }
1858
+ }
1859
+ ]
1860
+ },
1861
+ {
1862
+ "matcher": {
1863
+ "id": "byName",
1864
+ "options": "Country"
1865
+ },
1866
+ "properties": [
1867
+ {
1868
+ "id": "custom.width",
1869
+ "value": 74
1870
+ }
1871
+ ]
1872
+ }
1873
+ ]
1874
+ },
1875
+ "gridPos": {
1876
+ "h": 8,
1877
+ "w": 9,
1878
+ "x": 0,
1879
+ "y": 85
1880
+ },
1881
+ "id": 3,
1882
+ "maxDataPoints": 1,
1883
+ "options": {
1884
+ "showHeader": true,
1885
+ "sortBy": [
1886
+ {
1887
+ "desc": true,
1888
+ "displayName": "Requests"
1889
+ }
1890
+ ]
1891
+ },
1892
+ "pluginVersion": "8.2.0",
1893
+ "targets": [
1894
+ {
1895
+ "datasource": {
1896
+ "uid": "$datasource"
1897
+ },
1898
+ "expr": "topk(10, sum by (remote_addr, geoip_country_code) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} | json | __error__=\"\" [15m])))",
1899
+ "instant": true,
1900
+ "legendFormat": "{{remote_addr}}",
1901
+ "range": false,
1902
+ "refId": "A"
1903
+ }
1904
+ ],
1905
+ "timeFrom": "15m",
1906
+ "title": "Top 10 visitor IPs",
1907
+ "transformations": [
1908
+ {
1909
+ "id": "organize",
1910
+ "options": {
1911
+ "excludeByName": {
1912
+ "Field": false,
1913
+ "Time": true
1914
+ },
1915
+ "indexByName": {
1916
+ "Time": 0,
1917
+ "Value #A": 3,
1918
+ "geoip_country_code": 2,
1919
+ "remote_addr": 1
1920
+ },
1921
+ "renameByName": {
1922
+ "Field": "IP Address",
1923
+ "Total": "Requests",
1924
+ "Value #A": "Requests",
1925
+ "geoip_country_code": "Country",
1926
+ "remote_addr": "IP Address "
1927
+ }
1928
+ }
1929
+ }
1930
+ ],
1931
+ "type": "table"
1932
+ },
1933
+ {
1934
+ "datasource": {
1935
+ "uid": "$datasource"
1936
+ },
1937
+ "description": "",
1938
+ "fieldConfig": {
1939
+ "defaults": {
1940
+ "color": {
1941
+ "mode": "thresholds"
1942
+ },
1943
+ "custom": {
1944
+ "cellOptions": {
1945
+ "type": "auto"
1946
+ },
1947
+ "filterable": false
1948
+ },
1949
+ "mappings": [],
1950
+ "thresholds": {
1951
+ "mode": "absolute",
1952
+ "steps": [
1953
+ {
1954
+ "color": "green"
1955
+ },
1956
+ {
1957
+ "color": "red",
1958
+ "value": 80
1959
+ }
1960
+ ]
1961
+ }
1962
+ },
1963
+ "overrides": [
1964
+ {
1965
+ "matcher": {
1966
+ "id": "byName",
1967
+ "options": "Requests"
1968
+ },
1969
+ "properties": [
1970
+ {
1971
+ "id": "custom.width",
1972
+ "value": 300
1973
+ },
1974
+ {
1975
+ "id": "custom.cellOptions",
1976
+ "value": {
1977
+ "mode": "gradient",
1978
+ "type": "gauge"
1979
+ }
1980
+ },
1981
+ {
1982
+ "id": "color",
1983
+ "value": {
1984
+ "mode": "continuous-BlPu"
1985
+ }
1986
+ }
1987
+ ]
1988
+ }
1989
+ ]
1990
+ },
1991
+ "gridPos": {
1992
+ "h": 8,
1993
+ "w": 15,
1994
+ "x": 9,
1995
+ "y": 85
1996
+ },
1997
+ "id": 12,
1998
+ "maxDataPoints": 1,
1999
+ "options": {
2000
+ "showHeader": true,
2001
+ "sortBy": [
2002
+ {
2003
+ "desc": true,
2004
+ "displayName": "Requests"
2005
+ }
2006
+ ]
2007
+ },
2008
+ "pluginVersion": "8.2.0",
2009
+ "targets": [
2010
+ {
2011
+ "datasource": {
2012
+ "uid": "$datasource"
2013
+ },
2014
+ "expr": "topk(10, sum by (request_uri) (count_over_time({$label_name=~\"$label_value\", job=~\"$job\", instance=~\"$instance\"} !~ `\\.ico|\\.svg|\\.css|\\.png|\\.txt|\\.js|\\.xml` | json | status = 200 and request_uri != \"/\" | __error__=\"\" [15m])))",
2015
+ "instant": true,
2016
+ "legendFormat": "{{request_uri}}",
2017
+ "range": false,
2018
+ "refId": "A"
2019
+ }
2020
+ ],
2021
+ "timeFrom": "15m",
2022
+ "title": "Top 10 Requested Pages",
2023
+ "transformations": [
2024
+ {
2025
+ "id": "organize",
2026
+ "options": {
2027
+ "excludeByName": {
2028
+ "Time": true
2029
+ },
2030
+ "indexByName": {},
2031
+ "renameByName": {
2032
+ "Field": "Page",
2033
+ "Time": "",
2034
+ "Total": "",
2035
+ "Value #A": "Requests",
2036
+ "request_uri": "Path"
2037
+ }
2038
+ }
2039
+ }
2040
+ ],
2041
+ "type": "table"
2042
+ }
2043
+ ],
2044
+ "title": "Acquisition and Behaviour",
2045
+ "type": "row"
2046
+ }
2047
+ ],
2048
+ "preload": false,
2049
+ "refresh": "",
2050
+ "schemaVersion": 39,
2051
+ "tags": [],
2052
+ "templating": {
2053
+ "list": [
2054
+ {
2055
+ "current": {
2056
+ "text": "Explore Logs",
2057
+ "value": "ddhr3fttaw8aod"
2058
+ },
2059
+ "includeAll": false,
2060
+ "label": "Datasource",
2061
+ "name": "datasource",
2062
+ "options": [],
2063
+ "query": "loki",
2064
+ "refresh": 1,
2065
+ "regex": "",
2066
+ "type": "datasource"
2067
+ },
2068
+ {
2069
+ "current": {
2070
+ "text": "__stream_shard__",
2071
+ "value": "__stream_shard__"
2072
+ },
2073
+ "datasource": {
2074
+ "type": "loki",
2075
+ "uid": "$datasource"
2076
+ },
2077
+ "definition": "label_names()",
2078
+ "includeAll": false,
2079
+ "label": "Label Name",
2080
+ "name": "label_name",
2081
+ "options": [],
2082
+ "query": "label_names()",
2083
+ "refresh": 2,
2084
+ "regex": "",
2085
+ "sort": 1,
2086
+ "type": "query"
2087
+ },
2088
+ {
2089
+ "current": {
2090
+ "text": "All",
2091
+ "value": "$__all"
2092
+ },
2093
+ "datasource": {
2094
+ "type": "loki",
2095
+ "uid": "$datasource"
2096
+ },
2097
+ "definition": "label_values($label_name)",
2098
+ "includeAll": true,
2099
+ "label": "Label Value",
2100
+ "multi": true,
2101
+ "name": "label_value",
2102
+ "options": [],
2103
+ "query": "label_values($label_name)",
2104
+ "refresh": 2,
2105
+ "regex": "",
2106
+ "sort": 1,
2107
+ "type": "query"
2108
+ },
2109
+ {
2110
+ "allValue": ".*",
2111
+ "current": {
2112
+ "text": "All",
2113
+ "value": "$__all"
2114
+ },
2115
+ "datasource": {
2116
+ "type": "loki",
2117
+ "uid": "$datasource"
2118
+ },
2119
+ "definition": "label_values({$label_name=~\"$label_value\"}, job)",
2120
+ "includeAll": true,
2121
+ "label": "Job",
2122
+ "multi": true,
2123
+ "name": "job",
2124
+ "options": [],
2125
+ "query": "label_values({$label_name=~\"$label_value\"}, job)",
2126
+ "refresh": 2,
2127
+ "regex": "",
2128
+ "type": "query"
2129
+ },
2130
+ {
2131
+ "allValue": ".*",
2132
+ "current": {
2133
+ "text": "All",
2134
+ "value": "$__all"
2135
+ },
2136
+ "datasource": {
2137
+ "type": "loki",
2138
+ "uid": "$datasource"
2139
+ },
2140
+ "definition": "label_values({$label_name=~\"$label_value\"}, instance)",
2141
+ "includeAll": true,
2142
+ "label": "Instance",
2143
+ "multi": true,
2144
+ "name": "instance",
2145
+ "options": [],
2146
+ "query": "label_values({$label_name=~\"$label_value\"}, instance)",
2147
+ "refresh": 2,
2148
+ "regex": "",
2149
+ "type": "query"
2150
+ }
2151
+ ]
2152
+ },
2153
+ "time": {
2154
+ "from": "now-6h",
2155
+ "to": "now"
2156
+ },
2157
+ "timepicker": {
2158
+ "refresh_intervals": [
2159
+ "10s",
2160
+ "30s",
2161
+ "1m",
2162
+ "5m",
2163
+ "15m",
2164
+ "30m",
2165
+ "1h",
2166
+ "2h",
2167
+ "1d"
2168
+ ]
2169
+ },
2170
+ "timezone": "",
2171
+ "title": "SHOWCASE: Loki NGINX Service Mesh - JSON version",
2172
+ "uid": "d6b8253a-4ffa-4bc9-bf2e-2cdc1eabc51c",
2173
+ "version": 4,
2174
+ "weekStart": ""
2175
+ }