@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,629 @@
1
+ {
2
+ "title": "SHOWCASE: Loki NGINX Service Mesh - JSON version",
3
+ "dashboardExtend": {
4
+ "groupUnfoldStatus": {
5
+ "WELCOME TO GRAFANA PLAY!": true,
6
+ "KPI's": true,
7
+ "Request statistics over time": true,
8
+ "Acquisition and Behaviour": false
9
+ }
10
+ },
11
+ "main": {
12
+ "vars": [
13
+ {
14
+ "type": "PROMQL_QUERY",
15
+ "datasource": "dataflux",
16
+ "name": "Label Name",
17
+ "seq": 1,
18
+ "hide": 0,
19
+ "includeStar": false,
20
+ "valueSort": "desc",
21
+ "code": "label_name",
22
+ "definition": {
23
+ "value": "label_names()",
24
+ "defaultVal": {
25
+ "label": "",
26
+ "value": ""
27
+ }
28
+ }
29
+ },
30
+ {
31
+ "type": "PROMQL_QUERY",
32
+ "datasource": "dataflux",
33
+ "name": "Label Value",
34
+ "seq": 2,
35
+ "hide": 0,
36
+ "multiple": true,
37
+ "includeStar": true,
38
+ "valueSort": "desc",
39
+ "code": "label_value",
40
+ "definition": {
41
+ "value": "label_values(#{label_name})",
42
+ "defaultVal": {
43
+ "label": "all values",
44
+ "value": "__all__"
45
+ }
46
+ }
47
+ },
48
+ {
49
+ "type": "PROMQL_QUERY",
50
+ "datasource": "dataflux",
51
+ "name": "Job",
52
+ "seq": 3,
53
+ "hide": 0,
54
+ "multiple": true,
55
+ "includeStar": true,
56
+ "valueSort": "desc",
57
+ "code": "job",
58
+ "definition": {
59
+ "value": "label_values({#{label_name}=~\"#{label_value}\"}, job)",
60
+ "defaultVal": {
61
+ "label": "*",
62
+ "value": "*"
63
+ }
64
+ }
65
+ },
66
+ {
67
+ "type": "PROMQL_QUERY",
68
+ "datasource": "dataflux",
69
+ "name": "Instance",
70
+ "seq": 4,
71
+ "hide": 0,
72
+ "multiple": true,
73
+ "includeStar": true,
74
+ "valueSort": "desc",
75
+ "code": "instance",
76
+ "definition": {
77
+ "value": "label_values({#{label_name}=~\"#{label_value}\"}, instance)",
78
+ "defaultVal": {
79
+ "label": "*",
80
+ "value": "*"
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "type": "CUSTOM_LIST",
86
+ "datasource": "custom",
87
+ "name": "query1",
88
+ "seq": 5,
89
+ "hide": 0,
90
+ "multiple": true,
91
+ "valueSort": "desc",
92
+ "code": "query0",
93
+ "definition": {
94
+ "value": "key:value",
95
+ "defaultVal": {
96
+ "label": "key:value",
97
+ "value": "key:value"
98
+ }
99
+ }
100
+ }
101
+ ],
102
+ "charts": [
103
+ {
104
+ "extend": {
105
+ "settings": {}
106
+ },
107
+ "group": {
108
+ "name": "WELCOME TO GRAFANA PLAY!"
109
+ },
110
+ "pos": {
111
+ "x": 0,
112
+ "y": 2,
113
+ "h": 15.3,
114
+ "w": 6
115
+ },
116
+ "name": "",
117
+ "queries": [
118
+ {
119
+ "query": {
120
+ "content": "![foo](https://grafana.com/about/events/grafanacon/assets/2023/graphic-golden-grot2.svg)\n"
121
+ }
122
+ }
123
+ ],
124
+ "type": "text"
125
+ },
126
+ {
127
+ "extend": {
128
+ "settings": {}
129
+ },
130
+ "group": {
131
+ "name": "WELCOME TO GRAFANA PLAY!"
132
+ },
133
+ "pos": {
134
+ "x": 0,
135
+ "y": 17.2,
136
+ "h": 5.8,
137
+ "w": 9
138
+ },
139
+ "name": "",
140
+ "queries": [
141
+ {
142
+ "query": {
143
+ "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). 👇"
144
+ }
145
+ }
146
+ ],
147
+ "type": "text"
148
+ },
149
+ {
150
+ "extend": {
151
+ "settings": {}
152
+ },
153
+ "group": {
154
+ "name": "KPI's"
155
+ },
156
+ "pos": {
157
+ "x": 0,
158
+ "y": 2,
159
+ "h": 7.7,
160
+ "w": 5
161
+ },
162
+ "name": "Total requests ",
163
+ "queries": [
164
+ {
165
+ "datasource": "dataflux",
166
+ "qtype": "promql",
167
+ "type": "singlestat",
168
+ "query": {
169
+ "q": "sum by(host) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"}[#{__interval}])) ",
170
+ "type": "promql"
171
+ }
172
+ }
173
+ ],
174
+ "type": "singlestat"
175
+ },
176
+ {
177
+ "extend": {
178
+ "settings": {}
179
+ },
180
+ "group": {
181
+ "name": "KPI's"
182
+ },
183
+ "pos": {
184
+ "x": 5,
185
+ "y": 2,
186
+ "h": 15.3,
187
+ "w": 7
188
+ },
189
+ "name": "Requests per status code",
190
+ "queries": [
191
+ {
192
+ "datasource": "dataflux",
193
+ "qtype": "promql",
194
+ "type": "singlestat",
195
+ "query": {
196
+ "q": "sum by (status) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | __error__=\"\" [#{__interval}]))",
197
+ "type": "promql"
198
+ }
199
+ }
200
+ ],
201
+ "type": "singlestat"
202
+ },
203
+ {
204
+ "extend": {
205
+ "settings": {}
206
+ },
207
+ "group": {
208
+ "name": "KPI's"
209
+ },
210
+ "pos": {
211
+ "x": 12,
212
+ "y": 2,
213
+ "h": 7.7,
214
+ "w": 3
215
+ },
216
+ "name": "NGINX logs in bytes",
217
+ "queries": [
218
+ {
219
+ "datasource": "dataflux",
220
+ "qtype": "promql",
221
+ "type": "singlestat",
222
+ "query": {
223
+ "q": "bytes_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"}[#{__interval}])",
224
+ "type": "promql"
225
+ }
226
+ }
227
+ ],
228
+ "type": "singlestat"
229
+ },
230
+ {
231
+ "extend": {
232
+ "settings": {}
233
+ },
234
+ "group": {
235
+ "name": "KPI's"
236
+ },
237
+ "pos": {
238
+ "x": 15,
239
+ "y": 2,
240
+ "h": 7.7,
241
+ "w": 3
242
+ },
243
+ "name": "% of 5xx requests ",
244
+ "queries": [
245
+ {
246
+ "datasource": "dataflux",
247
+ "qtype": "promql",
248
+ "type": "singlestat",
249
+ "query": {
250
+ "q": "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)",
251
+ "type": "promql"
252
+ }
253
+ }
254
+ ],
255
+ "type": "singlestat"
256
+ },
257
+ {
258
+ "extend": {
259
+ "settings": {}
260
+ },
261
+ "group": {
262
+ "name": "KPI's"
263
+ },
264
+ "pos": {
265
+ "x": 18,
266
+ "y": 2,
267
+ "h": 7.7,
268
+ "w": 6
269
+ },
270
+ "name": "",
271
+ "queries": [
272
+ {
273
+ "query": {
274
+ "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"
275
+ }
276
+ }
277
+ ],
278
+ "type": "text"
279
+ },
280
+ {
281
+ "extend": {
282
+ "settings": {}
283
+ },
284
+ "group": {
285
+ "name": "KPI's"
286
+ },
287
+ "pos": {
288
+ "x": 0,
289
+ "y": 9.6,
290
+ "h": 7.7,
291
+ "w": 5
292
+ },
293
+ "name": "Realtime visitors ",
294
+ "queries": [
295
+ {
296
+ "datasource": "dataflux",
297
+ "qtype": "promql",
298
+ "type": "singlestat",
299
+ "query": {
300
+ "q": "count(sum by (remote_addr) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | __error__=\"\" [#{__interval}])))",
301
+ "type": "promql"
302
+ }
303
+ }
304
+ ],
305
+ "type": "singlestat"
306
+ },
307
+ {
308
+ "extend": {
309
+ "settings": {}
310
+ },
311
+ "group": {
312
+ "name": "KPI's"
313
+ },
314
+ "pos": {
315
+ "x": 12,
316
+ "y": 9.6,
317
+ "h": 7.7,
318
+ "w": 3
319
+ },
320
+ "name": "# NGINX log lines",
321
+ "queries": [
322
+ {
323
+ "datasource": "dataflux",
324
+ "qtype": "promql",
325
+ "type": "singlestat",
326
+ "query": {
327
+ "q": "count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"}[#{__interval}])",
328
+ "type": "promql"
329
+ }
330
+ }
331
+ ],
332
+ "type": "singlestat"
333
+ },
334
+ {
335
+ "extend": {
336
+ "settings": {}
337
+ },
338
+ "group": {
339
+ "name": "KPI's"
340
+ },
341
+ "pos": {
342
+ "x": 15,
343
+ "y": 9.6,
344
+ "h": 7.7,
345
+ "w": 3
346
+ },
347
+ "name": "Total Bytes Sent",
348
+ "queries": [
349
+ {
350
+ "datasource": "dataflux",
351
+ "qtype": "promql",
352
+ "type": "singlestat",
353
+ "query": {
354
+ "q": "sum by (host) (sum_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | unwrap body_bytes_sent | __error__=\"\" [#{__interval}]))",
355
+ "type": "promql"
356
+ }
357
+ }
358
+ ],
359
+ "type": "singlestat"
360
+ },
361
+ {
362
+ "extend": {
363
+ "settings": {}
364
+ },
365
+ "group": {
366
+ "name": "KPI's"
367
+ },
368
+ "pos": {
369
+ "x": 18,
370
+ "y": 9.6,
371
+ "h": 7.7,
372
+ "w": 6
373
+ },
374
+ "name": "% of requests by Googlebot",
375
+ "queries": [
376
+ {
377
+ "datasource": "dataflux",
378
+ "qtype": "promql",
379
+ "type": "singlestat",
380
+ "query": {
381
+ "q": "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)",
382
+ "type": "promql"
383
+ }
384
+ }
385
+ ],
386
+ "type": "singlestat"
387
+ },
388
+ {
389
+ "extend": {
390
+ "settings": {}
391
+ },
392
+ "group": {
393
+ "name": "KPI's"
394
+ },
395
+ "pos": {
396
+ "x": 12,
397
+ "y": 17.2,
398
+ "h": 21,
399
+ "w": 3
400
+ },
401
+ "name": "Top Countries",
402
+ "queries": [
403
+ {
404
+ "datasource": "dataflux",
405
+ "qtype": "promql",
406
+ "type": "table",
407
+ "query": {
408
+ "q": "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}])))",
409
+ "type": "promql"
410
+ }
411
+ }
412
+ ],
413
+ "type": "table"
414
+ },
415
+ {
416
+ "extend": {
417
+ "settings": {}
418
+ },
419
+ "group": {
420
+ "name": "Request statistics over time"
421
+ },
422
+ "pos": {
423
+ "x": 0,
424
+ "y": 2,
425
+ "h": 17.2,
426
+ "w": 8
427
+ },
428
+ "name": "95th percentile of Request Time",
429
+ "queries": [
430
+ {
431
+ "datasource": "dataflux",
432
+ "qtype": "promql",
433
+ "type": "sequence",
434
+ "query": {
435
+ "q": "quantile_over_time(0.95,{#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | unwrap request_time | __error__=\"\" [#{__interval}]) by (host)",
436
+ "type": "promql"
437
+ }
438
+ },
439
+ {
440
+ "datasource": "dataflux",
441
+ "qtype": "promql",
442
+ "type": "sequence",
443
+ "query": {
444
+ "q": "max by (host) (max_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | unwrap request_time | __error__=\"\" [#{__interval}]))",
445
+ "type": "promql"
446
+ }
447
+ }
448
+ ],
449
+ "type": "sequence"
450
+ },
451
+ {
452
+ "extend": {
453
+ "settings": {}
454
+ },
455
+ "group": {
456
+ "name": "Request statistics over time"
457
+ },
458
+ "pos": {
459
+ "x": 8,
460
+ "y": 2,
461
+ "h": 17.2,
462
+ "w": 8
463
+ },
464
+ "name": "HTTP status codes over time",
465
+ "queries": [
466
+ {
467
+ "datasource": "dataflux",
468
+ "qtype": "promql",
469
+ "type": "sequence",
470
+ "query": {
471
+ "q": "sum by (status) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | __error__=\"\" [#{__interval}]))",
472
+ "type": "promql"
473
+ }
474
+ }
475
+ ],
476
+ "type": "sequence"
477
+ },
478
+ {
479
+ "extend": {
480
+ "settings": {}
481
+ },
482
+ "group": {
483
+ "name": "Request statistics over time"
484
+ },
485
+ "pos": {
486
+ "x": 16,
487
+ "y": 2,
488
+ "h": 17.2,
489
+ "w": 8
490
+ },
491
+ "name": "Bytes Sent",
492
+ "queries": [
493
+ {
494
+ "datasource": "dataflux",
495
+ "qtype": "promql",
496
+ "type": "sequence",
497
+ "query": {
498
+ "q": "sum by (host) (sum_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | status=200 | unwrap body_bytes_sent | __error__=\"\" [#{__interval}]))",
499
+ "type": "promql"
500
+ }
501
+ }
502
+ ],
503
+ "type": "sequence"
504
+ },
505
+ {
506
+ "extend": {
507
+ "settings": {}
508
+ },
509
+ "group": {
510
+ "name": "Acquisition and Behaviour"
511
+ },
512
+ "pos": {
513
+ "x": 0,
514
+ "y": 70.4,
515
+ "h": 11.5,
516
+ "w": 9
517
+ },
518
+ "name": "Top 10 HTTP Referers",
519
+ "queries": [
520
+ {
521
+ "datasource": "dataflux",
522
+ "qtype": "promql",
523
+ "type": "table",
524
+ "query": {
525
+ "q": "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])))",
526
+ "type": "promql"
527
+ }
528
+ }
529
+ ],
530
+ "type": "table"
531
+ },
532
+ {
533
+ "extend": {
534
+ "settings": {}
535
+ },
536
+ "group": {
537
+ "name": "Acquisition and Behaviour"
538
+ },
539
+ "pos": {
540
+ "x": 9,
541
+ "y": 70.4,
542
+ "h": 11.5,
543
+ "w": 15
544
+ },
545
+ "name": "Top 10 User Agents",
546
+ "queries": [
547
+ {
548
+ "datasource": "dataflux",
549
+ "qtype": "promql",
550
+ "type": "table",
551
+ "query": {
552
+ "q": "topk(10, sum by (http_user_agent) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | __error__=\"\" [15m])))",
553
+ "type": "promql"
554
+ }
555
+ }
556
+ ],
557
+ "type": "table"
558
+ },
559
+ {
560
+ "extend": {
561
+ "settings": {}
562
+ },
563
+ "group": {
564
+ "name": "Acquisition and Behaviour"
565
+ },
566
+ "pos": {
567
+ "x": 0,
568
+ "y": 81.8,
569
+ "h": 15.3,
570
+ "w": 9
571
+ },
572
+ "name": "Top 10 visitor IPs",
573
+ "queries": [
574
+ {
575
+ "datasource": "dataflux",
576
+ "qtype": "promql",
577
+ "type": "table",
578
+ "query": {
579
+ "q": "topk(10, sum by (remote_addr, geoip_country_code) (count_over_time({#{label_name}=~\"#{label_value}\", job=~\"#{job}\", instance=~\"#{instance}\"} | json | __error__=\"\" [15m])))",
580
+ "type": "promql"
581
+ }
582
+ }
583
+ ],
584
+ "type": "table"
585
+ },
586
+ {
587
+ "extend": {
588
+ "settings": {}
589
+ },
590
+ "group": {
591
+ "name": "Acquisition and Behaviour"
592
+ },
593
+ "pos": {
594
+ "x": 9,
595
+ "y": 81.8,
596
+ "h": 15.3,
597
+ "w": 15
598
+ },
599
+ "name": "Top 10 Requested Pages",
600
+ "queries": [
601
+ {
602
+ "datasource": "dataflux",
603
+ "qtype": "promql",
604
+ "type": "table",
605
+ "query": {
606
+ "q": "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])))",
607
+ "type": "promql"
608
+ }
609
+ }
610
+ ],
611
+ "type": "table"
612
+ }
613
+ ],
614
+ "groups": [
615
+ {
616
+ "name": "WELCOME TO GRAFANA PLAY!"
617
+ },
618
+ {
619
+ "name": "KPI's"
620
+ },
621
+ {
622
+ "name": "Request statistics over time"
623
+ },
624
+ {
625
+ "name": "Acquisition and Behaviour"
626
+ }
627
+ ]
628
+ }
629
+ }