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