├── .github └── workflows │ └── pull_requests.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── LICENSE.md ├── README.md ├── data ├── elasticlogs └── promlogs ├── dist ├── index.js ├── index.js.map └── shape.d.ts ├── jest.config.js ├── package.json ├── screenshot.png ├── scripts └── fail_on_diff.sh ├── shape.test.js ├── shape.ts ├── tsconfig.json └── yarn.lock /.github/workflows/pull_requests.yml: -------------------------------------------------------------------------------- 1 | name: Run tests 2 | 3 | on: 4 | pull_request: 5 | branches: [master] 6 | release: 7 | types: [published] 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | 13 | if: github.event_name == 'pull_request' 14 | steps: 15 | - uses: actions/checkout@master 16 | with: 17 | ref: ${{ github.ref }} 18 | - run: curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - 19 | - run: sudo apt-get install -y nodejs cmake 20 | - run: sudo npm install --global yarn 21 | - run: yarn 22 | - run: yarn format 23 | - run: yarn tsc 24 | - run: yarn build 25 | - run: ./scripts/fail_on_diff.sh 26 | - run: yarn test 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | node_modules 3 | yarn-* 4 | coverage -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2021-2022 Multiprocess Labs LLC 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Shape 2 | 3 | This library provides an inference of object shape given a JavaScript 4 | data object. It probably won't work well with circular references. But 5 | any object that comes from JSON will not have circular references. 6 | 7 | It works well on very small or very large objects due to sampling 8 | (which can be turned off if requested). 9 | 10 | You can try it out online in the [DataStation app](https://app.datastation.multiprocess.io/). 11 | 12 | ![screenshot](./screenshot.png) 13 | 14 | ## Install 15 | 16 | ```bash 17 | $ yarn add @multiprocess/shape 18 | ``` 19 | 20 | ## Examples 21 | 22 | ```javascript 23 | import { shape, toString } from '@multiprocess/shape'; 24 | 25 | const schema = shape({ 26 | "results": [ 27 | { "name": "Kevin", "score": "1" }, 28 | { "name": "Moira", "score": 1 }, 29 | { "name": "Alexei", "score": 2 }, 30 | { "name": "Tia", "score": 2, "admin": true } 31 | ], 32 | "pageSize": 5, 33 | "total": 100, 34 | "nextPage": "https://myapi.com/p=2", 35 | }); 36 | console.log(JSON.stringify(schema, null, 2), toString(schema)); 37 | ``` 38 | 39 | Will print out: 40 | 41 | ``` 42 | { 43 | "kind": "object", 44 | "children": { 45 | "results": { 46 | "kind": "array", 47 | "children": { 48 | "kind": "object", 49 | "children": { 50 | "name": { 51 | "kind": "scalar", 52 | "name": "string" 53 | }, 54 | "score": { 55 | "kind": "varied", 56 | "children": [ 57 | { 58 | "kind": "scalar", 59 | "name": "string" 60 | }, 61 | { 62 | "kind": "scalar", 63 | "name": "number" 64 | } 65 | ] 66 | }, 67 | "admin": { 68 | "kind": "scalar", 69 | "name": "boolean" 70 | } 71 | } 72 | } 73 | }, 74 | "pageSize": { 75 | "kind": "scalar", 76 | "name": "number" 77 | }, 78 | "total": { 79 | "kind": "scalar", 80 | "name": "number" 81 | }, 82 | "nextPage": { 83 | "kind": "scalar", 84 | "name": "string" 85 | }, 86 | } 87 | } Object with 88 | 'results' of 89 | Array of 90 | Object with 91 | 'name' of 92 | string, 93 | 'score' of 94 | string or 95 | number, 96 | 'admin' of 97 | boolean, 98 | 'pageSize' of 99 | number, 100 | 'total' of 101 | number, 102 | 'nextPage' of 103 | string 104 | ``` 105 | 106 | ## Sampling 107 | 108 | This library defaults to checking up to only 5000 elements at any 109 | level which allows the inferrence to scale to very large datasets. It 110 | will pick up to N elements randomly with the object to sample. To 111 | disable this, pass `null`, `undefined`, or `false` as the second 112 | argument to `shape`. For example `shape(data, false)`. 113 | 114 | However, turning off sampling will eventually wreck your stack as you 115 | pass bigger objects to `shape`. 116 | 117 | ## Users 118 | 119 | * [DataStation](https://github.com/multiprocessio/datastation) 120 | 121 | ## License 122 | 123 | Apache-2.0, see [./LICENSE.md](./LICENSE.md). 124 | -------------------------------------------------------------------------------- /data/elasticlogs: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_index": "journalbeat-7.15.0-2021.09.30-000001", 4 | "_type": "_doc", 5 | "_id": "VYZhR3wB0DzSz6ItiETp", 6 | "_score": null, 7 | "_source": { 8 | "@timestamp": "2021-10-03T18:18:51.853Z", 9 | "syslog": { 10 | "facility": 3, 11 | "identifier": "journalbeat", 12 | "priority": 6 13 | }, 14 | "journald": { 15 | "host": { 16 | "boot_id": "c5c705e672824c288231d9fa65c35a81" 17 | }, 18 | "uid": 0, 19 | "pid": 131972, 20 | "custom": { 21 | "selinux_context": "system_u:system_r:unconfined_service_t:s0", 22 | "stream_id": "8834509f38c240aa81b9ee161d4d6748" 23 | }, 24 | "process": { 25 | "command_line": "/usr/share/journalbeat/bin/journalbeat --environment systemd -c /etc/journalbeat/journalbeat.yml --path.home /usr/share/journalbeat --path.config /etc/journalbeat --path.data /var/lib/journalbeat --path.logs /var/log/journalbeat", 26 | "name": "journalbeat", 27 | "capabilites": "1ffffffffff", 28 | "executable": "/usr/share/journalbeat/bin/journalbeat" 29 | }, 30 | "gid": 0 31 | }, 32 | "message": "2021-10-03T18:18:51.853Z\tINFO\t[monitoring]\tlog/log.go:184\tNon-zero metrics in the last 30s\t{\"monitoring\": {\"metrics\": {\"journalbeat\":{\"beat\":{\"cgroup\":{\"cpu\":{\"id\":\"journalbeat.service\"},\"memory\":{\"id\":\"journalbeat.service\",\"mem\":{\"usage\":{\"bytes\":160198656}}}},\"cpu\":{\"system\":{\"ticks\":115930,\"time\":{\"ms\":115932}},\"total\":{\"ticks\":637580,\"time\":{\"ms\":637589},\"value\":637580},\"user\":{\"ticks\":521650,\"time\":{\"ms\":521657}}},\"handles\":{\"limit\":{\"hard\":524288,\"soft\":1024},\"open\":64},\"info\":{\"ephemeral_id\":\"0b4b6e0f-f85b-468a-9dea-9415f929d133\",\"uptime\":{\"ms\":278460069},\"version\":\"7.15.0\"},\"memstats\":{\"gc_next\":105878672,\"memory_alloc\":88977664,\"memory_sys\":217685032,\"memory_total\":37272794736,\"rss\":156942336},\"runtime\":{\"goroutines\":16}},\"libbeat\":{\"output\":{\"events\":{\"acked\":1092973,\"active\":50,\"batches\":26442,\"total\":1093023},\"read\":{\"bytes\":25054916},\"type\":\"elasticsearch\",\"write\":{\"bytes\":2382197247}},\"pipeline\":{\"clients\":1,\"events\":{\"published\":1092973,\"retry\":178000,\"total\":1092973},\"queue\":{\"acked\":1092973,\"max_events\":4096}}},\"system\":{\"cpu\":{\"cores\":2},\"load\":{\"1\":2.57,\"15\":0.45,\"5\":1.17,\"norm\":{\"1\":1.285,\"15\":0.225,\"5\":0.585}}}}}}}", 33 | "host": { 34 | "architecture": "aarch64", 35 | "id": "4ab7f2b52a904ebeaea39727fa6c4b5f", 36 | "hostname": "ip-172-31-12-135.ec2.internal", 37 | "name": "ip-172-31-12-135.ec2.internal", 38 | "os": { 39 | "platform": "fedora", 40 | "version": "34 (Cloud Edition)", 41 | "family": "redhat", 42 | "name": "Fedora", 43 | "kernel": "5.13.16-200.fc34.aarch64", 44 | "type": "linux" 45 | }, 46 | "containerized": false, 47 | "ip": [ 48 | "172.31.12.135", 49 | "fe80::8fc:63ff:fe08:b7b5" 50 | ], 51 | "mac": [ 52 | "0a:fc:63:08:b7:b5" 53 | ] 54 | }, 55 | "user": { 56 | "group": { 57 | "id": "0" 58 | }, 59 | "id": "0" 60 | }, 61 | "systemd": { 62 | "invocation_id": "6a3980a0ff254829b4e562ccadcc1822", 63 | "transport": "stdout", 64 | "slice": "system.slice", 65 | "cgroup": "/system.slice/journalbeat.service", 66 | "unit": "journalbeat.service" 67 | }, 68 | "process": { 69 | "args": [ 70 | "/usr/share/journalbeat/bin/journalbeat", 71 | "--environment", 72 | "systemd", 73 | "-c", 74 | "/etc/journalbeat/journalbeat.yml", 75 | "--path.home", 76 | "/usr/share/journalbeat", 77 | "--path.config", 78 | "/etc/journalbeat", 79 | "--path.data", 80 | "/var/lib/journalbeat", 81 | "--path.logs", 82 | "/var/log/journalbeat" 83 | ], 84 | "args_count": 13, 85 | "pid": 131972, 86 | "command_line": "/usr/share/journalbeat/bin/journalbeat --environment systemd -c /etc/journalbeat/journalbeat.yml --path.home /usr/share/journalbeat --path.config /etc/journalbeat --path.data /var/lib/journalbeat --path.logs /var/log/journalbeat" 87 | }, 88 | "event": { 89 | "kind": "event", 90 | "created": "2021-10-03T18:19:05.854Z" 91 | }, 92 | "log": { 93 | "syslog": { 94 | "priority": 6, 95 | "facility": { 96 | "name": 3 97 | } 98 | } 99 | }, 100 | "agent": { 101 | "type": "journalbeat", 102 | "version": "7.15.0", 103 | "hostname": "ip-172-31-12-135.ec2.internal", 104 | "ephemeral_id": "0b4b6e0f-f85b-468a-9dea-9415f929d133", 105 | "id": "bd6fcae1-d720-4f26-8bb0-74f9446c381c", 106 | "name": "ip-172-31-12-135.ec2.internal" 107 | }, 108 | "ecs": { 109 | "version": "1.11.0" 110 | }, 111 | "cloud": { 112 | "instance": { 113 | "id": "i-059d3a5b3a800814a" 114 | }, 115 | "machine": { 116 | "type": "a1.large" 117 | }, 118 | "provider": "aws", 119 | "region": "us-east-1", 120 | "availability_zone": "us-east-1d", 121 | "service": { 122 | "name": "EC2" 123 | }, 124 | "account": { 125 | "id": "693079658475" 126 | }, 127 | "image": { 128 | "id": "ami-0da7d19221e832066" 129 | } 130 | } 131 | }, 132 | "sort": [ 133 | 1633285131853 134 | ] 135 | }, 136 | { 137 | "_index": "journalbeat-7.15.0-2021.09.30-000001", 138 | "_type": "_doc", 139 | "_id": "VIZhR3wB0DzSz6ItDUTY", 140 | "_score": null, 141 | "_source": { 142 | "@timestamp": "2021-10-03T18:18:32.771Z", 143 | "journald": { 144 | "uid": 0, 145 | "pid": 677, 146 | "host": { 147 | "boot_id": "c5c705e672824c288231d9fa65c35a81" 148 | }, 149 | "gid": 0, 150 | "custom": { 151 | "session_id": "98", 152 | "leader": "201545", 153 | "tid": "677", 154 | "selinux_context": "system_u:system_r:systemd_logind_t:s0", 155 | "user_id": "phil", 156 | "message_id": "3354939424b4456d9802ca8333ed424a" 157 | }, 158 | "process": { 159 | "executable": "/usr/lib/systemd/systemd-logind", 160 | "command_line": "/usr/lib/systemd/systemd-logind", 161 | "name": "systemd-logind", 162 | "capabilites": "24420020f" 163 | }, 164 | "code": { 165 | "line": 840, 166 | "file": "src/login/logind-session.c", 167 | "func": "session_finalize" 168 | } 169 | }, 170 | "syslog": { 171 | "identifier": "systemd-logind", 172 | "priority": 6, 173 | "facility": 4 174 | }, 175 | "message": "Removed session 98.", 176 | "systemd": { 177 | "transport": "journal", 178 | "invocation_id": "dfa3bc009e204612af90680f5719bb20", 179 | "slice": "system.slice", 180 | "cgroup": "/system.slice/systemd-logind.service", 181 | "unit": "systemd-logind.service" 182 | }, 183 | "agent": { 184 | "ephemeral_id": "0b4b6e0f-f85b-468a-9dea-9415f929d133", 185 | "id": "bd6fcae1-d720-4f26-8bb0-74f9446c381c", 186 | "name": "ip-172-31-12-135.ec2.internal", 187 | "type": "journalbeat", 188 | "version": "7.15.0", 189 | "hostname": "ip-172-31-12-135.ec2.internal" 190 | }, 191 | "cloud": { 192 | "account": { 193 | "id": "693079658475" 194 | }, 195 | "image": { 196 | "id": "ami-0da7d19221e832066" 197 | }, 198 | "instance": { 199 | "id": "i-059d3a5b3a800814a" 200 | }, 201 | "machine": { 202 | "type": "a1.large" 203 | }, 204 | "provider": "aws", 205 | "region": "us-east-1", 206 | "availability_zone": "us-east-1d", 207 | "service": { 208 | "name": "EC2" 209 | } 210 | }, 211 | "event": { 212 | "kind": "event", 213 | "created": "2021-10-03T18:18:34.351Z" 214 | }, 215 | "log": { 216 | "syslog": { 217 | "priority": 6, 218 | "facility": { 219 | "name": 4 220 | } 221 | } 222 | }, 223 | "host": { 224 | "containerized": false, 225 | "hostname": "ip-172-31-12-135.ec2.internal", 226 | "id": "4ab7f2b52a904ebeaea39727fa6c4b5f", 227 | "name": "ip-172-31-12-135.ec2.internal", 228 | "ip": [ 229 | "172.31.12.135", 230 | "fe80::8fc:63ff:fe08:b7b5" 231 | ], 232 | "mac": [ 233 | "0a:fc:63:08:b7:b5" 234 | ], 235 | "architecture": "aarch64", 236 | "os": { 237 | "platform": "fedora", 238 | "version": "34 (Cloud Edition)", 239 | "family": "redhat", 240 | "name": "Fedora", 241 | "kernel": "5.13.16-200.fc34.aarch64", 242 | "type": "linux" 243 | } 244 | }, 245 | "process": { 246 | "pid": 677, 247 | "command_line": "/usr/lib/systemd/systemd-logind", 248 | "args": [ 249 | "/usr/lib/systemd/systemd-logind" 250 | ], 251 | "args_count": 1 252 | }, 253 | "ecs": { 254 | "version": "1.11.0" 255 | }, 256 | "user": { 257 | "id": "0", 258 | "group": { 259 | "id": "0" 260 | } 261 | } 262 | }, 263 | "sort": [ 264 | 1633285112771 265 | ] 266 | } 267 | ] 268 | -------------------------------------------------------------------------------- /data/promlogs: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "metric": { 4 | "__name__": "up", 5 | "env": "demo", 6 | "instance": "demo.do.prometheus.io:9093", 7 | "job": "alertmanager" 8 | }, 9 | "time": 1633633632.387, 10 | "value": "1" 11 | }, 12 | { 13 | "metric": { 14 | "__name__": "up", 15 | "env": "demo", 16 | "instance": "demo.do.prometheus.io:9093", 17 | "job": "alertmanager" 18 | }, 19 | "time": 1633633692.387, 20 | "value": "1" 21 | }, 22 | { 23 | "metric": { 24 | "__name__": "up", 25 | "env": "demo", 26 | "instance": "demo.do.prometheus.io:9093", 27 | "job": "alertmanager" 28 | }, 29 | "time": 1633633752.387, 30 | "value": "1" 31 | }, 32 | { 33 | "metric": { 34 | "__name__": "up", 35 | "env": "demo", 36 | "instance": "demo.do.prometheus.io:9093", 37 | "job": "alertmanager" 38 | }, 39 | "time": 1633633812.387, 40 | "value": "1" 41 | }, 42 | { 43 | "metric": { 44 | "__name__": "up", 45 | "env": "demo", 46 | "instance": "demo.do.prometheus.io:9093", 47 | "job": "alertmanager" 48 | }, 49 | "time": 1633633872.387, 50 | "value": "1" 51 | }, 52 | { 53 | "metric": { 54 | "__name__": "up", 55 | "env": "demo", 56 | "instance": "demo.do.prometheus.io:9093", 57 | "job": "alertmanager" 58 | }, 59 | "time": 1633633932.387, 60 | "value": "1" 61 | }, 62 | { 63 | "metric": { 64 | "__name__": "up", 65 | "env": "demo", 66 | "instance": "demo.do.prometheus.io:9093", 67 | "job": "alertmanager" 68 | }, 69 | "time": 1633633992.387, 70 | "value": "1" 71 | }, 72 | { 73 | "metric": { 74 | "__name__": "up", 75 | "env": "demo", 76 | "instance": "demo.do.prometheus.io:9093", 77 | "job": "alertmanager" 78 | }, 79 | "time": 1633634052.387, 80 | "value": "1" 81 | }, 82 | { 83 | "metric": { 84 | "__name__": "up", 85 | "env": "demo", 86 | "instance": "demo.do.prometheus.io:9093", 87 | "job": "alertmanager" 88 | }, 89 | "time": 1633634112.387, 90 | "value": "1" 91 | }, 92 | { 93 | "metric": { 94 | "__name__": "up", 95 | "env": "demo", 96 | "instance": "demo.do.prometheus.io:9093", 97 | "job": "alertmanager" 98 | }, 99 | "time": 1633634172.387, 100 | "value": "1" 101 | }, 102 | { 103 | "metric": { 104 | "__name__": "up", 105 | "env": "demo", 106 | "instance": "demo.do.prometheus.io:9093", 107 | "job": "alertmanager" 108 | }, 109 | "time": 1633634232.387, 110 | "value": "1" 111 | }, 112 | { 113 | "metric": { 114 | "__name__": "up", 115 | "env": "demo", 116 | "instance": "demo.do.prometheus.io:9093", 117 | "job": "alertmanager" 118 | }, 119 | "time": 1633634292.387, 120 | "value": "1" 121 | }, 122 | { 123 | "metric": { 124 | "__name__": "up", 125 | "env": "demo", 126 | "instance": "demo.do.prometheus.io:9093", 127 | "job": "alertmanager" 128 | }, 129 | "time": 1633634352.387, 130 | "value": "1" 131 | }, 132 | { 133 | "metric": { 134 | "__name__": "up", 135 | "env": "demo", 136 | "instance": "demo.do.prometheus.io:9093", 137 | "job": "alertmanager" 138 | }, 139 | "time": 1633634412.387, 140 | "value": "1" 141 | }, 142 | { 143 | "metric": { 144 | "__name__": "up", 145 | "env": "demo", 146 | "instance": "demo.do.prometheus.io:9093", 147 | "job": "alertmanager" 148 | }, 149 | "time": 1633634472.387, 150 | "value": "1" 151 | }, 152 | { 153 | "metric": { 154 | "__name__": "up", 155 | "env": "demo", 156 | "instance": "demo.do.prometheus.io:9093", 157 | "job": "alertmanager" 158 | }, 159 | "time": 1633634532.387, 160 | "value": "1" 161 | }, 162 | { 163 | "metric": { 164 | "__name__": "up", 165 | "env": "demo", 166 | "instance": "demo.do.prometheus.io:9093", 167 | "job": "alertmanager" 168 | }, 169 | "time": 1633634592.387, 170 | "value": "1" 171 | }, 172 | { 173 | "metric": { 174 | "__name__": "up", 175 | "env": "demo", 176 | "instance": "demo.do.prometheus.io:9093", 177 | "job": "alertmanager" 178 | }, 179 | "time": 1633634652.387, 180 | "value": "1" 181 | }, 182 | { 183 | "metric": { 184 | "__name__": "up", 185 | "env": "demo", 186 | "instance": "demo.do.prometheus.io:9093", 187 | "job": "alertmanager" 188 | }, 189 | "time": 1633634712.387, 190 | "value": "1" 191 | }, 192 | { 193 | "metric": { 194 | "__name__": "up", 195 | "env": "demo", 196 | "instance": "demo.do.prometheus.io:9093", 197 | "job": "alertmanager" 198 | }, 199 | "time": 1633634772.387, 200 | "value": "1" 201 | }, 202 | { 203 | "metric": { 204 | "__name__": "up", 205 | "env": "demo", 206 | "instance": "demo.do.prometheus.io:9093", 207 | "job": "alertmanager" 208 | }, 209 | "time": 1633634832.387, 210 | "value": "1" 211 | }, 212 | { 213 | "metric": { 214 | "__name__": "up", 215 | "env": "demo", 216 | "instance": "demo.do.prometheus.io:9093", 217 | "job": "alertmanager" 218 | }, 219 | "time": 1633634892.387, 220 | "value": "1" 221 | }, 222 | { 223 | "metric": { 224 | "__name__": "up", 225 | "env": "demo", 226 | "instance": "demo.do.prometheus.io:9093", 227 | "job": "alertmanager" 228 | }, 229 | "time": 1633634952.387, 230 | "value": "1" 231 | }, 232 | { 233 | "metric": { 234 | "__name__": "up", 235 | "env": "demo", 236 | "instance": "demo.do.prometheus.io:9093", 237 | "job": "alertmanager" 238 | }, 239 | "time": 1633635012.387, 240 | "value": "1" 241 | }, 242 | { 243 | "metric": { 244 | "__name__": "up", 245 | "env": "demo", 246 | "instance": "demo.do.prometheus.io:9093", 247 | "job": "alertmanager" 248 | }, 249 | "time": 1633635072.387, 250 | "value": "1" 251 | }, 252 | { 253 | "metric": { 254 | "__name__": "up", 255 | "env": "demo", 256 | "instance": "demo.do.prometheus.io:9093", 257 | "job": "alertmanager" 258 | }, 259 | "time": 1633635132.387, 260 | "value": "1" 261 | }, 262 | { 263 | "metric": { 264 | "__name__": "up", 265 | "env": "demo", 266 | "instance": "demo.do.prometheus.io:9093", 267 | "job": "alertmanager" 268 | }, 269 | "time": 1633635192.387, 270 | "value": "1" 271 | }, 272 | { 273 | "metric": { 274 | "__name__": "up", 275 | "env": "demo", 276 | "instance": "demo.do.prometheus.io:9093", 277 | "job": "alertmanager" 278 | }, 279 | "time": 1633635252.387, 280 | "value": "1" 281 | }, 282 | { 283 | "metric": { 284 | "__name__": "up", 285 | "env": "demo", 286 | "instance": "demo.do.prometheus.io:9093", 287 | "job": "alertmanager" 288 | }, 289 | "time": 1633635312.387, 290 | "value": "1" 291 | }, 292 | { 293 | "metric": { 294 | "__name__": "up", 295 | "env": "demo", 296 | "instance": "demo.do.prometheus.io:9093", 297 | "job": "alertmanager" 298 | }, 299 | "time": 1633635372.387, 300 | "value": "1" 301 | }, 302 | { 303 | "metric": { 304 | "__name__": "up", 305 | "env": "demo", 306 | "instance": "demo.do.prometheus.io:9093", 307 | "job": "alertmanager" 308 | }, 309 | "time": 1633635432.387, 310 | "value": "1" 311 | }, 312 | { 313 | "metric": { 314 | "__name__": "up", 315 | "env": "demo", 316 | "instance": "demo.do.prometheus.io:9093", 317 | "job": "alertmanager" 318 | }, 319 | "time": 1633635492.387, 320 | "value": "1" 321 | }, 322 | { 323 | "metric": { 324 | "__name__": "up", 325 | "env": "demo", 326 | "instance": "demo.do.prometheus.io:9093", 327 | "job": "alertmanager" 328 | }, 329 | "time": 1633635552.387, 330 | "value": "1" 331 | }, 332 | { 333 | "metric": { 334 | "__name__": "up", 335 | "env": "demo", 336 | "instance": "demo.do.prometheus.io:9093", 337 | "job": "alertmanager" 338 | }, 339 | "time": 1633635612.387, 340 | "value": "1" 341 | }, 342 | { 343 | "metric": { 344 | "__name__": "up", 345 | "env": "demo", 346 | "instance": "demo.do.prometheus.io:9093", 347 | "job": "alertmanager" 348 | }, 349 | "time": 1633635672.387, 350 | "value": "1" 351 | }, 352 | { 353 | "metric": { 354 | "__name__": "up", 355 | "env": "demo", 356 | "instance": "demo.do.prometheus.io:9093", 357 | "job": "alertmanager" 358 | }, 359 | "time": 1633635732.387, 360 | "value": "1" 361 | }, 362 | { 363 | "metric": { 364 | "__name__": "up", 365 | "env": "demo", 366 | "instance": "demo.do.prometheus.io:9093", 367 | "job": "alertmanager" 368 | }, 369 | "time": 1633635792.387, 370 | "value": "1" 371 | }, 372 | { 373 | "metric": { 374 | "__name__": "up", 375 | "env": "demo", 376 | "instance": "demo.do.prometheus.io:9093", 377 | "job": "alertmanager" 378 | }, 379 | "time": 1633635852.387, 380 | "value": "1" 381 | }, 382 | { 383 | "metric": { 384 | "__name__": "up", 385 | "env": "demo", 386 | "instance": "demo.do.prometheus.io:9093", 387 | "job": "alertmanager" 388 | }, 389 | "time": 1633635912.387, 390 | "value": "1" 391 | }, 392 | { 393 | "metric": { 394 | "__name__": "up", 395 | "env": "demo", 396 | "instance": "demo.do.prometheus.io:9093", 397 | "job": "alertmanager" 398 | }, 399 | "time": 1633635972.387, 400 | "value": "1" 401 | }, 402 | { 403 | "metric": { 404 | "__name__": "up", 405 | "env": "demo", 406 | "instance": "demo.do.prometheus.io:9093", 407 | "job": "alertmanager" 408 | }, 409 | "time": 1633636032.387, 410 | "value": "1" 411 | }, 412 | { 413 | "metric": { 414 | "__name__": "up", 415 | "env": "demo", 416 | "instance": "demo.do.prometheus.io:9093", 417 | "job": "alertmanager" 418 | }, 419 | "time": 1633636092.387, 420 | "value": "1" 421 | }, 422 | { 423 | "metric": { 424 | "__name__": "up", 425 | "env": "demo", 426 | "instance": "demo.do.prometheus.io:9093", 427 | "job": "alertmanager" 428 | }, 429 | "time": 1633636152.387, 430 | "value": "1" 431 | }, 432 | { 433 | "metric": { 434 | "__name__": "up", 435 | "env": "demo", 436 | "instance": "demo.do.prometheus.io:9093", 437 | "job": "alertmanager" 438 | }, 439 | "time": 1633636212.387, 440 | "value": "1" 441 | }, 442 | { 443 | "metric": { 444 | "__name__": "up", 445 | "env": "demo", 446 | "instance": "demo.do.prometheus.io:9093", 447 | "job": "alertmanager" 448 | }, 449 | "time": 1633636272.387, 450 | "value": "1" 451 | }, 452 | { 453 | "metric": { 454 | "__name__": "up", 455 | "env": "demo", 456 | "instance": "demo.do.prometheus.io:9093", 457 | "job": "alertmanager" 458 | }, 459 | "time": 1633636332.387, 460 | "value": "1" 461 | }, 462 | { 463 | "metric": { 464 | "__name__": "up", 465 | "env": "demo", 466 | "instance": "demo.do.prometheus.io:9093", 467 | "job": "alertmanager" 468 | }, 469 | "time": 1633636392.387, 470 | "value": "1" 471 | }, 472 | { 473 | "metric": { 474 | "__name__": "up", 475 | "env": "demo", 476 | "instance": "demo.do.prometheus.io:9093", 477 | "job": "alertmanager" 478 | }, 479 | "time": 1633636452.387, 480 | "value": "1" 481 | }, 482 | { 483 | "metric": { 484 | "__name__": "up", 485 | "env": "demo", 486 | "instance": "demo.do.prometheus.io:9093", 487 | "job": "alertmanager" 488 | }, 489 | "time": 1633636512.387, 490 | "value": "1" 491 | }, 492 | { 493 | "metric": { 494 | "__name__": "up", 495 | "env": "demo", 496 | "instance": "demo.do.prometheus.io:9093", 497 | "job": "alertmanager" 498 | }, 499 | "time": 1633636572.387, 500 | "value": "1" 501 | }, 502 | { 503 | "metric": { 504 | "__name__": "up", 505 | "env": "demo", 506 | "instance": "demo.do.prometheus.io:9093", 507 | "job": "alertmanager" 508 | }, 509 | "time": 1633636632.387, 510 | "value": "1" 511 | }, 512 | { 513 | "metric": { 514 | "__name__": "up", 515 | "env": "demo", 516 | "instance": "demo.do.prometheus.io:9093", 517 | "job": "alertmanager" 518 | }, 519 | "time": 1633636692.387, 520 | "value": "1" 521 | }, 522 | { 523 | "metric": { 524 | "__name__": "up", 525 | "env": "demo", 526 | "instance": "demo.do.prometheus.io:9093", 527 | "job": "alertmanager" 528 | }, 529 | "time": 1633636752.387, 530 | "value": "1" 531 | }, 532 | { 533 | "metric": { 534 | "__name__": "up", 535 | "env": "demo", 536 | "instance": "demo.do.prometheus.io:9093", 537 | "job": "alertmanager" 538 | }, 539 | "time": 1633636812.387, 540 | "value": "1" 541 | }, 542 | { 543 | "metric": { 544 | "__name__": "up", 545 | "env": "demo", 546 | "instance": "demo.do.prometheus.io:9093", 547 | "job": "alertmanager" 548 | }, 549 | "time": 1633636872.387, 550 | "value": "1" 551 | }, 552 | { 553 | "metric": { 554 | "__name__": "up", 555 | "env": "demo", 556 | "instance": "demo.do.prometheus.io:9093", 557 | "job": "alertmanager" 558 | }, 559 | "time": 1633636932.387, 560 | "value": "1" 561 | }, 562 | { 563 | "metric": { 564 | "__name__": "up", 565 | "env": "demo", 566 | "instance": "demo.do.prometheus.io:9093", 567 | "job": "alertmanager" 568 | }, 569 | "time": 1633636992.387, 570 | "value": "1" 571 | }, 572 | { 573 | "metric": { 574 | "__name__": "up", 575 | "env": "demo", 576 | "instance": "demo.do.prometheus.io:9093", 577 | "job": "alertmanager" 578 | }, 579 | "time": 1633637052.387, 580 | "value": "1" 581 | }, 582 | { 583 | "metric": { 584 | "__name__": "up", 585 | "env": "demo", 586 | "instance": "demo.do.prometheus.io:9093", 587 | "job": "alertmanager" 588 | }, 589 | "time": 1633637112.387, 590 | "value": "1" 591 | }, 592 | { 593 | "metric": { 594 | "__name__": "up", 595 | "env": "demo", 596 | "instance": "demo.do.prometheus.io:9093", 597 | "job": "alertmanager" 598 | }, 599 | "time": 1633637172.387, 600 | "value": "1" 601 | }, 602 | { 603 | "metric": { 604 | "__name__": "up", 605 | "env": "demo", 606 | "instance": "demo.do.prometheus.io:9093", 607 | "job": "alertmanager" 608 | }, 609 | "time": 1633637232.387, 610 | "value": "1" 611 | }, 612 | { 613 | "metric": { 614 | "__name__": "up", 615 | "env": "demo", 616 | "instance": "demo.do.prometheus.io:9100", 617 | "job": "node" 618 | }, 619 | "time": 1633633632.387, 620 | "value": "1" 621 | }, 622 | { 623 | "metric": { 624 | "__name__": "up", 625 | "env": "demo", 626 | "instance": "demo.do.prometheus.io:9100", 627 | "job": "node" 628 | }, 629 | "time": 1633633692.387, 630 | "value": "1" 631 | }, 632 | { 633 | "metric": { 634 | "__name__": "up", 635 | "env": "demo", 636 | "instance": "demo.do.prometheus.io:9100", 637 | "job": "node" 638 | }, 639 | "time": 1633633752.387, 640 | "value": "1" 641 | }, 642 | { 643 | "metric": { 644 | "__name__": "up", 645 | "env": "demo", 646 | "instance": "demo.do.prometheus.io:9100", 647 | "job": "node" 648 | }, 649 | "time": 1633633812.387, 650 | "value": "1" 651 | }, 652 | { 653 | "metric": { 654 | "__name__": "up", 655 | "env": "demo", 656 | "instance": "demo.do.prometheus.io:9100", 657 | "job": "node" 658 | }, 659 | "time": 1633633872.387, 660 | "value": "1" 661 | }, 662 | { 663 | "metric": { 664 | "__name__": "up", 665 | "env": "demo", 666 | "instance": "demo.do.prometheus.io:9100", 667 | "job": "node" 668 | }, 669 | "time": 1633633932.387, 670 | "value": "1" 671 | }, 672 | { 673 | "metric": { 674 | "__name__": "up", 675 | "env": "demo", 676 | "instance": "demo.do.prometheus.io:9100", 677 | "job": "node" 678 | }, 679 | "time": 1633633992.387, 680 | "value": "1" 681 | }, 682 | { 683 | "metric": { 684 | "__name__": "up", 685 | "env": "demo", 686 | "instance": "demo.do.prometheus.io:9100", 687 | "job": "node" 688 | }, 689 | "time": 1633634052.387, 690 | "value": "1" 691 | }, 692 | { 693 | "metric": { 694 | "__name__": "up", 695 | "env": "demo", 696 | "instance": "demo.do.prometheus.io:9100", 697 | "job": "node" 698 | }, 699 | "time": 1633634112.387, 700 | "value": "1" 701 | }, 702 | { 703 | "metric": { 704 | "__name__": "up", 705 | "env": "demo", 706 | "instance": "demo.do.prometheus.io:9100", 707 | "job": "node" 708 | }, 709 | "time": 1633634172.387, 710 | "value": "1" 711 | }, 712 | { 713 | "metric": { 714 | "__name__": "up", 715 | "env": "demo", 716 | "instance": "demo.do.prometheus.io:9100", 717 | "job": "node" 718 | }, 719 | "time": 1633634232.387, 720 | "value": "1" 721 | }, 722 | { 723 | "metric": { 724 | "__name__": "up", 725 | "env": "demo", 726 | "instance": "demo.do.prometheus.io:9100", 727 | "job": "node" 728 | }, 729 | "time": 1633634292.387, 730 | "value": "1" 731 | }, 732 | { 733 | "metric": { 734 | "__name__": "up", 735 | "env": "demo", 736 | "instance": "demo.do.prometheus.io:9100", 737 | "job": "node" 738 | }, 739 | "time": 1633634352.387, 740 | "value": "1" 741 | }, 742 | { 743 | "metric": { 744 | "__name__": "up", 745 | "env": "demo", 746 | "instance": "demo.do.prometheus.io:9100", 747 | "job": "node" 748 | }, 749 | "time": 1633634412.387, 750 | "value": "1" 751 | }, 752 | { 753 | "metric": { 754 | "__name__": "up", 755 | "env": "demo", 756 | "instance": "demo.do.prometheus.io:9100", 757 | "job": "node" 758 | }, 759 | "time": 1633634472.387, 760 | "value": "1" 761 | }, 762 | { 763 | "metric": { 764 | "__name__": "up", 765 | "env": "demo", 766 | "instance": "demo.do.prometheus.io:9100", 767 | "job": "node" 768 | }, 769 | "time": 1633634532.387, 770 | "value": "1" 771 | }, 772 | { 773 | "metric": { 774 | "__name__": "up", 775 | "env": "demo", 776 | "instance": "demo.do.prometheus.io:9100", 777 | "job": "node" 778 | }, 779 | "time": 1633634592.387, 780 | "value": "1" 781 | }, 782 | { 783 | "metric": { 784 | "__name__": "up", 785 | "env": "demo", 786 | "instance": "demo.do.prometheus.io:9100", 787 | "job": "node" 788 | }, 789 | "time": 1633634652.387, 790 | "value": "1" 791 | }, 792 | { 793 | "metric": { 794 | "__name__": "up", 795 | "env": "demo", 796 | "instance": "demo.do.prometheus.io:9100", 797 | "job": "node" 798 | }, 799 | "time": 1633634712.387, 800 | "value": "1" 801 | }, 802 | { 803 | "metric": { 804 | "__name__": "up", 805 | "env": "demo", 806 | "instance": "demo.do.prometheus.io:9100", 807 | "job": "node" 808 | }, 809 | "time": 1633634772.387, 810 | "value": "1" 811 | }, 812 | { 813 | "metric": { 814 | "__name__": "up", 815 | "env": "demo", 816 | "instance": "demo.do.prometheus.io:9100", 817 | "job": "node" 818 | }, 819 | "time": 1633634832.387, 820 | "value": "1" 821 | }, 822 | { 823 | "metric": { 824 | "__name__": "up", 825 | "env": "demo", 826 | "instance": "demo.do.prometheus.io:9100", 827 | "job": "node" 828 | }, 829 | "time": 1633634892.387, 830 | "value": "1" 831 | }, 832 | { 833 | "metric": { 834 | "__name__": "up", 835 | "env": "demo", 836 | "instance": "demo.do.prometheus.io:9100", 837 | "job": "node" 838 | }, 839 | "time": 1633634952.387, 840 | "value": "1" 841 | }, 842 | { 843 | "metric": { 844 | "__name__": "up", 845 | "env": "demo", 846 | "instance": "demo.do.prometheus.io:9100", 847 | "job": "node" 848 | }, 849 | "time": 1633635012.387, 850 | "value": "1" 851 | }, 852 | { 853 | "metric": { 854 | "__name__": "up", 855 | "env": "demo", 856 | "instance": "demo.do.prometheus.io:9100", 857 | "job": "node" 858 | }, 859 | "time": 1633635072.387, 860 | "value": "1" 861 | }, 862 | { 863 | "metric": { 864 | "__name__": "up", 865 | "env": "demo", 866 | "instance": "demo.do.prometheus.io:9100", 867 | "job": "node" 868 | }, 869 | "time": 1633635132.387, 870 | "value": "1" 871 | }, 872 | { 873 | "metric": { 874 | "__name__": "up", 875 | "env": "demo", 876 | "instance": "demo.do.prometheus.io:9100", 877 | "job": "node" 878 | }, 879 | "time": 1633635192.387, 880 | "value": "1" 881 | }, 882 | { 883 | "metric": { 884 | "__name__": "up", 885 | "env": "demo", 886 | "instance": "demo.do.prometheus.io:9100", 887 | "job": "node" 888 | }, 889 | "time": 1633635252.387, 890 | "value": "1" 891 | }, 892 | { 893 | "metric": { 894 | "__name__": "up", 895 | "env": "demo", 896 | "instance": "demo.do.prometheus.io:9100", 897 | "job": "node" 898 | }, 899 | "time": 1633635312.387, 900 | "value": "1" 901 | }, 902 | { 903 | "metric": { 904 | "__name__": "up", 905 | "env": "demo", 906 | "instance": "demo.do.prometheus.io:9100", 907 | "job": "node" 908 | }, 909 | "time": 1633635372.387, 910 | "value": "1" 911 | }, 912 | { 913 | "metric": { 914 | "__name__": "up", 915 | "env": "demo", 916 | "instance": "demo.do.prometheus.io:9100", 917 | "job": "node" 918 | }, 919 | "time": 1633635432.387, 920 | "value": "1" 921 | }, 922 | { 923 | "metric": { 924 | "__name__": "up", 925 | "env": "demo", 926 | "instance": "demo.do.prometheus.io:9100", 927 | "job": "node" 928 | }, 929 | "time": 1633635492.387, 930 | "value": "1" 931 | }, 932 | { 933 | "metric": { 934 | "__name__": "up", 935 | "env": "demo", 936 | "instance": "demo.do.prometheus.io:9100", 937 | "job": "node" 938 | }, 939 | "time": 1633635552.387, 940 | "value": "1" 941 | }, 942 | { 943 | "metric": { 944 | "__name__": "up", 945 | "env": "demo", 946 | "instance": "demo.do.prometheus.io:9100", 947 | "job": "node" 948 | }, 949 | "time": 1633635612.387, 950 | "value": "1" 951 | }, 952 | { 953 | "metric": { 954 | "__name__": "up", 955 | "env": "demo", 956 | "instance": "demo.do.prometheus.io:9100", 957 | "job": "node" 958 | }, 959 | "time": 1633635672.387, 960 | "value": "1" 961 | }, 962 | { 963 | "metric": { 964 | "__name__": "up", 965 | "env": "demo", 966 | "instance": "demo.do.prometheus.io:9100", 967 | "job": "node" 968 | }, 969 | "time": 1633635732.387, 970 | "value": "1" 971 | }, 972 | { 973 | "metric": { 974 | "__name__": "up", 975 | "env": "demo", 976 | "instance": "demo.do.prometheus.io:9100", 977 | "job": "node" 978 | }, 979 | "time": 1633635792.387, 980 | "value": "1" 981 | }, 982 | { 983 | "metric": { 984 | "__name__": "up", 985 | "env": "demo", 986 | "instance": "demo.do.prometheus.io:9100", 987 | "job": "node" 988 | }, 989 | "time": 1633635852.387, 990 | "value": "1" 991 | }, 992 | { 993 | "metric": { 994 | "__name__": "up", 995 | "env": "demo", 996 | "instance": "demo.do.prometheus.io:9100", 997 | "job": "node" 998 | }, 999 | "time": 1633635912.387, 1000 | "value": "1" 1001 | }, 1002 | { 1003 | "metric": { 1004 | "__name__": "up", 1005 | "env": "demo", 1006 | "instance": "demo.do.prometheus.io:9100", 1007 | "job": "node" 1008 | }, 1009 | "time": 1633635972.387, 1010 | "value": "1" 1011 | }, 1012 | { 1013 | "metric": { 1014 | "__name__": "up", 1015 | "env": "demo", 1016 | "instance": "demo.do.prometheus.io:9100", 1017 | "job": "node" 1018 | }, 1019 | "time": 1633636032.387, 1020 | "value": "1" 1021 | }, 1022 | { 1023 | "metric": { 1024 | "__name__": "up", 1025 | "env": "demo", 1026 | "instance": "demo.do.prometheus.io:9100", 1027 | "job": "node" 1028 | }, 1029 | "time": 1633636092.387, 1030 | "value": "1" 1031 | }, 1032 | { 1033 | "metric": { 1034 | "__name__": "up", 1035 | "env": "demo", 1036 | "instance": "demo.do.prometheus.io:9100", 1037 | "job": "node" 1038 | }, 1039 | "time": 1633636152.387, 1040 | "value": "1" 1041 | }, 1042 | { 1043 | "metric": { 1044 | "__name__": "up", 1045 | "env": "demo", 1046 | "instance": "demo.do.prometheus.io:9100", 1047 | "job": "node" 1048 | }, 1049 | "time": 1633636212.387, 1050 | "value": "1" 1051 | }, 1052 | { 1053 | "metric": { 1054 | "__name__": "up", 1055 | "env": "demo", 1056 | "instance": "demo.do.prometheus.io:9100", 1057 | "job": "node" 1058 | }, 1059 | "time": 1633636272.387, 1060 | "value": "1" 1061 | }, 1062 | { 1063 | "metric": { 1064 | "__name__": "up", 1065 | "env": "demo", 1066 | "instance": "demo.do.prometheus.io:9100", 1067 | "job": "node" 1068 | }, 1069 | "time": 1633636332.387, 1070 | "value": "1" 1071 | }, 1072 | { 1073 | "metric": { 1074 | "__name__": "up", 1075 | "env": "demo", 1076 | "instance": "demo.do.prometheus.io:9100", 1077 | "job": "node" 1078 | }, 1079 | "time": 1633636392.387, 1080 | "value": "1" 1081 | }, 1082 | { 1083 | "metric": { 1084 | "__name__": "up", 1085 | "env": "demo", 1086 | "instance": "demo.do.prometheus.io:9100", 1087 | "job": "node" 1088 | }, 1089 | "time": 1633636452.387, 1090 | "value": "1" 1091 | }, 1092 | { 1093 | "metric": { 1094 | "__name__": "up", 1095 | "env": "demo", 1096 | "instance": "demo.do.prometheus.io:9100", 1097 | "job": "node" 1098 | }, 1099 | "time": 1633636512.387, 1100 | "value": "1" 1101 | }, 1102 | { 1103 | "metric": { 1104 | "__name__": "up", 1105 | "env": "demo", 1106 | "instance": "demo.do.prometheus.io:9100", 1107 | "job": "node" 1108 | }, 1109 | "time": 1633636572.387, 1110 | "value": "1" 1111 | }, 1112 | { 1113 | "metric": { 1114 | "__name__": "up", 1115 | "env": "demo", 1116 | "instance": "demo.do.prometheus.io:9100", 1117 | "job": "node" 1118 | }, 1119 | "time": 1633636632.387, 1120 | "value": "1" 1121 | }, 1122 | { 1123 | "metric": { 1124 | "__name__": "up", 1125 | "env": "demo", 1126 | "instance": "demo.do.prometheus.io:9100", 1127 | "job": "node" 1128 | }, 1129 | "time": 1633636692.387, 1130 | "value": "1" 1131 | }, 1132 | { 1133 | "metric": { 1134 | "__name__": "up", 1135 | "env": "demo", 1136 | "instance": "demo.do.prometheus.io:9100", 1137 | "job": "node" 1138 | }, 1139 | "time": 1633636752.387, 1140 | "value": "1" 1141 | }, 1142 | { 1143 | "metric": { 1144 | "__name__": "up", 1145 | "env": "demo", 1146 | "instance": "demo.do.prometheus.io:9100", 1147 | "job": "node" 1148 | }, 1149 | "time": 1633636812.387, 1150 | "value": "1" 1151 | }, 1152 | { 1153 | "metric": { 1154 | "__name__": "up", 1155 | "env": "demo", 1156 | "instance": "demo.do.prometheus.io:9100", 1157 | "job": "node" 1158 | }, 1159 | "time": 1633636872.387, 1160 | "value": "1" 1161 | }, 1162 | { 1163 | "metric": { 1164 | "__name__": "up", 1165 | "env": "demo", 1166 | "instance": "demo.do.prometheus.io:9100", 1167 | "job": "node" 1168 | }, 1169 | "time": 1633636932.387, 1170 | "value": "1" 1171 | }, 1172 | { 1173 | "metric": { 1174 | "__name__": "up", 1175 | "env": "demo", 1176 | "instance": "demo.do.prometheus.io:9100", 1177 | "job": "node" 1178 | }, 1179 | "time": 1633636992.387, 1180 | "value": "1" 1181 | }, 1182 | { 1183 | "metric": { 1184 | "__name__": "up", 1185 | "env": "demo", 1186 | "instance": "demo.do.prometheus.io:9100", 1187 | "job": "node" 1188 | }, 1189 | "time": 1633637052.387, 1190 | "value": "1" 1191 | }, 1192 | { 1193 | "metric": { 1194 | "__name__": "up", 1195 | "env": "demo", 1196 | "instance": "demo.do.prometheus.io:9100", 1197 | "job": "node" 1198 | }, 1199 | "time": 1633637112.387, 1200 | "value": "1" 1201 | }, 1202 | { 1203 | "metric": { 1204 | "__name__": "up", 1205 | "env": "demo", 1206 | "instance": "demo.do.prometheus.io:9100", 1207 | "job": "node" 1208 | }, 1209 | "time": 1633637172.387, 1210 | "value": "1" 1211 | }, 1212 | { 1213 | "metric": { 1214 | "__name__": "up", 1215 | "env": "demo", 1216 | "instance": "demo.do.prometheus.io:9100", 1217 | "job": "node" 1218 | }, 1219 | "time": 1633637232.387, 1220 | "value": "1" 1221 | }, 1222 | { 1223 | "metric": { 1224 | "__name__": "up", 1225 | "instance": "demo.do.prometheus.io:3000", 1226 | "job": "grafana" 1227 | }, 1228 | "time": 1633633632.387, 1229 | "value": "0" 1230 | }, 1231 | { 1232 | "metric": { 1233 | "__name__": "up", 1234 | "instance": "demo.do.prometheus.io:3000", 1235 | "job": "grafana" 1236 | }, 1237 | "time": 1633633692.387, 1238 | "value": "0" 1239 | }, 1240 | { 1241 | "metric": { 1242 | "__name__": "up", 1243 | "instance": "demo.do.prometheus.io:3000", 1244 | "job": "grafana" 1245 | }, 1246 | "time": 1633633752.387, 1247 | "value": "0" 1248 | }, 1249 | { 1250 | "metric": { 1251 | "__name__": "up", 1252 | "instance": "demo.do.prometheus.io:3000", 1253 | "job": "grafana" 1254 | }, 1255 | "time": 1633633812.387, 1256 | "value": "0" 1257 | }, 1258 | { 1259 | "metric": { 1260 | "__name__": "up", 1261 | "instance": "demo.do.prometheus.io:3000", 1262 | "job": "grafana" 1263 | }, 1264 | "time": 1633633872.387, 1265 | "value": "0" 1266 | }, 1267 | { 1268 | "metric": { 1269 | "__name__": "up", 1270 | "instance": "demo.do.prometheus.io:3000", 1271 | "job": "grafana" 1272 | }, 1273 | "time": 1633633932.387, 1274 | "value": "0" 1275 | }, 1276 | { 1277 | "metric": { 1278 | "__name__": "up", 1279 | "instance": "demo.do.prometheus.io:3000", 1280 | "job": "grafana" 1281 | }, 1282 | "time": 1633633992.387, 1283 | "value": "0" 1284 | }, 1285 | { 1286 | "metric": { 1287 | "__name__": "up", 1288 | "instance": "demo.do.prometheus.io:3000", 1289 | "job": "grafana" 1290 | }, 1291 | "time": 1633634052.387, 1292 | "value": "0" 1293 | }, 1294 | { 1295 | "metric": { 1296 | "__name__": "up", 1297 | "instance": "demo.do.prometheus.io:3000", 1298 | "job": "grafana" 1299 | }, 1300 | "time": 1633634112.387, 1301 | "value": "0" 1302 | }, 1303 | { 1304 | "metric": { 1305 | "__name__": "up", 1306 | "instance": "demo.do.prometheus.io:3000", 1307 | "job": "grafana" 1308 | }, 1309 | "time": 1633634172.387, 1310 | "value": "0" 1311 | }, 1312 | { 1313 | "metric": { 1314 | "__name__": "up", 1315 | "instance": "demo.do.prometheus.io:3000", 1316 | "job": "grafana" 1317 | }, 1318 | "time": 1633634232.387, 1319 | "value": "0" 1320 | }, 1321 | { 1322 | "metric": { 1323 | "__name__": "up", 1324 | "instance": "demo.do.prometheus.io:3000", 1325 | "job": "grafana" 1326 | }, 1327 | "time": 1633634292.387, 1328 | "value": "0" 1329 | }, 1330 | { 1331 | "metric": { 1332 | "__name__": "up", 1333 | "instance": "demo.do.prometheus.io:3000", 1334 | "job": "grafana" 1335 | }, 1336 | "time": 1633634352.387, 1337 | "value": "0" 1338 | }, 1339 | { 1340 | "metric": { 1341 | "__name__": "up", 1342 | "instance": "demo.do.prometheus.io:3000", 1343 | "job": "grafana" 1344 | }, 1345 | "time": 1633634412.387, 1346 | "value": "0" 1347 | }, 1348 | { 1349 | "metric": { 1350 | "__name__": "up", 1351 | "instance": "demo.do.prometheus.io:3000", 1352 | "job": "grafana" 1353 | }, 1354 | "time": 1633634472.387, 1355 | "value": "0" 1356 | }, 1357 | { 1358 | "metric": { 1359 | "__name__": "up", 1360 | "instance": "demo.do.prometheus.io:3000", 1361 | "job": "grafana" 1362 | }, 1363 | "time": 1633634532.387, 1364 | "value": "0" 1365 | }, 1366 | { 1367 | "metric": { 1368 | "__name__": "up", 1369 | "instance": "demo.do.prometheus.io:3000", 1370 | "job": "grafana" 1371 | }, 1372 | "time": 1633634592.387, 1373 | "value": "0" 1374 | }, 1375 | { 1376 | "metric": { 1377 | "__name__": "up", 1378 | "instance": "demo.do.prometheus.io:3000", 1379 | "job": "grafana" 1380 | }, 1381 | "time": 1633634652.387, 1382 | "value": "0" 1383 | }, 1384 | { 1385 | "metric": { 1386 | "__name__": "up", 1387 | "instance": "demo.do.prometheus.io:3000", 1388 | "job": "grafana" 1389 | }, 1390 | "time": 1633634712.387, 1391 | "value": "0" 1392 | }, 1393 | { 1394 | "metric": { 1395 | "__name__": "up", 1396 | "instance": "demo.do.prometheus.io:3000", 1397 | "job": "grafana" 1398 | }, 1399 | "time": 1633634772.387, 1400 | "value": "0" 1401 | }, 1402 | { 1403 | "metric": { 1404 | "__name__": "up", 1405 | "instance": "demo.do.prometheus.io:3000", 1406 | "job": "grafana" 1407 | }, 1408 | "time": 1633634832.387, 1409 | "value": "0" 1410 | }, 1411 | { 1412 | "metric": { 1413 | "__name__": "up", 1414 | "instance": "demo.do.prometheus.io:3000", 1415 | "job": "grafana" 1416 | }, 1417 | "time": 1633634892.387, 1418 | "value": "0" 1419 | }, 1420 | { 1421 | "metric": { 1422 | "__name__": "up", 1423 | "instance": "demo.do.prometheus.io:3000", 1424 | "job": "grafana" 1425 | }, 1426 | "time": 1633634952.387, 1427 | "value": "0" 1428 | }, 1429 | { 1430 | "metric": { 1431 | "__name__": "up", 1432 | "instance": "demo.do.prometheus.io:3000", 1433 | "job": "grafana" 1434 | }, 1435 | "time": 1633635012.387, 1436 | "value": "0" 1437 | }, 1438 | { 1439 | "metric": { 1440 | "__name__": "up", 1441 | "instance": "demo.do.prometheus.io:3000", 1442 | "job": "grafana" 1443 | }, 1444 | "time": 1633635072.387, 1445 | "value": "0" 1446 | }, 1447 | { 1448 | "metric": { 1449 | "__name__": "up", 1450 | "instance": "demo.do.prometheus.io:3000", 1451 | "job": "grafana" 1452 | }, 1453 | "time": 1633635132.387, 1454 | "value": "0" 1455 | }, 1456 | { 1457 | "metric": { 1458 | "__name__": "up", 1459 | "instance": "demo.do.prometheus.io:3000", 1460 | "job": "grafana" 1461 | }, 1462 | "time": 1633635192.387, 1463 | "value": "0" 1464 | }, 1465 | { 1466 | "metric": { 1467 | "__name__": "up", 1468 | "instance": "demo.do.prometheus.io:3000", 1469 | "job": "grafana" 1470 | }, 1471 | "time": 1633635252.387, 1472 | "value": "0" 1473 | }, 1474 | { 1475 | "metric": { 1476 | "__name__": "up", 1477 | "instance": "demo.do.prometheus.io:3000", 1478 | "job": "grafana" 1479 | }, 1480 | "time": 1633635312.387, 1481 | "value": "0" 1482 | }, 1483 | { 1484 | "metric": { 1485 | "__name__": "up", 1486 | "instance": "demo.do.prometheus.io:3000", 1487 | "job": "grafana" 1488 | }, 1489 | "time": 1633635372.387, 1490 | "value": "0" 1491 | }, 1492 | { 1493 | "metric": { 1494 | "__name__": "up", 1495 | "instance": "demo.do.prometheus.io:3000", 1496 | "job": "grafana" 1497 | }, 1498 | "time": 1633635432.387, 1499 | "value": "0" 1500 | }, 1501 | { 1502 | "metric": { 1503 | "__name__": "up", 1504 | "instance": "demo.do.prometheus.io:3000", 1505 | "job": "grafana" 1506 | }, 1507 | "time": 1633635492.387, 1508 | "value": "0" 1509 | }, 1510 | { 1511 | "metric": { 1512 | "__name__": "up", 1513 | "instance": "demo.do.prometheus.io:3000", 1514 | "job": "grafana" 1515 | }, 1516 | "time": 1633635552.387, 1517 | "value": "0" 1518 | }, 1519 | { 1520 | "metric": { 1521 | "__name__": "up", 1522 | "instance": "demo.do.prometheus.io:3000", 1523 | "job": "grafana" 1524 | }, 1525 | "time": 1633635612.387, 1526 | "value": "0" 1527 | }, 1528 | { 1529 | "metric": { 1530 | "__name__": "up", 1531 | "instance": "demo.do.prometheus.io:3000", 1532 | "job": "grafana" 1533 | }, 1534 | "time": 1633635672.387, 1535 | "value": "0" 1536 | }, 1537 | { 1538 | "metric": { 1539 | "__name__": "up", 1540 | "instance": "demo.do.prometheus.io:3000", 1541 | "job": "grafana" 1542 | }, 1543 | "time": 1633635732.387, 1544 | "value": "0" 1545 | }, 1546 | { 1547 | "metric": { 1548 | "__name__": "up", 1549 | "instance": "demo.do.prometheus.io:3000", 1550 | "job": "grafana" 1551 | }, 1552 | "time": 1633635792.387, 1553 | "value": "0" 1554 | }, 1555 | { 1556 | "metric": { 1557 | "__name__": "up", 1558 | "instance": "demo.do.prometheus.io:3000", 1559 | "job": "grafana" 1560 | }, 1561 | "time": 1633635852.387, 1562 | "value": "0" 1563 | }, 1564 | { 1565 | "metric": { 1566 | "__name__": "up", 1567 | "instance": "demo.do.prometheus.io:3000", 1568 | "job": "grafana" 1569 | }, 1570 | "time": 1633635912.387, 1571 | "value": "0" 1572 | }, 1573 | { 1574 | "metric": { 1575 | "__name__": "up", 1576 | "instance": "demo.do.prometheus.io:3000", 1577 | "job": "grafana" 1578 | }, 1579 | "time": 1633635972.387, 1580 | "value": "0" 1581 | }, 1582 | { 1583 | "metric": { 1584 | "__name__": "up", 1585 | "instance": "demo.do.prometheus.io:3000", 1586 | "job": "grafana" 1587 | }, 1588 | "time": 1633636032.387, 1589 | "value": "0" 1590 | }, 1591 | { 1592 | "metric": { 1593 | "__name__": "up", 1594 | "instance": "demo.do.prometheus.io:3000", 1595 | "job": "grafana" 1596 | }, 1597 | "time": 1633636092.387, 1598 | "value": "0" 1599 | }, 1600 | { 1601 | "metric": { 1602 | "__name__": "up", 1603 | "instance": "demo.do.prometheus.io:3000", 1604 | "job": "grafana" 1605 | }, 1606 | "time": 1633636152.387, 1607 | "value": "0" 1608 | }, 1609 | { 1610 | "metric": { 1611 | "__name__": "up", 1612 | "instance": "demo.do.prometheus.io:3000", 1613 | "job": "grafana" 1614 | }, 1615 | "time": 1633636212.387, 1616 | "value": "0" 1617 | }, 1618 | { 1619 | "metric": { 1620 | "__name__": "up", 1621 | "instance": "demo.do.prometheus.io:3000", 1622 | "job": "grafana" 1623 | }, 1624 | "time": 1633636272.387, 1625 | "value": "0" 1626 | }, 1627 | { 1628 | "metric": { 1629 | "__name__": "up", 1630 | "instance": "demo.do.prometheus.io:3000", 1631 | "job": "grafana" 1632 | }, 1633 | "time": 1633636332.387, 1634 | "value": "0" 1635 | }, 1636 | { 1637 | "metric": { 1638 | "__name__": "up", 1639 | "instance": "demo.do.prometheus.io:3000", 1640 | "job": "grafana" 1641 | }, 1642 | "time": 1633636392.387, 1643 | "value": "0" 1644 | }, 1645 | { 1646 | "metric": { 1647 | "__name__": "up", 1648 | "instance": "demo.do.prometheus.io:3000", 1649 | "job": "grafana" 1650 | }, 1651 | "time": 1633636452.387, 1652 | "value": "0" 1653 | }, 1654 | { 1655 | "metric": { 1656 | "__name__": "up", 1657 | "instance": "demo.do.prometheus.io:3000", 1658 | "job": "grafana" 1659 | }, 1660 | "time": 1633636512.387, 1661 | "value": "0" 1662 | }, 1663 | { 1664 | "metric": { 1665 | "__name__": "up", 1666 | "instance": "demo.do.prometheus.io:3000", 1667 | "job": "grafana" 1668 | }, 1669 | "time": 1633636572.387, 1670 | "value": "0" 1671 | }, 1672 | { 1673 | "metric": { 1674 | "__name__": "up", 1675 | "instance": "demo.do.prometheus.io:3000", 1676 | "job": "grafana" 1677 | }, 1678 | "time": 1633636632.387, 1679 | "value": "0" 1680 | }, 1681 | { 1682 | "metric": { 1683 | "__name__": "up", 1684 | "instance": "demo.do.prometheus.io:3000", 1685 | "job": "grafana" 1686 | }, 1687 | "time": 1633636692.387, 1688 | "value": "0" 1689 | }, 1690 | { 1691 | "metric": { 1692 | "__name__": "up", 1693 | "instance": "demo.do.prometheus.io:3000", 1694 | "job": "grafana" 1695 | }, 1696 | "time": 1633636752.387, 1697 | "value": "0" 1698 | }, 1699 | { 1700 | "metric": { 1701 | "__name__": "up", 1702 | "instance": "demo.do.prometheus.io:3000", 1703 | "job": "grafana" 1704 | }, 1705 | "time": 1633636812.387, 1706 | "value": "0" 1707 | }, 1708 | { 1709 | "metric": { 1710 | "__name__": "up", 1711 | "instance": "demo.do.prometheus.io:3000", 1712 | "job": "grafana" 1713 | }, 1714 | "time": 1633636872.387, 1715 | "value": "0" 1716 | }, 1717 | { 1718 | "metric": { 1719 | "__name__": "up", 1720 | "instance": "demo.do.prometheus.io:3000", 1721 | "job": "grafana" 1722 | }, 1723 | "time": 1633636932.387, 1724 | "value": "0" 1725 | }, 1726 | { 1727 | "metric": { 1728 | "__name__": "up", 1729 | "instance": "demo.do.prometheus.io:3000", 1730 | "job": "grafana" 1731 | }, 1732 | "time": 1633636992.387, 1733 | "value": "0" 1734 | }, 1735 | { 1736 | "metric": { 1737 | "__name__": "up", 1738 | "instance": "demo.do.prometheus.io:3000", 1739 | "job": "grafana" 1740 | }, 1741 | "time": 1633637052.387, 1742 | "value": "0" 1743 | }, 1744 | { 1745 | "metric": { 1746 | "__name__": "up", 1747 | "instance": "demo.do.prometheus.io:3000", 1748 | "job": "grafana" 1749 | }, 1750 | "time": 1633637112.387, 1751 | "value": "0" 1752 | }, 1753 | { 1754 | "metric": { 1755 | "__name__": "up", 1756 | "instance": "demo.do.prometheus.io:3000", 1757 | "job": "grafana" 1758 | }, 1759 | "time": 1633637172.387, 1760 | "value": "0" 1761 | }, 1762 | { 1763 | "metric": { 1764 | "__name__": "up", 1765 | "instance": "demo.do.prometheus.io:3000", 1766 | "job": "grafana" 1767 | }, 1768 | "time": 1633637232.387, 1769 | "value": "0" 1770 | }, 1771 | { 1772 | "metric": { 1773 | "__name__": "up", 1774 | "instance": "demo.do.prometheus.io:8996", 1775 | "job": "random" 1776 | }, 1777 | "time": 1633633632.387, 1778 | "value": "1" 1779 | }, 1780 | { 1781 | "metric": { 1782 | "__name__": "up", 1783 | "instance": "demo.do.prometheus.io:8996", 1784 | "job": "random" 1785 | }, 1786 | "time": 1633633692.387, 1787 | "value": "1" 1788 | }, 1789 | { 1790 | "metric": { 1791 | "__name__": "up", 1792 | "instance": "demo.do.prometheus.io:8996", 1793 | "job": "random" 1794 | }, 1795 | "time": 1633633752.387, 1796 | "value": "1" 1797 | }, 1798 | { 1799 | "metric": { 1800 | "__name__": "up", 1801 | "instance": "demo.do.prometheus.io:8996", 1802 | "job": "random" 1803 | }, 1804 | "time": 1633633812.387, 1805 | "value": "1" 1806 | }, 1807 | { 1808 | "metric": { 1809 | "__name__": "up", 1810 | "instance": "demo.do.prometheus.io:8996", 1811 | "job": "random" 1812 | }, 1813 | "time": 1633633872.387, 1814 | "value": "1" 1815 | }, 1816 | { 1817 | "metric": { 1818 | "__name__": "up", 1819 | "instance": "demo.do.prometheus.io:8996", 1820 | "job": "random" 1821 | }, 1822 | "time": 1633633932.387, 1823 | "value": "1" 1824 | }, 1825 | { 1826 | "metric": { 1827 | "__name__": "up", 1828 | "instance": "demo.do.prometheus.io:8996", 1829 | "job": "random" 1830 | }, 1831 | "time": 1633633992.387, 1832 | "value": "1" 1833 | }, 1834 | { 1835 | "metric": { 1836 | "__name__": "up", 1837 | "instance": "demo.do.prometheus.io:8996", 1838 | "job": "random" 1839 | }, 1840 | "time": 1633634052.387, 1841 | "value": "1" 1842 | }, 1843 | { 1844 | "metric": { 1845 | "__name__": "up", 1846 | "instance": "demo.do.prometheus.io:8996", 1847 | "job": "random" 1848 | }, 1849 | "time": 1633634112.387, 1850 | "value": "1" 1851 | }, 1852 | { 1853 | "metric": { 1854 | "__name__": "up", 1855 | "instance": "demo.do.prometheus.io:8996", 1856 | "job": "random" 1857 | }, 1858 | "time": 1633634172.387, 1859 | "value": "1" 1860 | }, 1861 | { 1862 | "metric": { 1863 | "__name__": "up", 1864 | "instance": "demo.do.prometheus.io:8996", 1865 | "job": "random" 1866 | }, 1867 | "time": 1633634232.387, 1868 | "value": "1" 1869 | }, 1870 | { 1871 | "metric": { 1872 | "__name__": "up", 1873 | "instance": "demo.do.prometheus.io:8996", 1874 | "job": "random" 1875 | }, 1876 | "time": 1633634292.387, 1877 | "value": "1" 1878 | }, 1879 | { 1880 | "metric": { 1881 | "__name__": "up", 1882 | "instance": "demo.do.prometheus.io:8996", 1883 | "job": "random" 1884 | }, 1885 | "time": 1633634352.387, 1886 | "value": "1" 1887 | }, 1888 | { 1889 | "metric": { 1890 | "__name__": "up", 1891 | "instance": "demo.do.prometheus.io:8996", 1892 | "job": "random" 1893 | }, 1894 | "time": 1633634412.387, 1895 | "value": "1" 1896 | }, 1897 | { 1898 | "metric": { 1899 | "__name__": "up", 1900 | "instance": "demo.do.prometheus.io:8996", 1901 | "job": "random" 1902 | }, 1903 | "time": 1633634472.387, 1904 | "value": "1" 1905 | }, 1906 | { 1907 | "metric": { 1908 | "__name__": "up", 1909 | "instance": "demo.do.prometheus.io:8996", 1910 | "job": "random" 1911 | }, 1912 | "time": 1633634532.387, 1913 | "value": "1" 1914 | }, 1915 | { 1916 | "metric": { 1917 | "__name__": "up", 1918 | "instance": "demo.do.prometheus.io:8996", 1919 | "job": "random" 1920 | }, 1921 | "time": 1633634592.387, 1922 | "value": "1" 1923 | }, 1924 | { 1925 | "metric": { 1926 | "__name__": "up", 1927 | "instance": "demo.do.prometheus.io:8996", 1928 | "job": "random" 1929 | }, 1930 | "time": 1633634652.387, 1931 | "value": "1" 1932 | }, 1933 | { 1934 | "metric": { 1935 | "__name__": "up", 1936 | "instance": "demo.do.prometheus.io:8996", 1937 | "job": "random" 1938 | }, 1939 | "time": 1633634712.387, 1940 | "value": "1" 1941 | }, 1942 | { 1943 | "metric": { 1944 | "__name__": "up", 1945 | "instance": "demo.do.prometheus.io:8996", 1946 | "job": "random" 1947 | }, 1948 | "time": 1633634772.387, 1949 | "value": "1" 1950 | }, 1951 | { 1952 | "metric": { 1953 | "__name__": "up", 1954 | "instance": "demo.do.prometheus.io:8996", 1955 | "job": "random" 1956 | }, 1957 | "time": 1633634832.387, 1958 | "value": "1" 1959 | }, 1960 | { 1961 | "metric": { 1962 | "__name__": "up", 1963 | "instance": "demo.do.prometheus.io:8996", 1964 | "job": "random" 1965 | }, 1966 | "time": 1633634892.387, 1967 | "value": "1" 1968 | }, 1969 | { 1970 | "metric": { 1971 | "__name__": "up", 1972 | "instance": "demo.do.prometheus.io:8996", 1973 | "job": "random" 1974 | }, 1975 | "time": 1633634952.387, 1976 | "value": "1" 1977 | }, 1978 | { 1979 | "metric": { 1980 | "__name__": "up", 1981 | "instance": "demo.do.prometheus.io:8996", 1982 | "job": "random" 1983 | }, 1984 | "time": 1633635012.387, 1985 | "value": "1" 1986 | }, 1987 | { 1988 | "metric": { 1989 | "__name__": "up", 1990 | "instance": "demo.do.prometheus.io:8996", 1991 | "job": "random" 1992 | }, 1993 | "time": 1633635072.387, 1994 | "value": "1" 1995 | }, 1996 | { 1997 | "metric": { 1998 | "__name__": "up", 1999 | "instance": "demo.do.prometheus.io:8996", 2000 | "job": "random" 2001 | }, 2002 | "time": 1633635132.387, 2003 | "value": "1" 2004 | }, 2005 | { 2006 | "metric": { 2007 | "__name__": "up", 2008 | "instance": "demo.do.prometheus.io:8996", 2009 | "job": "random" 2010 | }, 2011 | "time": 1633635192.387, 2012 | "value": "1" 2013 | }, 2014 | { 2015 | "metric": { 2016 | "__name__": "up", 2017 | "instance": "demo.do.prometheus.io:8996", 2018 | "job": "random" 2019 | }, 2020 | "time": 1633635252.387, 2021 | "value": "1" 2022 | }, 2023 | { 2024 | "metric": { 2025 | "__name__": "up", 2026 | "instance": "demo.do.prometheus.io:8996", 2027 | "job": "random" 2028 | }, 2029 | "time": 1633635312.387, 2030 | "value": "1" 2031 | }, 2032 | { 2033 | "metric": { 2034 | "__name__": "up", 2035 | "instance": "demo.do.prometheus.io:8996", 2036 | "job": "random" 2037 | }, 2038 | "time": 1633635372.387, 2039 | "value": "1" 2040 | }, 2041 | { 2042 | "metric": { 2043 | "__name__": "up", 2044 | "instance": "demo.do.prometheus.io:8996", 2045 | "job": "random" 2046 | }, 2047 | "time": 1633635432.387, 2048 | "value": "1" 2049 | }, 2050 | { 2051 | "metric": { 2052 | "__name__": "up", 2053 | "instance": "demo.do.prometheus.io:8996", 2054 | "job": "random" 2055 | }, 2056 | "time": 1633635492.387, 2057 | "value": "1" 2058 | }, 2059 | { 2060 | "metric": { 2061 | "__name__": "up", 2062 | "instance": "demo.do.prometheus.io:8996", 2063 | "job": "random" 2064 | }, 2065 | "time": 1633635552.387, 2066 | "value": "1" 2067 | }, 2068 | { 2069 | "metric": { 2070 | "__name__": "up", 2071 | "instance": "demo.do.prometheus.io:8996", 2072 | "job": "random" 2073 | }, 2074 | "time": 1633635612.387, 2075 | "value": "1" 2076 | }, 2077 | { 2078 | "metric": { 2079 | "__name__": "up", 2080 | "instance": "demo.do.prometheus.io:8996", 2081 | "job": "random" 2082 | }, 2083 | "time": 1633635672.387, 2084 | "value": "1" 2085 | }, 2086 | { 2087 | "metric": { 2088 | "__name__": "up", 2089 | "instance": "demo.do.prometheus.io:8996", 2090 | "job": "random" 2091 | }, 2092 | "time": 1633635732.387, 2093 | "value": "1" 2094 | }, 2095 | { 2096 | "metric": { 2097 | "__name__": "up", 2098 | "instance": "demo.do.prometheus.io:8996", 2099 | "job": "random" 2100 | }, 2101 | "time": 1633635792.387, 2102 | "value": "1" 2103 | }, 2104 | { 2105 | "metric": { 2106 | "__name__": "up", 2107 | "instance": "demo.do.prometheus.io:8996", 2108 | "job": "random" 2109 | }, 2110 | "time": 1633635852.387, 2111 | "value": "1" 2112 | }, 2113 | { 2114 | "metric": { 2115 | "__name__": "up", 2116 | "instance": "demo.do.prometheus.io:8996", 2117 | "job": "random" 2118 | }, 2119 | "time": 1633635912.387, 2120 | "value": "1" 2121 | }, 2122 | { 2123 | "metric": { 2124 | "__name__": "up", 2125 | "instance": "demo.do.prometheus.io:8996", 2126 | "job": "random" 2127 | }, 2128 | "time": 1633635972.387, 2129 | "value": "1" 2130 | }, 2131 | { 2132 | "metric": { 2133 | "__name__": "up", 2134 | "instance": "demo.do.prometheus.io:8996", 2135 | "job": "random" 2136 | }, 2137 | "time": 1633636032.387, 2138 | "value": "1" 2139 | }, 2140 | { 2141 | "metric": { 2142 | "__name__": "up", 2143 | "instance": "demo.do.prometheus.io:8996", 2144 | "job": "random" 2145 | }, 2146 | "time": 1633636092.387, 2147 | "value": "1" 2148 | }, 2149 | { 2150 | "metric": { 2151 | "__name__": "up", 2152 | "instance": "demo.do.prometheus.io:8996", 2153 | "job": "random" 2154 | }, 2155 | "time": 1633636152.387, 2156 | "value": "1" 2157 | }, 2158 | { 2159 | "metric": { 2160 | "__name__": "up", 2161 | "instance": "demo.do.prometheus.io:8996", 2162 | "job": "random" 2163 | }, 2164 | "time": 1633636212.387, 2165 | "value": "1" 2166 | }, 2167 | { 2168 | "metric": { 2169 | "__name__": "up", 2170 | "instance": "demo.do.prometheus.io:8996", 2171 | "job": "random" 2172 | }, 2173 | "time": 1633636272.387, 2174 | "value": "1" 2175 | }, 2176 | { 2177 | "metric": { 2178 | "__name__": "up", 2179 | "instance": "demo.do.prometheus.io:8996", 2180 | "job": "random" 2181 | }, 2182 | "time": 1633636332.387, 2183 | "value": "1" 2184 | }, 2185 | { 2186 | "metric": { 2187 | "__name__": "up", 2188 | "instance": "demo.do.prometheus.io:8996", 2189 | "job": "random" 2190 | }, 2191 | "time": 1633636392.387, 2192 | "value": "1" 2193 | }, 2194 | { 2195 | "metric": { 2196 | "__name__": "up", 2197 | "instance": "demo.do.prometheus.io:8996", 2198 | "job": "random" 2199 | }, 2200 | "time": 1633636452.387, 2201 | "value": "1" 2202 | }, 2203 | { 2204 | "metric": { 2205 | "__name__": "up", 2206 | "instance": "demo.do.prometheus.io:8996", 2207 | "job": "random" 2208 | }, 2209 | "time": 1633636512.387, 2210 | "value": "1" 2211 | }, 2212 | { 2213 | "metric": { 2214 | "__name__": "up", 2215 | "instance": "demo.do.prometheus.io:8996", 2216 | "job": "random" 2217 | }, 2218 | "time": 1633636572.387, 2219 | "value": "1" 2220 | }, 2221 | { 2222 | "metric": { 2223 | "__name__": "up", 2224 | "instance": "demo.do.prometheus.io:8996", 2225 | "job": "random" 2226 | }, 2227 | "time": 1633636632.387, 2228 | "value": "1" 2229 | }, 2230 | { 2231 | "metric": { 2232 | "__name__": "up", 2233 | "instance": "demo.do.prometheus.io:8996", 2234 | "job": "random" 2235 | }, 2236 | "time": 1633636692.387, 2237 | "value": "1" 2238 | }, 2239 | { 2240 | "metric": { 2241 | "__name__": "up", 2242 | "instance": "demo.do.prometheus.io:8996", 2243 | "job": "random" 2244 | }, 2245 | "time": 1633636752.387, 2246 | "value": "1" 2247 | }, 2248 | { 2249 | "metric": { 2250 | "__name__": "up", 2251 | "instance": "demo.do.prometheus.io:8996", 2252 | "job": "random" 2253 | }, 2254 | "time": 1633636812.387, 2255 | "value": "1" 2256 | }, 2257 | { 2258 | "metric": { 2259 | "__name__": "up", 2260 | "instance": "demo.do.prometheus.io:8996", 2261 | "job": "random" 2262 | }, 2263 | "time": 1633636872.387, 2264 | "value": "1" 2265 | }, 2266 | { 2267 | "metric": { 2268 | "__name__": "up", 2269 | "instance": "demo.do.prometheus.io:8996", 2270 | "job": "random" 2271 | }, 2272 | "time": 1633636932.387, 2273 | "value": "1" 2274 | }, 2275 | { 2276 | "metric": { 2277 | "__name__": "up", 2278 | "instance": "demo.do.prometheus.io:8996", 2279 | "job": "random" 2280 | }, 2281 | "time": 1633636992.387, 2282 | "value": "1" 2283 | }, 2284 | { 2285 | "metric": { 2286 | "__name__": "up", 2287 | "instance": "demo.do.prometheus.io:8996", 2288 | "job": "random" 2289 | }, 2290 | "time": 1633637052.387, 2291 | "value": "1" 2292 | }, 2293 | { 2294 | "metric": { 2295 | "__name__": "up", 2296 | "instance": "demo.do.prometheus.io:8996", 2297 | "job": "random" 2298 | }, 2299 | "time": 1633637112.387, 2300 | "value": "1" 2301 | }, 2302 | { 2303 | "metric": { 2304 | "__name__": "up", 2305 | "instance": "demo.do.prometheus.io:8996", 2306 | "job": "random" 2307 | }, 2308 | "time": 1633637172.387, 2309 | "value": "1" 2310 | }, 2311 | { 2312 | "metric": { 2313 | "__name__": "up", 2314 | "instance": "demo.do.prometheus.io:8996", 2315 | "job": "random" 2316 | }, 2317 | "time": 1633637232.387, 2318 | "value": "1" 2319 | }, 2320 | { 2321 | "metric": { 2322 | "__name__": "up", 2323 | "instance": "demo.do.prometheus.io:8997", 2324 | "job": "random" 2325 | }, 2326 | "time": 1633633632.387, 2327 | "value": "1" 2328 | }, 2329 | { 2330 | "metric": { 2331 | "__name__": "up", 2332 | "instance": "demo.do.prometheus.io:8997", 2333 | "job": "random" 2334 | }, 2335 | "time": 1633633692.387, 2336 | "value": "1" 2337 | }, 2338 | { 2339 | "metric": { 2340 | "__name__": "up", 2341 | "instance": "demo.do.prometheus.io:8997", 2342 | "job": "random" 2343 | }, 2344 | "time": 1633633752.387, 2345 | "value": "1" 2346 | }, 2347 | { 2348 | "metric": { 2349 | "__name__": "up", 2350 | "instance": "demo.do.prometheus.io:8997", 2351 | "job": "random" 2352 | }, 2353 | "time": 1633633812.387, 2354 | "value": "1" 2355 | }, 2356 | { 2357 | "metric": { 2358 | "__name__": "up", 2359 | "instance": "demo.do.prometheus.io:8997", 2360 | "job": "random" 2361 | }, 2362 | "time": 1633633872.387, 2363 | "value": "1" 2364 | }, 2365 | { 2366 | "metric": { 2367 | "__name__": "up", 2368 | "instance": "demo.do.prometheus.io:8997", 2369 | "job": "random" 2370 | }, 2371 | "time": 1633633932.387, 2372 | "value": "1" 2373 | }, 2374 | { 2375 | "metric": { 2376 | "__name__": "up", 2377 | "instance": "demo.do.prometheus.io:8997", 2378 | "job": "random" 2379 | }, 2380 | "time": 1633633992.387, 2381 | "value": "1" 2382 | }, 2383 | { 2384 | "metric": { 2385 | "__name__": "up", 2386 | "instance": "demo.do.prometheus.io:8997", 2387 | "job": "random" 2388 | }, 2389 | "time": 1633634052.387, 2390 | "value": "1" 2391 | }, 2392 | { 2393 | "metric": { 2394 | "__name__": "up", 2395 | "instance": "demo.do.prometheus.io:8997", 2396 | "job": "random" 2397 | }, 2398 | "time": 1633634112.387, 2399 | "value": "1" 2400 | }, 2401 | { 2402 | "metric": { 2403 | "__name__": "up", 2404 | "instance": "demo.do.prometheus.io:8997", 2405 | "job": "random" 2406 | }, 2407 | "time": 1633634172.387, 2408 | "value": "1" 2409 | }, 2410 | { 2411 | "metric": { 2412 | "__name__": "up", 2413 | "instance": "demo.do.prometheus.io:8997", 2414 | "job": "random" 2415 | }, 2416 | "time": 1633634232.387, 2417 | "value": "1" 2418 | }, 2419 | { 2420 | "metric": { 2421 | "__name__": "up", 2422 | "instance": "demo.do.prometheus.io:8997", 2423 | "job": "random" 2424 | }, 2425 | "time": 1633634292.387, 2426 | "value": "1" 2427 | }, 2428 | { 2429 | "metric": { 2430 | "__name__": "up", 2431 | "instance": "demo.do.prometheus.io:8997", 2432 | "job": "random" 2433 | }, 2434 | "time": 1633634352.387, 2435 | "value": "1" 2436 | }, 2437 | { 2438 | "metric": { 2439 | "__name__": "up", 2440 | "instance": "demo.do.prometheus.io:8997", 2441 | "job": "random" 2442 | }, 2443 | "time": 1633634412.387, 2444 | "value": "1" 2445 | }, 2446 | { 2447 | "metric": { 2448 | "__name__": "up", 2449 | "instance": "demo.do.prometheus.io:8997", 2450 | "job": "random" 2451 | }, 2452 | "time": 1633634472.387, 2453 | "value": "1" 2454 | }, 2455 | { 2456 | "metric": { 2457 | "__name__": "up", 2458 | "instance": "demo.do.prometheus.io:8997", 2459 | "job": "random" 2460 | }, 2461 | "time": 1633634532.387, 2462 | "value": "1" 2463 | }, 2464 | { 2465 | "metric": { 2466 | "__name__": "up", 2467 | "instance": "demo.do.prometheus.io:8997", 2468 | "job": "random" 2469 | }, 2470 | "time": 1633634592.387, 2471 | "value": "1" 2472 | }, 2473 | { 2474 | "metric": { 2475 | "__name__": "up", 2476 | "instance": "demo.do.prometheus.io:8997", 2477 | "job": "random" 2478 | }, 2479 | "time": 1633634652.387, 2480 | "value": "1" 2481 | }, 2482 | { 2483 | "metric": { 2484 | "__name__": "up", 2485 | "instance": "demo.do.prometheus.io:8997", 2486 | "job": "random" 2487 | }, 2488 | "time": 1633634712.387, 2489 | "value": "1" 2490 | }, 2491 | { 2492 | "metric": { 2493 | "__name__": "up", 2494 | "instance": "demo.do.prometheus.io:8997", 2495 | "job": "random" 2496 | }, 2497 | "time": 1633634772.387, 2498 | "value": "1" 2499 | }, 2500 | { 2501 | "metric": { 2502 | "__name__": "up", 2503 | "instance": "demo.do.prometheus.io:8997", 2504 | "job": "random" 2505 | }, 2506 | "time": 1633634832.387, 2507 | "value": "1" 2508 | }, 2509 | { 2510 | "metric": { 2511 | "__name__": "up", 2512 | "instance": "demo.do.prometheus.io:8997", 2513 | "job": "random" 2514 | }, 2515 | "time": 1633634892.387, 2516 | "value": "1" 2517 | }, 2518 | { 2519 | "metric": { 2520 | "__name__": "up", 2521 | "instance": "demo.do.prometheus.io:8997", 2522 | "job": "random" 2523 | }, 2524 | "time": 1633634952.387, 2525 | "value": "1" 2526 | }, 2527 | { 2528 | "metric": { 2529 | "__name__": "up", 2530 | "instance": "demo.do.prometheus.io:8997", 2531 | "job": "random" 2532 | }, 2533 | "time": 1633635012.387, 2534 | "value": "1" 2535 | }, 2536 | { 2537 | "metric": { 2538 | "__name__": "up", 2539 | "instance": "demo.do.prometheus.io:8997", 2540 | "job": "random" 2541 | }, 2542 | "time": 1633635072.387, 2543 | "value": "1" 2544 | }, 2545 | { 2546 | "metric": { 2547 | "__name__": "up", 2548 | "instance": "demo.do.prometheus.io:8997", 2549 | "job": "random" 2550 | }, 2551 | "time": 1633635132.387, 2552 | "value": "1" 2553 | }, 2554 | { 2555 | "metric": { 2556 | "__name__": "up", 2557 | "instance": "demo.do.prometheus.io:8997", 2558 | "job": "random" 2559 | }, 2560 | "time": 1633635192.387, 2561 | "value": "1" 2562 | }, 2563 | { 2564 | "metric": { 2565 | "__name__": "up", 2566 | "instance": "demo.do.prometheus.io:8997", 2567 | "job": "random" 2568 | }, 2569 | "time": 1633635252.387, 2570 | "value": "1" 2571 | }, 2572 | { 2573 | "metric": { 2574 | "__name__": "up", 2575 | "instance": "demo.do.prometheus.io:8997", 2576 | "job": "random" 2577 | }, 2578 | "time": 1633635312.387, 2579 | "value": "1" 2580 | }, 2581 | { 2582 | "metric": { 2583 | "__name__": "up", 2584 | "instance": "demo.do.prometheus.io:8997", 2585 | "job": "random" 2586 | }, 2587 | "time": 1633635372.387, 2588 | "value": "1" 2589 | }, 2590 | { 2591 | "metric": { 2592 | "__name__": "up", 2593 | "instance": "demo.do.prometheus.io:8997", 2594 | "job": "random" 2595 | }, 2596 | "time": 1633635432.387, 2597 | "value": "1" 2598 | }, 2599 | { 2600 | "metric": { 2601 | "__name__": "up", 2602 | "instance": "demo.do.prometheus.io:8997", 2603 | "job": "random" 2604 | }, 2605 | "time": 1633635492.387, 2606 | "value": "1" 2607 | }, 2608 | { 2609 | "metric": { 2610 | "__name__": "up", 2611 | "instance": "demo.do.prometheus.io:8997", 2612 | "job": "random" 2613 | }, 2614 | "time": 1633635552.387, 2615 | "value": "1" 2616 | }, 2617 | { 2618 | "metric": { 2619 | "__name__": "up", 2620 | "instance": "demo.do.prometheus.io:8997", 2621 | "job": "random" 2622 | }, 2623 | "time": 1633635612.387, 2624 | "value": "1" 2625 | }, 2626 | { 2627 | "metric": { 2628 | "__name__": "up", 2629 | "instance": "demo.do.prometheus.io:8997", 2630 | "job": "random" 2631 | }, 2632 | "time": 1633635672.387, 2633 | "value": "1" 2634 | }, 2635 | { 2636 | "metric": { 2637 | "__name__": "up", 2638 | "instance": "demo.do.prometheus.io:8997", 2639 | "job": "random" 2640 | }, 2641 | "time": 1633635732.387, 2642 | "value": "1" 2643 | }, 2644 | { 2645 | "metric": { 2646 | "__name__": "up", 2647 | "instance": "demo.do.prometheus.io:8997", 2648 | "job": "random" 2649 | }, 2650 | "time": 1633635792.387, 2651 | "value": "1" 2652 | }, 2653 | { 2654 | "metric": { 2655 | "__name__": "up", 2656 | "instance": "demo.do.prometheus.io:8997", 2657 | "job": "random" 2658 | }, 2659 | "time": 1633635852.387, 2660 | "value": "1" 2661 | }, 2662 | { 2663 | "metric": { 2664 | "__name__": "up", 2665 | "instance": "demo.do.prometheus.io:8997", 2666 | "job": "random" 2667 | }, 2668 | "time": 1633635912.387, 2669 | "value": "1" 2670 | }, 2671 | { 2672 | "metric": { 2673 | "__name__": "up", 2674 | "instance": "demo.do.prometheus.io:8997", 2675 | "job": "random" 2676 | }, 2677 | "time": 1633635972.387, 2678 | "value": "1" 2679 | }, 2680 | { 2681 | "metric": { 2682 | "__name__": "up", 2683 | "instance": "demo.do.prometheus.io:8997", 2684 | "job": "random" 2685 | }, 2686 | "time": 1633636032.387, 2687 | "value": "1" 2688 | }, 2689 | { 2690 | "metric": { 2691 | "__name__": "up", 2692 | "instance": "demo.do.prometheus.io:8997", 2693 | "job": "random" 2694 | }, 2695 | "time": 1633636092.387, 2696 | "value": "1" 2697 | }, 2698 | { 2699 | "metric": { 2700 | "__name__": "up", 2701 | "instance": "demo.do.prometheus.io:8997", 2702 | "job": "random" 2703 | }, 2704 | "time": 1633636152.387, 2705 | "value": "1" 2706 | }, 2707 | { 2708 | "metric": { 2709 | "__name__": "up", 2710 | "instance": "demo.do.prometheus.io:8997", 2711 | "job": "random" 2712 | }, 2713 | "time": 1633636212.387, 2714 | "value": "1" 2715 | }, 2716 | { 2717 | "metric": { 2718 | "__name__": "up", 2719 | "instance": "demo.do.prometheus.io:8997", 2720 | "job": "random" 2721 | }, 2722 | "time": 1633636272.387, 2723 | "value": "1" 2724 | }, 2725 | { 2726 | "metric": { 2727 | "__name__": "up", 2728 | "instance": "demo.do.prometheus.io:8997", 2729 | "job": "random" 2730 | }, 2731 | "time": 1633636332.387, 2732 | "value": "1" 2733 | }, 2734 | { 2735 | "metric": { 2736 | "__name__": "up", 2737 | "instance": "demo.do.prometheus.io:8997", 2738 | "job": "random" 2739 | }, 2740 | "time": 1633636392.387, 2741 | "value": "1" 2742 | }, 2743 | { 2744 | "metric": { 2745 | "__name__": "up", 2746 | "instance": "demo.do.prometheus.io:8997", 2747 | "job": "random" 2748 | }, 2749 | "time": 1633636452.387, 2750 | "value": "1" 2751 | }, 2752 | { 2753 | "metric": { 2754 | "__name__": "up", 2755 | "instance": "demo.do.prometheus.io:8997", 2756 | "job": "random" 2757 | }, 2758 | "time": 1633636512.387, 2759 | "value": "1" 2760 | }, 2761 | { 2762 | "metric": { 2763 | "__name__": "up", 2764 | "instance": "demo.do.prometheus.io:8997", 2765 | "job": "random" 2766 | }, 2767 | "time": 1633636572.387, 2768 | "value": "1" 2769 | }, 2770 | { 2771 | "metric": { 2772 | "__name__": "up", 2773 | "instance": "demo.do.prometheus.io:8997", 2774 | "job": "random" 2775 | }, 2776 | "time": 1633636632.387, 2777 | "value": "1" 2778 | }, 2779 | { 2780 | "metric": { 2781 | "__name__": "up", 2782 | "instance": "demo.do.prometheus.io:8997", 2783 | "job": "random" 2784 | }, 2785 | "time": 1633636692.387, 2786 | "value": "1" 2787 | }, 2788 | { 2789 | "metric": { 2790 | "__name__": "up", 2791 | "instance": "demo.do.prometheus.io:8997", 2792 | "job": "random" 2793 | }, 2794 | "time": 1633636752.387, 2795 | "value": "1" 2796 | }, 2797 | { 2798 | "metric": { 2799 | "__name__": "up", 2800 | "instance": "demo.do.prometheus.io:8997", 2801 | "job": "random" 2802 | }, 2803 | "time": 1633636812.387, 2804 | "value": "1" 2805 | }, 2806 | { 2807 | "metric": { 2808 | "__name__": "up", 2809 | "instance": "demo.do.prometheus.io:8997", 2810 | "job": "random" 2811 | }, 2812 | "time": 1633636872.387, 2813 | "value": "1" 2814 | }, 2815 | { 2816 | "metric": { 2817 | "__name__": "up", 2818 | "instance": "demo.do.prometheus.io:8997", 2819 | "job": "random" 2820 | }, 2821 | "time": 1633636932.387, 2822 | "value": "1" 2823 | }, 2824 | { 2825 | "metric": { 2826 | "__name__": "up", 2827 | "instance": "demo.do.prometheus.io:8997", 2828 | "job": "random" 2829 | }, 2830 | "time": 1633636992.387, 2831 | "value": "1" 2832 | }, 2833 | { 2834 | "metric": { 2835 | "__name__": "up", 2836 | "instance": "demo.do.prometheus.io:8997", 2837 | "job": "random" 2838 | }, 2839 | "time": 1633637052.387, 2840 | "value": "1" 2841 | }, 2842 | { 2843 | "metric": { 2844 | "__name__": "up", 2845 | "instance": "demo.do.prometheus.io:8997", 2846 | "job": "random" 2847 | }, 2848 | "time": 1633637112.387, 2849 | "value": "1" 2850 | }, 2851 | { 2852 | "metric": { 2853 | "__name__": "up", 2854 | "instance": "demo.do.prometheus.io:8997", 2855 | "job": "random" 2856 | }, 2857 | "time": 1633637172.387, 2858 | "value": "1" 2859 | }, 2860 | { 2861 | "metric": { 2862 | "__name__": "up", 2863 | "instance": "demo.do.prometheus.io:8997", 2864 | "job": "random" 2865 | }, 2866 | "time": 1633637232.387, 2867 | "value": "1" 2868 | }, 2869 | { 2870 | "metric": { 2871 | "__name__": "up", 2872 | "instance": "demo.do.prometheus.io:8998", 2873 | "job": "random" 2874 | }, 2875 | "time": 1633633632.387, 2876 | "value": "1" 2877 | }, 2878 | { 2879 | "metric": { 2880 | "__name__": "up", 2881 | "instance": "demo.do.prometheus.io:8998", 2882 | "job": "random" 2883 | }, 2884 | "time": 1633633692.387, 2885 | "value": "1" 2886 | }, 2887 | { 2888 | "metric": { 2889 | "__name__": "up", 2890 | "instance": "demo.do.prometheus.io:8998", 2891 | "job": "random" 2892 | }, 2893 | "time": 1633633752.387, 2894 | "value": "1" 2895 | }, 2896 | { 2897 | "metric": { 2898 | "__name__": "up", 2899 | "instance": "demo.do.prometheus.io:8998", 2900 | "job": "random" 2901 | }, 2902 | "time": 1633633812.387, 2903 | "value": "1" 2904 | }, 2905 | { 2906 | "metric": { 2907 | "__name__": "up", 2908 | "instance": "demo.do.prometheus.io:8998", 2909 | "job": "random" 2910 | }, 2911 | "time": 1633633872.387, 2912 | "value": "1" 2913 | }, 2914 | { 2915 | "metric": { 2916 | "__name__": "up", 2917 | "instance": "demo.do.prometheus.io:8998", 2918 | "job": "random" 2919 | }, 2920 | "time": 1633633932.387, 2921 | "value": "1" 2922 | }, 2923 | { 2924 | "metric": { 2925 | "__name__": "up", 2926 | "instance": "demo.do.prometheus.io:8998", 2927 | "job": "random" 2928 | }, 2929 | "time": 1633633992.387, 2930 | "value": "1" 2931 | }, 2932 | { 2933 | "metric": { 2934 | "__name__": "up", 2935 | "instance": "demo.do.prometheus.io:8998", 2936 | "job": "random" 2937 | }, 2938 | "time": 1633634052.387, 2939 | "value": "1" 2940 | }, 2941 | { 2942 | "metric": { 2943 | "__name__": "up", 2944 | "instance": "demo.do.prometheus.io:8998", 2945 | "job": "random" 2946 | }, 2947 | "time": 1633634112.387, 2948 | "value": "1" 2949 | }, 2950 | { 2951 | "metric": { 2952 | "__name__": "up", 2953 | "instance": "demo.do.prometheus.io:8998", 2954 | "job": "random" 2955 | }, 2956 | "time": 1633634172.387, 2957 | "value": "1" 2958 | }, 2959 | { 2960 | "metric": { 2961 | "__name__": "up", 2962 | "instance": "demo.do.prometheus.io:8998", 2963 | "job": "random" 2964 | }, 2965 | "time": 1633634232.387, 2966 | "value": "1" 2967 | }, 2968 | { 2969 | "metric": { 2970 | "__name__": "up", 2971 | "instance": "demo.do.prometheus.io:8998", 2972 | "job": "random" 2973 | }, 2974 | "time": 1633634292.387, 2975 | "value": "1" 2976 | }, 2977 | { 2978 | "metric": { 2979 | "__name__": "up", 2980 | "instance": "demo.do.prometheus.io:8998", 2981 | "job": "random" 2982 | }, 2983 | "time": 1633634352.387, 2984 | "value": "1" 2985 | }, 2986 | { 2987 | "metric": { 2988 | "__name__": "up", 2989 | "instance": "demo.do.prometheus.io:8998", 2990 | "job": "random" 2991 | }, 2992 | "time": 1633634412.387, 2993 | "value": "1" 2994 | }, 2995 | { 2996 | "metric": { 2997 | "__name__": "up", 2998 | "instance": "demo.do.prometheus.io:8998", 2999 | "job": "random" 3000 | }, 3001 | "time": 1633634472.387, 3002 | "value": "1" 3003 | }, 3004 | { 3005 | "metric": { 3006 | "__name__": "up", 3007 | "instance": "demo.do.prometheus.io:8998", 3008 | "job": "random" 3009 | }, 3010 | "time": 1633634532.387, 3011 | "value": "1" 3012 | }, 3013 | { 3014 | "metric": { 3015 | "__name__": "up", 3016 | "instance": "demo.do.prometheus.io:8998", 3017 | "job": "random" 3018 | }, 3019 | "time": 1633634592.387, 3020 | "value": "1" 3021 | }, 3022 | { 3023 | "metric": { 3024 | "__name__": "up", 3025 | "instance": "demo.do.prometheus.io:8998", 3026 | "job": "random" 3027 | }, 3028 | "time": 1633634652.387, 3029 | "value": "1" 3030 | }, 3031 | { 3032 | "metric": { 3033 | "__name__": "up", 3034 | "instance": "demo.do.prometheus.io:8998", 3035 | "job": "random" 3036 | }, 3037 | "time": 1633634712.387, 3038 | "value": "1" 3039 | }, 3040 | { 3041 | "metric": { 3042 | "__name__": "up", 3043 | "instance": "demo.do.prometheus.io:8998", 3044 | "job": "random" 3045 | }, 3046 | "time": 1633634772.387, 3047 | "value": "1" 3048 | }, 3049 | { 3050 | "metric": { 3051 | "__name__": "up", 3052 | "instance": "demo.do.prometheus.io:8998", 3053 | "job": "random" 3054 | }, 3055 | "time": 1633634832.387, 3056 | "value": "1" 3057 | }, 3058 | { 3059 | "metric": { 3060 | "__name__": "up", 3061 | "instance": "demo.do.prometheus.io:8998", 3062 | "job": "random" 3063 | }, 3064 | "time": 1633634892.387, 3065 | "value": "1" 3066 | }, 3067 | { 3068 | "metric": { 3069 | "__name__": "up", 3070 | "instance": "demo.do.prometheus.io:8998", 3071 | "job": "random" 3072 | }, 3073 | "time": 1633634952.387, 3074 | "value": "1" 3075 | }, 3076 | { 3077 | "metric": { 3078 | "__name__": "up", 3079 | "instance": "demo.do.prometheus.io:8998", 3080 | "job": "random" 3081 | }, 3082 | "time": 1633635012.387, 3083 | "value": "1" 3084 | }, 3085 | { 3086 | "metric": { 3087 | "__name__": "up", 3088 | "instance": "demo.do.prometheus.io:8998", 3089 | "job": "random" 3090 | }, 3091 | "time": 1633635072.387, 3092 | "value": "1" 3093 | }, 3094 | { 3095 | "metric": { 3096 | "__name__": "up", 3097 | "instance": "demo.do.prometheus.io:8998", 3098 | "job": "random" 3099 | }, 3100 | "time": 1633635132.387, 3101 | "value": "1" 3102 | }, 3103 | { 3104 | "metric": { 3105 | "__name__": "up", 3106 | "instance": "demo.do.prometheus.io:8998", 3107 | "job": "random" 3108 | }, 3109 | "time": 1633635192.387, 3110 | "value": "1" 3111 | }, 3112 | { 3113 | "metric": { 3114 | "__name__": "up", 3115 | "instance": "demo.do.prometheus.io:8998", 3116 | "job": "random" 3117 | }, 3118 | "time": 1633635252.387, 3119 | "value": "1" 3120 | }, 3121 | { 3122 | "metric": { 3123 | "__name__": "up", 3124 | "instance": "demo.do.prometheus.io:8998", 3125 | "job": "random" 3126 | }, 3127 | "time": 1633635312.387, 3128 | "value": "1" 3129 | }, 3130 | { 3131 | "metric": { 3132 | "__name__": "up", 3133 | "instance": "demo.do.prometheus.io:8998", 3134 | "job": "random" 3135 | }, 3136 | "time": 1633635372.387, 3137 | "value": "1" 3138 | }, 3139 | { 3140 | "metric": { 3141 | "__name__": "up", 3142 | "instance": "demo.do.prometheus.io:8998", 3143 | "job": "random" 3144 | }, 3145 | "time": 1633635432.387, 3146 | "value": "1" 3147 | }, 3148 | { 3149 | "metric": { 3150 | "__name__": "up", 3151 | "instance": "demo.do.prometheus.io:8998", 3152 | "job": "random" 3153 | }, 3154 | "time": 1633635492.387, 3155 | "value": "1" 3156 | }, 3157 | { 3158 | "metric": { 3159 | "__name__": "up", 3160 | "instance": "demo.do.prometheus.io:8998", 3161 | "job": "random" 3162 | }, 3163 | "time": 1633635552.387, 3164 | "value": "1" 3165 | }, 3166 | { 3167 | "metric": { 3168 | "__name__": "up", 3169 | "instance": "demo.do.prometheus.io:8998", 3170 | "job": "random" 3171 | }, 3172 | "time": 1633635612.387, 3173 | "value": "1" 3174 | }, 3175 | { 3176 | "metric": { 3177 | "__name__": "up", 3178 | "instance": "demo.do.prometheus.io:8998", 3179 | "job": "random" 3180 | }, 3181 | "time": 1633635672.387, 3182 | "value": "1" 3183 | }, 3184 | { 3185 | "metric": { 3186 | "__name__": "up", 3187 | "instance": "demo.do.prometheus.io:8998", 3188 | "job": "random" 3189 | }, 3190 | "time": 1633635732.387, 3191 | "value": "1" 3192 | }, 3193 | { 3194 | "metric": { 3195 | "__name__": "up", 3196 | "instance": "demo.do.prometheus.io:8998", 3197 | "job": "random" 3198 | }, 3199 | "time": 1633635792.387, 3200 | "value": "1" 3201 | }, 3202 | { 3203 | "metric": { 3204 | "__name__": "up", 3205 | "instance": "demo.do.prometheus.io:8998", 3206 | "job": "random" 3207 | }, 3208 | "time": 1633635852.387, 3209 | "value": "1" 3210 | }, 3211 | { 3212 | "metric": { 3213 | "__name__": "up", 3214 | "instance": "demo.do.prometheus.io:8998", 3215 | "job": "random" 3216 | }, 3217 | "time": 1633635912.387, 3218 | "value": "1" 3219 | }, 3220 | { 3221 | "metric": { 3222 | "__name__": "up", 3223 | "instance": "demo.do.prometheus.io:8998", 3224 | "job": "random" 3225 | }, 3226 | "time": 1633635972.387, 3227 | "value": "1" 3228 | }, 3229 | { 3230 | "metric": { 3231 | "__name__": "up", 3232 | "instance": "demo.do.prometheus.io:8998", 3233 | "job": "random" 3234 | }, 3235 | "time": 1633636032.387, 3236 | "value": "1" 3237 | }, 3238 | { 3239 | "metric": { 3240 | "__name__": "up", 3241 | "instance": "demo.do.prometheus.io:8998", 3242 | "job": "random" 3243 | }, 3244 | "time": 1633636092.387, 3245 | "value": "1" 3246 | }, 3247 | { 3248 | "metric": { 3249 | "__name__": "up", 3250 | "instance": "demo.do.prometheus.io:8998", 3251 | "job": "random" 3252 | }, 3253 | "time": 1633636152.387, 3254 | "value": "1" 3255 | }, 3256 | { 3257 | "metric": { 3258 | "__name__": "up", 3259 | "instance": "demo.do.prometheus.io:8998", 3260 | "job": "random" 3261 | }, 3262 | "time": 1633636212.387, 3263 | "value": "1" 3264 | }, 3265 | { 3266 | "metric": { 3267 | "__name__": "up", 3268 | "instance": "demo.do.prometheus.io:8998", 3269 | "job": "random" 3270 | }, 3271 | "time": 1633636272.387, 3272 | "value": "1" 3273 | }, 3274 | { 3275 | "metric": { 3276 | "__name__": "up", 3277 | "instance": "demo.do.prometheus.io:8998", 3278 | "job": "random" 3279 | }, 3280 | "time": 1633636332.387, 3281 | "value": "1" 3282 | }, 3283 | { 3284 | "metric": { 3285 | "__name__": "up", 3286 | "instance": "demo.do.prometheus.io:8998", 3287 | "job": "random" 3288 | }, 3289 | "time": 1633636392.387, 3290 | "value": "1" 3291 | }, 3292 | { 3293 | "metric": { 3294 | "__name__": "up", 3295 | "instance": "demo.do.prometheus.io:8998", 3296 | "job": "random" 3297 | }, 3298 | "time": 1633636452.387, 3299 | "value": "1" 3300 | }, 3301 | { 3302 | "metric": { 3303 | "__name__": "up", 3304 | "instance": "demo.do.prometheus.io:8998", 3305 | "job": "random" 3306 | }, 3307 | "time": 1633636512.387, 3308 | "value": "1" 3309 | }, 3310 | { 3311 | "metric": { 3312 | "__name__": "up", 3313 | "instance": "demo.do.prometheus.io:8998", 3314 | "job": "random" 3315 | }, 3316 | "time": 1633636572.387, 3317 | "value": "1" 3318 | }, 3319 | { 3320 | "metric": { 3321 | "__name__": "up", 3322 | "instance": "demo.do.prometheus.io:8998", 3323 | "job": "random" 3324 | }, 3325 | "time": 1633636632.387, 3326 | "value": "1" 3327 | }, 3328 | { 3329 | "metric": { 3330 | "__name__": "up", 3331 | "instance": "demo.do.prometheus.io:8998", 3332 | "job": "random" 3333 | }, 3334 | "time": 1633636692.387, 3335 | "value": "1" 3336 | }, 3337 | { 3338 | "metric": { 3339 | "__name__": "up", 3340 | "instance": "demo.do.prometheus.io:8998", 3341 | "job": "random" 3342 | }, 3343 | "time": 1633636752.387, 3344 | "value": "1" 3345 | }, 3346 | { 3347 | "metric": { 3348 | "__name__": "up", 3349 | "instance": "demo.do.prometheus.io:8998", 3350 | "job": "random" 3351 | }, 3352 | "time": 1633636812.387, 3353 | "value": "1" 3354 | }, 3355 | { 3356 | "metric": { 3357 | "__name__": "up", 3358 | "instance": "demo.do.prometheus.io:8998", 3359 | "job": "random" 3360 | }, 3361 | "time": 1633636872.387, 3362 | "value": "1" 3363 | }, 3364 | { 3365 | "metric": { 3366 | "__name__": "up", 3367 | "instance": "demo.do.prometheus.io:8998", 3368 | "job": "random" 3369 | }, 3370 | "time": 1633636932.387, 3371 | "value": "1" 3372 | }, 3373 | { 3374 | "metric": { 3375 | "__name__": "up", 3376 | "instance": "demo.do.prometheus.io:8998", 3377 | "job": "random" 3378 | }, 3379 | "time": 1633636992.387, 3380 | "value": "1" 3381 | }, 3382 | { 3383 | "metric": { 3384 | "__name__": "up", 3385 | "instance": "demo.do.prometheus.io:8998", 3386 | "job": "random" 3387 | }, 3388 | "time": 1633637052.387, 3389 | "value": "1" 3390 | }, 3391 | { 3392 | "metric": { 3393 | "__name__": "up", 3394 | "instance": "demo.do.prometheus.io:8998", 3395 | "job": "random" 3396 | }, 3397 | "time": 1633637112.387, 3398 | "value": "1" 3399 | }, 3400 | { 3401 | "metric": { 3402 | "__name__": "up", 3403 | "instance": "demo.do.prometheus.io:8998", 3404 | "job": "random" 3405 | }, 3406 | "time": 1633637172.387, 3407 | "value": "1" 3408 | }, 3409 | { 3410 | "metric": { 3411 | "__name__": "up", 3412 | "instance": "demo.do.prometheus.io:8998", 3413 | "job": "random" 3414 | }, 3415 | "time": 1633637232.387, 3416 | "value": "1" 3417 | }, 3418 | { 3419 | "metric": { 3420 | "__name__": "up", 3421 | "instance": "demo.do.prometheus.io:8999", 3422 | "job": "random" 3423 | }, 3424 | "time": 1633633632.387, 3425 | "value": "1" 3426 | }, 3427 | { 3428 | "metric": { 3429 | "__name__": "up", 3430 | "instance": "demo.do.prometheus.io:8999", 3431 | "job": "random" 3432 | }, 3433 | "time": 1633633692.387, 3434 | "value": "1" 3435 | }, 3436 | { 3437 | "metric": { 3438 | "__name__": "up", 3439 | "instance": "demo.do.prometheus.io:8999", 3440 | "job": "random" 3441 | }, 3442 | "time": 1633633752.387, 3443 | "value": "1" 3444 | }, 3445 | { 3446 | "metric": { 3447 | "__name__": "up", 3448 | "instance": "demo.do.prometheus.io:8999", 3449 | "job": "random" 3450 | }, 3451 | "time": 1633633812.387, 3452 | "value": "1" 3453 | }, 3454 | { 3455 | "metric": { 3456 | "__name__": "up", 3457 | "instance": "demo.do.prometheus.io:8999", 3458 | "job": "random" 3459 | }, 3460 | "time": 1633633872.387, 3461 | "value": "1" 3462 | }, 3463 | { 3464 | "metric": { 3465 | "__name__": "up", 3466 | "instance": "demo.do.prometheus.io:8999", 3467 | "job": "random" 3468 | }, 3469 | "time": 1633633932.387, 3470 | "value": "1" 3471 | }, 3472 | { 3473 | "metric": { 3474 | "__name__": "up", 3475 | "instance": "demo.do.prometheus.io:8999", 3476 | "job": "random" 3477 | }, 3478 | "time": 1633633992.387, 3479 | "value": "1" 3480 | }, 3481 | { 3482 | "metric": { 3483 | "__name__": "up", 3484 | "instance": "demo.do.prometheus.io:8999", 3485 | "job": "random" 3486 | }, 3487 | "time": 1633634052.387, 3488 | "value": "1" 3489 | }, 3490 | { 3491 | "metric": { 3492 | "__name__": "up", 3493 | "instance": "demo.do.prometheus.io:8999", 3494 | "job": "random" 3495 | }, 3496 | "time": 1633634112.387, 3497 | "value": "1" 3498 | }, 3499 | { 3500 | "metric": { 3501 | "__name__": "up", 3502 | "instance": "demo.do.prometheus.io:8999", 3503 | "job": "random" 3504 | }, 3505 | "time": 1633634172.387, 3506 | "value": "1" 3507 | }, 3508 | { 3509 | "metric": { 3510 | "__name__": "up", 3511 | "instance": "demo.do.prometheus.io:8999", 3512 | "job": "random" 3513 | }, 3514 | "time": 1633634232.387, 3515 | "value": "1" 3516 | }, 3517 | { 3518 | "metric": { 3519 | "__name__": "up", 3520 | "instance": "demo.do.prometheus.io:8999", 3521 | "job": "random" 3522 | }, 3523 | "time": 1633634292.387, 3524 | "value": "1" 3525 | }, 3526 | { 3527 | "metric": { 3528 | "__name__": "up", 3529 | "instance": "demo.do.prometheus.io:8999", 3530 | "job": "random" 3531 | }, 3532 | "time": 1633634352.387, 3533 | "value": "1" 3534 | }, 3535 | { 3536 | "metric": { 3537 | "__name__": "up", 3538 | "instance": "demo.do.prometheus.io:8999", 3539 | "job": "random" 3540 | }, 3541 | "time": 1633634412.387, 3542 | "value": "1" 3543 | }, 3544 | { 3545 | "metric": { 3546 | "__name__": "up", 3547 | "instance": "demo.do.prometheus.io:8999", 3548 | "job": "random" 3549 | }, 3550 | "time": 1633634472.387, 3551 | "value": "1" 3552 | }, 3553 | { 3554 | "metric": { 3555 | "__name__": "up", 3556 | "instance": "demo.do.prometheus.io:8999", 3557 | "job": "random" 3558 | }, 3559 | "time": 1633634532.387, 3560 | "value": "1" 3561 | }, 3562 | { 3563 | "metric": { 3564 | "__name__": "up", 3565 | "instance": "demo.do.prometheus.io:8999", 3566 | "job": "random" 3567 | }, 3568 | "time": 1633634592.387, 3569 | "value": "1" 3570 | }, 3571 | { 3572 | "metric": { 3573 | "__name__": "up", 3574 | "instance": "demo.do.prometheus.io:8999", 3575 | "job": "random" 3576 | }, 3577 | "time": 1633634652.387, 3578 | "value": "1" 3579 | }, 3580 | { 3581 | "metric": { 3582 | "__name__": "up", 3583 | "instance": "demo.do.prometheus.io:8999", 3584 | "job": "random" 3585 | }, 3586 | "time": 1633634712.387, 3587 | "value": "1" 3588 | }, 3589 | { 3590 | "metric": { 3591 | "__name__": "up", 3592 | "instance": "demo.do.prometheus.io:8999", 3593 | "job": "random" 3594 | }, 3595 | "time": 1633634772.387, 3596 | "value": "1" 3597 | }, 3598 | { 3599 | "metric": { 3600 | "__name__": "up", 3601 | "instance": "demo.do.prometheus.io:8999", 3602 | "job": "random" 3603 | }, 3604 | "time": 1633634832.387, 3605 | "value": "1" 3606 | }, 3607 | { 3608 | "metric": { 3609 | "__name__": "up", 3610 | "instance": "demo.do.prometheus.io:8999", 3611 | "job": "random" 3612 | }, 3613 | "time": 1633634892.387, 3614 | "value": "1" 3615 | }, 3616 | { 3617 | "metric": { 3618 | "__name__": "up", 3619 | "instance": "demo.do.prometheus.io:8999", 3620 | "job": "random" 3621 | }, 3622 | "time": 1633634952.387, 3623 | "value": "1" 3624 | }, 3625 | { 3626 | "metric": { 3627 | "__name__": "up", 3628 | "instance": "demo.do.prometheus.io:8999", 3629 | "job": "random" 3630 | }, 3631 | "time": 1633635012.387, 3632 | "value": "1" 3633 | }, 3634 | { 3635 | "metric": { 3636 | "__name__": "up", 3637 | "instance": "demo.do.prometheus.io:8999", 3638 | "job": "random" 3639 | }, 3640 | "time": 1633635072.387, 3641 | "value": "1" 3642 | }, 3643 | { 3644 | "metric": { 3645 | "__name__": "up", 3646 | "instance": "demo.do.prometheus.io:8999", 3647 | "job": "random" 3648 | }, 3649 | "time": 1633635132.387, 3650 | "value": "1" 3651 | }, 3652 | { 3653 | "metric": { 3654 | "__name__": "up", 3655 | "instance": "demo.do.prometheus.io:8999", 3656 | "job": "random" 3657 | }, 3658 | "time": 1633635192.387, 3659 | "value": "1" 3660 | }, 3661 | { 3662 | "metric": { 3663 | "__name__": "up", 3664 | "instance": "demo.do.prometheus.io:8999", 3665 | "job": "random" 3666 | }, 3667 | "time": 1633635252.387, 3668 | "value": "1" 3669 | }, 3670 | { 3671 | "metric": { 3672 | "__name__": "up", 3673 | "instance": "demo.do.prometheus.io:8999", 3674 | "job": "random" 3675 | }, 3676 | "time": 1633635312.387, 3677 | "value": "1" 3678 | }, 3679 | { 3680 | "metric": { 3681 | "__name__": "up", 3682 | "instance": "demo.do.prometheus.io:8999", 3683 | "job": "random" 3684 | }, 3685 | "time": 1633635372.387, 3686 | "value": "1" 3687 | }, 3688 | { 3689 | "metric": { 3690 | "__name__": "up", 3691 | "instance": "demo.do.prometheus.io:8999", 3692 | "job": "random" 3693 | }, 3694 | "time": 1633635432.387, 3695 | "value": "1" 3696 | }, 3697 | { 3698 | "metric": { 3699 | "__name__": "up", 3700 | "instance": "demo.do.prometheus.io:8999", 3701 | "job": "random" 3702 | }, 3703 | "time": 1633635492.387, 3704 | "value": "1" 3705 | }, 3706 | { 3707 | "metric": { 3708 | "__name__": "up", 3709 | "instance": "demo.do.prometheus.io:8999", 3710 | "job": "random" 3711 | }, 3712 | "time": 1633635552.387, 3713 | "value": "1" 3714 | }, 3715 | { 3716 | "metric": { 3717 | "__name__": "up", 3718 | "instance": "demo.do.prometheus.io:8999", 3719 | "job": "random" 3720 | }, 3721 | "time": 1633635612.387, 3722 | "value": "1" 3723 | }, 3724 | { 3725 | "metric": { 3726 | "__name__": "up", 3727 | "instance": "demo.do.prometheus.io:8999", 3728 | "job": "random" 3729 | }, 3730 | "time": 1633635672.387, 3731 | "value": "1" 3732 | }, 3733 | { 3734 | "metric": { 3735 | "__name__": "up", 3736 | "instance": "demo.do.prometheus.io:8999", 3737 | "job": "random" 3738 | }, 3739 | "time": 1633635732.387, 3740 | "value": "1" 3741 | }, 3742 | { 3743 | "metric": { 3744 | "__name__": "up", 3745 | "instance": "demo.do.prometheus.io:8999", 3746 | "job": "random" 3747 | }, 3748 | "time": 1633635792.387, 3749 | "value": "1" 3750 | }, 3751 | { 3752 | "metric": { 3753 | "__name__": "up", 3754 | "instance": "demo.do.prometheus.io:8999", 3755 | "job": "random" 3756 | }, 3757 | "time": 1633635852.387, 3758 | "value": "1" 3759 | }, 3760 | { 3761 | "metric": { 3762 | "__name__": "up", 3763 | "instance": "demo.do.prometheus.io:8999", 3764 | "job": "random" 3765 | }, 3766 | "time": 1633635912.387, 3767 | "value": "1" 3768 | }, 3769 | { 3770 | "metric": { 3771 | "__name__": "up", 3772 | "instance": "demo.do.prometheus.io:8999", 3773 | "job": "random" 3774 | }, 3775 | "time": 1633635972.387, 3776 | "value": "1" 3777 | }, 3778 | { 3779 | "metric": { 3780 | "__name__": "up", 3781 | "instance": "demo.do.prometheus.io:8999", 3782 | "job": "random" 3783 | }, 3784 | "time": 1633636032.387, 3785 | "value": "1" 3786 | }, 3787 | { 3788 | "metric": { 3789 | "__name__": "up", 3790 | "instance": "demo.do.prometheus.io:8999", 3791 | "job": "random" 3792 | }, 3793 | "time": 1633636092.387, 3794 | "value": "1" 3795 | }, 3796 | { 3797 | "metric": { 3798 | "__name__": "up", 3799 | "instance": "demo.do.prometheus.io:8999", 3800 | "job": "random" 3801 | }, 3802 | "time": 1633636152.387, 3803 | "value": "1" 3804 | }, 3805 | { 3806 | "metric": { 3807 | "__name__": "up", 3808 | "instance": "demo.do.prometheus.io:8999", 3809 | "job": "random" 3810 | }, 3811 | "time": 1633636212.387, 3812 | "value": "1" 3813 | }, 3814 | { 3815 | "metric": { 3816 | "__name__": "up", 3817 | "instance": "demo.do.prometheus.io:8999", 3818 | "job": "random" 3819 | }, 3820 | "time": 1633636272.387, 3821 | "value": "1" 3822 | }, 3823 | { 3824 | "metric": { 3825 | "__name__": "up", 3826 | "instance": "demo.do.prometheus.io:8999", 3827 | "job": "random" 3828 | }, 3829 | "time": 1633636332.387, 3830 | "value": "1" 3831 | }, 3832 | { 3833 | "metric": { 3834 | "__name__": "up", 3835 | "instance": "demo.do.prometheus.io:8999", 3836 | "job": "random" 3837 | }, 3838 | "time": 1633636392.387, 3839 | "value": "1" 3840 | }, 3841 | { 3842 | "metric": { 3843 | "__name__": "up", 3844 | "instance": "demo.do.prometheus.io:8999", 3845 | "job": "random" 3846 | }, 3847 | "time": 1633636452.387, 3848 | "value": "1" 3849 | }, 3850 | { 3851 | "metric": { 3852 | "__name__": "up", 3853 | "instance": "demo.do.prometheus.io:8999", 3854 | "job": "random" 3855 | }, 3856 | "time": 1633636512.387, 3857 | "value": "1" 3858 | }, 3859 | { 3860 | "metric": { 3861 | "__name__": "up", 3862 | "instance": "demo.do.prometheus.io:8999", 3863 | "job": "random" 3864 | }, 3865 | "time": 1633636572.387, 3866 | "value": "1" 3867 | }, 3868 | { 3869 | "metric": { 3870 | "__name__": "up", 3871 | "instance": "demo.do.prometheus.io:8999", 3872 | "job": "random" 3873 | }, 3874 | "time": 1633636632.387, 3875 | "value": "1" 3876 | }, 3877 | { 3878 | "metric": { 3879 | "__name__": "up", 3880 | "instance": "demo.do.prometheus.io:8999", 3881 | "job": "random" 3882 | }, 3883 | "time": 1633636692.387, 3884 | "value": "1" 3885 | }, 3886 | { 3887 | "metric": { 3888 | "__name__": "up", 3889 | "instance": "demo.do.prometheus.io:8999", 3890 | "job": "random" 3891 | }, 3892 | "time": 1633636752.387, 3893 | "value": "1" 3894 | }, 3895 | { 3896 | "metric": { 3897 | "__name__": "up", 3898 | "instance": "demo.do.prometheus.io:8999", 3899 | "job": "random" 3900 | }, 3901 | "time": 1633636812.387, 3902 | "value": "1" 3903 | }, 3904 | { 3905 | "metric": { 3906 | "__name__": "up", 3907 | "instance": "demo.do.prometheus.io:8999", 3908 | "job": "random" 3909 | }, 3910 | "time": 1633636872.387, 3911 | "value": "1" 3912 | }, 3913 | { 3914 | "metric": { 3915 | "__name__": "up", 3916 | "instance": "demo.do.prometheus.io:8999", 3917 | "job": "random" 3918 | }, 3919 | "time": 1633636932.387, 3920 | "value": "1" 3921 | }, 3922 | { 3923 | "metric": { 3924 | "__name__": "up", 3925 | "instance": "demo.do.prometheus.io:8999", 3926 | "job": "random" 3927 | }, 3928 | "time": 1633636992.387, 3929 | "value": "1" 3930 | }, 3931 | { 3932 | "metric": { 3933 | "__name__": "up", 3934 | "instance": "demo.do.prometheus.io:8999", 3935 | "job": "random" 3936 | }, 3937 | "time": 1633637052.387, 3938 | "value": "1" 3939 | }, 3940 | { 3941 | "metric": { 3942 | "__name__": "up", 3943 | "instance": "demo.do.prometheus.io:8999", 3944 | "job": "random" 3945 | }, 3946 | "time": 1633637112.387, 3947 | "value": "1" 3948 | }, 3949 | { 3950 | "metric": { 3951 | "__name__": "up", 3952 | "instance": "demo.do.prometheus.io:8999", 3953 | "job": "random" 3954 | }, 3955 | "time": 1633637172.387, 3956 | "value": "1" 3957 | }, 3958 | { 3959 | "metric": { 3960 | "__name__": "up", 3961 | "instance": "demo.do.prometheus.io:8999", 3962 | "job": "random" 3963 | }, 3964 | "time": 1633637232.387, 3965 | "value": "1" 3966 | }, 3967 | { 3968 | "metric": { 3969 | "__name__": "up", 3970 | "instance": "demo.do.prometheus.io:9090", 3971 | "job": "prometheus" 3972 | }, 3973 | "time": 1633633632.387, 3974 | "value": "1" 3975 | }, 3976 | { 3977 | "metric": { 3978 | "__name__": "up", 3979 | "instance": "demo.do.prometheus.io:9090", 3980 | "job": "prometheus" 3981 | }, 3982 | "time": 1633633692.387, 3983 | "value": "1" 3984 | }, 3985 | { 3986 | "metric": { 3987 | "__name__": "up", 3988 | "instance": "demo.do.prometheus.io:9090", 3989 | "job": "prometheus" 3990 | }, 3991 | "time": 1633633752.387, 3992 | "value": "1" 3993 | }, 3994 | { 3995 | "metric": { 3996 | "__name__": "up", 3997 | "instance": "demo.do.prometheus.io:9090", 3998 | "job": "prometheus" 3999 | }, 4000 | "time": 1633633812.387, 4001 | "value": "1" 4002 | }, 4003 | { 4004 | "metric": { 4005 | "__name__": "up", 4006 | "instance": "demo.do.prometheus.io:9090", 4007 | "job": "prometheus" 4008 | }, 4009 | "time": 1633633872.387, 4010 | "value": "1" 4011 | }, 4012 | { 4013 | "metric": { 4014 | "__name__": "up", 4015 | "instance": "demo.do.prometheus.io:9090", 4016 | "job": "prometheus" 4017 | }, 4018 | "time": 1633633932.387, 4019 | "value": "1" 4020 | }, 4021 | { 4022 | "metric": { 4023 | "__name__": "up", 4024 | "instance": "demo.do.prometheus.io:9090", 4025 | "job": "prometheus" 4026 | }, 4027 | "time": 1633633992.387, 4028 | "value": "1" 4029 | }, 4030 | { 4031 | "metric": { 4032 | "__name__": "up", 4033 | "instance": "demo.do.prometheus.io:9090", 4034 | "job": "prometheus" 4035 | }, 4036 | "time": 1633634052.387, 4037 | "value": "1" 4038 | }, 4039 | { 4040 | "metric": { 4041 | "__name__": "up", 4042 | "instance": "demo.do.prometheus.io:9090", 4043 | "job": "prometheus" 4044 | }, 4045 | "time": 1633634112.387, 4046 | "value": "1" 4047 | }, 4048 | { 4049 | "metric": { 4050 | "__name__": "up", 4051 | "instance": "demo.do.prometheus.io:9090", 4052 | "job": "prometheus" 4053 | }, 4054 | "time": 1633634172.387, 4055 | "value": "1" 4056 | }, 4057 | { 4058 | "metric": { 4059 | "__name__": "up", 4060 | "instance": "demo.do.prometheus.io:9090", 4061 | "job": "prometheus" 4062 | }, 4063 | "time": 1633634232.387, 4064 | "value": "1" 4065 | }, 4066 | { 4067 | "metric": { 4068 | "__name__": "up", 4069 | "instance": "demo.do.prometheus.io:9090", 4070 | "job": "prometheus" 4071 | }, 4072 | "time": 1633634292.387, 4073 | "value": "1" 4074 | }, 4075 | { 4076 | "metric": { 4077 | "__name__": "up", 4078 | "instance": "demo.do.prometheus.io:9090", 4079 | "job": "prometheus" 4080 | }, 4081 | "time": 1633634352.387, 4082 | "value": "1" 4083 | }, 4084 | { 4085 | "metric": { 4086 | "__name__": "up", 4087 | "instance": "demo.do.prometheus.io:9090", 4088 | "job": "prometheus" 4089 | }, 4090 | "time": 1633634412.387, 4091 | "value": "1" 4092 | }, 4093 | { 4094 | "metric": { 4095 | "__name__": "up", 4096 | "instance": "demo.do.prometheus.io:9090", 4097 | "job": "prometheus" 4098 | }, 4099 | "time": 1633634472.387, 4100 | "value": "1" 4101 | }, 4102 | { 4103 | "metric": { 4104 | "__name__": "up", 4105 | "instance": "demo.do.prometheus.io:9090", 4106 | "job": "prometheus" 4107 | }, 4108 | "time": 1633634532.387, 4109 | "value": "1" 4110 | }, 4111 | { 4112 | "metric": { 4113 | "__name__": "up", 4114 | "instance": "demo.do.prometheus.io:9090", 4115 | "job": "prometheus" 4116 | }, 4117 | "time": 1633634592.387, 4118 | "value": "1" 4119 | }, 4120 | { 4121 | "metric": { 4122 | "__name__": "up", 4123 | "instance": "demo.do.prometheus.io:9090", 4124 | "job": "prometheus" 4125 | }, 4126 | "time": 1633634652.387, 4127 | "value": "1" 4128 | }, 4129 | { 4130 | "metric": { 4131 | "__name__": "up", 4132 | "instance": "demo.do.prometheus.io:9090", 4133 | "job": "prometheus" 4134 | }, 4135 | "time": 1633634712.387, 4136 | "value": "1" 4137 | }, 4138 | { 4139 | "metric": { 4140 | "__name__": "up", 4141 | "instance": "demo.do.prometheus.io:9090", 4142 | "job": "prometheus" 4143 | }, 4144 | "time": 1633634772.387, 4145 | "value": "1" 4146 | }, 4147 | { 4148 | "metric": { 4149 | "__name__": "up", 4150 | "instance": "demo.do.prometheus.io:9090", 4151 | "job": "prometheus" 4152 | }, 4153 | "time": 1633634832.387, 4154 | "value": "1" 4155 | }, 4156 | { 4157 | "metric": { 4158 | "__name__": "up", 4159 | "instance": "demo.do.prometheus.io:9090", 4160 | "job": "prometheus" 4161 | }, 4162 | "time": 1633634892.387, 4163 | "value": "1" 4164 | }, 4165 | { 4166 | "metric": { 4167 | "__name__": "up", 4168 | "instance": "demo.do.prometheus.io:9090", 4169 | "job": "prometheus" 4170 | }, 4171 | "time": 1633634952.387, 4172 | "value": "1" 4173 | }, 4174 | { 4175 | "metric": { 4176 | "__name__": "up", 4177 | "instance": "demo.do.prometheus.io:9090", 4178 | "job": "prometheus" 4179 | }, 4180 | "time": 1633635012.387, 4181 | "value": "1" 4182 | }, 4183 | { 4184 | "metric": { 4185 | "__name__": "up", 4186 | "instance": "demo.do.prometheus.io:9090", 4187 | "job": "prometheus" 4188 | }, 4189 | "time": 1633635072.387, 4190 | "value": "1" 4191 | }, 4192 | { 4193 | "metric": { 4194 | "__name__": "up", 4195 | "instance": "demo.do.prometheus.io:9090", 4196 | "job": "prometheus" 4197 | }, 4198 | "time": 1633635132.387, 4199 | "value": "1" 4200 | }, 4201 | { 4202 | "metric": { 4203 | "__name__": "up", 4204 | "instance": "demo.do.prometheus.io:9090", 4205 | "job": "prometheus" 4206 | }, 4207 | "time": 1633635192.387, 4208 | "value": "1" 4209 | }, 4210 | { 4211 | "metric": { 4212 | "__name__": "up", 4213 | "instance": "demo.do.prometheus.io:9090", 4214 | "job": "prometheus" 4215 | }, 4216 | "time": 1633635252.387, 4217 | "value": "1" 4218 | }, 4219 | { 4220 | "metric": { 4221 | "__name__": "up", 4222 | "instance": "demo.do.prometheus.io:9090", 4223 | "job": "prometheus" 4224 | }, 4225 | "time": 1633635312.387, 4226 | "value": "1" 4227 | }, 4228 | { 4229 | "metric": { 4230 | "__name__": "up", 4231 | "instance": "demo.do.prometheus.io:9090", 4232 | "job": "prometheus" 4233 | }, 4234 | "time": 1633635372.387, 4235 | "value": "1" 4236 | }, 4237 | { 4238 | "metric": { 4239 | "__name__": "up", 4240 | "instance": "demo.do.prometheus.io:9090", 4241 | "job": "prometheus" 4242 | }, 4243 | "time": 1633635432.387, 4244 | "value": "1" 4245 | }, 4246 | { 4247 | "metric": { 4248 | "__name__": "up", 4249 | "instance": "demo.do.prometheus.io:9090", 4250 | "job": "prometheus" 4251 | }, 4252 | "time": 1633635492.387, 4253 | "value": "1" 4254 | }, 4255 | { 4256 | "metric": { 4257 | "__name__": "up", 4258 | "instance": "demo.do.prometheus.io:9090", 4259 | "job": "prometheus" 4260 | }, 4261 | "time": 1633635552.387, 4262 | "value": "1" 4263 | }, 4264 | { 4265 | "metric": { 4266 | "__name__": "up", 4267 | "instance": "demo.do.prometheus.io:9090", 4268 | "job": "prometheus" 4269 | }, 4270 | "time": 1633635612.387, 4271 | "value": "1" 4272 | }, 4273 | { 4274 | "metric": { 4275 | "__name__": "up", 4276 | "instance": "demo.do.prometheus.io:9090", 4277 | "job": "prometheus" 4278 | }, 4279 | "time": 1633635672.387, 4280 | "value": "1" 4281 | }, 4282 | { 4283 | "metric": { 4284 | "__name__": "up", 4285 | "instance": "demo.do.prometheus.io:9090", 4286 | "job": "prometheus" 4287 | }, 4288 | "time": 1633635732.387, 4289 | "value": "1" 4290 | }, 4291 | { 4292 | "metric": { 4293 | "__name__": "up", 4294 | "instance": "demo.do.prometheus.io:9090", 4295 | "job": "prometheus" 4296 | }, 4297 | "time": 1633635792.387, 4298 | "value": "1" 4299 | }, 4300 | { 4301 | "metric": { 4302 | "__name__": "up", 4303 | "instance": "demo.do.prometheus.io:9090", 4304 | "job": "prometheus" 4305 | }, 4306 | "time": 1633635852.387, 4307 | "value": "1" 4308 | }, 4309 | { 4310 | "metric": { 4311 | "__name__": "up", 4312 | "instance": "demo.do.prometheus.io:9090", 4313 | "job": "prometheus" 4314 | }, 4315 | "time": 1633635912.387, 4316 | "value": "1" 4317 | }, 4318 | { 4319 | "metric": { 4320 | "__name__": "up", 4321 | "instance": "demo.do.prometheus.io:9090", 4322 | "job": "prometheus" 4323 | }, 4324 | "time": 1633635972.387, 4325 | "value": "1" 4326 | }, 4327 | { 4328 | "metric": { 4329 | "__name__": "up", 4330 | "instance": "demo.do.prometheus.io:9090", 4331 | "job": "prometheus" 4332 | }, 4333 | "time": 1633636032.387, 4334 | "value": "1" 4335 | }, 4336 | { 4337 | "metric": { 4338 | "__name__": "up", 4339 | "instance": "demo.do.prometheus.io:9090", 4340 | "job": "prometheus" 4341 | }, 4342 | "time": 1633636092.387, 4343 | "value": "1" 4344 | }, 4345 | { 4346 | "metric": { 4347 | "__name__": "up", 4348 | "instance": "demo.do.prometheus.io:9090", 4349 | "job": "prometheus" 4350 | }, 4351 | "time": 1633636152.387, 4352 | "value": "1" 4353 | }, 4354 | { 4355 | "metric": { 4356 | "__name__": "up", 4357 | "instance": "demo.do.prometheus.io:9090", 4358 | "job": "prometheus" 4359 | }, 4360 | "time": 1633636212.387, 4361 | "value": "1" 4362 | }, 4363 | { 4364 | "metric": { 4365 | "__name__": "up", 4366 | "instance": "demo.do.prometheus.io:9090", 4367 | "job": "prometheus" 4368 | }, 4369 | "time": 1633636272.387, 4370 | "value": "1" 4371 | }, 4372 | { 4373 | "metric": { 4374 | "__name__": "up", 4375 | "instance": "demo.do.prometheus.io:9090", 4376 | "job": "prometheus" 4377 | }, 4378 | "time": 1633636332.387, 4379 | "value": "1" 4380 | }, 4381 | { 4382 | "metric": { 4383 | "__name__": "up", 4384 | "instance": "demo.do.prometheus.io:9090", 4385 | "job": "prometheus" 4386 | }, 4387 | "time": 1633636392.387, 4388 | "value": "1" 4389 | }, 4390 | { 4391 | "metric": { 4392 | "__name__": "up", 4393 | "instance": "demo.do.prometheus.io:9090", 4394 | "job": "prometheus" 4395 | }, 4396 | "time": 1633636452.387, 4397 | "value": "1" 4398 | }, 4399 | { 4400 | "metric": { 4401 | "__name__": "up", 4402 | "instance": "demo.do.prometheus.io:9090", 4403 | "job": "prometheus" 4404 | }, 4405 | "time": 1633636512.387, 4406 | "value": "1" 4407 | }, 4408 | { 4409 | "metric": { 4410 | "__name__": "up", 4411 | "instance": "demo.do.prometheus.io:9090", 4412 | "job": "prometheus" 4413 | }, 4414 | "time": 1633636572.387, 4415 | "value": "1" 4416 | }, 4417 | { 4418 | "metric": { 4419 | "__name__": "up", 4420 | "instance": "demo.do.prometheus.io:9090", 4421 | "job": "prometheus" 4422 | }, 4423 | "time": 1633636632.387, 4424 | "value": "1" 4425 | }, 4426 | { 4427 | "metric": { 4428 | "__name__": "up", 4429 | "instance": "demo.do.prometheus.io:9090", 4430 | "job": "prometheus" 4431 | }, 4432 | "time": 1633636692.387, 4433 | "value": "1" 4434 | }, 4435 | { 4436 | "metric": { 4437 | "__name__": "up", 4438 | "instance": "demo.do.prometheus.io:9090", 4439 | "job": "prometheus" 4440 | }, 4441 | "time": 1633636752.387, 4442 | "value": "1" 4443 | }, 4444 | { 4445 | "metric": { 4446 | "__name__": "up", 4447 | "instance": "demo.do.prometheus.io:9090", 4448 | "job": "prometheus" 4449 | }, 4450 | "time": 1633636812.387, 4451 | "value": "1" 4452 | }, 4453 | { 4454 | "metric": { 4455 | "__name__": "up", 4456 | "instance": "demo.do.prometheus.io:9090", 4457 | "job": "prometheus" 4458 | }, 4459 | "time": 1633636872.387, 4460 | "value": "1" 4461 | }, 4462 | { 4463 | "metric": { 4464 | "__name__": "up", 4465 | "instance": "demo.do.prometheus.io:9090", 4466 | "job": "prometheus" 4467 | }, 4468 | "time": 1633636932.387, 4469 | "value": "1" 4470 | }, 4471 | { 4472 | "metric": { 4473 | "__name__": "up", 4474 | "instance": "demo.do.prometheus.io:9090", 4475 | "job": "prometheus" 4476 | }, 4477 | "time": 1633636992.387, 4478 | "value": "1" 4479 | }, 4480 | { 4481 | "metric": { 4482 | "__name__": "up", 4483 | "instance": "demo.do.prometheus.io:9090", 4484 | "job": "prometheus" 4485 | }, 4486 | "time": 1633637052.387, 4487 | "value": "1" 4488 | }, 4489 | { 4490 | "metric": { 4491 | "__name__": "up", 4492 | "instance": "demo.do.prometheus.io:9090", 4493 | "job": "prometheus" 4494 | }, 4495 | "time": 1633637112.387, 4496 | "value": "1" 4497 | }, 4498 | { 4499 | "metric": { 4500 | "__name__": "up", 4501 | "instance": "demo.do.prometheus.io:9090", 4502 | "job": "prometheus" 4503 | }, 4504 | "time": 1633637172.387, 4505 | "value": "1" 4506 | }, 4507 | { 4508 | "metric": { 4509 | "__name__": "up", 4510 | "instance": "demo.do.prometheus.io:9090", 4511 | "job": "prometheus" 4512 | }, 4513 | "time": 1633637232.387, 4514 | "value": "1" 4515 | }, 4516 | { 4517 | "metric": { 4518 | "__name__": "up", 4519 | "instance": "http://localhost:9100", 4520 | "job": "blackbox" 4521 | }, 4522 | "time": 1633633632.387, 4523 | "value": "1" 4524 | }, 4525 | { 4526 | "metric": { 4527 | "__name__": "up", 4528 | "instance": "http://localhost:9100", 4529 | "job": "blackbox" 4530 | }, 4531 | "time": 1633633692.387, 4532 | "value": "1" 4533 | }, 4534 | { 4535 | "metric": { 4536 | "__name__": "up", 4537 | "instance": "http://localhost:9100", 4538 | "job": "blackbox" 4539 | }, 4540 | "time": 1633633752.387, 4541 | "value": "1" 4542 | }, 4543 | { 4544 | "metric": { 4545 | "__name__": "up", 4546 | "instance": "http://localhost:9100", 4547 | "job": "blackbox" 4548 | }, 4549 | "time": 1633633812.387, 4550 | "value": "1" 4551 | }, 4552 | { 4553 | "metric": { 4554 | "__name__": "up", 4555 | "instance": "http://localhost:9100", 4556 | "job": "blackbox" 4557 | }, 4558 | "time": 1633633872.387, 4559 | "value": "1" 4560 | }, 4561 | { 4562 | "metric": { 4563 | "__name__": "up", 4564 | "instance": "http://localhost:9100", 4565 | "job": "blackbox" 4566 | }, 4567 | "time": 1633633932.387, 4568 | "value": "1" 4569 | }, 4570 | { 4571 | "metric": { 4572 | "__name__": "up", 4573 | "instance": "http://localhost:9100", 4574 | "job": "blackbox" 4575 | }, 4576 | "time": 1633633992.387, 4577 | "value": "1" 4578 | }, 4579 | { 4580 | "metric": { 4581 | "__name__": "up", 4582 | "instance": "http://localhost:9100", 4583 | "job": "blackbox" 4584 | }, 4585 | "time": 1633634052.387, 4586 | "value": "1" 4587 | }, 4588 | { 4589 | "metric": { 4590 | "__name__": "up", 4591 | "instance": "http://localhost:9100", 4592 | "job": "blackbox" 4593 | }, 4594 | "time": 1633634112.387, 4595 | "value": "1" 4596 | }, 4597 | { 4598 | "metric": { 4599 | "__name__": "up", 4600 | "instance": "http://localhost:9100", 4601 | "job": "blackbox" 4602 | }, 4603 | "time": 1633634172.387, 4604 | "value": "1" 4605 | }, 4606 | { 4607 | "metric": { 4608 | "__name__": "up", 4609 | "instance": "http://localhost:9100", 4610 | "job": "blackbox" 4611 | }, 4612 | "time": 1633634232.387, 4613 | "value": "1" 4614 | }, 4615 | { 4616 | "metric": { 4617 | "__name__": "up", 4618 | "instance": "http://localhost:9100", 4619 | "job": "blackbox" 4620 | }, 4621 | "time": 1633634292.387, 4622 | "value": "1" 4623 | }, 4624 | { 4625 | "metric": { 4626 | "__name__": "up", 4627 | "instance": "http://localhost:9100", 4628 | "job": "blackbox" 4629 | }, 4630 | "time": 1633634352.387, 4631 | "value": "1" 4632 | }, 4633 | { 4634 | "metric": { 4635 | "__name__": "up", 4636 | "instance": "http://localhost:9100", 4637 | "job": "blackbox" 4638 | }, 4639 | "time": 1633634412.387, 4640 | "value": "1" 4641 | }, 4642 | { 4643 | "metric": { 4644 | "__name__": "up", 4645 | "instance": "http://localhost:9100", 4646 | "job": "blackbox" 4647 | }, 4648 | "time": 1633634472.387, 4649 | "value": "1" 4650 | }, 4651 | { 4652 | "metric": { 4653 | "__name__": "up", 4654 | "instance": "http://localhost:9100", 4655 | "job": "blackbox" 4656 | }, 4657 | "time": 1633634532.387, 4658 | "value": "1" 4659 | }, 4660 | { 4661 | "metric": { 4662 | "__name__": "up", 4663 | "instance": "http://localhost:9100", 4664 | "job": "blackbox" 4665 | }, 4666 | "time": 1633634592.387, 4667 | "value": "1" 4668 | }, 4669 | { 4670 | "metric": { 4671 | "__name__": "up", 4672 | "instance": "http://localhost:9100", 4673 | "job": "blackbox" 4674 | }, 4675 | "time": 1633634652.387, 4676 | "value": "1" 4677 | }, 4678 | { 4679 | "metric": { 4680 | "__name__": "up", 4681 | "instance": "http://localhost:9100", 4682 | "job": "blackbox" 4683 | }, 4684 | "time": 1633634712.387, 4685 | "value": "1" 4686 | }, 4687 | { 4688 | "metric": { 4689 | "__name__": "up", 4690 | "instance": "http://localhost:9100", 4691 | "job": "blackbox" 4692 | }, 4693 | "time": 1633634772.387, 4694 | "value": "1" 4695 | }, 4696 | { 4697 | "metric": { 4698 | "__name__": "up", 4699 | "instance": "http://localhost:9100", 4700 | "job": "blackbox" 4701 | }, 4702 | "time": 1633634832.387, 4703 | "value": "1" 4704 | }, 4705 | { 4706 | "metric": { 4707 | "__name__": "up", 4708 | "instance": "http://localhost:9100", 4709 | "job": "blackbox" 4710 | }, 4711 | "time": 1633634892.387, 4712 | "value": "1" 4713 | }, 4714 | { 4715 | "metric": { 4716 | "__name__": "up", 4717 | "instance": "http://localhost:9100", 4718 | "job": "blackbox" 4719 | }, 4720 | "time": 1633634952.387, 4721 | "value": "1" 4722 | }, 4723 | { 4724 | "metric": { 4725 | "__name__": "up", 4726 | "instance": "http://localhost:9100", 4727 | "job": "blackbox" 4728 | }, 4729 | "time": 1633635012.387, 4730 | "value": "1" 4731 | }, 4732 | { 4733 | "metric": { 4734 | "__name__": "up", 4735 | "instance": "http://localhost:9100", 4736 | "job": "blackbox" 4737 | }, 4738 | "time": 1633635072.387, 4739 | "value": "1" 4740 | }, 4741 | { 4742 | "metric": { 4743 | "__name__": "up", 4744 | "instance": "http://localhost:9100", 4745 | "job": "blackbox" 4746 | }, 4747 | "time": 1633635132.387, 4748 | "value": "1" 4749 | }, 4750 | { 4751 | "metric": { 4752 | "__name__": "up", 4753 | "instance": "http://localhost:9100", 4754 | "job": "blackbox" 4755 | }, 4756 | "time": 1633635192.387, 4757 | "value": "1" 4758 | }, 4759 | { 4760 | "metric": { 4761 | "__name__": "up", 4762 | "instance": "http://localhost:9100", 4763 | "job": "blackbox" 4764 | }, 4765 | "time": 1633635252.387, 4766 | "value": "1" 4767 | }, 4768 | { 4769 | "metric": { 4770 | "__name__": "up", 4771 | "instance": "http://localhost:9100", 4772 | "job": "blackbox" 4773 | }, 4774 | "time": 1633635312.387, 4775 | "value": "1" 4776 | }, 4777 | { 4778 | "metric": { 4779 | "__name__": "up", 4780 | "instance": "http://localhost:9100", 4781 | "job": "blackbox" 4782 | }, 4783 | "time": 1633635372.387, 4784 | "value": "1" 4785 | }, 4786 | { 4787 | "metric": { 4788 | "__name__": "up", 4789 | "instance": "http://localhost:9100", 4790 | "job": "blackbox" 4791 | }, 4792 | "time": 1633635432.387, 4793 | "value": "1" 4794 | }, 4795 | { 4796 | "metric": { 4797 | "__name__": "up", 4798 | "instance": "http://localhost:9100", 4799 | "job": "blackbox" 4800 | }, 4801 | "time": 1633635492.387, 4802 | "value": "1" 4803 | }, 4804 | { 4805 | "metric": { 4806 | "__name__": "up", 4807 | "instance": "http://localhost:9100", 4808 | "job": "blackbox" 4809 | }, 4810 | "time": 1633635552.387, 4811 | "value": "1" 4812 | }, 4813 | { 4814 | "metric": { 4815 | "__name__": "up", 4816 | "instance": "http://localhost:9100", 4817 | "job": "blackbox" 4818 | }, 4819 | "time": 1633635612.387, 4820 | "value": "1" 4821 | }, 4822 | { 4823 | "metric": { 4824 | "__name__": "up", 4825 | "instance": "http://localhost:9100", 4826 | "job": "blackbox" 4827 | }, 4828 | "time": 1633635672.387, 4829 | "value": "1" 4830 | }, 4831 | { 4832 | "metric": { 4833 | "__name__": "up", 4834 | "instance": "http://localhost:9100", 4835 | "job": "blackbox" 4836 | }, 4837 | "time": 1633635732.387, 4838 | "value": "1" 4839 | }, 4840 | { 4841 | "metric": { 4842 | "__name__": "up", 4843 | "instance": "http://localhost:9100", 4844 | "job": "blackbox" 4845 | }, 4846 | "time": 1633635792.387, 4847 | "value": "1" 4848 | }, 4849 | { 4850 | "metric": { 4851 | "__name__": "up", 4852 | "instance": "http://localhost:9100", 4853 | "job": "blackbox" 4854 | }, 4855 | "time": 1633635852.387, 4856 | "value": "1" 4857 | }, 4858 | { 4859 | "metric": { 4860 | "__name__": "up", 4861 | "instance": "http://localhost:9100", 4862 | "job": "blackbox" 4863 | }, 4864 | "time": 1633635912.387, 4865 | "value": "1" 4866 | }, 4867 | { 4868 | "metric": { 4869 | "__name__": "up", 4870 | "instance": "http://localhost:9100", 4871 | "job": "blackbox" 4872 | }, 4873 | "time": 1633635972.387, 4874 | "value": "1" 4875 | }, 4876 | { 4877 | "metric": { 4878 | "__name__": "up", 4879 | "instance": "http://localhost:9100", 4880 | "job": "blackbox" 4881 | }, 4882 | "time": 1633636032.387, 4883 | "value": "1" 4884 | }, 4885 | { 4886 | "metric": { 4887 | "__name__": "up", 4888 | "instance": "http://localhost:9100", 4889 | "job": "blackbox" 4890 | }, 4891 | "time": 1633636092.387, 4892 | "value": "1" 4893 | }, 4894 | { 4895 | "metric": { 4896 | "__name__": "up", 4897 | "instance": "http://localhost:9100", 4898 | "job": "blackbox" 4899 | }, 4900 | "time": 1633636152.387, 4901 | "value": "1" 4902 | }, 4903 | { 4904 | "metric": { 4905 | "__name__": "up", 4906 | "instance": "http://localhost:9100", 4907 | "job": "blackbox" 4908 | }, 4909 | "time": 1633636212.387, 4910 | "value": "1" 4911 | }, 4912 | { 4913 | "metric": { 4914 | "__name__": "up", 4915 | "instance": "http://localhost:9100", 4916 | "job": "blackbox" 4917 | }, 4918 | "time": 1633636272.387, 4919 | "value": "1" 4920 | }, 4921 | { 4922 | "metric": { 4923 | "__name__": "up", 4924 | "instance": "http://localhost:9100", 4925 | "job": "blackbox" 4926 | }, 4927 | "time": 1633636332.387, 4928 | "value": "1" 4929 | }, 4930 | { 4931 | "metric": { 4932 | "__name__": "up", 4933 | "instance": "http://localhost:9100", 4934 | "job": "blackbox" 4935 | }, 4936 | "time": 1633636392.387, 4937 | "value": "1" 4938 | }, 4939 | { 4940 | "metric": { 4941 | "__name__": "up", 4942 | "instance": "http://localhost:9100", 4943 | "job": "blackbox" 4944 | }, 4945 | "time": 1633636452.387, 4946 | "value": "1" 4947 | }, 4948 | { 4949 | "metric": { 4950 | "__name__": "up", 4951 | "instance": "http://localhost:9100", 4952 | "job": "blackbox" 4953 | }, 4954 | "time": 1633636512.387, 4955 | "value": "1" 4956 | }, 4957 | { 4958 | "metric": { 4959 | "__name__": "up", 4960 | "instance": "http://localhost:9100", 4961 | "job": "blackbox" 4962 | }, 4963 | "time": 1633636572.387, 4964 | "value": "1" 4965 | }, 4966 | { 4967 | "metric": { 4968 | "__name__": "up", 4969 | "instance": "http://localhost:9100", 4970 | "job": "blackbox" 4971 | }, 4972 | "time": 1633636632.387, 4973 | "value": "1" 4974 | }, 4975 | { 4976 | "metric": { 4977 | "__name__": "up", 4978 | "instance": "http://localhost:9100", 4979 | "job": "blackbox" 4980 | }, 4981 | "time": 1633636692.387, 4982 | "value": "1" 4983 | }, 4984 | { 4985 | "metric": { 4986 | "__name__": "up", 4987 | "instance": "http://localhost:9100", 4988 | "job": "blackbox" 4989 | }, 4990 | "time": 1633636752.387, 4991 | "value": "1" 4992 | }, 4993 | { 4994 | "metric": { 4995 | "__name__": "up", 4996 | "instance": "http://localhost:9100", 4997 | "job": "blackbox" 4998 | }, 4999 | "time": 1633636812.387, 5000 | "value": "1" 5001 | }, 5002 | { 5003 | "metric": { 5004 | "__name__": "up", 5005 | "instance": "http://localhost:9100", 5006 | "job": "blackbox" 5007 | }, 5008 | "time": 1633636872.387, 5009 | "value": "1" 5010 | }, 5011 | { 5012 | "metric": { 5013 | "__name__": "up", 5014 | "instance": "http://localhost:9100", 5015 | "job": "blackbox" 5016 | }, 5017 | "time": 1633636932.387, 5018 | "value": "1" 5019 | }, 5020 | { 5021 | "metric": { 5022 | "__name__": "up", 5023 | "instance": "http://localhost:9100", 5024 | "job": "blackbox" 5025 | }, 5026 | "time": 1633636992.387, 5027 | "value": "1" 5028 | }, 5029 | { 5030 | "metric": { 5031 | "__name__": "up", 5032 | "instance": "http://localhost:9100", 5033 | "job": "blackbox" 5034 | }, 5035 | "time": 1633637052.387, 5036 | "value": "1" 5037 | }, 5038 | { 5039 | "metric": { 5040 | "__name__": "up", 5041 | "instance": "http://localhost:9100", 5042 | "job": "blackbox" 5043 | }, 5044 | "time": 1633637112.387, 5045 | "value": "1" 5046 | }, 5047 | { 5048 | "metric": { 5049 | "__name__": "up", 5050 | "instance": "http://localhost:9100", 5051 | "job": "blackbox" 5052 | }, 5053 | "time": 1633637172.387, 5054 | "value": "1" 5055 | }, 5056 | { 5057 | "metric": { 5058 | "__name__": "up", 5059 | "instance": "http://localhost:9100", 5060 | "job": "blackbox" 5061 | }, 5062 | "time": 1633637232.387, 5063 | "value": "1" 5064 | }, 5065 | { 5066 | "metric": { 5067 | "__name__": "up", 5068 | "instance": "localhost:2019", 5069 | "job": "caddy" 5070 | }, 5071 | "time": 1633633632.387, 5072 | "value": "1" 5073 | }, 5074 | { 5075 | "metric": { 5076 | "__name__": "up", 5077 | "instance": "localhost:2019", 5078 | "job": "caddy" 5079 | }, 5080 | "time": 1633633692.387, 5081 | "value": "1" 5082 | }, 5083 | { 5084 | "metric": { 5085 | "__name__": "up", 5086 | "instance": "localhost:2019", 5087 | "job": "caddy" 5088 | }, 5089 | "time": 1633633752.387, 5090 | "value": "1" 5091 | }, 5092 | { 5093 | "metric": { 5094 | "__name__": "up", 5095 | "instance": "localhost:2019", 5096 | "job": "caddy" 5097 | }, 5098 | "time": 1633633812.387, 5099 | "value": "1" 5100 | }, 5101 | { 5102 | "metric": { 5103 | "__name__": "up", 5104 | "instance": "localhost:2019", 5105 | "job": "caddy" 5106 | }, 5107 | "time": 1633633872.387, 5108 | "value": "1" 5109 | }, 5110 | { 5111 | "metric": { 5112 | "__name__": "up", 5113 | "instance": "localhost:2019", 5114 | "job": "caddy" 5115 | }, 5116 | "time": 1633633932.387, 5117 | "value": "1" 5118 | }, 5119 | { 5120 | "metric": { 5121 | "__name__": "up", 5122 | "instance": "localhost:2019", 5123 | "job": "caddy" 5124 | }, 5125 | "time": 1633633992.387, 5126 | "value": "1" 5127 | }, 5128 | { 5129 | "metric": { 5130 | "__name__": "up", 5131 | "instance": "localhost:2019", 5132 | "job": "caddy" 5133 | }, 5134 | "time": 1633634052.387, 5135 | "value": "1" 5136 | }, 5137 | { 5138 | "metric": { 5139 | "__name__": "up", 5140 | "instance": "localhost:2019", 5141 | "job": "caddy" 5142 | }, 5143 | "time": 1633634112.387, 5144 | "value": "1" 5145 | }, 5146 | { 5147 | "metric": { 5148 | "__name__": "up", 5149 | "instance": "localhost:2019", 5150 | "job": "caddy" 5151 | }, 5152 | "time": 1633634172.387, 5153 | "value": "1" 5154 | }, 5155 | { 5156 | "metric": { 5157 | "__name__": "up", 5158 | "instance": "localhost:2019", 5159 | "job": "caddy" 5160 | }, 5161 | "time": 1633634232.387, 5162 | "value": "1" 5163 | }, 5164 | { 5165 | "metric": { 5166 | "__name__": "up", 5167 | "instance": "localhost:2019", 5168 | "job": "caddy" 5169 | }, 5170 | "time": 1633634292.387, 5171 | "value": "1" 5172 | }, 5173 | { 5174 | "metric": { 5175 | "__name__": "up", 5176 | "instance": "localhost:2019", 5177 | "job": "caddy" 5178 | }, 5179 | "time": 1633634352.387, 5180 | "value": "1" 5181 | }, 5182 | { 5183 | "metric": { 5184 | "__name__": "up", 5185 | "instance": "localhost:2019", 5186 | "job": "caddy" 5187 | }, 5188 | "time": 1633634412.387, 5189 | "value": "1" 5190 | }, 5191 | { 5192 | "metric": { 5193 | "__name__": "up", 5194 | "instance": "localhost:2019", 5195 | "job": "caddy" 5196 | }, 5197 | "time": 1633634472.387, 5198 | "value": "1" 5199 | }, 5200 | { 5201 | "metric": { 5202 | "__name__": "up", 5203 | "instance": "localhost:2019", 5204 | "job": "caddy" 5205 | }, 5206 | "time": 1633634532.387, 5207 | "value": "1" 5208 | }, 5209 | { 5210 | "metric": { 5211 | "__name__": "up", 5212 | "instance": "localhost:2019", 5213 | "job": "caddy" 5214 | }, 5215 | "time": 1633634592.387, 5216 | "value": "1" 5217 | }, 5218 | { 5219 | "metric": { 5220 | "__name__": "up", 5221 | "instance": "localhost:2019", 5222 | "job": "caddy" 5223 | }, 5224 | "time": 1633634652.387, 5225 | "value": "1" 5226 | }, 5227 | { 5228 | "metric": { 5229 | "__name__": "up", 5230 | "instance": "localhost:2019", 5231 | "job": "caddy" 5232 | }, 5233 | "time": 1633634712.387, 5234 | "value": "1" 5235 | }, 5236 | { 5237 | "metric": { 5238 | "__name__": "up", 5239 | "instance": "localhost:2019", 5240 | "job": "caddy" 5241 | }, 5242 | "time": 1633634772.387, 5243 | "value": "1" 5244 | }, 5245 | { 5246 | "metric": { 5247 | "__name__": "up", 5248 | "instance": "localhost:2019", 5249 | "job": "caddy" 5250 | }, 5251 | "time": 1633634832.387, 5252 | "value": "1" 5253 | }, 5254 | { 5255 | "metric": { 5256 | "__name__": "up", 5257 | "instance": "localhost:2019", 5258 | "job": "caddy" 5259 | }, 5260 | "time": 1633634892.387, 5261 | "value": "1" 5262 | }, 5263 | { 5264 | "metric": { 5265 | "__name__": "up", 5266 | "instance": "localhost:2019", 5267 | "job": "caddy" 5268 | }, 5269 | "time": 1633634952.387, 5270 | "value": "1" 5271 | }, 5272 | { 5273 | "metric": { 5274 | "__name__": "up", 5275 | "instance": "localhost:2019", 5276 | "job": "caddy" 5277 | }, 5278 | "time": 1633635012.387, 5279 | "value": "1" 5280 | }, 5281 | { 5282 | "metric": { 5283 | "__name__": "up", 5284 | "instance": "localhost:2019", 5285 | "job": "caddy" 5286 | }, 5287 | "time": 1633635072.387, 5288 | "value": "1" 5289 | }, 5290 | { 5291 | "metric": { 5292 | "__name__": "up", 5293 | "instance": "localhost:2019", 5294 | "job": "caddy" 5295 | }, 5296 | "time": 1633635132.387, 5297 | "value": "1" 5298 | }, 5299 | { 5300 | "metric": { 5301 | "__name__": "up", 5302 | "instance": "localhost:2019", 5303 | "job": "caddy" 5304 | }, 5305 | "time": 1633635192.387, 5306 | "value": "1" 5307 | }, 5308 | { 5309 | "metric": { 5310 | "__name__": "up", 5311 | "instance": "localhost:2019", 5312 | "job": "caddy" 5313 | }, 5314 | "time": 1633635252.387, 5315 | "value": "1" 5316 | }, 5317 | { 5318 | "metric": { 5319 | "__name__": "up", 5320 | "instance": "localhost:2019", 5321 | "job": "caddy" 5322 | }, 5323 | "time": 1633635312.387, 5324 | "value": "1" 5325 | }, 5326 | { 5327 | "metric": { 5328 | "__name__": "up", 5329 | "instance": "localhost:2019", 5330 | "job": "caddy" 5331 | }, 5332 | "time": 1633635372.387, 5333 | "value": "1" 5334 | }, 5335 | { 5336 | "metric": { 5337 | "__name__": "up", 5338 | "instance": "localhost:2019", 5339 | "job": "caddy" 5340 | }, 5341 | "time": 1633635432.387, 5342 | "value": "1" 5343 | }, 5344 | { 5345 | "metric": { 5346 | "__name__": "up", 5347 | "instance": "localhost:2019", 5348 | "job": "caddy" 5349 | }, 5350 | "time": 1633635492.387, 5351 | "value": "1" 5352 | }, 5353 | { 5354 | "metric": { 5355 | "__name__": "up", 5356 | "instance": "localhost:2019", 5357 | "job": "caddy" 5358 | }, 5359 | "time": 1633635552.387, 5360 | "value": "1" 5361 | }, 5362 | { 5363 | "metric": { 5364 | "__name__": "up", 5365 | "instance": "localhost:2019", 5366 | "job": "caddy" 5367 | }, 5368 | "time": 1633635612.387, 5369 | "value": "1" 5370 | }, 5371 | { 5372 | "metric": { 5373 | "__name__": "up", 5374 | "instance": "localhost:2019", 5375 | "job": "caddy" 5376 | }, 5377 | "time": 1633635672.387, 5378 | "value": "1" 5379 | }, 5380 | { 5381 | "metric": { 5382 | "__name__": "up", 5383 | "instance": "localhost:2019", 5384 | "job": "caddy" 5385 | }, 5386 | "time": 1633635732.387, 5387 | "value": "1" 5388 | }, 5389 | { 5390 | "metric": { 5391 | "__name__": "up", 5392 | "instance": "localhost:2019", 5393 | "job": "caddy" 5394 | }, 5395 | "time": 1633635792.387, 5396 | "value": "1" 5397 | }, 5398 | { 5399 | "metric": { 5400 | "__name__": "up", 5401 | "instance": "localhost:2019", 5402 | "job": "caddy" 5403 | }, 5404 | "time": 1633635852.387, 5405 | "value": "1" 5406 | }, 5407 | { 5408 | "metric": { 5409 | "__name__": "up", 5410 | "instance": "localhost:2019", 5411 | "job": "caddy" 5412 | }, 5413 | "time": 1633635912.387, 5414 | "value": "1" 5415 | }, 5416 | { 5417 | "metric": { 5418 | "__name__": "up", 5419 | "instance": "localhost:2019", 5420 | "job": "caddy" 5421 | }, 5422 | "time": 1633635972.387, 5423 | "value": "1" 5424 | }, 5425 | { 5426 | "metric": { 5427 | "__name__": "up", 5428 | "instance": "localhost:2019", 5429 | "job": "caddy" 5430 | }, 5431 | "time": 1633636032.387, 5432 | "value": "1" 5433 | }, 5434 | { 5435 | "metric": { 5436 | "__name__": "up", 5437 | "instance": "localhost:2019", 5438 | "job": "caddy" 5439 | }, 5440 | "time": 1633636092.387, 5441 | "value": "1" 5442 | }, 5443 | { 5444 | "metric": { 5445 | "__name__": "up", 5446 | "instance": "localhost:2019", 5447 | "job": "caddy" 5448 | }, 5449 | "time": 1633636152.387, 5450 | "value": "1" 5451 | }, 5452 | { 5453 | "metric": { 5454 | "__name__": "up", 5455 | "instance": "localhost:2019", 5456 | "job": "caddy" 5457 | }, 5458 | "time": 1633636212.387, 5459 | "value": "1" 5460 | }, 5461 | { 5462 | "metric": { 5463 | "__name__": "up", 5464 | "instance": "localhost:2019", 5465 | "job": "caddy" 5466 | }, 5467 | "time": 1633636272.387, 5468 | "value": "1" 5469 | }, 5470 | { 5471 | "metric": { 5472 | "__name__": "up", 5473 | "instance": "localhost:2019", 5474 | "job": "caddy" 5475 | }, 5476 | "time": 1633636332.387, 5477 | "value": "1" 5478 | }, 5479 | { 5480 | "metric": { 5481 | "__name__": "up", 5482 | "instance": "localhost:2019", 5483 | "job": "caddy" 5484 | }, 5485 | "time": 1633636392.387, 5486 | "value": "1" 5487 | }, 5488 | { 5489 | "metric": { 5490 | "__name__": "up", 5491 | "instance": "localhost:2019", 5492 | "job": "caddy" 5493 | }, 5494 | "time": 1633636452.387, 5495 | "value": "1" 5496 | }, 5497 | { 5498 | "metric": { 5499 | "__name__": "up", 5500 | "instance": "localhost:2019", 5501 | "job": "caddy" 5502 | }, 5503 | "time": 1633636512.387, 5504 | "value": "1" 5505 | }, 5506 | { 5507 | "metric": { 5508 | "__name__": "up", 5509 | "instance": "localhost:2019", 5510 | "job": "caddy" 5511 | }, 5512 | "time": 1633636572.387, 5513 | "value": "1" 5514 | }, 5515 | { 5516 | "metric": { 5517 | "__name__": "up", 5518 | "instance": "localhost:2019", 5519 | "job": "caddy" 5520 | }, 5521 | "time": 1633636632.387, 5522 | "value": "1" 5523 | }, 5524 | { 5525 | "metric": { 5526 | "__name__": "up", 5527 | "instance": "localhost:2019", 5528 | "job": "caddy" 5529 | }, 5530 | "time": 1633636692.387, 5531 | "value": "1" 5532 | }, 5533 | { 5534 | "metric": { 5535 | "__name__": "up", 5536 | "instance": "localhost:2019", 5537 | "job": "caddy" 5538 | }, 5539 | "time": 1633636752.387, 5540 | "value": "1" 5541 | }, 5542 | { 5543 | "metric": { 5544 | "__name__": "up", 5545 | "instance": "localhost:2019", 5546 | "job": "caddy" 5547 | }, 5548 | "time": 1633636812.387, 5549 | "value": "1" 5550 | }, 5551 | { 5552 | "metric": { 5553 | "__name__": "up", 5554 | "instance": "localhost:2019", 5555 | "job": "caddy" 5556 | }, 5557 | "time": 1633636872.387, 5558 | "value": "1" 5559 | }, 5560 | { 5561 | "metric": { 5562 | "__name__": "up", 5563 | "instance": "localhost:2019", 5564 | "job": "caddy" 5565 | }, 5566 | "time": 1633636932.387, 5567 | "value": "1" 5568 | }, 5569 | { 5570 | "metric": { 5571 | "__name__": "up", 5572 | "instance": "localhost:2019", 5573 | "job": "caddy" 5574 | }, 5575 | "time": 1633636992.387, 5576 | "value": "1" 5577 | }, 5578 | { 5579 | "metric": { 5580 | "__name__": "up", 5581 | "instance": "localhost:2019", 5582 | "job": "caddy" 5583 | }, 5584 | "time": 1633637052.387, 5585 | "value": "1" 5586 | }, 5587 | { 5588 | "metric": { 5589 | "__name__": "up", 5590 | "instance": "localhost:2019", 5591 | "job": "caddy" 5592 | }, 5593 | "time": 1633637112.387, 5594 | "value": "1" 5595 | }, 5596 | { 5597 | "metric": { 5598 | "__name__": "up", 5599 | "instance": "localhost:2019", 5600 | "job": "caddy" 5601 | }, 5602 | "time": 1633637172.387, 5603 | "value": "1" 5604 | }, 5605 | { 5606 | "metric": { 5607 | "__name__": "up", 5608 | "instance": "localhost:2019", 5609 | "job": "caddy" 5610 | }, 5611 | "time": 1633637232.387, 5612 | "value": "1" 5613 | } 5614 | ] 5615 | -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | var k=Object.defineProperty;var g=n=>k(n,"__esModule",{value:!0});var b=(n,r)=>{g(n);for(var e in r)k(n,e,{get:r[e],enumerable:!0})};b(exports,{levelPrefix:()=>o,merge:()=>u,shape:()=>p,toString:()=>d});function l(n,r){return JSON.stringify(n)===JSON.stringify(r)}function f(n){return JSON.parse(JSON.stringify(n))}var y={kind:"scalar",name:"null"};function o(n){return[...Array(n*2).keys()].map(r=>" ").join("")}function d(n,r=0){switch(n.kind){case"scalar":return o(r)+n.name;case"array":return o(r)+`Array of 2 | `+d(n.children,r+1);case"object":{let e=Object.keys(n.children);return o(r)+("Object "+(e.length?`with 3 | `+e.map(i=>`${o(r+1)}'${i}' of 4 | ${d(n.children[i],r+2)}`).join(`, 5 | `):"(empty)"))}case"varied":return n.children.map(e=>d(e,r)).join(` or 6 | `);case"unknown":return o(r)+"Unknown"}}function s(n,r){let e=[n];for(;e.length;){let i=e.pop();if(i.kind==="varied"&&i.children.map(c=>e.push(c)),r(i))break}}function h(n,r){if(!n||n.kind==="varied"&&(!n.children||!n.children.length))return r;if(n.kind==="varied"){let i=n,c=!1;if(s(i,t=>{if(r.kind==="varied"&&(s(r,a=>{if(l(t,a))return c=!0,!0}),c))return!0;if(l(t,r))return c=!0,!0}),c)return i}return{kind:"varied",children:[n,r]}}function j(n,r){let e={kind:"varied",children:[]};for(let i of[n,r])s(i,c=>{e=h(e,c)});return e}function m(n,r){let e=Object.keys(n.children),i=Object.keys(r.children),c={kind:"object",children:{}};for(let t=0;tc);let e=[];for(;e.lengthp(i,r));return u(e,r)}function A(n,r){let e=Object.keys(n),i=S(e.length,r),c={kind:"object",children:{}};for(let t=0;t;\n}\n\nexport interface ArrayShape {\n kind: 'array';\n children: Shape;\n}\n\nexport interface VariedShape {\n kind: 'varied';\n children: Shape[];\n}\n\nexport type Shape =\n | ArrayShape\n | ObjectShape\n | VariedShape\n | ScalarShape\n | {\n kind: 'unknown';\n };\n\nexport function levelPrefix(level: number) {\n return [...Array(level * 2).keys()].map((c) => ' ').join('');\n}\n\nexport function toString(shape: Shape, level = 0): string {\n switch (shape.kind) {\n case 'scalar':\n return levelPrefix(level) + shape.name;\n case 'array':\n return (\n levelPrefix(level) + 'Array of\\n' + toString(shape.children, level + 1)\n );\n case 'object': {\n const keys = Object.keys(shape.children);\n return (\n levelPrefix(level) +\n ('Object ' +\n (keys.length\n ? 'with\\n' +\n keys\n .map(\n (k) =>\n `${levelPrefix(level + 1)}'${k}' of\\n${toString(\n shape.children[k],\n level + 2\n )}`\n )\n .join(',\\n')\n : '(empty)'))\n );\n }\n case 'varied':\n return shape.children.map((c) => toString(c, level)).join(' or\\n');\n case 'unknown':\n return levelPrefix(level) + 'Unknown';\n }\n}\n\nfunction walkVaried(varied: VariedShape, cb: (a0: Shape) => boolean | void) {\n const stack: Array = [varied];\n while (stack.length) {\n const top = stack.pop();\n if (top.kind === 'varied') {\n top.children.map((c) => stack.push(c));\n }\n\n if (cb(top)) {\n break;\n }\n }\n}\n\nfunction addUniqueVaried(maybeVaried: Shape, shape: Shape) {\n if (\n !maybeVaried ||\n (maybeVaried.kind === 'varied' &&\n (!maybeVaried.children || !maybeVaried.children.length))\n ) {\n return shape;\n }\n\n if (maybeVaried.kind === 'varied') {\n const varied: VariedShape = maybeVaried;\n\n let found = false;\n walkVaried(varied, (child: Shape) => {\n // Don't try to use variedMerge here, it doesn't recurse correctly.\n if (shape.kind === 'varied') {\n walkVaried(shape, (toAddChild: Shape) => {\n if (deepEquals(child, toAddChild)) {\n found = true;\n return true;\n }\n });\n\n if (found) {\n return true;\n }\n }\n\n //console.log('attempting to add ', shape, 'comparing to ', child, 'is equal?', deepEquals(child, shape));\n if (deepEquals(child, shape)) {\n found = true;\n return true;\n }\n });\n\n // Don't add the same shape twice\n if (found) {\n return varied;\n }\n }\n\n const result: VariedShape = {\n kind: 'varied',\n children: [maybeVaried, shape],\n };\n return result;\n}\n\nfunction variedMerge(a: VariedShape, b: VariedShape): VariedShape {\n let varied: VariedShape = { kind: 'varied', children: [] };\n for (const side of [a, b]) {\n walkVaried(side, (child) => {\n varied = addUniqueVaried(varied, child) as VariedShape;\n });\n }\n\n return varied;\n}\n\nfunction objectMerge(a: ObjectShape, b: ObjectShape): ObjectShape {\n const aKeys = Object.keys(a.children);\n const bKeys = Object.keys(b.children);\n const merged: ObjectShape = {\n kind: 'object',\n children: {},\n };\n\n // First check all aKeys to see if they differ in b\n for (let i = 0; i < aKeys.length; i++) {\n const key = aKeys[i];\n if (bKeys.includes(key)) {\n merged.children[key] = merge([a.children[key], b.children[key]]).children;\n continue;\n }\n\n // If they are new, they must sometimes be null/undefined\n merged.children[key] = addUniqueVaried(a.children[key], NULL_SHAPE);\n }\n\n // now check all bKeys to see if they are new to a\n for (let i = 0; i < bKeys.length; i++) {\n const key = bKeys[i];\n if (!aKeys.includes(key)) {\n // If they are new, they must sometimes be null/undefined\n merged.children[key] = addUniqueVaried(b.children[key], NULL_SHAPE);\n continue;\n }\n\n // Do nothing, it's already been merged.\n }\n\n return merged;\n}\n\nfunction getNRandomUniqueElements(arraySize: number, maxSampleSize: number) {\n if (!maxSampleSize || arraySize <= maxSampleSize) {\n return [...Array(arraySize).keys()].map((_, i) => i);\n }\n\n const unique = [];\n while (unique.length < maxSampleSize) {\n const random = Math.floor(Math.random() * (arraySize - 1)) + 1;\n if (unique.indexOf(random) === -1) {\n unique.push(random);\n }\n }\n\n return unique;\n}\n\nexport function merge(\n shapes: Array,\n sampleSizeMax?: number\n): ArrayShape {\n const merged: ArrayShape = { kind: 'array', children: { kind: 'unknown' } };\n if (!shapes.length) {\n return merged;\n }\n\n const randomUniqueIndexes = getNRandomUniqueElements(\n shapes.length,\n sampleSizeMax || shapes.length\n );\n\n merged.children = shapes[0];\n for (let i = 0; i < randomUniqueIndexes.length; i++) {\n const shape = shapes[randomUniqueIndexes[i]];\n if (deepEquals(merged.children, shape)) {\n continue;\n }\n\n if (shape.kind === 'object' && merged.children.kind === 'object') {\n merged.children = objectMerge(deepClone(merged.children), shape);\n continue;\n }\n\n if (shape.kind === 'array' && merged.children.kind === 'array') {\n merged.children = merge([\n deepClone(merged.children).children,\n shape.children,\n ]);\n continue;\n }\n\n // It's possible this case isn't even possible since 'varied' is\n // something that only gets applied during post-processing here.\n if (shape.kind === 'varied' && merged.children.kind === 'varied') {\n merged.children = variedMerge(\n shape as VariedShape,\n deepClone(merged.children) as VariedShape\n );\n continue;\n }\n\n if (shape.kind === merged.children.kind && shape.kind !== 'scalar') {\n throw new Error(\n `Missing type equality condition for ${shape.kind} merge.`\n );\n }\n\n merged.children = addUniqueVaried(merged.children, shape);\n }\n\n return merged;\n}\n\nfunction shapeOfArray(data: any[], sampleSizeMax: number) {\n const shapes = data.map((d) => shape(d, sampleSizeMax));\n return merge(shapes, sampleSizeMax);\n}\n\nfunction shapeOfObject(\n data: Record,\n sampleSizeMax: number\n): Shape {\n const keys = Object.keys(data);\n\n const randomUniqueIndexes = getNRandomUniqueElements(\n keys.length,\n sampleSizeMax\n );\n\n const os: ObjectShape = { kind: 'object', children: {} };\n for (let i = 0; i < randomUniqueIndexes.length; i++) {\n const key = keys[randomUniqueIndexes[i]];\n os.children[key] = shape(data[key], sampleSizeMax);\n }\n\n return os;\n}\n\nexport function shape(data: any, sampleSizeMax = 5000): Shape {\n try {\n if (Array.isArray(data)) {\n return shapeOfArray(data as any[], sampleSizeMax);\n }\n\n if (data === null) {\n return { kind: 'scalar', name: 'null' };\n }\n\n if (typeof data === 'object') {\n return shapeOfObject(data, sampleSizeMax);\n }\n\n if (typeof data === 'number') {\n return { kind: 'scalar', name: 'number' };\n }\n\n if (typeof data === 'bigint') {\n return { kind: 'scalar', name: 'bigint' };\n }\n\n if (typeof data === 'undefined') {\n return { kind: 'scalar', name: 'null' };\n }\n\n if (typeof data === 'boolean') {\n return { kind: 'scalar', name: 'boolean' };\n }\n\n return { kind: 'scalar', name: 'string' };\n } catch (e) {\n console.error(e);\n return { kind: 'unknown' };\n }\n}\n"], 5 | "mappings": "qIAAA,iFAAoB,EAAQ,EAAQ,CAClC,MAAO,MAAK,UAAU,KAAO,KAAK,UAAU,GAG9C,WAAmB,EAAQ,CACzB,MAAO,MAAK,MAAM,KAAK,UAAU,IAQnC,GAAM,GAA0B,CAAE,KAAM,SAAU,KAAM,QA0BjD,WAAqB,EAAe,CACzC,MAAO,CAAC,GAAG,MAAM,EAAQ,GAAG,QAAQ,IAAI,AAAC,GAAM,KAAK,KAAK,IAGpD,WAAkB,EAAc,EAAQ,EAAW,CACxD,OAAQ,EAAM,UACP,SACH,MAAO,GAAY,GAAS,EAAM,SAC/B,QACH,MACE,GAAY,GAAS;AAAA,EAAe,EAAS,EAAM,SAAU,EAAQ,OAEpE,SAAU,CACb,GAAM,GAAO,OAAO,KAAK,EAAM,UAC/B,MACE,GAAY,GACX,WACE,GAAK,OACF;AAAA,EACA,EACG,IACC,AAAC,GACC,GAAG,EAAY,EAAQ,MAAM;AAAA,EAAU,EACrC,EAAM,SAAS,GACf,EAAQ,MAGb,KAAK;AAAA,GACR,gBAGL,SACH,MAAO,GAAM,SAAS,IAAI,AAAC,GAAM,EAAS,EAAG,IAAQ,KAAK;AAAA,OACvD,UACH,MAAO,GAAY,GAAS,WAIlC,WAAoB,EAAqB,EAAmC,CAC1E,GAAM,GAAsB,CAAC,GAC7B,KAAO,EAAM,QAAQ,CACnB,GAAM,GAAM,EAAM,MAKlB,GAJI,EAAI,OAAS,UACf,EAAI,SAAS,IAAI,AAAC,GAAM,EAAM,KAAK,IAGjC,EAAG,GACL,OAKN,WAAyB,EAAoB,EAAc,CACzD,GACE,CAAC,GACA,EAAY,OAAS,UACnB,EAAC,EAAY,UAAY,CAAC,EAAY,SAAS,QAElD,MAAO,GAGT,GAAI,EAAY,OAAS,SAAU,CACjC,GAAM,GAAsB,EAExB,EAAQ,GAwBZ,GAvBA,EAAW,EAAQ,AAAC,GAAiB,CAEnC,GAAI,EAAM,OAAS,UACjB,GAAW,EAAO,AAAC,GAAsB,CACvC,GAAI,EAAW,EAAO,GACpB,SAAQ,GACD,KAIP,GACF,MAAO,GAKX,GAAI,EAAW,EAAO,GACpB,SAAQ,GACD,KAKP,EACF,MAAO,GAQX,MAJ4B,CAC1B,KAAM,SACN,SAAU,CAAC,EAAa,IAK5B,WAAqB,EAAgB,EAA6B,CAChE,GAAI,GAAsB,CAAE,KAAM,SAAU,SAAU,IACtD,OAAW,KAAQ,CAAC,EAAG,GACrB,EAAW,EAAM,AAAC,GAAU,CAC1B,EAAS,EAAgB,EAAQ,KAIrC,MAAO,GAGT,WAAqB,EAAgB,EAA6B,CAChE,GAAM,GAAQ,OAAO,KAAK,EAAE,UACtB,EAAQ,OAAO,KAAK,EAAE,UACtB,EAAsB,CAC1B,KAAM,SACN,SAAU,IAIZ,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAM,GAAM,EAAM,GAClB,GAAI,EAAM,SAAS,GAAM,CACvB,EAAO,SAAS,GAAO,EAAM,CAAC,EAAE,SAAS,GAAM,EAAE,SAAS,KAAO,SACjE,SAIF,EAAO,SAAS,GAAO,EAAgB,EAAE,SAAS,GAAM,GAI1D,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAM,GAAM,EAAM,GAClB,GAAI,CAAC,EAAM,SAAS,GAAM,CAExB,EAAO,SAAS,GAAO,EAAgB,EAAE,SAAS,GAAM,GACxD,UAMJ,MAAO,GAGT,WAAkC,EAAmB,EAAuB,CAC1E,GAAI,CAAC,GAAiB,GAAa,EACjC,MAAO,CAAC,GAAG,MAAM,GAAW,QAAQ,IAAI,CAAC,EAAG,IAAM,GAGpD,GAAM,GAAS,GACf,KAAO,EAAO,OAAS,GAAe,CACpC,GAAM,GAAS,KAAK,MAAM,KAAK,SAAY,GAAY,IAAM,EAC7D,AAAI,EAAO,QAAQ,KAAY,IAC7B,EAAO,KAAK,GAIhB,MAAO,GAGF,WACL,EACA,EACY,CACZ,GAAM,GAAqB,CAAE,KAAM,QAAS,SAAU,CAAE,KAAM,YAC9D,GAAI,CAAC,EAAO,OACV,MAAO,GAGT,GAAM,GAAsB,EAC1B,EAAO,OACP,GAAiB,EAAO,QAG1B,EAAO,SAAW,EAAO,GACzB,OAAS,GAAI,EAAG,EAAI,EAAoB,OAAQ,IAAK,CACnD,GAAM,GAAQ,EAAO,EAAoB,IACzC,GAAI,GAAW,EAAO,SAAU,GAIhC,IAAI,EAAM,OAAS,UAAY,EAAO,SAAS,OAAS,SAAU,CAChE,EAAO,SAAW,EAAY,EAAU,EAAO,UAAW,GAC1D,SAGF,GAAI,EAAM,OAAS,SAAW,EAAO,SAAS,OAAS,QAAS,CAC9D,EAAO,SAAW,EAAM,CACtB,EAAU,EAAO,UAAU,SAC3B,EAAM,WAER,SAKF,GAAI,EAAM,OAAS,UAAY,EAAO,SAAS,OAAS,SAAU,CAChE,EAAO,SAAW,EAChB,EACA,EAAU,EAAO,WAEnB,SAGF,GAAI,EAAM,OAAS,EAAO,SAAS,MAAQ,EAAM,OAAS,SACxD,KAAM,IAAI,OACR,uCAAuC,EAAM,eAIjD,EAAO,SAAW,EAAgB,EAAO,SAAU,IAGrD,MAAO,GAGT,WAAsB,EAAa,EAAuB,CACxD,GAAM,GAAS,EAAK,IAAI,AAAC,GAAM,EAAM,EAAG,IACxC,MAAO,GAAM,EAAQ,GAGvB,WACE,EACA,EACO,CACP,GAAM,GAAO,OAAO,KAAK,GAEnB,EAAsB,EAC1B,EAAK,OACL,GAGI,EAAkB,CAAE,KAAM,SAAU,SAAU,IACpD,OAAS,GAAI,EAAG,EAAI,EAAoB,OAAQ,IAAK,CACnD,GAAM,GAAM,EAAK,EAAoB,IACrC,EAAG,SAAS,GAAO,EAAM,EAAK,GAAM,GAGtC,MAAO,GAGF,WAAe,EAAW,EAAgB,IAAa,CAC5D,GAAI,CACF,MAAI,OAAM,QAAQ,GACT,EAAa,EAAe,GAGjC,IAAS,KACJ,CAAE,KAAM,SAAU,KAAM,QAG7B,MAAO,IAAS,SACX,EAAc,EAAM,GAGzB,MAAO,IAAS,SACX,CAAE,KAAM,SAAU,KAAM,UAG7B,MAAO,IAAS,SACX,CAAE,KAAM,SAAU,KAAM,UAG7B,MAAO,IAAS,YACX,CAAE,KAAM,SAAU,KAAM,QAG7B,MAAO,IAAS,UACX,CAAE,KAAM,SAAU,KAAM,WAG1B,CAAE,KAAM,SAAU,KAAM,gBACxB,EAAP,CACA,eAAQ,MAAM,GACP,CAAE,KAAM", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /dist/shape.d.ts: -------------------------------------------------------------------------------- 1 | export interface ScalarShape { 2 | kind: 'scalar'; 3 | name: 'null' | 'string' | 'number' | 'boolean' | 'bigint'; 4 | } 5 | export interface ObjectShape { 6 | kind: 'object'; 7 | children: Record; 8 | } 9 | export interface ArrayShape { 10 | kind: 'array'; 11 | children: Shape; 12 | } 13 | export interface VariedShape { 14 | kind: 'varied'; 15 | children: Shape[]; 16 | } 17 | export declare type Shape = ArrayShape | ObjectShape | VariedShape | ScalarShape | { 18 | kind: 'unknown'; 19 | }; 20 | export declare function levelPrefix(level: number): string; 21 | export declare function toString(shape: Shape, level?: number): string; 22 | export declare function merge(shapes: Array, sampleSizeMax?: number): ArrayShape; 23 | export declare function shape(data: any, sampleSizeMax?: number): Shape; 24 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | coverageThreshold: { 3 | global: { 4 | statements: 89, 5 | branches: 89, 6 | functions: 100, 7 | lines: 88, 8 | }, 9 | }, 10 | transform: { 11 | '^.+\\.tsx?$': [ 12 | 'esbuild-jest', 13 | { 14 | sourcemap: true, 15 | }, 16 | ], 17 | }, 18 | collectCoverageFrom: ['**/*.ts'], 19 | modulePathIgnorePatterns: ['/dist/'], 20 | }; 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@multiprocess/shape", 3 | "version": "0.2.2", 4 | "license": "Apache-2.0", 5 | "description": "Basic schema inference for arbitrary JavaScript data objects", 6 | "author": "Multiprocess Labs LLC", 7 | "main": "./dist/index.js", 8 | "types": "./dist/shape.d.ts", 9 | "scripts": { 10 | "typecheck": "yarn tsc", 11 | "format": "yarn prettier --write \"**/*.js\" \"**/*.ts\" \"**/*.json\"", 12 | "test": "yarn jest --coverage", 13 | "build": "yarn esbuild --platform=node --bundle --minify --target=esnext shape.ts --sourcemap --outfile=dist/index.js" 14 | }, 15 | "devDependencies": { 16 | "esbuild": "^0.12.7", 17 | "esbuild-jest": "^0.5.0", 18 | "jest": "^27.0.6", 19 | "prettier": "^2.3.0", 20 | "typescript": "^4.4.0-beta" 21 | }, 22 | "resolutions": { 23 | "tmpl": "^1.0.5", 24 | "set-value": "^4.0.1" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/multiprocessio/shape/8b92efe2e2e32a8ea4b29b73d3aa73710993a4fb/screenshot.png -------------------------------------------------------------------------------- /scripts/fail_on_diff.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -eu 4 | 5 | if [[ "$(git diff)" != "" ]]; then 6 | printf "\033[0;31mFAILURE: Unexpected diff (did you run 'yarn format'?)\n\n\033[0m" 7 | git diff --color=never 8 | exit 1 9 | fi 10 | -------------------------------------------------------------------------------- /shape.test.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const { toString, shape, merge } = require('./shape'); 3 | 4 | const shapeString = (a) => toString(shape(a)); 5 | 6 | test('shape', () => { 7 | expect(shapeString('foo')).toBe('string'); 8 | 9 | expect(shapeString([{}, 1, { a: 2 }])).toBe( 10 | "Array of\n Object (empty) or\n number or\n Object with\n 'a' of\n number" 11 | ); 12 | 13 | expect(shapeString({ b: 'cat', c: true })).toBe( 14 | "Object with\n 'b' of\n string,\n 'c' of\n boolean" 15 | ); 16 | 17 | expect(shapeString(['foo'])).toBe('Array of\n string'); 18 | 19 | expect(shapeString(['foo', 1])).toBe('Array of\n string or\n number'); 20 | 21 | expect( 22 | shapeString([ 23 | { a: 1, b: 2 }, 24 | { a: 3, b: 4 }, 25 | ]) 26 | ).toBe( 27 | "Array of\n Object with\n 'a' of\n number,\n 'b' of\n number" 28 | ); 29 | 30 | expect( 31 | shapeString([ 32 | { a: 1, b: 2 }, 33 | { a: 3, b: null, c: 'hey' }, 34 | ]) 35 | ).toBe( 36 | "Array of\n Object with\n 'a' of\n number,\n 'b' of\n number or\n null,\n 'c' of\n string or\n null" 37 | ); 38 | 39 | expect( 40 | shapeString([ 41 | [1, 2], 42 | ['x', 'y'], 43 | ]) 44 | ).toBe('Array of\n Array of\n number or\n string'); 45 | 46 | expect(shapeString([1, ['x', 'y']])).toBe( 47 | 'Array of\n number or\n Array of\n string' 48 | ); 49 | 50 | expect( 51 | shapeString({ 52 | results: [ 53 | { name: 'Kevin', score: '1' }, 54 | { name: 'Moira', score: 1 }, 55 | { name: 'Alexei', score: 2 }, 56 | { name: 'Tia', score: 2, admin: true }, 57 | ], 58 | pageSize: 5, 59 | total: 100, 60 | nextPage: 'https://myapi.com/p=2', 61 | }) 62 | ).toBe( 63 | "Object with\n 'results' of\n Array of\n Object with\n 'name' of\n string,\n 'score' of\n string or\n number,\n 'admin' of\n boolean or\n null,\n 'pageSize' of\n number,\n 'total' of\n number,\n 'nextPage' of\n string" 64 | ); 65 | }); 66 | 67 | test('basic nested objects to shape-ify correctly', () => { 68 | const identicalObjects = [{ a: { b: 1 } }, { a: { b: 1 } }]; 69 | expect(shape(identicalObjects)).toStrictEqual({ 70 | kind: 'array', 71 | children: { 72 | kind: 'object', 73 | children: { 74 | a: { 75 | kind: 'object', 76 | children: { 77 | b: { 78 | kind: 'scalar', 79 | name: 'number', 80 | }, 81 | }, 82 | }, 83 | }, 84 | }, 85 | }); 86 | 87 | const unidenticalObjects = [ 88 | { a: { b: 1, d: 22 } }, 89 | { a: { c: 'street', d: 80 } }, 90 | ]; 91 | expect(shape(unidenticalObjects)).toStrictEqual({ 92 | kind: 'array', 93 | children: { 94 | kind: 'object', 95 | children: { 96 | a: { 97 | kind: 'object', 98 | children: { 99 | b: { 100 | kind: 'varied', 101 | children: [ 102 | { 103 | kind: 'scalar', 104 | name: 'number', 105 | }, 106 | { 107 | kind: 'scalar', 108 | name: 'null', 109 | }, 110 | ], 111 | }, 112 | d: { 113 | kind: 'scalar', 114 | name: 'number', 115 | }, 116 | c: { 117 | kind: 'varied', 118 | children: [ 119 | { 120 | kind: 'scalar', 121 | name: 'string', 122 | }, 123 | { 124 | kind: 'scalar', 125 | name: 'null', 126 | }, 127 | ], 128 | }, 129 | }, 130 | }, 131 | }, 132 | }, 133 | }); 134 | }); 135 | 136 | test('elasticlogs', () => { 137 | const logs = JSON.parse(fs.readFileSync('./data/elasticlogs').toString()); 138 | expect(shape(logs)).toStrictEqual({ 139 | kind: 'array', 140 | children: { 141 | kind: 'object', 142 | children: { 143 | _index: { 144 | kind: 'scalar', 145 | name: 'string', 146 | }, 147 | _type: { 148 | kind: 'scalar', 149 | name: 'string', 150 | }, 151 | _id: { 152 | kind: 'scalar', 153 | name: 'string', 154 | }, 155 | _score: { 156 | kind: 'scalar', 157 | name: 'null', 158 | }, 159 | _source: { 160 | kind: 'object', 161 | children: { 162 | '@timestamp': { 163 | kind: 'scalar', 164 | name: 'string', 165 | }, 166 | syslog: { 167 | kind: 'object', 168 | children: { 169 | facility: { 170 | kind: 'scalar', 171 | name: 'number', 172 | }, 173 | identifier: { 174 | kind: 'scalar', 175 | name: 'string', 176 | }, 177 | priority: { 178 | kind: 'scalar', 179 | name: 'number', 180 | }, 181 | }, 182 | }, 183 | journald: { 184 | kind: 'object', 185 | children: { 186 | host: { 187 | kind: 'object', 188 | children: { 189 | boot_id: { 190 | kind: 'scalar', 191 | name: 'string', 192 | }, 193 | }, 194 | }, 195 | uid: { 196 | kind: 'scalar', 197 | name: 'number', 198 | }, 199 | pid: { 200 | kind: 'scalar', 201 | name: 'number', 202 | }, 203 | custom: { 204 | kind: 'object', 205 | children: { 206 | tid: { 207 | kind: 'varied', 208 | children: [ 209 | { 210 | kind: 'scalar', 211 | name: 'string', 212 | }, 213 | { 214 | kind: 'scalar', 215 | name: 'null', 216 | }, 217 | ], 218 | }, 219 | user_id: { 220 | kind: 'varied', 221 | children: [ 222 | { 223 | kind: 'scalar', 224 | name: 'string', 225 | }, 226 | { 227 | kind: 'scalar', 228 | name: 'null', 229 | }, 230 | ], 231 | }, 232 | selinux_context: { 233 | kind: 'scalar', 234 | name: 'string', 235 | }, 236 | session_id: { 237 | kind: 'varied', 238 | children: [ 239 | { 240 | kind: 'scalar', 241 | name: 'string', 242 | }, 243 | { 244 | kind: 'scalar', 245 | name: 'null', 246 | }, 247 | ], 248 | }, 249 | stream_id: { 250 | kind: 'varied', 251 | children: [ 252 | { 253 | kind: 'scalar', 254 | name: 'string', 255 | }, 256 | { 257 | kind: 'scalar', 258 | name: 'null', 259 | }, 260 | ], 261 | }, 262 | leader: { 263 | kind: 'varied', 264 | children: [ 265 | { 266 | kind: 'scalar', 267 | name: 'string', 268 | }, 269 | { 270 | kind: 'scalar', 271 | name: 'null', 272 | }, 273 | ], 274 | }, 275 | message_id: { 276 | kind: 'varied', 277 | children: [ 278 | { 279 | kind: 'scalar', 280 | name: 'string', 281 | }, 282 | { 283 | kind: 'scalar', 284 | name: 'null', 285 | }, 286 | ], 287 | }, 288 | }, 289 | }, 290 | code: { 291 | kind: 'varied', 292 | children: [ 293 | { 294 | kind: 'object', 295 | children: { 296 | line: { 297 | kind: 'scalar', 298 | name: 'number', 299 | }, 300 | file: { 301 | kind: 'scalar', 302 | name: 'string', 303 | }, 304 | func: { 305 | kind: 'scalar', 306 | name: 'string', 307 | }, 308 | }, 309 | }, 310 | { 311 | kind: 'scalar', 312 | name: 'null', 313 | }, 314 | ], 315 | }, 316 | process: { 317 | kind: 'object', 318 | children: { 319 | command_line: { 320 | kind: 'scalar', 321 | name: 'string', 322 | }, 323 | name: { 324 | kind: 'scalar', 325 | name: 'string', 326 | }, 327 | capabilites: { 328 | kind: 'scalar', 329 | name: 'string', 330 | }, 331 | executable: { 332 | kind: 'scalar', 333 | name: 'string', 334 | }, 335 | }, 336 | }, 337 | gid: { 338 | kind: 'scalar', 339 | name: 'number', 340 | }, 341 | }, 342 | }, 343 | message: { 344 | kind: 'scalar', 345 | name: 'string', 346 | }, 347 | host: { 348 | kind: 'object', 349 | children: { 350 | architecture: { 351 | kind: 'scalar', 352 | name: 'string', 353 | }, 354 | id: { 355 | kind: 'scalar', 356 | name: 'string', 357 | }, 358 | hostname: { 359 | kind: 'scalar', 360 | name: 'string', 361 | }, 362 | name: { 363 | kind: 'scalar', 364 | name: 'string', 365 | }, 366 | os: { 367 | kind: 'object', 368 | children: { 369 | platform: { 370 | kind: 'scalar', 371 | name: 'string', 372 | }, 373 | version: { 374 | kind: 'scalar', 375 | name: 'string', 376 | }, 377 | family: { 378 | kind: 'scalar', 379 | name: 'string', 380 | }, 381 | name: { 382 | kind: 'scalar', 383 | name: 'string', 384 | }, 385 | kernel: { 386 | kind: 'scalar', 387 | name: 'string', 388 | }, 389 | type: { 390 | kind: 'scalar', 391 | name: 'string', 392 | }, 393 | }, 394 | }, 395 | containerized: { 396 | kind: 'scalar', 397 | name: 'boolean', 398 | }, 399 | ip: { 400 | kind: 'array', 401 | children: { kind: 'scalar', name: 'string' }, 402 | }, 403 | mac: { 404 | kind: 'array', 405 | children: { kind: 'scalar', name: 'string' }, 406 | }, 407 | }, 408 | }, 409 | user: { 410 | kind: 'object', 411 | children: { 412 | group: { 413 | kind: 'object', 414 | children: { 415 | id: { 416 | kind: 'scalar', 417 | name: 'string', 418 | }, 419 | }, 420 | }, 421 | id: { 422 | kind: 'scalar', 423 | name: 'string', 424 | }, 425 | }, 426 | }, 427 | systemd: { 428 | kind: 'object', 429 | children: { 430 | invocation_id: { 431 | kind: 'scalar', 432 | name: 'string', 433 | }, 434 | transport: { 435 | kind: 'scalar', 436 | name: 'string', 437 | }, 438 | slice: { 439 | kind: 'scalar', 440 | name: 'string', 441 | }, 442 | cgroup: { 443 | kind: 'scalar', 444 | name: 'string', 445 | }, 446 | unit: { 447 | kind: 'scalar', 448 | name: 'string', 449 | }, 450 | }, 451 | }, 452 | process: { 453 | kind: 'object', 454 | children: { 455 | args: { 456 | kind: 'array', 457 | children: { kind: 'scalar', name: 'string' }, 458 | }, 459 | args_count: { 460 | kind: 'scalar', 461 | name: 'number', 462 | }, 463 | pid: { 464 | kind: 'scalar', 465 | name: 'number', 466 | }, 467 | command_line: { 468 | kind: 'scalar', 469 | name: 'string', 470 | }, 471 | }, 472 | }, 473 | event: { 474 | kind: 'object', 475 | children: { 476 | kind: { 477 | kind: 'scalar', 478 | name: 'string', 479 | }, 480 | created: { 481 | kind: 'scalar', 482 | name: 'string', 483 | }, 484 | }, 485 | }, 486 | log: { 487 | kind: 'object', 488 | children: { 489 | syslog: { 490 | kind: 'object', 491 | children: { 492 | priority: { 493 | kind: 'scalar', 494 | name: 'number', 495 | }, 496 | facility: { 497 | kind: 'object', 498 | children: { 499 | name: { 500 | kind: 'scalar', 501 | name: 'number', 502 | }, 503 | }, 504 | }, 505 | }, 506 | }, 507 | }, 508 | }, 509 | agent: { 510 | kind: 'object', 511 | children: { 512 | type: { 513 | kind: 'scalar', 514 | name: 'string', 515 | }, 516 | version: { 517 | kind: 'scalar', 518 | name: 'string', 519 | }, 520 | hostname: { 521 | kind: 'scalar', 522 | name: 'string', 523 | }, 524 | ephemeral_id: { 525 | kind: 'scalar', 526 | name: 'string', 527 | }, 528 | id: { 529 | kind: 'scalar', 530 | name: 'string', 531 | }, 532 | name: { 533 | kind: 'scalar', 534 | name: 'string', 535 | }, 536 | }, 537 | }, 538 | ecs: { 539 | kind: 'object', 540 | children: { 541 | version: { 542 | kind: 'scalar', 543 | name: 'string', 544 | }, 545 | }, 546 | }, 547 | cloud: { 548 | kind: 'object', 549 | children: { 550 | instance: { 551 | kind: 'object', 552 | children: { 553 | id: { 554 | kind: 'scalar', 555 | name: 'string', 556 | }, 557 | }, 558 | }, 559 | machine: { 560 | kind: 'object', 561 | children: { 562 | type: { 563 | kind: 'scalar', 564 | name: 'string', 565 | }, 566 | }, 567 | }, 568 | provider: { 569 | kind: 'scalar', 570 | name: 'string', 571 | }, 572 | region: { 573 | kind: 'scalar', 574 | name: 'string', 575 | }, 576 | availability_zone: { 577 | kind: 'scalar', 578 | name: 'string', 579 | }, 580 | service: { 581 | kind: 'object', 582 | children: { 583 | name: { 584 | kind: 'scalar', 585 | name: 'string', 586 | }, 587 | }, 588 | }, 589 | account: { 590 | kind: 'object', 591 | children: { 592 | id: { 593 | kind: 'scalar', 594 | name: 'string', 595 | }, 596 | }, 597 | }, 598 | image: { 599 | kind: 'object', 600 | children: { 601 | id: { 602 | kind: 'scalar', 603 | name: 'string', 604 | }, 605 | }, 606 | }, 607 | }, 608 | }, 609 | }, 610 | }, 611 | sort: { 612 | kind: 'array', 613 | children: { 614 | kind: 'scalar', 615 | name: 'number', 616 | }, 617 | }, 618 | }, 619 | }, 620 | }); 621 | }); 622 | 623 | test('promlogs', () => { 624 | const logs = JSON.parse(fs.readFileSync('./data/promlogs').toString()); 625 | expect(shape(logs)).toStrictEqual({ 626 | kind: 'array', 627 | children: { 628 | kind: 'object', 629 | children: { 630 | metric: { 631 | kind: 'object', 632 | children: { 633 | __name__: { 634 | kind: 'scalar', 635 | name: 'string', 636 | }, 637 | env: { 638 | kind: 'varied', 639 | children: [ 640 | { 641 | kind: 'scalar', 642 | name: 'string', 643 | }, 644 | { 645 | kind: 'scalar', 646 | name: 'null', 647 | }, 648 | ], 649 | }, 650 | instance: { 651 | kind: 'scalar', 652 | name: 'string', 653 | }, 654 | job: { 655 | kind: 'scalar', 656 | name: 'string', 657 | }, 658 | }, 659 | }, 660 | time: { 661 | kind: 'scalar', 662 | name: 'number', 663 | }, 664 | value: { 665 | kind: 'scalar', 666 | name: 'string', 667 | }, 668 | }, 669 | }, 670 | }); 671 | }); 672 | 673 | test('varied merge', () => { 674 | const a = { 675 | kind: 'varied', 676 | children: [ 677 | { 678 | kind: 'scalar', 679 | name: 'number', 680 | }, 681 | { 682 | kind: 'scalar', 683 | name: 'null', 684 | }, 685 | ], 686 | }; 687 | 688 | const b = { 689 | kind: 'varied', 690 | children: [ 691 | { 692 | kind: 'scalar', 693 | name: 'string', 694 | }, 695 | { 696 | kind: 'varied', 697 | children: [ 698 | { 699 | kind: 'scalar', 700 | name: 'null', 701 | }, 702 | ], 703 | }, 704 | ], 705 | }; 706 | 707 | const result = merge([a, b]); 708 | expect(toString(result)).toStrictEqual( 709 | 'Array of\n string or\n null or\n number' 710 | ); 711 | }); 712 | -------------------------------------------------------------------------------- /shape.ts: -------------------------------------------------------------------------------- 1 | function deepEquals(a: any, b: any) { 2 | return JSON.stringify(a) === JSON.stringify(b); 3 | } 4 | 5 | function deepClone(a: any) { 6 | return JSON.parse(JSON.stringify(a)); 7 | } 8 | 9 | export interface ScalarShape { 10 | kind: 'scalar'; 11 | name: 'null' | 'string' | 'number' | 'boolean' | 'bigint'; 12 | } 13 | 14 | const NULL_SHAPE: ScalarShape = { kind: 'scalar', name: 'null' }; 15 | 16 | export interface ObjectShape { 17 | kind: 'object'; 18 | children: Record; 19 | } 20 | 21 | export interface ArrayShape { 22 | kind: 'array'; 23 | children: Shape; 24 | } 25 | 26 | export interface VariedShape { 27 | kind: 'varied'; 28 | children: Shape[]; 29 | } 30 | 31 | export type Shape = 32 | | ArrayShape 33 | | ObjectShape 34 | | VariedShape 35 | | ScalarShape 36 | | { 37 | kind: 'unknown'; 38 | }; 39 | 40 | export function levelPrefix(level: number) { 41 | return [...Array(level * 2).keys()].map((c) => ' ').join(''); 42 | } 43 | 44 | export function toString(shape: Shape, level = 0): string { 45 | switch (shape.kind) { 46 | case 'scalar': 47 | return levelPrefix(level) + shape.name; 48 | case 'array': 49 | return ( 50 | levelPrefix(level) + 'Array of\n' + toString(shape.children, level + 1) 51 | ); 52 | case 'object': { 53 | const keys = Object.keys(shape.children); 54 | return ( 55 | levelPrefix(level) + 56 | ('Object ' + 57 | (keys.length 58 | ? 'with\n' + 59 | keys 60 | .map( 61 | (k) => 62 | `${levelPrefix(level + 1)}'${k}' of\n${toString( 63 | shape.children[k], 64 | level + 2 65 | )}` 66 | ) 67 | .join(',\n') 68 | : '(empty)')) 69 | ); 70 | } 71 | case 'varied': 72 | return shape.children.map((c) => toString(c, level)).join(' or\n'); 73 | case 'unknown': 74 | return levelPrefix(level) + 'Unknown'; 75 | } 76 | } 77 | 78 | function walkVaried(varied: VariedShape, cb: (a0: Shape) => boolean | void) { 79 | const stack: Array = [varied]; 80 | while (stack.length) { 81 | const top = stack.pop(); 82 | if (top.kind === 'varied') { 83 | top.children.map((c) => stack.push(c)); 84 | } 85 | 86 | if (cb(top)) { 87 | break; 88 | } 89 | } 90 | } 91 | 92 | function addUniqueVaried(maybeVaried: Shape, shape: Shape) { 93 | if ( 94 | !maybeVaried || 95 | (maybeVaried.kind === 'varied' && 96 | (!maybeVaried.children || !maybeVaried.children.length)) 97 | ) { 98 | return shape; 99 | } 100 | 101 | if (maybeVaried.kind === 'varied') { 102 | const varied: VariedShape = maybeVaried; 103 | 104 | let found = false; 105 | walkVaried(varied, (child: Shape) => { 106 | // Don't try to use variedMerge here, it doesn't recurse correctly. 107 | if (shape.kind === 'varied') { 108 | walkVaried(shape, (toAddChild: Shape) => { 109 | if (deepEquals(child, toAddChild)) { 110 | found = true; 111 | return true; 112 | } 113 | }); 114 | 115 | if (found) { 116 | return true; 117 | } 118 | } 119 | 120 | //console.log('attempting to add ', shape, 'comparing to ', child, 'is equal?', deepEquals(child, shape)); 121 | if (deepEquals(child, shape)) { 122 | found = true; 123 | return true; 124 | } 125 | }); 126 | 127 | // Don't add the same shape twice 128 | if (found) { 129 | return varied; 130 | } 131 | } 132 | 133 | const result: VariedShape = { 134 | kind: 'varied', 135 | children: [maybeVaried, shape], 136 | }; 137 | return result; 138 | } 139 | 140 | function variedMerge(a: VariedShape, b: VariedShape): VariedShape { 141 | let varied: VariedShape = { kind: 'varied', children: [] }; 142 | for (const side of [a, b]) { 143 | walkVaried(side, (child) => { 144 | varied = addUniqueVaried(varied, child) as VariedShape; 145 | }); 146 | } 147 | 148 | return varied; 149 | } 150 | 151 | function objectMerge(a: ObjectShape, b: ObjectShape): ObjectShape { 152 | const aKeys = Object.keys(a.children); 153 | const bKeys = Object.keys(b.children); 154 | const merged: ObjectShape = { 155 | kind: 'object', 156 | children: {}, 157 | }; 158 | 159 | // First check all aKeys to see if they differ in b 160 | for (let i = 0; i < aKeys.length; i++) { 161 | const key = aKeys[i]; 162 | if (bKeys.includes(key)) { 163 | merged.children[key] = merge([a.children[key], b.children[key]]).children; 164 | continue; 165 | } 166 | 167 | // If they are new, they must sometimes be null/undefined 168 | merged.children[key] = addUniqueVaried(a.children[key], NULL_SHAPE); 169 | } 170 | 171 | // now check all bKeys to see if they are new to a 172 | for (let i = 0; i < bKeys.length; i++) { 173 | const key = bKeys[i]; 174 | if (!aKeys.includes(key)) { 175 | // If they are new, they must sometimes be null/undefined 176 | merged.children[key] = addUniqueVaried(b.children[key], NULL_SHAPE); 177 | continue; 178 | } 179 | 180 | // Do nothing, it's already been merged. 181 | } 182 | 183 | return merged; 184 | } 185 | 186 | function getNRandomUniqueElements(arraySize: number, maxSampleSize: number) { 187 | if (!maxSampleSize || arraySize <= maxSampleSize) { 188 | return [...Array(arraySize).keys()].map((_, i) => i); 189 | } 190 | 191 | const unique = []; 192 | while (unique.length < maxSampleSize) { 193 | const random = Math.floor(Math.random() * (arraySize - 1)) + 1; 194 | if (unique.indexOf(random) === -1) { 195 | unique.push(random); 196 | } 197 | } 198 | 199 | return unique; 200 | } 201 | 202 | export function merge( 203 | shapes: Array, 204 | sampleSizeMax?: number 205 | ): ArrayShape { 206 | const merged: ArrayShape = { kind: 'array', children: { kind: 'unknown' } }; 207 | if (!shapes.length) { 208 | return merged; 209 | } 210 | 211 | const randomUniqueIndexes = getNRandomUniqueElements( 212 | shapes.length, 213 | sampleSizeMax || shapes.length 214 | ); 215 | 216 | merged.children = shapes[0]; 217 | for (let i = 0; i < randomUniqueIndexes.length; i++) { 218 | const shape = shapes[randomUniqueIndexes[i]]; 219 | if (deepEquals(merged.children, shape)) { 220 | continue; 221 | } 222 | 223 | if (shape.kind === 'object' && merged.children.kind === 'object') { 224 | merged.children = objectMerge(deepClone(merged.children), shape); 225 | continue; 226 | } 227 | 228 | if (shape.kind === 'array' && merged.children.kind === 'array') { 229 | merged.children = merge([ 230 | deepClone(merged.children).children, 231 | shape.children, 232 | ]); 233 | continue; 234 | } 235 | 236 | // It's possible this case isn't even possible since 'varied' is 237 | // something that only gets applied during post-processing here. 238 | if (shape.kind === 'varied' && merged.children.kind === 'varied') { 239 | merged.children = variedMerge( 240 | shape as VariedShape, 241 | deepClone(merged.children) as VariedShape 242 | ); 243 | continue; 244 | } 245 | 246 | if (shape.kind === merged.children.kind && shape.kind !== 'scalar') { 247 | throw new Error( 248 | `Missing type equality condition for ${shape.kind} merge.` 249 | ); 250 | } 251 | 252 | merged.children = addUniqueVaried(merged.children, shape); 253 | } 254 | 255 | return merged; 256 | } 257 | 258 | function shapeOfArray(data: any[], sampleSizeMax: number) { 259 | const shapes = data.map((d) => shape(d, sampleSizeMax)); 260 | return merge(shapes, sampleSizeMax); 261 | } 262 | 263 | function shapeOfObject( 264 | data: Record, 265 | sampleSizeMax: number 266 | ): Shape { 267 | const keys = Object.keys(data); 268 | 269 | const randomUniqueIndexes = getNRandomUniqueElements( 270 | keys.length, 271 | sampleSizeMax 272 | ); 273 | 274 | const os: ObjectShape = { kind: 'object', children: {} }; 275 | for (let i = 0; i < randomUniqueIndexes.length; i++) { 276 | const key = keys[randomUniqueIndexes[i]]; 277 | os.children[key] = shape(data[key], sampleSizeMax); 278 | } 279 | 280 | return os; 281 | } 282 | 283 | export function shape(data: any, sampleSizeMax = 5000): Shape { 284 | try { 285 | if (Array.isArray(data)) { 286 | return shapeOfArray(data as any[], sampleSizeMax); 287 | } 288 | 289 | if (data === null) { 290 | return { kind: 'scalar', name: 'null' }; 291 | } 292 | 293 | if (typeof data === 'object') { 294 | return shapeOfObject(data, sampleSizeMax); 295 | } 296 | 297 | if (typeof data === 'number') { 298 | return { kind: 'scalar', name: 'number' }; 299 | } 300 | 301 | if (typeof data === 'bigint') { 302 | return { kind: 'scalar', name: 'bigint' }; 303 | } 304 | 305 | if (typeof data === 'undefined') { 306 | return { kind: 'scalar', name: 'null' }; 307 | } 308 | 309 | if (typeof data === 'boolean') { 310 | return { kind: 'scalar', name: 'boolean' }; 311 | } 312 | 313 | return { kind: 'scalar', name: 'string' }; 314 | } catch (e) { 315 | console.error(e); 316 | return { kind: 'unknown' }; 317 | } 318 | } 319 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": true, 4 | "noImplicitAny": true, 5 | "emitDeclarationOnly": true, 6 | "outDir": "dist", 7 | "target": "esnext", 8 | "module": "commonjs", 9 | "skipLibCheck": true, 10 | "esModuleInterop": true 11 | }, 12 | "exclude": ["node_modules", "*.js", "dist"] 13 | } 14 | --------------------------------------------------------------------------------