├── .gitignore ├── LICENSE ├── README.md ├── dashboards ├── 6.x │ └── http_dashboard.json └── 7.x │ └── http_dashboard.ndjson └── testing ├── README.md ├── add_test_roles.sh ├── armtest ├── Dockerfile ├── run.sh └── runcent.sh ├── configs ├── 100-monitors.yml ├── 1000-monitors.yml ├── 10000-monitors.yml ├── 300-monitors.yml ├── 50000-monitors.yml ├── _template.yml ├── client-auth │ ├── bads-ccert.pem │ ├── bads-ckey.pem │ └── tls-client-auth.yml ├── complete.yml ├── demo.yml ├── generate.py ├── generate_all.sh ├── geo.yml ├── mock-kubernetes.yml ├── redirects.yml ├── sample-synthetics.yml └── tcp_multiport.yml ├── dummy_http ├── README.md └── main.go ├── extend_history ├── .gitignore ├── README.md ├── extend_history.js ├── extend_history.js.map ├── extend_history.ts ├── package-lock.json ├── package.json ├── tsconfig.json └── watch-tsc └── hb-alter.rb /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .idea 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2019- Elastic N.V. 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Uptime Contrib Repository 2 | 3 | This is a collection of OSS Kibana dashboards, and potentially other artifacts, to be used with the Elastic's Uptime and Heartbeat products. 4 | 5 | ## Dashboard installation 6 | 7 | Kibana allows users to import pre-made dashboards to help you begin visualizing data quickly. You can install the dashboards hosted 8 | in this repo using the *Management > Saved objects* page. Full documentation on this process is available in [Kibana](https://www.elastic.co/guide/en/kibana/current/managing-saved-objects.html). 9 | 10 | After importing, visit the [Dashboard](https://www.elastic.co/guide/en/kibana/current/dashboard.html) tab to view and edit your imported dashboards. 11 | 12 | ## Contributing 13 | 14 | All contributions are welcome: Dashboards, visualizations, config examples, etc. 15 | -------------------------------------------------------------------------------- /dashboards/7.x/http_dashboard.ndjson: -------------------------------------------------------------------------------- 1 | {"attributes":{"fieldFormatMap":"{\"@timestamp\":{\"id\":\"date\"}}","fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent.ephemeral_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"agent.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"client.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.account.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.availability_zone\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.instance.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.instance.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.machine.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.project.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.provider\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"cloud.region\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"container.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"container.image.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"container.image.tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"container.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"container.runtime\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"destination.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ecs.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"error.code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"error.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"error.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"error.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.action\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.category\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.created\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.dataset\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.duration\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.end\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.kind\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.module\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.original\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"event.outcome\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.risk_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.risk_score_norm\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.severity\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.timezone\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"event.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.ctime\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.device\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.gid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.group\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.inode\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.mode\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.mtime\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.owner\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.size\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.target_path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"file.uid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"group.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.architecture\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.containerized\",\"type\":\"boolean\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.build\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.body.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.body.content\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.method\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.request.referrer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.body.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.body.content\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.response.status_code\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.content.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.response_header.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.total.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.validate.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.validate_body.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.rtt.write_request.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"http.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"icmp.requests\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"icmp.rtt.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.container.image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.container.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.namespace\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.node.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.pod.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"kubernetes.pod.uid\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"log.level\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"log.original\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"monitor.check_group\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.duration.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"monitor.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.application\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.community_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.direction\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.forwarded_ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.iana_number\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.protocol\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.transport\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"network.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.hostname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.serial_number\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.vendor\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"observer.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"organization.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"organization.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.args\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.executable\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.pid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.ppid\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.start\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.thread.id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"process.working_directory\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"related.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"resolve.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"resolve.rtt.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"server.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.ephemeral_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.state\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"socks5.rtt.connect.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.city_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.continent_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.country_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.country_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.location\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.region_iso_code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.geo.region_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.mac\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.packets\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"source.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"summary.down\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"summary.up\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tcp.rtt.connect.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tcp.rtt.validate.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tls.certificate_not_valid_after\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tls.certificate_not_valid_before\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"tls.rtt.handshake.us\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.domain\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.fragment\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.original\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.password\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.port\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.query\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.scheme\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url.username\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.email\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.full_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.group.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.hash\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.device.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.original\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.family\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.full\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.kernel\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.platform\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.os.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"user_agent.version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"@timestamp","title":"heartbeat-*"},"id":"heartbeat-*","migrationVersion":{"index-pattern":"6.5.0"},"references":[],"type":"index-pattern","updated_at":"2019-04-17T13:55:00.412Z","version":"WzMsMV0="} 2 | {"attributes":{"columns":["monitor.id","http.url","monitor.status","http.response.status_code","monitor.duration.us","tcp.rtt.connect.us","tls.rtt.handshake.us","resolve.rtt.us","http.rtt.content.us"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[{\"query\":{\"match\":{\"monitor.type\":{\"query\":\"http\",\"type\":\"phrase\"}}},\"meta\":{\"value\":\"http\",\"disabled\":false,\"alias\":null,\"key\":\"monitor.type\",\"negate\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"query\":{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":["@timestamp","desc"],"title":"Heartbeat HTTP pings","version":1},"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","migrationVersion":{"search":"7.0.0"},"references":[{"id":"heartbeat-*","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"heartbeat-*","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"search","updated_at":"2019-04-17T13:55:00.875Z","version":"WzQsMV0="} 3 | {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"HTTP ping times","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"area\",\"listeners\":{},\"params\":{\"scale\":\"linear\",\"legendPosition\":\"right\",\"addTimeMarker\":false,\"interpolate\":\"linear\",\"addLegend\":true,\"mode\":\"stacked\",\"defaultYExtents\":false,\"setYExtents\":false,\"addTooltip\":true,\"times\":[]},\"aggs\":[{\"params\":{\"field\":\"resolve.rtt.us\",\"customLabel\":\"\"},\"type\":\"max\",\"enabled\":true,\"id\":\"1\",\"schema\":\"metric\"},{\"params\":{\"field\":\"tcp.rtt.connect.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"3\",\"schema\":\"metric\"},{\"params\":{\"field\":\"tls.rtt.handshake.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"5\",\"schema\":\"metric\"},{\"params\":{\"field\":\"http.rtt.response_header.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"4\",\"schema\":\"metric\"},{\"params\":{\"customInterval\":\"2h\",\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}},\"type\":\"date_histogram\",\"enabled\":true,\"id\":\"2\",\"schema\":\"segment\"}],\"title\":\"HTTP ping times\"}"},"id":"c65ef340-eb19-11e6-be20-559646f8b9ba","migrationVersion":{"visualization":"7.1.0"},"references":[{"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2019-04-17T13:55:02.010Z","version":"WzYsMV0="} 4 | {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"HTTP monitors status","uiStateJSON":"{\"vis\": {\"colors\": {\"monitor.status: down\": \"#E24D42\", \"200\": \"#B7DBAB\", \"monitor.status: up\": \"#629E51\"}, \"legendOpen\": true}}","version":1,"visState":"{\"type\":\"pie\",\"listeners\":{},\"params\":{\"legendPosition\":\"bottom\",\"isDonut\":false,\"addTooltip\":true,\"addLegend\":true},\"aggs\":[{\"params\":{\"field\":\"monitor.id\"},\"type\":\"cardinality\",\"enabled\":true,\"id\":\"1\",\"schema\":\"metric\"},{\"params\":{\"filters\":[{\"input\":{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"monitor.status: up\"}}},\"label\":\"\"},{\"input\":{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"monitor.status: down\"}}}}]},\"type\":\"filters\",\"enabled\":true,\"id\":\"3\",\"schema\":\"segment\"},{\"params\":{\"orderBy\":\"1\",\"field\":\"http.response.status_code\",\"order\":\"desc\",\"size\":5},\"type\":\"terms\",\"enabled\":true,\"id\":\"2\",\"schema\":\"segment\"}],\"title\":\"HTTP monitors status\"}"},"id":"920e8140-eb1a-11e6-be20-559646f8b9ba","migrationVersion":{"visualization":"7.1.0"},"references":[{"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2019-04-17T13:55:02.037Z","version":"WzcsMV0="} 5 | {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"kuery\"}}"},"savedSearchRefName":"search_0","title":"HTTP monitors","uiStateJSON":"{\"vis\": {\"params\": {\"sort\": {\"columnIndex\": null, \"direction\": null}}}}","version":1,"visState":"{\"type\":\"table\",\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null},\"perPage\":10,\"showPartialRows\":false,\"showMetricsAtAllLevels\":false,\"totalFunc\":\"sum\",\"showTotal\":false},\"aggs\":[{\"params\":{\"orderBy\":\"1\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"field\":\"monitor.id\",\"otherBucketLabel\":\"Other\",\"otherBucket\":false,\"order\":\"desc\",\"size\":5},\"type\":\"terms\",\"enabled\":true,\"id\":\"2\",\"schema\":\"bucket\"},{\"params\":{\"aggregate\":\"concat\",\"field\":\"monitor.status\",\"sortOrder\":\"desc\",\"sortField\":\"@timestamp\",\"size\":1},\"type\":\"top_hits\",\"enabled\":true,\"id\":\"9\",\"schema\":\"metric\"},{\"params\":{\"field\":\"monitor.duration.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"1\",\"schema\":\"metric\"},{\"params\":{\"field\":\"resolve.rtt.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"5\",\"schema\":\"metric\"},{\"params\":{\"field\":\"tcp.rtt.connect.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"6\",\"schema\":\"metric\"},{\"params\":{\"field\":\"tls.rtt.handshake.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"7\",\"schema\":\"metric\"},{\"params\":{\"field\":\"http.rtt.response_header.us\"},\"type\":\"max\",\"enabled\":true,\"id\":\"8\",\"schema\":\"metric\"},{\"params\":{\"orderBy\":\"1\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"field\":\"monitor.ip\",\"otherBucketLabel\":\"Other\",\"otherBucket\":false,\"order\":\"desc\",\"size\":5},\"type\":\"terms\",\"enabled\":true,\"id\":\"10\",\"schema\":\"bucket\"}],\"title\":\"HTTP monitors\"}"},"id":"1738dbc0-eb1d-11e6-be20-559646f8b9ba","migrationVersion":{"visualization":"7.1.0"},"references":[{"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2019-04-17T13:55:02.016Z","version":"WzksMV0="} 6 | {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"},"savedSearchRefName":"search_0","title":"HTTP up status","uiStateJSON":"{\"vis\": {\"colors\": {\"monitor.status: down\": \"#E24D42\", \"monitor.status: up\": \"#629E51\"}}}","version":1,"visState":"{\"type\":\"area\",\"params\":{\"scale\":\"linear\",\"seriesParams\":[{\"show\":\"true\",\"data\":{\"id\":\"1\",\"label\":\"Percentage of Count\"},\"interpolate\":\"linear\",\"mode\":\"stacked\",\"valueAxis\":\"ValueAxis-1\",\"type\":\"area\"}],\"yAxis\":{\"max\":100,\"min\":0},\"type\":\"area\",\"categoryAxes\":[{\"style\":{},\"scale\":{\"type\":\"linear\"},\"show\":true,\"title\":{},\"labels\":{\"truncate\":100,\"show\":true},\"position\":\"bottom\",\"type\":\"category\",\"id\":\"CategoryAxis-1\"}],\"legendPosition\":\"right\",\"addTimeMarker\":false,\"interpolate\":\"linear\",\"addLegend\":true,\"grid\":{\"style\":{\"color\":\"#eee\"},\"categoryLines\":false},\"mode\":\"percentage\",\"defaultYExtents\":false,\"setYExtents\":true,\"addTooltip\":true,\"valueAxes\":[{\"style\":{},\"scale\":{\"min\":0,\"max\":100,\"mode\":\"percentage\",\"defaultYExtents\":false,\"setYExtents\":true,\"type\":\"linear\"},\"name\":\"LeftAxis-1\",\"show\":true,\"title\":{\"text\":\"Percentage of Count\"},\"labels\":{\"filter\":false,\"rotate\":0,\"truncate\":100,\"show\":true},\"position\":\"left\",\"type\":\"value\",\"id\":\"ValueAxis-1\"}],\"times\":[]},\"aggs\":[{\"params\":{},\"type\":\"count\",\"enabled\":true,\"id\":\"1\",\"schema\":\"metric\"},{\"params\":{\"customInterval\":\"2h\",\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}},\"type\":\"date_histogram\",\"enabled\":true,\"id\":\"2\",\"schema\":\"segment\"},{\"params\":{\"filters\":[{\"input\":{\"query\":\"monitor.status: down\"},\"label\":\"\"},{\"input\":{\"query\":\"monitor.status: up\"}}]},\"type\":\"filters\",\"enabled\":true,\"id\":\"3\",\"schema\":\"group\"}],\"title\":\"HTTP up status\"}"},"id":"091c3a90-eb1e-11e6-be20-559646f8b9ba","migrationVersion":{"visualization":"7.1.0"},"references":[{"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2019-04-17T13:55:02.021Z","version":"WzgsMV0="} 7 | {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[]}"},"savedSearchRefName":"search_0","title":"HTTP duration heatmap","uiStateJSON":"{\"vis\": {\"defaultColors\": {\"8 - 9\": \"rgb(74,152,201)\", \"5 - 6\": \"rgb(148,196,223)\", \"11 - 12\": \"rgb(8,74,145)\", \"2 - 3\": \"rgb(227,238,249)\", \"3 - 4\": \"rgb(208,225,242)\", \"9 - 10\": \"rgb(46,126,188)\", \"4 - 5\": \"rgb(182,212,233)\", \"0 - 2\": \"rgb(247,251,255)\", \"10 - 11\": \"rgb(23,100,171)\", \"6 - 8\": \"rgb(107,174,214)\"}}}","version":1,"visState":"{\"type\":\"heatmap\",\"listeners\":{},\"params\":{\"colorSchema\":\"Blues\",\"invertColors\":false,\"legendPosition\":\"right\",\"addLegend\":true,\"colorsRange\":[],\"colorsNumber\":10,\"setColorRange\":false,\"percentageMode\":false,\"addTooltip\":true,\"valueAxes\":[{\"show\":false,\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"type\":\"value\",\"id\":\"ValueAxis-1\",\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"}}],\"enableHover\":false,\"times\":[]},\"aggs\":[{\"params\":{},\"type\":\"count\",\"enabled\":true,\"id\":\"1\",\"schema\":\"metric\"},{\"params\":{\"customInterval\":\"2h\",\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}},\"type\":\"date_histogram\",\"enabled\":true,\"id\":\"2\",\"schema\":\"segment\"},{\"params\":{\"field\":\"monitor.duration.us\",\"interval\":50000,\"extended_bounds\":{}},\"type\":\"histogram\",\"enabled\":true,\"id\":\"3\",\"schema\":\"group\"}],\"title\":\"HTTP duration heatmap\"}"},"id":"0f4c0560-eb20-11e6-9f11-159ff202874a","migrationVersion":{"visualization":"7.1.0"},"references":[{"id":"02014c80-29d2-11e7-a68f-bfaa2341cc52","name":"search_0","type":"search"}],"type":"visualization","updated_at":"2019-04-17T13:55:02.027Z","version":"WzEwLDFd"} 8 | {"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"filter\":[{\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}}}]}"},"optionsJSON":"{\"darkTheme\": false}","panelsJSON":"[{\"size_x\":12,\"size_y\":4,\"panelIndex\":1,\"col\":1,\"row\":7,\"panelRefName\":\"panel_0\"},{\"size_x\":4,\"size_y\":4,\"panelIndex\":2,\"col\":9,\"row\":1,\"panelRefName\":\"panel_1\"},{\"size_x\":8,\"size_y\":4,\"panelIndex\":3,\"col\":1,\"row\":1,\"panelRefName\":\"panel_2\"},{\"size_x\":12,\"size_y\":2,\"panelIndex\":4,\"col\":1,\"row\":5,\"panelRefName\":\"panel_3\"},{\"size_x\":12,\"size_y\":5,\"panelIndex\":5,\"col\":1,\"row\":11,\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"Heartbeat HTTP monitoring","uiStateJSON":"{\"P-5\": {\"vis\": {\"defaultColors\": {\"8 - 9\": \"rgb(74,152,201)\", \"5 - 6\": \"rgb(148,196,223)\", \"11 - 12\": \"rgb(8,74,145)\", \"2 - 3\": \"rgb(227,238,249)\", \"3 - 4\": \"rgb(208,225,242)\", \"9 - 10\": \"rgb(46,126,188)\", \"4 - 5\": \"rgb(182,212,233)\", \"0 - 2\": \"rgb(247,251,255)\", \"10 - 11\": \"rgb(23,100,171)\", \"6 - 8\": \"rgb(107,174,214)\"}}}, \"P-3\": {\"vis\": {\"params\": {\"sort\": {\"columnIndex\": null, \"direction\": null}}}}}","version":1},"id":"f3e771c0-eb19-11e6-be20-559646f8b9ba","migrationVersion":{"dashboard":"7.0.0"},"references":[{"id":"c65ef340-eb19-11e6-be20-559646f8b9ba","name":"panel_0","type":"visualization"},{"id":"920e8140-eb1a-11e6-be20-559646f8b9ba","name":"panel_1","type":"visualization"},{"id":"1738dbc0-eb1d-11e6-be20-559646f8b9ba","name":"panel_2","type":"visualization"},{"id":"091c3a90-eb1e-11e6-be20-559646f8b9ba","name":"panel_3","type":"visualization"},{"id":"0f4c0560-eb20-11e6-9f11-159ff202874a","name":"panel_4","type":"visualization"}],"type":"dashboard","updated_at":"2019-04-17T13:55:01.780Z","version":"WzUsMV0="} -------------------------------------------------------------------------------- /testing/README.md: -------------------------------------------------------------------------------- 1 | This directory contains sample configs useful for testing. 2 | 3 | It also contains a dummy HTTP server useful for testing Uptime. 4 | 5 | Some of the configs, like `geo.yml` may require you to set the `GEO_NAME` env var. To run the same heartbeat binary in a way that simulates multiple heartbeats in multiple geo locatiosn you would run the commands as illustrated below. 6 | 7 | `env GEO_NAME="minneapolis" ./heartbeat -e -d /tmp/hb1` 8 | `env GEO_NAME="st-paul" ./heartbeat -e -d /tmp/hb2` 9 | -------------------------------------------------------------------------------- /testing/add_test_roles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/user/kibana_user?pretty" -H 'Content-Type: application/json' -d' 4 | { 5 | "password" : "changeme", 6 | "roles" : [ "kibana" ], 7 | "full_name" : "Jack Nicholson", 8 | "email" : "jacknich@example.com" 9 | } 10 | ' 11 | 12 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/role/uptime_read?pretty" -H 'Content-Type: application/json' -d' 13 | { 14 | "indices": [ 15 | { 16 | "names": [ "heartbeat-*"], 17 | "privileges": ["read"] 18 | } 19 | ], 20 | "applications": [ 21 | { 22 | "application": "uptime", 23 | "privileges": [ "read" ], 24 | "resources": [ "*" ] 25 | } 26 | ], 27 | "run_as": [ "other_user" ], // optional 28 | "metadata" : { // optional 29 | "version" : 1 30 | } 31 | } 32 | ' 33 | 34 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/user/uptime_read?pretty" -H 'Content-Type: application/json' -d' 35 | { 36 | "password" : "changeme", 37 | "roles" : [ "uptime_read" ], 38 | "full_name" : "Jack Nicholson", 39 | "email" : "jacknich@example.com" 40 | } 41 | ' 42 | 43 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/role/uptime_all?pretty" -H 'Content-Type: application/json' -d' 44 | { 45 | "indices": [ 46 | { 47 | "names": [ "heartbeat-*"], 48 | "privileges": ["read"] 49 | } 50 | ], 51 | "applications": [ 52 | { 53 | "application": "uptime", 54 | "privileges": [ "all", "read" ], 55 | "resources": [ "*" ] 56 | } 57 | ], 58 | "run_as": [ "other_user" ], // optional 59 | "metadata" : { // optional 60 | "version" : 1 61 | } 62 | } 63 | ' 64 | 65 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/user/uptime_all?pretty" -H 'Content-Type: application/json' -d' 66 | { 67 | "password" : "changeme", 68 | "roles" : [ "uptime_all" ], 69 | "full_name" : "Jack Nicholson", 70 | "email" : "jacknich@example.com" 71 | } 72 | ' 73 | 74 | 75 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/role/heartbeat?pretty" -H 'Content-Type: application/json' -d' 76 | { 77 | "cluster": ["monitor", "manage_ilm"], 78 | "indices": [ 79 | { 80 | "names": [ "heartbeat-*"], 81 | "privileges": ["manage", "create_doc", "view_index_metadata", "create_index"] 82 | } 83 | ], 84 | "applications": [ 85 | { 86 | "application": "uptime", 87 | "privileges": [ "all", "read" ], 88 | "resources": [ "*" ] 89 | } 90 | ], 91 | "run_as": [ "other_user" ], // optional 92 | "metadata" : { // optional 93 | "version" : 1 94 | } 95 | } 96 | ' 97 | 98 | curl -sk -o /dev/null/ -X PUT "https://elastic:changeme@localhost:9200/_security/user/heartbeat?pretty" -H 'Content-Type: application/json' -d' 99 | { 100 | "password" : "changeme", 101 | "roles" : [ "heartbeat", "ingest_admin" ], 102 | "full_name" : "Jack Nicholson", 103 | "email" : "jacknich@example.com" 104 | } 105 | ' 106 | 107 | echo ' 108 | #kibana config: 109 | elasticsearch.username: "kibana" 110 | elasticsearch.password: "changeme" 111 | xpack.actions.enabled: true 112 | xpack.alerting.enabled: true 113 | xpack.task_manager.enabled: true 114 | xpack.triggers_actions_ui.enabled: true 115 | ' 116 | 117 | 118 | echo ' 119 | # heartbeat config 120 | output.elasticsearch: 121 | hosts: ["localhost:9200"] 122 | protocol: https 123 | username: heartbeat 124 | password: changeme 125 | ssl: 126 | certificate_authorities: ${HOME}/projects/kibana/packages/kbn-dev-utils/certs/ca.crt 127 | certificate: ${HOME}/projects/kibana/packages/kbn-dev-utils/certs/elasticsearch.crt 128 | key: ${HOME}/projects/kibana/packages/kbn-dev-utils/certs/elasticsearch.key 129 | ' 130 | -------------------------------------------------------------------------------- /testing/armtest/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM arm64v8/ubuntu 2 | 3 | WORKDIR /go/src/app 4 | 5 | ENV DEBIAN_FRONTEND=noninteractive 6 | 7 | RUN apt-get update && apt-get install --yes python3-appdirs python3-apt python3-attr python3-automat python3-blinker python3-certifi \ 8 | python3-cffi-backend \ 9 | python3-chardet \ 10 | python3-click \ 11 | python3-colorama \ 12 | python3-configobj \ 13 | python3-constantly \ 14 | python3-cryptography \ 15 | python3-dbus \ 16 | python3-debconf \ 17 | python3-debian \ 18 | python3-dev \ 19 | python3-distlib \ 20 | python3-distro-info \ 21 | python3-distro \ 22 | python3-distutils \ 23 | python3-entrypoints \ 24 | python3-filelock \ 25 | python3-gdbm \ 26 | python3-gi \ 27 | python3-greenlet \ 28 | python3-hamcrest \ 29 | python3-httplib2 \ 30 | python3-hyperlink \ 31 | python3-idna \ 32 | python3-importlib-metadata \ 33 | python3-incremental \ 34 | python3-jinja2 \ 35 | python3-json-pointer \ 36 | python3-jsonpatch \ 37 | python3-jsonschema \ 38 | python3-jwt \ 39 | python3-keyring \ 40 | python3-launchpadlib \ 41 | python3-lazr.restfulclient \ 42 | python3-lazr.uri \ 43 | python3-lib2to3 \ 44 | python3-markupsafe \ 45 | python3-minimal \ 46 | python3-more-itertools \ 47 | python3-msgpack \ 48 | python3-nacl \ 49 | python3-neovim \ 50 | python3-netifaces \ 51 | python3-newt \ 52 | python3-oauthlib \ 53 | python3-openssl \ 54 | python3-pexpect \ 55 | python3-pip \ 56 | python3-pkg-resources \ 57 | python3-ptyprocess \ 58 | python3-pyasn1-modules \ 59 | python3-pyasn1 \ 60 | python3-pymacaroons \ 61 | python3-pynvim \ 62 | python3-pyrsistent \ 63 | python3-requests-unixsocket \ 64 | python3-requests \ 65 | python3-secretstorage \ 66 | python3-serial \ 67 | python3-service-identity \ 68 | python3-setuptools \ 69 | python3-simplejson \ 70 | python3-six \ 71 | python3-software-properties \ 72 | python3-systemd \ 73 | python3-twisted-bin \ 74 | python3-twisted \ 75 | python3-urllib3 \ 76 | python3-venv \ 77 | python3-virtualenv \ 78 | python3-wadllib \ 79 | python3-wheel \ 80 | python3-yaml \ 81 | python3-zipp \ 82 | python3-dev 83 | 84 | RUN apt-get install -y curl git-core libcap2-bin 85 | 86 | ENV GOARTIFACT=go1.17.1.linux-arm64 87 | 88 | RUN curl -L https://golang.org/dl/$GOARTIFACT.tar.gz -o $GOARTIFACT.tar.gz 89 | RUN rm -rf /usr/local/go && mkdir -p /usr/local/go 90 | RUN tar -C /usr/local/ -xzf $GOARTIFACT.tar.gz 91 | ENV GOPATH=/usr/local/go 92 | 93 | RUN git clone https://github.com/magefile/mage 94 | 95 | ENV PATH=$PATH:/usr/local/go/bin/ 96 | 97 | #WORKDIR $HOME/mage 98 | RUN cd mage && go run bootstrap.go 99 | 100 | WORKDIR /beats 101 | -------------------------------------------------------------------------------- /testing/armtest/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Follow this tutorial https://www.stereolabs.com/docs/docker/building-arm-container-on-x86/ 3 | docker build --platform linux/arm64/v8 -t armexperiment . 4 | docker run --rm -it --platform linux/arm64/v8 --volume=$HOME/projects/beats/:/beats armexperiment /bin/bash -i 5 | -------------------------------------------------------------------------------- /testing/armtest/runcent.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | docker run --rm -it --user root --platform linux/arm64/v8 --entrypoint=/bin/bash -i --volume=$HOME/projects/beats/:/beats docker.elastic.co/beats/elastic-agent:7.15.0-arm64 3 | -------------------------------------------------------------------------------- /testing/configs/100-monitors.yml: -------------------------------------------------------------------------------- 1 | heartbeat.monitors: 2 | - id: 0000-intermittent 3 | name: Test 0000 - intermittent 4 | schedule: '@every 30s' 5 | timeout: 1s 6 | type: http 7 | urls: http://localhost:5678/pattern?r=200x5,500x1 8 | - id: 0001-up 9 | name: Test 0001 - up 10 | schedule: '@every 30s' 11 | timeout: 1s 12 | type: http 13 | urls: http://localhost:5678/pattern?r=200x1 14 | - id: 0002-up 15 | name: Test 0002 - up 16 | schedule: '@every 30s' 17 | timeout: 1s 18 | type: http 19 | urls: http://localhost:5678/pattern?r=200x1 20 | - id: 0003-up 21 | name: Test 0003 - up 22 | schedule: '@every 30s' 23 | timeout: 1s 24 | type: http 25 | urls: http://localhost:5678/pattern?r=200x1 26 | - id: 0004-up 27 | name: Test 0004 - up 28 | schedule: '@every 30s' 29 | timeout: 1s 30 | type: http 31 | urls: http://localhost:5678/pattern?r=200x1 32 | - id: 0005-up 33 | name: Test 0005 - up 34 | schedule: '@every 30s' 35 | timeout: 1s 36 | type: http 37 | urls: http://localhost:5678/pattern?r=200x1 38 | - id: 0006-up 39 | name: Test 0006 - up 40 | schedule: '@every 30s' 41 | timeout: 1s 42 | type: http 43 | urls: http://localhost:5678/pattern?r=200x1 44 | - id: 0007-up 45 | name: Test 0007 - up 46 | schedule: '@every 30s' 47 | timeout: 1s 48 | type: http 49 | urls: http://localhost:5678/pattern?r=200x1 50 | - id: 0008-up 51 | name: Test 0008 - up 52 | schedule: '@every 30s' 53 | timeout: 1s 54 | type: http 55 | urls: http://localhost:5678/pattern?r=200x1 56 | - id: 0009-up 57 | name: Test 0009 - up 58 | schedule: '@every 30s' 59 | timeout: 1s 60 | type: http 61 | urls: http://localhost:5678/pattern?r=200x1 62 | - id: 0010-down 63 | name: Test 0010 - down 64 | schedule: '@every 30s' 65 | timeout: 1s 66 | type: http 67 | urls: http://localhost:5678/pattern?r=400x1 68 | - id: 0011-up 69 | name: Test 0011 - up 70 | schedule: '@every 30s' 71 | timeout: 1s 72 | type: http 73 | urls: http://localhost:5678/pattern?r=200x1 74 | - id: 0012-up 75 | name: Test 0012 - up 76 | schedule: '@every 30s' 77 | timeout: 1s 78 | type: http 79 | urls: http://localhost:5678/pattern?r=200x1 80 | - id: 0013-up 81 | name: Test 0013 - up 82 | schedule: '@every 30s' 83 | timeout: 1s 84 | type: http 85 | urls: http://localhost:5678/pattern?r=200x1 86 | - id: 0014-up 87 | name: Test 0014 - up 88 | schedule: '@every 30s' 89 | timeout: 1s 90 | type: http 91 | urls: http://localhost:5678/pattern?r=200x1 92 | - id: 0015-intermittent 93 | name: Test 0015 - intermittent 94 | schedule: '@every 30s' 95 | timeout: 1s 96 | type: http 97 | urls: http://localhost:5678/pattern?r=200x5,500x1 98 | - id: 0016-up 99 | name: Test 0016 - up 100 | schedule: '@every 30s' 101 | timeout: 1s 102 | type: http 103 | urls: http://localhost:5678/pattern?r=200x1 104 | - id: 0017-up 105 | name: Test 0017 - up 106 | schedule: '@every 30s' 107 | timeout: 1s 108 | type: http 109 | urls: http://localhost:5678/pattern?r=200x1 110 | - id: 0018-up 111 | name: Test 0018 - up 112 | schedule: '@every 30s' 113 | timeout: 1s 114 | type: http 115 | urls: http://localhost:5678/pattern?r=200x1 116 | - id: 0019-up 117 | name: Test 0019 - up 118 | schedule: '@every 30s' 119 | timeout: 1s 120 | type: http 121 | urls: http://localhost:5678/pattern?r=200x1 122 | - id: 0020-down 123 | name: Test 0020 - down 124 | schedule: '@every 30s' 125 | timeout: 1s 126 | type: http 127 | urls: http://localhost:5678/pattern?r=400x1 128 | - id: 0021-up 129 | name: Test 0021 - up 130 | schedule: '@every 30s' 131 | timeout: 1s 132 | type: http 133 | urls: http://localhost:5678/pattern?r=200x1 134 | - id: 0022-up 135 | name: Test 0022 - up 136 | schedule: '@every 30s' 137 | timeout: 1s 138 | type: http 139 | urls: http://localhost:5678/pattern?r=200x1 140 | - id: 0023-up 141 | name: Test 0023 - up 142 | schedule: '@every 30s' 143 | timeout: 1s 144 | type: http 145 | urls: http://localhost:5678/pattern?r=200x1 146 | - id: 0024-up 147 | name: Test 0024 - up 148 | schedule: '@every 30s' 149 | timeout: 1s 150 | type: http 151 | urls: http://localhost:5678/pattern?r=200x1 152 | - id: 0025-up 153 | name: Test 0025 - up 154 | schedule: '@every 30s' 155 | timeout: 1s 156 | type: http 157 | urls: http://localhost:5678/pattern?r=200x1 158 | - id: 0026-up 159 | name: Test 0026 - up 160 | schedule: '@every 30s' 161 | timeout: 1s 162 | type: http 163 | urls: http://localhost:5678/pattern?r=200x1 164 | - id: 0027-up 165 | name: Test 0027 - up 166 | schedule: '@every 30s' 167 | timeout: 1s 168 | type: http 169 | urls: http://localhost:5678/pattern?r=200x1 170 | - id: 0028-up 171 | name: Test 0028 - up 172 | schedule: '@every 30s' 173 | timeout: 1s 174 | type: http 175 | urls: http://localhost:5678/pattern?r=200x1 176 | - id: 0029-up 177 | name: Test 0029 - up 178 | schedule: '@every 30s' 179 | timeout: 1s 180 | type: http 181 | urls: http://localhost:5678/pattern?r=200x1 182 | - id: 0030-intermittent 183 | name: Test 0030 - intermittent 184 | schedule: '@every 30s' 185 | timeout: 1s 186 | type: http 187 | urls: http://localhost:5678/pattern?r=200x5,500x1 188 | - id: 0031-up 189 | name: Test 0031 - up 190 | schedule: '@every 30s' 191 | timeout: 1s 192 | type: http 193 | urls: http://localhost:5678/pattern?r=200x1 194 | - id: 0032-up 195 | name: Test 0032 - up 196 | schedule: '@every 30s' 197 | timeout: 1s 198 | type: http 199 | urls: http://localhost:5678/pattern?r=200x1 200 | - id: 0033-up 201 | name: Test 0033 - up 202 | schedule: '@every 30s' 203 | timeout: 1s 204 | type: http 205 | urls: http://localhost:5678/pattern?r=200x1 206 | - id: 0034-up 207 | name: Test 0034 - up 208 | schedule: '@every 30s' 209 | timeout: 1s 210 | type: http 211 | urls: http://localhost:5678/pattern?r=200x1 212 | - id: 0035-up 213 | name: Test 0035 - up 214 | schedule: '@every 30s' 215 | timeout: 1s 216 | type: http 217 | urls: http://localhost:5678/pattern?r=200x1 218 | - id: 0036-up 219 | name: Test 0036 - up 220 | schedule: '@every 30s' 221 | timeout: 1s 222 | type: http 223 | urls: http://localhost:5678/pattern?r=200x1 224 | - id: 0037-up 225 | name: Test 0037 - up 226 | schedule: '@every 30s' 227 | timeout: 1s 228 | type: http 229 | urls: http://localhost:5678/pattern?r=200x1 230 | - id: 0038-up 231 | name: Test 0038 - up 232 | schedule: '@every 30s' 233 | timeout: 1s 234 | type: http 235 | urls: http://localhost:5678/pattern?r=200x1 236 | - id: 0039-up 237 | name: Test 0039 - up 238 | schedule: '@every 30s' 239 | timeout: 1s 240 | type: http 241 | urls: http://localhost:5678/pattern?r=200x1 242 | - id: 0040-down 243 | name: Test 0040 - down 244 | schedule: '@every 30s' 245 | timeout: 1s 246 | type: http 247 | urls: http://localhost:5678/pattern?r=400x1 248 | - id: 0041-up 249 | name: Test 0041 - up 250 | schedule: '@every 30s' 251 | timeout: 1s 252 | type: http 253 | urls: http://localhost:5678/pattern?r=200x1 254 | - id: 0042-up 255 | name: Test 0042 - up 256 | schedule: '@every 30s' 257 | timeout: 1s 258 | type: http 259 | urls: http://localhost:5678/pattern?r=200x1 260 | - id: 0043-up 261 | name: Test 0043 - up 262 | schedule: '@every 30s' 263 | timeout: 1s 264 | type: http 265 | urls: http://localhost:5678/pattern?r=200x1 266 | - id: 0044-up 267 | name: Test 0044 - up 268 | schedule: '@every 30s' 269 | timeout: 1s 270 | type: http 271 | urls: http://localhost:5678/pattern?r=200x1 272 | - id: 0045-intermittent 273 | name: Test 0045 - intermittent 274 | schedule: '@every 30s' 275 | timeout: 1s 276 | type: http 277 | urls: http://localhost:5678/pattern?r=200x5,500x1 278 | - id: 0046-up 279 | name: Test 0046 - up 280 | schedule: '@every 30s' 281 | timeout: 1s 282 | type: http 283 | urls: http://localhost:5678/pattern?r=200x1 284 | - id: 0047-up 285 | name: Test 0047 - up 286 | schedule: '@every 30s' 287 | timeout: 1s 288 | type: http 289 | urls: http://localhost:5678/pattern?r=200x1 290 | - id: 0048-up 291 | name: Test 0048 - up 292 | schedule: '@every 30s' 293 | timeout: 1s 294 | type: http 295 | urls: http://localhost:5678/pattern?r=200x1 296 | - id: 0049-up 297 | name: Test 0049 - up 298 | schedule: '@every 30s' 299 | timeout: 1s 300 | type: http 301 | urls: http://localhost:5678/pattern?r=200x1 302 | - id: 0050-down 303 | name: Test 0050 - down 304 | schedule: '@every 30s' 305 | timeout: 1s 306 | type: http 307 | urls: http://localhost:5678/pattern?r=400x1 308 | - id: 0051-up 309 | name: Test 0051 - up 310 | schedule: '@every 30s' 311 | timeout: 1s 312 | type: http 313 | urls: http://localhost:5678/pattern?r=200x1 314 | - id: 0052-up 315 | name: Test 0052 - up 316 | schedule: '@every 30s' 317 | timeout: 1s 318 | type: http 319 | urls: http://localhost:5678/pattern?r=200x1 320 | - id: 0053-up 321 | name: Test 0053 - up 322 | schedule: '@every 30s' 323 | timeout: 1s 324 | type: http 325 | urls: http://localhost:5678/pattern?r=200x1 326 | - id: 0054-up 327 | name: Test 0054 - up 328 | schedule: '@every 30s' 329 | timeout: 1s 330 | type: http 331 | urls: http://localhost:5678/pattern?r=200x1 332 | - id: 0055-up 333 | name: Test 0055 - up 334 | schedule: '@every 30s' 335 | timeout: 1s 336 | type: http 337 | urls: http://localhost:5678/pattern?r=200x1 338 | - id: 0056-up 339 | name: Test 0056 - up 340 | schedule: '@every 30s' 341 | timeout: 1s 342 | type: http 343 | urls: http://localhost:5678/pattern?r=200x1 344 | - id: 0057-up 345 | name: Test 0057 - up 346 | schedule: '@every 30s' 347 | timeout: 1s 348 | type: http 349 | urls: http://localhost:5678/pattern?r=200x1 350 | - id: 0058-up 351 | name: Test 0058 - up 352 | schedule: '@every 30s' 353 | timeout: 1s 354 | type: http 355 | urls: http://localhost:5678/pattern?r=200x1 356 | - id: 0059-up 357 | name: Test 0059 - up 358 | schedule: '@every 30s' 359 | timeout: 1s 360 | type: http 361 | urls: http://localhost:5678/pattern?r=200x1 362 | - id: 0060-intermittent 363 | name: Test 0060 - intermittent 364 | schedule: '@every 30s' 365 | timeout: 1s 366 | type: http 367 | urls: http://localhost:5678/pattern?r=200x5,500x1 368 | - id: 0061-up 369 | name: Test 0061 - up 370 | schedule: '@every 30s' 371 | timeout: 1s 372 | type: http 373 | urls: http://localhost:5678/pattern?r=200x1 374 | - id: 0062-up 375 | name: Test 0062 - up 376 | schedule: '@every 30s' 377 | timeout: 1s 378 | type: http 379 | urls: http://localhost:5678/pattern?r=200x1 380 | - id: 0063-up 381 | name: Test 0063 - up 382 | schedule: '@every 30s' 383 | timeout: 1s 384 | type: http 385 | urls: http://localhost:5678/pattern?r=200x1 386 | - id: 0064-up 387 | name: Test 0064 - up 388 | schedule: '@every 30s' 389 | timeout: 1s 390 | type: http 391 | urls: http://localhost:5678/pattern?r=200x1 392 | - id: 0065-up 393 | name: Test 0065 - up 394 | schedule: '@every 30s' 395 | timeout: 1s 396 | type: http 397 | urls: http://localhost:5678/pattern?r=200x1 398 | - id: 0066-up 399 | name: Test 0066 - up 400 | schedule: '@every 30s' 401 | timeout: 1s 402 | type: http 403 | urls: http://localhost:5678/pattern?r=200x1 404 | - id: 0067-up 405 | name: Test 0067 - up 406 | schedule: '@every 30s' 407 | timeout: 1s 408 | type: http 409 | urls: http://localhost:5678/pattern?r=200x1 410 | - id: 0068-up 411 | name: Test 0068 - up 412 | schedule: '@every 30s' 413 | timeout: 1s 414 | type: http 415 | urls: http://localhost:5678/pattern?r=200x1 416 | - id: 0069-up 417 | name: Test 0069 - up 418 | schedule: '@every 30s' 419 | timeout: 1s 420 | type: http 421 | urls: http://localhost:5678/pattern?r=200x1 422 | - id: 0070-down 423 | name: Test 0070 - down 424 | schedule: '@every 30s' 425 | timeout: 1s 426 | type: http 427 | urls: http://localhost:5678/pattern?r=400x1 428 | - id: 0071-up 429 | name: Test 0071 - up 430 | schedule: '@every 30s' 431 | timeout: 1s 432 | type: http 433 | urls: http://localhost:5678/pattern?r=200x1 434 | - id: 0072-up 435 | name: Test 0072 - up 436 | schedule: '@every 30s' 437 | timeout: 1s 438 | type: http 439 | urls: http://localhost:5678/pattern?r=200x1 440 | - id: 0073-up 441 | name: Test 0073 - up 442 | schedule: '@every 30s' 443 | timeout: 1s 444 | type: http 445 | urls: http://localhost:5678/pattern?r=200x1 446 | - id: 0074-up 447 | name: Test 0074 - up 448 | schedule: '@every 30s' 449 | timeout: 1s 450 | type: http 451 | urls: http://localhost:5678/pattern?r=200x1 452 | - id: 0075-intermittent 453 | name: Test 0075 - intermittent 454 | schedule: '@every 30s' 455 | timeout: 1s 456 | type: http 457 | urls: http://localhost:5678/pattern?r=200x5,500x1 458 | - id: 0076-up 459 | name: Test 0076 - up 460 | schedule: '@every 30s' 461 | timeout: 1s 462 | type: http 463 | urls: http://localhost:5678/pattern?r=200x1 464 | - id: 0077-up 465 | name: Test 0077 - up 466 | schedule: '@every 30s' 467 | timeout: 1s 468 | type: http 469 | urls: http://localhost:5678/pattern?r=200x1 470 | - id: 0078-up 471 | name: Test 0078 - up 472 | schedule: '@every 30s' 473 | timeout: 1s 474 | type: http 475 | urls: http://localhost:5678/pattern?r=200x1 476 | - id: 0079-up 477 | name: Test 0079 - up 478 | schedule: '@every 30s' 479 | timeout: 1s 480 | type: http 481 | urls: http://localhost:5678/pattern?r=200x1 482 | - id: 0080-down 483 | name: Test 0080 - down 484 | schedule: '@every 30s' 485 | timeout: 1s 486 | type: http 487 | urls: http://localhost:5678/pattern?r=400x1 488 | - id: 0081-up 489 | name: Test 0081 - up 490 | schedule: '@every 30s' 491 | timeout: 1s 492 | type: http 493 | urls: http://localhost:5678/pattern?r=200x1 494 | - id: 0082-up 495 | name: Test 0082 - up 496 | schedule: '@every 30s' 497 | timeout: 1s 498 | type: http 499 | urls: http://localhost:5678/pattern?r=200x1 500 | - id: 0083-up 501 | name: Test 0083 - up 502 | schedule: '@every 30s' 503 | timeout: 1s 504 | type: http 505 | urls: http://localhost:5678/pattern?r=200x1 506 | - id: 0084-up 507 | name: Test 0084 - up 508 | schedule: '@every 30s' 509 | timeout: 1s 510 | type: http 511 | urls: http://localhost:5678/pattern?r=200x1 512 | - id: 0085-up 513 | name: Test 0085 - up 514 | schedule: '@every 30s' 515 | timeout: 1s 516 | type: http 517 | urls: http://localhost:5678/pattern?r=200x1 518 | - id: 0086-up 519 | name: Test 0086 - up 520 | schedule: '@every 30s' 521 | timeout: 1s 522 | type: http 523 | urls: http://localhost:5678/pattern?r=200x1 524 | - id: 0087-up 525 | name: Test 0087 - up 526 | schedule: '@every 30s' 527 | timeout: 1s 528 | type: http 529 | urls: http://localhost:5678/pattern?r=200x1 530 | - id: 0088-up 531 | name: Test 0088 - up 532 | schedule: '@every 30s' 533 | timeout: 1s 534 | type: http 535 | urls: http://localhost:5678/pattern?r=200x1 536 | - id: 0089-up 537 | name: Test 0089 - up 538 | schedule: '@every 30s' 539 | timeout: 1s 540 | type: http 541 | urls: http://localhost:5678/pattern?r=200x1 542 | - id: 0090-intermittent 543 | name: Test 0090 - intermittent 544 | schedule: '@every 30s' 545 | timeout: 1s 546 | type: http 547 | urls: http://localhost:5678/pattern?r=200x5,500x1 548 | - id: 0091-up 549 | name: Test 0091 - up 550 | schedule: '@every 30s' 551 | timeout: 1s 552 | type: http 553 | urls: http://localhost:5678/pattern?r=200x1 554 | - id: 0092-up 555 | name: Test 0092 - up 556 | schedule: '@every 30s' 557 | timeout: 1s 558 | type: http 559 | urls: http://localhost:5678/pattern?r=200x1 560 | - id: 0093-up 561 | name: Test 0093 - up 562 | schedule: '@every 30s' 563 | timeout: 1s 564 | type: http 565 | urls: http://localhost:5678/pattern?r=200x1 566 | - id: 0094-up 567 | name: Test 0094 - up 568 | schedule: '@every 30s' 569 | timeout: 1s 570 | type: http 571 | urls: http://localhost:5678/pattern?r=200x1 572 | - id: 0095-up 573 | name: Test 0095 - up 574 | schedule: '@every 30s' 575 | timeout: 1s 576 | type: http 577 | urls: http://localhost:5678/pattern?r=200x1 578 | - id: 0096-up 579 | name: Test 0096 - up 580 | schedule: '@every 30s' 581 | timeout: 1s 582 | type: http 583 | urls: http://localhost:5678/pattern?r=200x1 584 | - id: 0097-up 585 | name: Test 0097 - up 586 | schedule: '@every 30s' 587 | timeout: 1s 588 | type: http 589 | urls: http://localhost:5678/pattern?r=200x1 590 | - id: 0098-up 591 | name: Test 0098 - up 592 | schedule: '@every 30s' 593 | timeout: 1s 594 | type: http 595 | urls: http://localhost:5678/pattern?r=200x1 596 | - id: 0099-up 597 | name: Test 0099 - up 598 | schedule: '@every 30s' 599 | timeout: 1s 600 | type: http 601 | urls: http://localhost:5678/pattern?r=200x1 602 | output.elasticsearch: 603 | hosts: 604 | - localhost:9200 605 | processors: 606 | - add_observer_metadata: 607 | geo: 608 | location: 37.926868, -78.024902 609 | name: ${GEO_NAME} 610 | 611 | -------------------------------------------------------------------------------- /testing/configs/300-monitors.yml: -------------------------------------------------------------------------------- 1 | heartbeat.monitors: 2 | - id: 0000-intermittent 3 | name: Test 0000 - intermittent 4 | schedule: '@every 30s' 5 | timeout: 1s 6 | type: http 7 | urls: http://localhost:5678/pattern?r=200x5,500x1 8 | - id: 0001-up 9 | name: Test 0001 - up 10 | schedule: '@every 30s' 11 | timeout: 1s 12 | type: http 13 | urls: http://localhost:5678/pattern?r=200x1 14 | - id: 0002-up 15 | name: Test 0002 - up 16 | schedule: '@every 30s' 17 | timeout: 1s 18 | type: http 19 | urls: http://localhost:5678/pattern?r=200x1 20 | - id: 0003-up 21 | name: Test 0003 - up 22 | schedule: '@every 30s' 23 | timeout: 1s 24 | type: http 25 | urls: http://localhost:5678/pattern?r=200x1 26 | - id: 0004-up 27 | name: Test 0004 - up 28 | schedule: '@every 30s' 29 | timeout: 1s 30 | type: http 31 | urls: http://localhost:5678/pattern?r=200x1 32 | - id: 0005-up 33 | name: Test 0005 - up 34 | schedule: '@every 30s' 35 | timeout: 1s 36 | type: http 37 | urls: http://localhost:5678/pattern?r=200x1 38 | - id: 0006-up 39 | name: Test 0006 - up 40 | schedule: '@every 30s' 41 | timeout: 1s 42 | type: http 43 | urls: http://localhost:5678/pattern?r=200x1 44 | - id: 0007-up 45 | name: Test 0007 - up 46 | schedule: '@every 30s' 47 | timeout: 1s 48 | type: http 49 | urls: http://localhost:5678/pattern?r=200x1 50 | - id: 0008-up 51 | name: Test 0008 - up 52 | schedule: '@every 30s' 53 | timeout: 1s 54 | type: http 55 | urls: http://localhost:5678/pattern?r=200x1 56 | - id: 0009-up 57 | name: Test 0009 - up 58 | schedule: '@every 30s' 59 | timeout: 1s 60 | type: http 61 | urls: http://localhost:5678/pattern?r=200x1 62 | - id: 0010-down 63 | name: Test 0010 - down 64 | schedule: '@every 30s' 65 | timeout: 1s 66 | type: http 67 | urls: http://localhost:5678/pattern?r=400x1 68 | - id: 0011-up 69 | name: Test 0011 - up 70 | schedule: '@every 30s' 71 | timeout: 1s 72 | type: http 73 | urls: http://localhost:5678/pattern?r=200x1 74 | - id: 0012-up 75 | name: Test 0012 - up 76 | schedule: '@every 30s' 77 | timeout: 1s 78 | type: http 79 | urls: http://localhost:5678/pattern?r=200x1 80 | - id: 0013-up 81 | name: Test 0013 - up 82 | schedule: '@every 30s' 83 | timeout: 1s 84 | type: http 85 | urls: http://localhost:5678/pattern?r=200x1 86 | - id: 0014-up 87 | name: Test 0014 - up 88 | schedule: '@every 30s' 89 | timeout: 1s 90 | type: http 91 | urls: http://localhost:5678/pattern?r=200x1 92 | - id: 0015-intermittent 93 | name: Test 0015 - intermittent 94 | schedule: '@every 30s' 95 | timeout: 1s 96 | type: http 97 | urls: http://localhost:5678/pattern?r=200x5,500x1 98 | - id: 0016-up 99 | name: Test 0016 - up 100 | schedule: '@every 30s' 101 | timeout: 1s 102 | type: http 103 | urls: http://localhost:5678/pattern?r=200x1 104 | - id: 0017-up 105 | name: Test 0017 - up 106 | schedule: '@every 30s' 107 | timeout: 1s 108 | type: http 109 | urls: http://localhost:5678/pattern?r=200x1 110 | - id: 0018-up 111 | name: Test 0018 - up 112 | schedule: '@every 30s' 113 | timeout: 1s 114 | type: http 115 | urls: http://localhost:5678/pattern?r=200x1 116 | - id: 0019-up 117 | name: Test 0019 - up 118 | schedule: '@every 30s' 119 | timeout: 1s 120 | type: http 121 | urls: http://localhost:5678/pattern?r=200x1 122 | - id: 0020-down 123 | name: Test 0020 - down 124 | schedule: '@every 30s' 125 | timeout: 1s 126 | type: http 127 | urls: http://localhost:5678/pattern?r=400x1 128 | - id: 0021-up 129 | name: Test 0021 - up 130 | schedule: '@every 30s' 131 | timeout: 1s 132 | type: http 133 | urls: http://localhost:5678/pattern?r=200x1 134 | - id: 0022-up 135 | name: Test 0022 - up 136 | schedule: '@every 30s' 137 | timeout: 1s 138 | type: http 139 | urls: http://localhost:5678/pattern?r=200x1 140 | - id: 0023-up 141 | name: Test 0023 - up 142 | schedule: '@every 30s' 143 | timeout: 1s 144 | type: http 145 | urls: http://localhost:5678/pattern?r=200x1 146 | - id: 0024-up 147 | name: Test 0024 - up 148 | schedule: '@every 30s' 149 | timeout: 1s 150 | type: http 151 | urls: http://localhost:5678/pattern?r=200x1 152 | - id: 0025-up 153 | name: Test 0025 - up 154 | schedule: '@every 30s' 155 | timeout: 1s 156 | type: http 157 | urls: http://localhost:5678/pattern?r=200x1 158 | - id: 0026-up 159 | name: Test 0026 - up 160 | schedule: '@every 30s' 161 | timeout: 1s 162 | type: http 163 | urls: http://localhost:5678/pattern?r=200x1 164 | - id: 0027-up 165 | name: Test 0027 - up 166 | schedule: '@every 30s' 167 | timeout: 1s 168 | type: http 169 | urls: http://localhost:5678/pattern?r=200x1 170 | - id: 0028-up 171 | name: Test 0028 - up 172 | schedule: '@every 30s' 173 | timeout: 1s 174 | type: http 175 | urls: http://localhost:5678/pattern?r=200x1 176 | - id: 0029-up 177 | name: Test 0029 - up 178 | schedule: '@every 30s' 179 | timeout: 1s 180 | type: http 181 | urls: http://localhost:5678/pattern?r=200x1 182 | - id: 0030-intermittent 183 | name: Test 0030 - intermittent 184 | schedule: '@every 30s' 185 | timeout: 1s 186 | type: http 187 | urls: http://localhost:5678/pattern?r=200x5,500x1 188 | - id: 0031-up 189 | name: Test 0031 - up 190 | schedule: '@every 30s' 191 | timeout: 1s 192 | type: http 193 | urls: http://localhost:5678/pattern?r=200x1 194 | - id: 0032-up 195 | name: Test 0032 - up 196 | schedule: '@every 30s' 197 | timeout: 1s 198 | type: http 199 | urls: http://localhost:5678/pattern?r=200x1 200 | - id: 0033-up 201 | name: Test 0033 - up 202 | schedule: '@every 30s' 203 | timeout: 1s 204 | type: http 205 | urls: http://localhost:5678/pattern?r=200x1 206 | - id: 0034-up 207 | name: Test 0034 - up 208 | schedule: '@every 30s' 209 | timeout: 1s 210 | type: http 211 | urls: http://localhost:5678/pattern?r=200x1 212 | - id: 0035-up 213 | name: Test 0035 - up 214 | schedule: '@every 30s' 215 | timeout: 1s 216 | type: http 217 | urls: http://localhost:5678/pattern?r=200x1 218 | - id: 0036-up 219 | name: Test 0036 - up 220 | schedule: '@every 30s' 221 | timeout: 1s 222 | type: http 223 | urls: http://localhost:5678/pattern?r=200x1 224 | - id: 0037-up 225 | name: Test 0037 - up 226 | schedule: '@every 30s' 227 | timeout: 1s 228 | type: http 229 | urls: http://localhost:5678/pattern?r=200x1 230 | - id: 0038-up 231 | name: Test 0038 - up 232 | schedule: '@every 30s' 233 | timeout: 1s 234 | type: http 235 | urls: http://localhost:5678/pattern?r=200x1 236 | - id: 0039-up 237 | name: Test 0039 - up 238 | schedule: '@every 30s' 239 | timeout: 1s 240 | type: http 241 | urls: http://localhost:5678/pattern?r=200x1 242 | - id: 0040-down 243 | name: Test 0040 - down 244 | schedule: '@every 30s' 245 | timeout: 1s 246 | type: http 247 | urls: http://localhost:5678/pattern?r=400x1 248 | - id: 0041-up 249 | name: Test 0041 - up 250 | schedule: '@every 30s' 251 | timeout: 1s 252 | type: http 253 | urls: http://localhost:5678/pattern?r=200x1 254 | - id: 0042-up 255 | name: Test 0042 - up 256 | schedule: '@every 30s' 257 | timeout: 1s 258 | type: http 259 | urls: http://localhost:5678/pattern?r=200x1 260 | - id: 0043-up 261 | name: Test 0043 - up 262 | schedule: '@every 30s' 263 | timeout: 1s 264 | type: http 265 | urls: http://localhost:5678/pattern?r=200x1 266 | - id: 0044-up 267 | name: Test 0044 - up 268 | schedule: '@every 30s' 269 | timeout: 1s 270 | type: http 271 | urls: http://localhost:5678/pattern?r=200x1 272 | - id: 0045-intermittent 273 | name: Test 0045 - intermittent 274 | schedule: '@every 30s' 275 | timeout: 1s 276 | type: http 277 | urls: http://localhost:5678/pattern?r=200x5,500x1 278 | - id: 0046-up 279 | name: Test 0046 - up 280 | schedule: '@every 30s' 281 | timeout: 1s 282 | type: http 283 | urls: http://localhost:5678/pattern?r=200x1 284 | - id: 0047-up 285 | name: Test 0047 - up 286 | schedule: '@every 30s' 287 | timeout: 1s 288 | type: http 289 | urls: http://localhost:5678/pattern?r=200x1 290 | - id: 0048-up 291 | name: Test 0048 - up 292 | schedule: '@every 30s' 293 | timeout: 1s 294 | type: http 295 | urls: http://localhost:5678/pattern?r=200x1 296 | - id: 0049-up 297 | name: Test 0049 - up 298 | schedule: '@every 30s' 299 | timeout: 1s 300 | type: http 301 | urls: http://localhost:5678/pattern?r=200x1 302 | - id: 0050-down 303 | name: Test 0050 - down 304 | schedule: '@every 30s' 305 | timeout: 1s 306 | type: http 307 | urls: http://localhost:5678/pattern?r=400x1 308 | - id: 0051-up 309 | name: Test 0051 - up 310 | schedule: '@every 30s' 311 | timeout: 1s 312 | type: http 313 | urls: http://localhost:5678/pattern?r=200x1 314 | - id: 0052-up 315 | name: Test 0052 - up 316 | schedule: '@every 30s' 317 | timeout: 1s 318 | type: http 319 | urls: http://localhost:5678/pattern?r=200x1 320 | - id: 0053-up 321 | name: Test 0053 - up 322 | schedule: '@every 30s' 323 | timeout: 1s 324 | type: http 325 | urls: http://localhost:5678/pattern?r=200x1 326 | - id: 0054-up 327 | name: Test 0054 - up 328 | schedule: '@every 30s' 329 | timeout: 1s 330 | type: http 331 | urls: http://localhost:5678/pattern?r=200x1 332 | - id: 0055-up 333 | name: Test 0055 - up 334 | schedule: '@every 30s' 335 | timeout: 1s 336 | type: http 337 | urls: http://localhost:5678/pattern?r=200x1 338 | - id: 0056-up 339 | name: Test 0056 - up 340 | schedule: '@every 30s' 341 | timeout: 1s 342 | type: http 343 | urls: http://localhost:5678/pattern?r=200x1 344 | - id: 0057-up 345 | name: Test 0057 - up 346 | schedule: '@every 30s' 347 | timeout: 1s 348 | type: http 349 | urls: http://localhost:5678/pattern?r=200x1 350 | - id: 0058-up 351 | name: Test 0058 - up 352 | schedule: '@every 30s' 353 | timeout: 1s 354 | type: http 355 | urls: http://localhost:5678/pattern?r=200x1 356 | - id: 0059-up 357 | name: Test 0059 - up 358 | schedule: '@every 30s' 359 | timeout: 1s 360 | type: http 361 | urls: http://localhost:5678/pattern?r=200x1 362 | - id: 0060-intermittent 363 | name: Test 0060 - intermittent 364 | schedule: '@every 30s' 365 | timeout: 1s 366 | type: http 367 | urls: http://localhost:5678/pattern?r=200x5,500x1 368 | - id: 0061-up 369 | name: Test 0061 - up 370 | schedule: '@every 30s' 371 | timeout: 1s 372 | type: http 373 | urls: http://localhost:5678/pattern?r=200x1 374 | - id: 0062-up 375 | name: Test 0062 - up 376 | schedule: '@every 30s' 377 | timeout: 1s 378 | type: http 379 | urls: http://localhost:5678/pattern?r=200x1 380 | - id: 0063-up 381 | name: Test 0063 - up 382 | schedule: '@every 30s' 383 | timeout: 1s 384 | type: http 385 | urls: http://localhost:5678/pattern?r=200x1 386 | - id: 0064-up 387 | name: Test 0064 - up 388 | schedule: '@every 30s' 389 | timeout: 1s 390 | type: http 391 | urls: http://localhost:5678/pattern?r=200x1 392 | - id: 0065-up 393 | name: Test 0065 - up 394 | schedule: '@every 30s' 395 | timeout: 1s 396 | type: http 397 | urls: http://localhost:5678/pattern?r=200x1 398 | - id: 0066-up 399 | name: Test 0066 - up 400 | schedule: '@every 30s' 401 | timeout: 1s 402 | type: http 403 | urls: http://localhost:5678/pattern?r=200x1 404 | - id: 0067-up 405 | name: Test 0067 - up 406 | schedule: '@every 30s' 407 | timeout: 1s 408 | type: http 409 | urls: http://localhost:5678/pattern?r=200x1 410 | - id: 0068-up 411 | name: Test 0068 - up 412 | schedule: '@every 30s' 413 | timeout: 1s 414 | type: http 415 | urls: http://localhost:5678/pattern?r=200x1 416 | - id: 0069-up 417 | name: Test 0069 - up 418 | schedule: '@every 30s' 419 | timeout: 1s 420 | type: http 421 | urls: http://localhost:5678/pattern?r=200x1 422 | - id: 0070-down 423 | name: Test 0070 - down 424 | schedule: '@every 30s' 425 | timeout: 1s 426 | type: http 427 | urls: http://localhost:5678/pattern?r=400x1 428 | - id: 0071-up 429 | name: Test 0071 - up 430 | schedule: '@every 30s' 431 | timeout: 1s 432 | type: http 433 | urls: http://localhost:5678/pattern?r=200x1 434 | - id: 0072-up 435 | name: Test 0072 - up 436 | schedule: '@every 30s' 437 | timeout: 1s 438 | type: http 439 | urls: http://localhost:5678/pattern?r=200x1 440 | - id: 0073-up 441 | name: Test 0073 - up 442 | schedule: '@every 30s' 443 | timeout: 1s 444 | type: http 445 | urls: http://localhost:5678/pattern?r=200x1 446 | - id: 0074-up 447 | name: Test 0074 - up 448 | schedule: '@every 30s' 449 | timeout: 1s 450 | type: http 451 | urls: http://localhost:5678/pattern?r=200x1 452 | - id: 0075-intermittent 453 | name: Test 0075 - intermittent 454 | schedule: '@every 30s' 455 | timeout: 1s 456 | type: http 457 | urls: http://localhost:5678/pattern?r=200x5,500x1 458 | - id: 0076-up 459 | name: Test 0076 - up 460 | schedule: '@every 30s' 461 | timeout: 1s 462 | type: http 463 | urls: http://localhost:5678/pattern?r=200x1 464 | - id: 0077-up 465 | name: Test 0077 - up 466 | schedule: '@every 30s' 467 | timeout: 1s 468 | type: http 469 | urls: http://localhost:5678/pattern?r=200x1 470 | - id: 0078-up 471 | name: Test 0078 - up 472 | schedule: '@every 30s' 473 | timeout: 1s 474 | type: http 475 | urls: http://localhost:5678/pattern?r=200x1 476 | - id: 0079-up 477 | name: Test 0079 - up 478 | schedule: '@every 30s' 479 | timeout: 1s 480 | type: http 481 | urls: http://localhost:5678/pattern?r=200x1 482 | - id: 0080-down 483 | name: Test 0080 - down 484 | schedule: '@every 30s' 485 | timeout: 1s 486 | type: http 487 | urls: http://localhost:5678/pattern?r=400x1 488 | - id: 0081-up 489 | name: Test 0081 - up 490 | schedule: '@every 30s' 491 | timeout: 1s 492 | type: http 493 | urls: http://localhost:5678/pattern?r=200x1 494 | - id: 0082-up 495 | name: Test 0082 - up 496 | schedule: '@every 30s' 497 | timeout: 1s 498 | type: http 499 | urls: http://localhost:5678/pattern?r=200x1 500 | - id: 0083-up 501 | name: Test 0083 - up 502 | schedule: '@every 30s' 503 | timeout: 1s 504 | type: http 505 | urls: http://localhost:5678/pattern?r=200x1 506 | - id: 0084-up 507 | name: Test 0084 - up 508 | schedule: '@every 30s' 509 | timeout: 1s 510 | type: http 511 | urls: http://localhost:5678/pattern?r=200x1 512 | - id: 0085-up 513 | name: Test 0085 - up 514 | schedule: '@every 30s' 515 | timeout: 1s 516 | type: http 517 | urls: http://localhost:5678/pattern?r=200x1 518 | - id: 0086-up 519 | name: Test 0086 - up 520 | schedule: '@every 30s' 521 | timeout: 1s 522 | type: http 523 | urls: http://localhost:5678/pattern?r=200x1 524 | - id: 0087-up 525 | name: Test 0087 - up 526 | schedule: '@every 30s' 527 | timeout: 1s 528 | type: http 529 | urls: http://localhost:5678/pattern?r=200x1 530 | - id: 0088-up 531 | name: Test 0088 - up 532 | schedule: '@every 30s' 533 | timeout: 1s 534 | type: http 535 | urls: http://localhost:5678/pattern?r=200x1 536 | - id: 0089-up 537 | name: Test 0089 - up 538 | schedule: '@every 30s' 539 | timeout: 1s 540 | type: http 541 | urls: http://localhost:5678/pattern?r=200x1 542 | - id: 0090-intermittent 543 | name: Test 0090 - intermittent 544 | schedule: '@every 30s' 545 | timeout: 1s 546 | type: http 547 | urls: http://localhost:5678/pattern?r=200x5,500x1 548 | - id: 0091-up 549 | name: Test 0091 - up 550 | schedule: '@every 30s' 551 | timeout: 1s 552 | type: http 553 | urls: http://localhost:5678/pattern?r=200x1 554 | - id: 0092-up 555 | name: Test 0092 - up 556 | schedule: '@every 30s' 557 | timeout: 1s 558 | type: http 559 | urls: http://localhost:5678/pattern?r=200x1 560 | - id: 0093-up 561 | name: Test 0093 - up 562 | schedule: '@every 30s' 563 | timeout: 1s 564 | type: http 565 | urls: http://localhost:5678/pattern?r=200x1 566 | - id: 0094-up 567 | name: Test 0094 - up 568 | schedule: '@every 30s' 569 | timeout: 1s 570 | type: http 571 | urls: http://localhost:5678/pattern?r=200x1 572 | - id: 0095-up 573 | name: Test 0095 - up 574 | schedule: '@every 30s' 575 | timeout: 1s 576 | type: http 577 | urls: http://localhost:5678/pattern?r=200x1 578 | - id: 0096-up 579 | name: Test 0096 - up 580 | schedule: '@every 30s' 581 | timeout: 1s 582 | type: http 583 | urls: http://localhost:5678/pattern?r=200x1 584 | - id: 0097-up 585 | name: Test 0097 - up 586 | schedule: '@every 30s' 587 | timeout: 1s 588 | type: http 589 | urls: http://localhost:5678/pattern?r=200x1 590 | - id: 0098-up 591 | name: Test 0098 - up 592 | schedule: '@every 30s' 593 | timeout: 1s 594 | type: http 595 | urls: http://localhost:5678/pattern?r=200x1 596 | - id: 0099-up 597 | name: Test 0099 - up 598 | schedule: '@every 30s' 599 | timeout: 1s 600 | type: http 601 | urls: http://localhost:5678/pattern?r=200x1 602 | - id: 0100-down 603 | name: Test 0100 - down 604 | schedule: '@every 30s' 605 | timeout: 1s 606 | type: http 607 | urls: http://localhost:5678/pattern?r=400x1 608 | - id: 0101-up 609 | name: Test 0101 - up 610 | schedule: '@every 30s' 611 | timeout: 1s 612 | type: http 613 | urls: http://localhost:5678/pattern?r=200x1 614 | - id: 0102-up 615 | name: Test 0102 - up 616 | schedule: '@every 30s' 617 | timeout: 1s 618 | type: http 619 | urls: http://localhost:5678/pattern?r=200x1 620 | - id: 0103-up 621 | name: Test 0103 - up 622 | schedule: '@every 30s' 623 | timeout: 1s 624 | type: http 625 | urls: http://localhost:5678/pattern?r=200x1 626 | - id: 0104-up 627 | name: Test 0104 - up 628 | schedule: '@every 30s' 629 | timeout: 1s 630 | type: http 631 | urls: http://localhost:5678/pattern?r=200x1 632 | - id: 0105-intermittent 633 | name: Test 0105 - intermittent 634 | schedule: '@every 30s' 635 | timeout: 1s 636 | type: http 637 | urls: http://localhost:5678/pattern?r=200x5,500x1 638 | - id: 0106-up 639 | name: Test 0106 - up 640 | schedule: '@every 30s' 641 | timeout: 1s 642 | type: http 643 | urls: http://localhost:5678/pattern?r=200x1 644 | - id: 0107-up 645 | name: Test 0107 - up 646 | schedule: '@every 30s' 647 | timeout: 1s 648 | type: http 649 | urls: http://localhost:5678/pattern?r=200x1 650 | - id: 0108-up 651 | name: Test 0108 - up 652 | schedule: '@every 30s' 653 | timeout: 1s 654 | type: http 655 | urls: http://localhost:5678/pattern?r=200x1 656 | - id: 0109-up 657 | name: Test 0109 - up 658 | schedule: '@every 30s' 659 | timeout: 1s 660 | type: http 661 | urls: http://localhost:5678/pattern?r=200x1 662 | - id: 0110-down 663 | name: Test 0110 - down 664 | schedule: '@every 30s' 665 | timeout: 1s 666 | type: http 667 | urls: http://localhost:5678/pattern?r=400x1 668 | - id: 0111-up 669 | name: Test 0111 - up 670 | schedule: '@every 30s' 671 | timeout: 1s 672 | type: http 673 | urls: http://localhost:5678/pattern?r=200x1 674 | - id: 0112-up 675 | name: Test 0112 - up 676 | schedule: '@every 30s' 677 | timeout: 1s 678 | type: http 679 | urls: http://localhost:5678/pattern?r=200x1 680 | - id: 0113-up 681 | name: Test 0113 - up 682 | schedule: '@every 30s' 683 | timeout: 1s 684 | type: http 685 | urls: http://localhost:5678/pattern?r=200x1 686 | - id: 0114-up 687 | name: Test 0114 - up 688 | schedule: '@every 30s' 689 | timeout: 1s 690 | type: http 691 | urls: http://localhost:5678/pattern?r=200x1 692 | - id: 0115-up 693 | name: Test 0115 - up 694 | schedule: '@every 30s' 695 | timeout: 1s 696 | type: http 697 | urls: http://localhost:5678/pattern?r=200x1 698 | - id: 0116-up 699 | name: Test 0116 - up 700 | schedule: '@every 30s' 701 | timeout: 1s 702 | type: http 703 | urls: http://localhost:5678/pattern?r=200x1 704 | - id: 0117-up 705 | name: Test 0117 - up 706 | schedule: '@every 30s' 707 | timeout: 1s 708 | type: http 709 | urls: http://localhost:5678/pattern?r=200x1 710 | - id: 0118-up 711 | name: Test 0118 - up 712 | schedule: '@every 30s' 713 | timeout: 1s 714 | type: http 715 | urls: http://localhost:5678/pattern?r=200x1 716 | - id: 0119-up 717 | name: Test 0119 - up 718 | schedule: '@every 30s' 719 | timeout: 1s 720 | type: http 721 | urls: http://localhost:5678/pattern?r=200x1 722 | - id: 0120-intermittent 723 | name: Test 0120 - intermittent 724 | schedule: '@every 30s' 725 | timeout: 1s 726 | type: http 727 | urls: http://localhost:5678/pattern?r=200x5,500x1 728 | - id: 0121-up 729 | name: Test 0121 - up 730 | schedule: '@every 30s' 731 | timeout: 1s 732 | type: http 733 | urls: http://localhost:5678/pattern?r=200x1 734 | - id: 0122-up 735 | name: Test 0122 - up 736 | schedule: '@every 30s' 737 | timeout: 1s 738 | type: http 739 | urls: http://localhost:5678/pattern?r=200x1 740 | - id: 0123-up 741 | name: Test 0123 - up 742 | schedule: '@every 30s' 743 | timeout: 1s 744 | type: http 745 | urls: http://localhost:5678/pattern?r=200x1 746 | - id: 0124-up 747 | name: Test 0124 - up 748 | schedule: '@every 30s' 749 | timeout: 1s 750 | type: http 751 | urls: http://localhost:5678/pattern?r=200x1 752 | - id: 0125-up 753 | name: Test 0125 - up 754 | schedule: '@every 30s' 755 | timeout: 1s 756 | type: http 757 | urls: http://localhost:5678/pattern?r=200x1 758 | - id: 0126-up 759 | name: Test 0126 - up 760 | schedule: '@every 30s' 761 | timeout: 1s 762 | type: http 763 | urls: http://localhost:5678/pattern?r=200x1 764 | - id: 0127-up 765 | name: Test 0127 - up 766 | schedule: '@every 30s' 767 | timeout: 1s 768 | type: http 769 | urls: http://localhost:5678/pattern?r=200x1 770 | - id: 0128-up 771 | name: Test 0128 - up 772 | schedule: '@every 30s' 773 | timeout: 1s 774 | type: http 775 | urls: http://localhost:5678/pattern?r=200x1 776 | - id: 0129-up 777 | name: Test 0129 - up 778 | schedule: '@every 30s' 779 | timeout: 1s 780 | type: http 781 | urls: http://localhost:5678/pattern?r=200x1 782 | - id: 0130-down 783 | name: Test 0130 - down 784 | schedule: '@every 30s' 785 | timeout: 1s 786 | type: http 787 | urls: http://localhost:5678/pattern?r=400x1 788 | - id: 0131-up 789 | name: Test 0131 - up 790 | schedule: '@every 30s' 791 | timeout: 1s 792 | type: http 793 | urls: http://localhost:5678/pattern?r=200x1 794 | - id: 0132-up 795 | name: Test 0132 - up 796 | schedule: '@every 30s' 797 | timeout: 1s 798 | type: http 799 | urls: http://localhost:5678/pattern?r=200x1 800 | - id: 0133-up 801 | name: Test 0133 - up 802 | schedule: '@every 30s' 803 | timeout: 1s 804 | type: http 805 | urls: http://localhost:5678/pattern?r=200x1 806 | - id: 0134-up 807 | name: Test 0134 - up 808 | schedule: '@every 30s' 809 | timeout: 1s 810 | type: http 811 | urls: http://localhost:5678/pattern?r=200x1 812 | - id: 0135-intermittent 813 | name: Test 0135 - intermittent 814 | schedule: '@every 30s' 815 | timeout: 1s 816 | type: http 817 | urls: http://localhost:5678/pattern?r=200x5,500x1 818 | - id: 0136-up 819 | name: Test 0136 - up 820 | schedule: '@every 30s' 821 | timeout: 1s 822 | type: http 823 | urls: http://localhost:5678/pattern?r=200x1 824 | - id: 0137-up 825 | name: Test 0137 - up 826 | schedule: '@every 30s' 827 | timeout: 1s 828 | type: http 829 | urls: http://localhost:5678/pattern?r=200x1 830 | - id: 0138-up 831 | name: Test 0138 - up 832 | schedule: '@every 30s' 833 | timeout: 1s 834 | type: http 835 | urls: http://localhost:5678/pattern?r=200x1 836 | - id: 0139-up 837 | name: Test 0139 - up 838 | schedule: '@every 30s' 839 | timeout: 1s 840 | type: http 841 | urls: http://localhost:5678/pattern?r=200x1 842 | - id: 0140-down 843 | name: Test 0140 - down 844 | schedule: '@every 30s' 845 | timeout: 1s 846 | type: http 847 | urls: http://localhost:5678/pattern?r=400x1 848 | - id: 0141-up 849 | name: Test 0141 - up 850 | schedule: '@every 30s' 851 | timeout: 1s 852 | type: http 853 | urls: http://localhost:5678/pattern?r=200x1 854 | - id: 0142-up 855 | name: Test 0142 - up 856 | schedule: '@every 30s' 857 | timeout: 1s 858 | type: http 859 | urls: http://localhost:5678/pattern?r=200x1 860 | - id: 0143-up 861 | name: Test 0143 - up 862 | schedule: '@every 30s' 863 | timeout: 1s 864 | type: http 865 | urls: http://localhost:5678/pattern?r=200x1 866 | - id: 0144-up 867 | name: Test 0144 - up 868 | schedule: '@every 30s' 869 | timeout: 1s 870 | type: http 871 | urls: http://localhost:5678/pattern?r=200x1 872 | - id: 0145-up 873 | name: Test 0145 - up 874 | schedule: '@every 30s' 875 | timeout: 1s 876 | type: http 877 | urls: http://localhost:5678/pattern?r=200x1 878 | - id: 0146-up 879 | name: Test 0146 - up 880 | schedule: '@every 30s' 881 | timeout: 1s 882 | type: http 883 | urls: http://localhost:5678/pattern?r=200x1 884 | - id: 0147-up 885 | name: Test 0147 - up 886 | schedule: '@every 30s' 887 | timeout: 1s 888 | type: http 889 | urls: http://localhost:5678/pattern?r=200x1 890 | - id: 0148-up 891 | name: Test 0148 - up 892 | schedule: '@every 30s' 893 | timeout: 1s 894 | type: http 895 | urls: http://localhost:5678/pattern?r=200x1 896 | - id: 0149-up 897 | name: Test 0149 - up 898 | schedule: '@every 30s' 899 | timeout: 1s 900 | type: http 901 | urls: http://localhost:5678/pattern?r=200x1 902 | - id: 0150-intermittent 903 | name: Test 0150 - intermittent 904 | schedule: '@every 30s' 905 | timeout: 1s 906 | type: http 907 | urls: http://localhost:5678/pattern?r=200x5,500x1 908 | - id: 0151-up 909 | name: Test 0151 - up 910 | schedule: '@every 30s' 911 | timeout: 1s 912 | type: http 913 | urls: http://localhost:5678/pattern?r=200x1 914 | - id: 0152-up 915 | name: Test 0152 - up 916 | schedule: '@every 30s' 917 | timeout: 1s 918 | type: http 919 | urls: http://localhost:5678/pattern?r=200x1 920 | - id: 0153-up 921 | name: Test 0153 - up 922 | schedule: '@every 30s' 923 | timeout: 1s 924 | type: http 925 | urls: http://localhost:5678/pattern?r=200x1 926 | - id: 0154-up 927 | name: Test 0154 - up 928 | schedule: '@every 30s' 929 | timeout: 1s 930 | type: http 931 | urls: http://localhost:5678/pattern?r=200x1 932 | - id: 0155-up 933 | name: Test 0155 - up 934 | schedule: '@every 30s' 935 | timeout: 1s 936 | type: http 937 | urls: http://localhost:5678/pattern?r=200x1 938 | - id: 0156-up 939 | name: Test 0156 - up 940 | schedule: '@every 30s' 941 | timeout: 1s 942 | type: http 943 | urls: http://localhost:5678/pattern?r=200x1 944 | - id: 0157-up 945 | name: Test 0157 - up 946 | schedule: '@every 30s' 947 | timeout: 1s 948 | type: http 949 | urls: http://localhost:5678/pattern?r=200x1 950 | - id: 0158-up 951 | name: Test 0158 - up 952 | schedule: '@every 30s' 953 | timeout: 1s 954 | type: http 955 | urls: http://localhost:5678/pattern?r=200x1 956 | - id: 0159-up 957 | name: Test 0159 - up 958 | schedule: '@every 30s' 959 | timeout: 1s 960 | type: http 961 | urls: http://localhost:5678/pattern?r=200x1 962 | - id: 0160-down 963 | name: Test 0160 - down 964 | schedule: '@every 30s' 965 | timeout: 1s 966 | type: http 967 | urls: http://localhost:5678/pattern?r=400x1 968 | - id: 0161-up 969 | name: Test 0161 - up 970 | schedule: '@every 30s' 971 | timeout: 1s 972 | type: http 973 | urls: http://localhost:5678/pattern?r=200x1 974 | - id: 0162-up 975 | name: Test 0162 - up 976 | schedule: '@every 30s' 977 | timeout: 1s 978 | type: http 979 | urls: http://localhost:5678/pattern?r=200x1 980 | - id: 0163-up 981 | name: Test 0163 - up 982 | schedule: '@every 30s' 983 | timeout: 1s 984 | type: http 985 | urls: http://localhost:5678/pattern?r=200x1 986 | - id: 0164-up 987 | name: Test 0164 - up 988 | schedule: '@every 30s' 989 | timeout: 1s 990 | type: http 991 | urls: http://localhost:5678/pattern?r=200x1 992 | - id: 0165-intermittent 993 | name: Test 0165 - intermittent 994 | schedule: '@every 30s' 995 | timeout: 1s 996 | type: http 997 | urls: http://localhost:5678/pattern?r=200x5,500x1 998 | - id: 0166-up 999 | name: Test 0166 - up 1000 | schedule: '@every 30s' 1001 | timeout: 1s 1002 | type: http 1003 | urls: http://localhost:5678/pattern?r=200x1 1004 | - id: 0167-up 1005 | name: Test 0167 - up 1006 | schedule: '@every 30s' 1007 | timeout: 1s 1008 | type: http 1009 | urls: http://localhost:5678/pattern?r=200x1 1010 | - id: 0168-up 1011 | name: Test 0168 - up 1012 | schedule: '@every 30s' 1013 | timeout: 1s 1014 | type: http 1015 | urls: http://localhost:5678/pattern?r=200x1 1016 | - id: 0169-up 1017 | name: Test 0169 - up 1018 | schedule: '@every 30s' 1019 | timeout: 1s 1020 | type: http 1021 | urls: http://localhost:5678/pattern?r=200x1 1022 | - id: 0170-down 1023 | name: Test 0170 - down 1024 | schedule: '@every 30s' 1025 | timeout: 1s 1026 | type: http 1027 | urls: http://localhost:5678/pattern?r=400x1 1028 | - id: 0171-up 1029 | name: Test 0171 - up 1030 | schedule: '@every 30s' 1031 | timeout: 1s 1032 | type: http 1033 | urls: http://localhost:5678/pattern?r=200x1 1034 | - id: 0172-up 1035 | name: Test 0172 - up 1036 | schedule: '@every 30s' 1037 | timeout: 1s 1038 | type: http 1039 | urls: http://localhost:5678/pattern?r=200x1 1040 | - id: 0173-up 1041 | name: Test 0173 - up 1042 | schedule: '@every 30s' 1043 | timeout: 1s 1044 | type: http 1045 | urls: http://localhost:5678/pattern?r=200x1 1046 | - id: 0174-up 1047 | name: Test 0174 - up 1048 | schedule: '@every 30s' 1049 | timeout: 1s 1050 | type: http 1051 | urls: http://localhost:5678/pattern?r=200x1 1052 | - id: 0175-up 1053 | name: Test 0175 - up 1054 | schedule: '@every 30s' 1055 | timeout: 1s 1056 | type: http 1057 | urls: http://localhost:5678/pattern?r=200x1 1058 | - id: 0176-up 1059 | name: Test 0176 - up 1060 | schedule: '@every 30s' 1061 | timeout: 1s 1062 | type: http 1063 | urls: http://localhost:5678/pattern?r=200x1 1064 | - id: 0177-up 1065 | name: Test 0177 - up 1066 | schedule: '@every 30s' 1067 | timeout: 1s 1068 | type: http 1069 | urls: http://localhost:5678/pattern?r=200x1 1070 | - id: 0178-up 1071 | name: Test 0178 - up 1072 | schedule: '@every 30s' 1073 | timeout: 1s 1074 | type: http 1075 | urls: http://localhost:5678/pattern?r=200x1 1076 | - id: 0179-up 1077 | name: Test 0179 - up 1078 | schedule: '@every 30s' 1079 | timeout: 1s 1080 | type: http 1081 | urls: http://localhost:5678/pattern?r=200x1 1082 | - id: 0180-intermittent 1083 | name: Test 0180 - intermittent 1084 | schedule: '@every 30s' 1085 | timeout: 1s 1086 | type: http 1087 | urls: http://localhost:5678/pattern?r=200x5,500x1 1088 | - id: 0181-up 1089 | name: Test 0181 - up 1090 | schedule: '@every 30s' 1091 | timeout: 1s 1092 | type: http 1093 | urls: http://localhost:5678/pattern?r=200x1 1094 | - id: 0182-up 1095 | name: Test 0182 - up 1096 | schedule: '@every 30s' 1097 | timeout: 1s 1098 | type: http 1099 | urls: http://localhost:5678/pattern?r=200x1 1100 | - id: 0183-up 1101 | name: Test 0183 - up 1102 | schedule: '@every 30s' 1103 | timeout: 1s 1104 | type: http 1105 | urls: http://localhost:5678/pattern?r=200x1 1106 | - id: 0184-up 1107 | name: Test 0184 - up 1108 | schedule: '@every 30s' 1109 | timeout: 1s 1110 | type: http 1111 | urls: http://localhost:5678/pattern?r=200x1 1112 | - id: 0185-up 1113 | name: Test 0185 - up 1114 | schedule: '@every 30s' 1115 | timeout: 1s 1116 | type: http 1117 | urls: http://localhost:5678/pattern?r=200x1 1118 | - id: 0186-up 1119 | name: Test 0186 - up 1120 | schedule: '@every 30s' 1121 | timeout: 1s 1122 | type: http 1123 | urls: http://localhost:5678/pattern?r=200x1 1124 | - id: 0187-up 1125 | name: Test 0187 - up 1126 | schedule: '@every 30s' 1127 | timeout: 1s 1128 | type: http 1129 | urls: http://localhost:5678/pattern?r=200x1 1130 | - id: 0188-up 1131 | name: Test 0188 - up 1132 | schedule: '@every 30s' 1133 | timeout: 1s 1134 | type: http 1135 | urls: http://localhost:5678/pattern?r=200x1 1136 | - id: 0189-up 1137 | name: Test 0189 - up 1138 | schedule: '@every 30s' 1139 | timeout: 1s 1140 | type: http 1141 | urls: http://localhost:5678/pattern?r=200x1 1142 | - id: 0190-down 1143 | name: Test 0190 - down 1144 | schedule: '@every 30s' 1145 | timeout: 1s 1146 | type: http 1147 | urls: http://localhost:5678/pattern?r=400x1 1148 | - id: 0191-up 1149 | name: Test 0191 - up 1150 | schedule: '@every 30s' 1151 | timeout: 1s 1152 | type: http 1153 | urls: http://localhost:5678/pattern?r=200x1 1154 | - id: 0192-up 1155 | name: Test 0192 - up 1156 | schedule: '@every 30s' 1157 | timeout: 1s 1158 | type: http 1159 | urls: http://localhost:5678/pattern?r=200x1 1160 | - id: 0193-up 1161 | name: Test 0193 - up 1162 | schedule: '@every 30s' 1163 | timeout: 1s 1164 | type: http 1165 | urls: http://localhost:5678/pattern?r=200x1 1166 | - id: 0194-up 1167 | name: Test 0194 - up 1168 | schedule: '@every 30s' 1169 | timeout: 1s 1170 | type: http 1171 | urls: http://localhost:5678/pattern?r=200x1 1172 | - id: 0195-intermittent 1173 | name: Test 0195 - intermittent 1174 | schedule: '@every 30s' 1175 | timeout: 1s 1176 | type: http 1177 | urls: http://localhost:5678/pattern?r=200x5,500x1 1178 | - id: 0196-up 1179 | name: Test 0196 - up 1180 | schedule: '@every 30s' 1181 | timeout: 1s 1182 | type: http 1183 | urls: http://localhost:5678/pattern?r=200x1 1184 | - id: 0197-up 1185 | name: Test 0197 - up 1186 | schedule: '@every 30s' 1187 | timeout: 1s 1188 | type: http 1189 | urls: http://localhost:5678/pattern?r=200x1 1190 | - id: 0198-up 1191 | name: Test 0198 - up 1192 | schedule: '@every 30s' 1193 | timeout: 1s 1194 | type: http 1195 | urls: http://localhost:5678/pattern?r=200x1 1196 | - id: 0199-up 1197 | name: Test 0199 - up 1198 | schedule: '@every 30s' 1199 | timeout: 1s 1200 | type: http 1201 | urls: http://localhost:5678/pattern?r=200x1 1202 | - id: 0200-down 1203 | name: Test 0200 - down 1204 | schedule: '@every 30s' 1205 | timeout: 1s 1206 | type: http 1207 | urls: http://localhost:5678/pattern?r=400x1 1208 | - id: 0201-up 1209 | name: Test 0201 - up 1210 | schedule: '@every 30s' 1211 | timeout: 1s 1212 | type: http 1213 | urls: http://localhost:5678/pattern?r=200x1 1214 | - id: 0202-up 1215 | name: Test 0202 - up 1216 | schedule: '@every 30s' 1217 | timeout: 1s 1218 | type: http 1219 | urls: http://localhost:5678/pattern?r=200x1 1220 | - id: 0203-up 1221 | name: Test 0203 - up 1222 | schedule: '@every 30s' 1223 | timeout: 1s 1224 | type: http 1225 | urls: http://localhost:5678/pattern?r=200x1 1226 | - id: 0204-up 1227 | name: Test 0204 - up 1228 | schedule: '@every 30s' 1229 | timeout: 1s 1230 | type: http 1231 | urls: http://localhost:5678/pattern?r=200x1 1232 | - id: 0205-up 1233 | name: Test 0205 - up 1234 | schedule: '@every 30s' 1235 | timeout: 1s 1236 | type: http 1237 | urls: http://localhost:5678/pattern?r=200x1 1238 | - id: 0206-up 1239 | name: Test 0206 - up 1240 | schedule: '@every 30s' 1241 | timeout: 1s 1242 | type: http 1243 | urls: http://localhost:5678/pattern?r=200x1 1244 | - id: 0207-up 1245 | name: Test 0207 - up 1246 | schedule: '@every 30s' 1247 | timeout: 1s 1248 | type: http 1249 | urls: http://localhost:5678/pattern?r=200x1 1250 | - id: 0208-up 1251 | name: Test 0208 - up 1252 | schedule: '@every 30s' 1253 | timeout: 1s 1254 | type: http 1255 | urls: http://localhost:5678/pattern?r=200x1 1256 | - id: 0209-up 1257 | name: Test 0209 - up 1258 | schedule: '@every 30s' 1259 | timeout: 1s 1260 | type: http 1261 | urls: http://localhost:5678/pattern?r=200x1 1262 | - id: 0210-intermittent 1263 | name: Test 0210 - intermittent 1264 | schedule: '@every 30s' 1265 | timeout: 1s 1266 | type: http 1267 | urls: http://localhost:5678/pattern?r=200x5,500x1 1268 | - id: 0211-up 1269 | name: Test 0211 - up 1270 | schedule: '@every 30s' 1271 | timeout: 1s 1272 | type: http 1273 | urls: http://localhost:5678/pattern?r=200x1 1274 | - id: 0212-up 1275 | name: Test 0212 - up 1276 | schedule: '@every 30s' 1277 | timeout: 1s 1278 | type: http 1279 | urls: http://localhost:5678/pattern?r=200x1 1280 | - id: 0213-up 1281 | name: Test 0213 - up 1282 | schedule: '@every 30s' 1283 | timeout: 1s 1284 | type: http 1285 | urls: http://localhost:5678/pattern?r=200x1 1286 | - id: 0214-up 1287 | name: Test 0214 - up 1288 | schedule: '@every 30s' 1289 | timeout: 1s 1290 | type: http 1291 | urls: http://localhost:5678/pattern?r=200x1 1292 | - id: 0215-up 1293 | name: Test 0215 - up 1294 | schedule: '@every 30s' 1295 | timeout: 1s 1296 | type: http 1297 | urls: http://localhost:5678/pattern?r=200x1 1298 | - id: 0216-up 1299 | name: Test 0216 - up 1300 | schedule: '@every 30s' 1301 | timeout: 1s 1302 | type: http 1303 | urls: http://localhost:5678/pattern?r=200x1 1304 | - id: 0217-up 1305 | name: Test 0217 - up 1306 | schedule: '@every 30s' 1307 | timeout: 1s 1308 | type: http 1309 | urls: http://localhost:5678/pattern?r=200x1 1310 | - id: 0218-up 1311 | name: Test 0218 - up 1312 | schedule: '@every 30s' 1313 | timeout: 1s 1314 | type: http 1315 | urls: http://localhost:5678/pattern?r=200x1 1316 | - id: 0219-up 1317 | name: Test 0219 - up 1318 | schedule: '@every 30s' 1319 | timeout: 1s 1320 | type: http 1321 | urls: http://localhost:5678/pattern?r=200x1 1322 | - id: 0220-down 1323 | name: Test 0220 - down 1324 | schedule: '@every 30s' 1325 | timeout: 1s 1326 | type: http 1327 | urls: http://localhost:5678/pattern?r=400x1 1328 | - id: 0221-up 1329 | name: Test 0221 - up 1330 | schedule: '@every 30s' 1331 | timeout: 1s 1332 | type: http 1333 | urls: http://localhost:5678/pattern?r=200x1 1334 | - id: 0222-up 1335 | name: Test 0222 - up 1336 | schedule: '@every 30s' 1337 | timeout: 1s 1338 | type: http 1339 | urls: http://localhost:5678/pattern?r=200x1 1340 | - id: 0223-up 1341 | name: Test 0223 - up 1342 | schedule: '@every 30s' 1343 | timeout: 1s 1344 | type: http 1345 | urls: http://localhost:5678/pattern?r=200x1 1346 | - id: 0224-up 1347 | name: Test 0224 - up 1348 | schedule: '@every 30s' 1349 | timeout: 1s 1350 | type: http 1351 | urls: http://localhost:5678/pattern?r=200x1 1352 | - id: 0225-intermittent 1353 | name: Test 0225 - intermittent 1354 | schedule: '@every 30s' 1355 | timeout: 1s 1356 | type: http 1357 | urls: http://localhost:5678/pattern?r=200x5,500x1 1358 | - id: 0226-up 1359 | name: Test 0226 - up 1360 | schedule: '@every 30s' 1361 | timeout: 1s 1362 | type: http 1363 | urls: http://localhost:5678/pattern?r=200x1 1364 | - id: 0227-up 1365 | name: Test 0227 - up 1366 | schedule: '@every 30s' 1367 | timeout: 1s 1368 | type: http 1369 | urls: http://localhost:5678/pattern?r=200x1 1370 | - id: 0228-up 1371 | name: Test 0228 - up 1372 | schedule: '@every 30s' 1373 | timeout: 1s 1374 | type: http 1375 | urls: http://localhost:5678/pattern?r=200x1 1376 | - id: 0229-up 1377 | name: Test 0229 - up 1378 | schedule: '@every 30s' 1379 | timeout: 1s 1380 | type: http 1381 | urls: http://localhost:5678/pattern?r=200x1 1382 | - id: 0230-down 1383 | name: Test 0230 - down 1384 | schedule: '@every 30s' 1385 | timeout: 1s 1386 | type: http 1387 | urls: http://localhost:5678/pattern?r=400x1 1388 | - id: 0231-up 1389 | name: Test 0231 - up 1390 | schedule: '@every 30s' 1391 | timeout: 1s 1392 | type: http 1393 | urls: http://localhost:5678/pattern?r=200x1 1394 | - id: 0232-up 1395 | name: Test 0232 - up 1396 | schedule: '@every 30s' 1397 | timeout: 1s 1398 | type: http 1399 | urls: http://localhost:5678/pattern?r=200x1 1400 | - id: 0233-up 1401 | name: Test 0233 - up 1402 | schedule: '@every 30s' 1403 | timeout: 1s 1404 | type: http 1405 | urls: http://localhost:5678/pattern?r=200x1 1406 | - id: 0234-up 1407 | name: Test 0234 - up 1408 | schedule: '@every 30s' 1409 | timeout: 1s 1410 | type: http 1411 | urls: http://localhost:5678/pattern?r=200x1 1412 | - id: 0235-up 1413 | name: Test 0235 - up 1414 | schedule: '@every 30s' 1415 | timeout: 1s 1416 | type: http 1417 | urls: http://localhost:5678/pattern?r=200x1 1418 | - id: 0236-up 1419 | name: Test 0236 - up 1420 | schedule: '@every 30s' 1421 | timeout: 1s 1422 | type: http 1423 | urls: http://localhost:5678/pattern?r=200x1 1424 | - id: 0237-up 1425 | name: Test 0237 - up 1426 | schedule: '@every 30s' 1427 | timeout: 1s 1428 | type: http 1429 | urls: http://localhost:5678/pattern?r=200x1 1430 | - id: 0238-up 1431 | name: Test 0238 - up 1432 | schedule: '@every 30s' 1433 | timeout: 1s 1434 | type: http 1435 | urls: http://localhost:5678/pattern?r=200x1 1436 | - id: 0239-up 1437 | name: Test 0239 - up 1438 | schedule: '@every 30s' 1439 | timeout: 1s 1440 | type: http 1441 | urls: http://localhost:5678/pattern?r=200x1 1442 | - id: 0240-intermittent 1443 | name: Test 0240 - intermittent 1444 | schedule: '@every 30s' 1445 | timeout: 1s 1446 | type: http 1447 | urls: http://localhost:5678/pattern?r=200x5,500x1 1448 | - id: 0241-up 1449 | name: Test 0241 - up 1450 | schedule: '@every 30s' 1451 | timeout: 1s 1452 | type: http 1453 | urls: http://localhost:5678/pattern?r=200x1 1454 | - id: 0242-up 1455 | name: Test 0242 - up 1456 | schedule: '@every 30s' 1457 | timeout: 1s 1458 | type: http 1459 | urls: http://localhost:5678/pattern?r=200x1 1460 | - id: 0243-up 1461 | name: Test 0243 - up 1462 | schedule: '@every 30s' 1463 | timeout: 1s 1464 | type: http 1465 | urls: http://localhost:5678/pattern?r=200x1 1466 | - id: 0244-up 1467 | name: Test 0244 - up 1468 | schedule: '@every 30s' 1469 | timeout: 1s 1470 | type: http 1471 | urls: http://localhost:5678/pattern?r=200x1 1472 | - id: 0245-up 1473 | name: Test 0245 - up 1474 | schedule: '@every 30s' 1475 | timeout: 1s 1476 | type: http 1477 | urls: http://localhost:5678/pattern?r=200x1 1478 | - id: 0246-up 1479 | name: Test 0246 - up 1480 | schedule: '@every 30s' 1481 | timeout: 1s 1482 | type: http 1483 | urls: http://localhost:5678/pattern?r=200x1 1484 | - id: 0247-up 1485 | name: Test 0247 - up 1486 | schedule: '@every 30s' 1487 | timeout: 1s 1488 | type: http 1489 | urls: http://localhost:5678/pattern?r=200x1 1490 | - id: 0248-up 1491 | name: Test 0248 - up 1492 | schedule: '@every 30s' 1493 | timeout: 1s 1494 | type: http 1495 | urls: http://localhost:5678/pattern?r=200x1 1496 | - id: 0249-up 1497 | name: Test 0249 - up 1498 | schedule: '@every 30s' 1499 | timeout: 1s 1500 | type: http 1501 | urls: http://localhost:5678/pattern?r=200x1 1502 | - id: 0250-down 1503 | name: Test 0250 - down 1504 | schedule: '@every 30s' 1505 | timeout: 1s 1506 | type: http 1507 | urls: http://localhost:5678/pattern?r=400x1 1508 | - id: 0251-up 1509 | name: Test 0251 - up 1510 | schedule: '@every 30s' 1511 | timeout: 1s 1512 | type: http 1513 | urls: http://localhost:5678/pattern?r=200x1 1514 | - id: 0252-up 1515 | name: Test 0252 - up 1516 | schedule: '@every 30s' 1517 | timeout: 1s 1518 | type: http 1519 | urls: http://localhost:5678/pattern?r=200x1 1520 | - id: 0253-up 1521 | name: Test 0253 - up 1522 | schedule: '@every 30s' 1523 | timeout: 1s 1524 | type: http 1525 | urls: http://localhost:5678/pattern?r=200x1 1526 | - id: 0254-up 1527 | name: Test 0254 - up 1528 | schedule: '@every 30s' 1529 | timeout: 1s 1530 | type: http 1531 | urls: http://localhost:5678/pattern?r=200x1 1532 | - id: 0255-intermittent 1533 | name: Test 0255 - intermittent 1534 | schedule: '@every 30s' 1535 | timeout: 1s 1536 | type: http 1537 | urls: http://localhost:5678/pattern?r=200x5,500x1 1538 | - id: 0256-up 1539 | name: Test 0256 - up 1540 | schedule: '@every 30s' 1541 | timeout: 1s 1542 | type: http 1543 | urls: http://localhost:5678/pattern?r=200x1 1544 | - id: 0257-up 1545 | name: Test 0257 - up 1546 | schedule: '@every 30s' 1547 | timeout: 1s 1548 | type: http 1549 | urls: http://localhost:5678/pattern?r=200x1 1550 | - id: 0258-up 1551 | name: Test 0258 - up 1552 | schedule: '@every 30s' 1553 | timeout: 1s 1554 | type: http 1555 | urls: http://localhost:5678/pattern?r=200x1 1556 | - id: 0259-up 1557 | name: Test 0259 - up 1558 | schedule: '@every 30s' 1559 | timeout: 1s 1560 | type: http 1561 | urls: http://localhost:5678/pattern?r=200x1 1562 | - id: 0260-down 1563 | name: Test 0260 - down 1564 | schedule: '@every 30s' 1565 | timeout: 1s 1566 | type: http 1567 | urls: http://localhost:5678/pattern?r=400x1 1568 | - id: 0261-up 1569 | name: Test 0261 - up 1570 | schedule: '@every 30s' 1571 | timeout: 1s 1572 | type: http 1573 | urls: http://localhost:5678/pattern?r=200x1 1574 | - id: 0262-up 1575 | name: Test 0262 - up 1576 | schedule: '@every 30s' 1577 | timeout: 1s 1578 | type: http 1579 | urls: http://localhost:5678/pattern?r=200x1 1580 | - id: 0263-up 1581 | name: Test 0263 - up 1582 | schedule: '@every 30s' 1583 | timeout: 1s 1584 | type: http 1585 | urls: http://localhost:5678/pattern?r=200x1 1586 | - id: 0264-up 1587 | name: Test 0264 - up 1588 | schedule: '@every 30s' 1589 | timeout: 1s 1590 | type: http 1591 | urls: http://localhost:5678/pattern?r=200x1 1592 | - id: 0265-up 1593 | name: Test 0265 - up 1594 | schedule: '@every 30s' 1595 | timeout: 1s 1596 | type: http 1597 | urls: http://localhost:5678/pattern?r=200x1 1598 | - id: 0266-up 1599 | name: Test 0266 - up 1600 | schedule: '@every 30s' 1601 | timeout: 1s 1602 | type: http 1603 | urls: http://localhost:5678/pattern?r=200x1 1604 | - id: 0267-up 1605 | name: Test 0267 - up 1606 | schedule: '@every 30s' 1607 | timeout: 1s 1608 | type: http 1609 | urls: http://localhost:5678/pattern?r=200x1 1610 | - id: 0268-up 1611 | name: Test 0268 - up 1612 | schedule: '@every 30s' 1613 | timeout: 1s 1614 | type: http 1615 | urls: http://localhost:5678/pattern?r=200x1 1616 | - id: 0269-up 1617 | name: Test 0269 - up 1618 | schedule: '@every 30s' 1619 | timeout: 1s 1620 | type: http 1621 | urls: http://localhost:5678/pattern?r=200x1 1622 | - id: 0270-intermittent 1623 | name: Test 0270 - intermittent 1624 | schedule: '@every 30s' 1625 | timeout: 1s 1626 | type: http 1627 | urls: http://localhost:5678/pattern?r=200x5,500x1 1628 | - id: 0271-up 1629 | name: Test 0271 - up 1630 | schedule: '@every 30s' 1631 | timeout: 1s 1632 | type: http 1633 | urls: http://localhost:5678/pattern?r=200x1 1634 | - id: 0272-up 1635 | name: Test 0272 - up 1636 | schedule: '@every 30s' 1637 | timeout: 1s 1638 | type: http 1639 | urls: http://localhost:5678/pattern?r=200x1 1640 | - id: 0273-up 1641 | name: Test 0273 - up 1642 | schedule: '@every 30s' 1643 | timeout: 1s 1644 | type: http 1645 | urls: http://localhost:5678/pattern?r=200x1 1646 | - id: 0274-up 1647 | name: Test 0274 - up 1648 | schedule: '@every 30s' 1649 | timeout: 1s 1650 | type: http 1651 | urls: http://localhost:5678/pattern?r=200x1 1652 | - id: 0275-up 1653 | name: Test 0275 - up 1654 | schedule: '@every 30s' 1655 | timeout: 1s 1656 | type: http 1657 | urls: http://localhost:5678/pattern?r=200x1 1658 | - id: 0276-up 1659 | name: Test 0276 - up 1660 | schedule: '@every 30s' 1661 | timeout: 1s 1662 | type: http 1663 | urls: http://localhost:5678/pattern?r=200x1 1664 | - id: 0277-up 1665 | name: Test 0277 - up 1666 | schedule: '@every 30s' 1667 | timeout: 1s 1668 | type: http 1669 | urls: http://localhost:5678/pattern?r=200x1 1670 | - id: 0278-up 1671 | name: Test 0278 - up 1672 | schedule: '@every 30s' 1673 | timeout: 1s 1674 | type: http 1675 | urls: http://localhost:5678/pattern?r=200x1 1676 | - id: 0279-up 1677 | name: Test 0279 - up 1678 | schedule: '@every 30s' 1679 | timeout: 1s 1680 | type: http 1681 | urls: http://localhost:5678/pattern?r=200x1 1682 | - id: 0280-down 1683 | name: Test 0280 - down 1684 | schedule: '@every 30s' 1685 | timeout: 1s 1686 | type: http 1687 | urls: http://localhost:5678/pattern?r=400x1 1688 | - id: 0281-up 1689 | name: Test 0281 - up 1690 | schedule: '@every 30s' 1691 | timeout: 1s 1692 | type: http 1693 | urls: http://localhost:5678/pattern?r=200x1 1694 | - id: 0282-up 1695 | name: Test 0282 - up 1696 | schedule: '@every 30s' 1697 | timeout: 1s 1698 | type: http 1699 | urls: http://localhost:5678/pattern?r=200x1 1700 | - id: 0283-up 1701 | name: Test 0283 - up 1702 | schedule: '@every 30s' 1703 | timeout: 1s 1704 | type: http 1705 | urls: http://localhost:5678/pattern?r=200x1 1706 | - id: 0284-up 1707 | name: Test 0284 - up 1708 | schedule: '@every 30s' 1709 | timeout: 1s 1710 | type: http 1711 | urls: http://localhost:5678/pattern?r=200x1 1712 | - id: 0285-intermittent 1713 | name: Test 0285 - intermittent 1714 | schedule: '@every 30s' 1715 | timeout: 1s 1716 | type: http 1717 | urls: http://localhost:5678/pattern?r=200x5,500x1 1718 | - id: 0286-up 1719 | name: Test 0286 - up 1720 | schedule: '@every 30s' 1721 | timeout: 1s 1722 | type: http 1723 | urls: http://localhost:5678/pattern?r=200x1 1724 | - id: 0287-up 1725 | name: Test 0287 - up 1726 | schedule: '@every 30s' 1727 | timeout: 1s 1728 | type: http 1729 | urls: http://localhost:5678/pattern?r=200x1 1730 | - id: 0288-up 1731 | name: Test 0288 - up 1732 | schedule: '@every 30s' 1733 | timeout: 1s 1734 | type: http 1735 | urls: http://localhost:5678/pattern?r=200x1 1736 | - id: 0289-up 1737 | name: Test 0289 - up 1738 | schedule: '@every 30s' 1739 | timeout: 1s 1740 | type: http 1741 | urls: http://localhost:5678/pattern?r=200x1 1742 | - id: 0290-down 1743 | name: Test 0290 - down 1744 | schedule: '@every 30s' 1745 | timeout: 1s 1746 | type: http 1747 | urls: http://localhost:5678/pattern?r=400x1 1748 | - id: 0291-up 1749 | name: Test 0291 - up 1750 | schedule: '@every 30s' 1751 | timeout: 1s 1752 | type: http 1753 | urls: http://localhost:5678/pattern?r=200x1 1754 | - id: 0292-up 1755 | name: Test 0292 - up 1756 | schedule: '@every 30s' 1757 | timeout: 1s 1758 | type: http 1759 | urls: http://localhost:5678/pattern?r=200x1 1760 | - id: 0293-up 1761 | name: Test 0293 - up 1762 | schedule: '@every 30s' 1763 | timeout: 1s 1764 | type: http 1765 | urls: http://localhost:5678/pattern?r=200x1 1766 | - id: 0294-up 1767 | name: Test 0294 - up 1768 | schedule: '@every 30s' 1769 | timeout: 1s 1770 | type: http 1771 | urls: http://localhost:5678/pattern?r=200x1 1772 | - id: 0295-up 1773 | name: Test 0295 - up 1774 | schedule: '@every 30s' 1775 | timeout: 1s 1776 | type: http 1777 | urls: http://localhost:5678/pattern?r=200x1 1778 | - id: 0296-up 1779 | name: Test 0296 - up 1780 | schedule: '@every 30s' 1781 | timeout: 1s 1782 | type: http 1783 | urls: http://localhost:5678/pattern?r=200x1 1784 | - id: 0297-up 1785 | name: Test 0297 - up 1786 | schedule: '@every 30s' 1787 | timeout: 1s 1788 | type: http 1789 | urls: http://localhost:5678/pattern?r=200x1 1790 | - id: 0298-up 1791 | name: Test 0298 - up 1792 | schedule: '@every 30s' 1793 | timeout: 1s 1794 | type: http 1795 | urls: http://localhost:5678/pattern?r=200x1 1796 | - id: 0299-up 1797 | name: Test 0299 - up 1798 | schedule: '@every 30s' 1799 | timeout: 1s 1800 | type: http 1801 | urls: http://localhost:5678/pattern?r=200x1 1802 | output.elasticsearch: 1803 | hosts: 1804 | - localhost:9200 1805 | processors: 1806 | - add_observer_metadata: 1807 | geo: 1808 | location: 37.926868, -78.024902 1809 | name: ${GEO_NAME} 1810 | 1811 | -------------------------------------------------------------------------------- /testing/configs/_template.yml: -------------------------------------------------------------------------------- 1 | heartbeat.monitors: 2 | 3 | output.elasticsearch: 4 | hosts: ["localhost:9200"] 5 | 6 | processors: 7 | - add_observer_metadata: 8 | geo: 9 | name: "${GEO_NAME}" 10 | location: "37.926868, -78.024902" 11 | 12 | #logging.level: debug 13 | #logging.selectors: ["*"] 14 | -------------------------------------------------------------------------------- /testing/configs/client-auth/bads-ccert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIEqDCCApCgAwIBAgIUK5Ns4y2CzosB/ZoFlaxjZqoBTIIwDQYJKoZIhvcNAQEL 3 | BQAwfjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM 4 | DVNhbiBGcmFuY2lzY28xDzANBgNVBAoMBkJhZFNTTDExMC8GA1UEAwwoQmFkU1NM 5 | IENsaWVudCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0xOTExMjcwMDE5 6 | NTdaFw0yMTExMjYwMDE5NTdaMG8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp 7 | Zm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ8wDQYDVQQKDAZCYWRTU0wx 8 | IjAgBgNVBAMMGUJhZFNTTCBDbGllbnQgQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3 9 | DQEBAQUAA4IBDwAwggEKAoIBAQDHN18R6x5Oz+u6SOXLoxIscz5GHR6cDcCLgyPa 10 | x2XfXHdJs+h6fTy61WGM+aXEhR2SIwbj5997s34m0MsbvkJrFmn0LHK1fuTLCihE 11 | EmxGdCGZA9xrwxFYAkEjP7D8v7cAWRMipYF/JP7VU7xNUo+QSkZ0sOi9k6bNkABK 12 | L3+yP6PqAzsBoKIN5lN/YRLrppsDmk6nrRDo4R3CD+8JQl9quEoOmL22Pc/qpOjL 13 | 1jgOIFSE5y3gwbzDlfCYoAL5V+by1vu0yJShTTK8oo5wvphcFfEHaQ9w5jFg2htd 14 | q99UER3BKuNDuL+zejqGQZCWb0Xsk8S5WBuX8l3Brrg5giqNAgMBAAGjLTArMAkG 15 | A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgeAMAsGA1UdDwQEAwIF4DANBgkqhkiG 16 | 9w0BAQsFAAOCAgEAZBauLzFSOijkDadcippr9C6laHebb0oRS54xAV70E9k5GxfR 17 | /E2EMuQ8X+miRUMXxKquffcDsSxzo2ac0flw94hDx3B6vJIYvsQx9Lzo95Im0DdT 18 | DkHFXhTlv2kjQwFVnEsWYwyGpHMTjanvNkO7sBP9p1bN1qTE3QAeyMZNKWJk5xPl 19 | U298ERar6tl3Z2Cl8mO6yLhrq4ba6iPGw08SENxzuAJW+n8r0rq7EU+bMg5spgT1 20 | CxExzG8Bb0f98ZXMklpYFogkcuH4OUOFyRodotrotm3iRbuvZNk0Zz7N5n1oLTPl 21 | bGPMwBcqaGXvK62NlaRkwjnbkPM4MYvREM0bbAgZD2GHyANBTso8bdWvhLvmoSjs 22 | FSqJUJp17AZ0x/ELWZd69v2zKW9UdPmw0evyVR19elh/7dmtF6wbewc4N4jxQnTq 23 | IItuhIWKWB9edgJz65uZ9ubQWjXoa+9CuWcV/1KxuKCbLHdZXiboLrKm4S1WmMYW 24 | d0sJm95H9mJzcLyhLF7iX2kK6K9ug1y02YCVXBC9WGZc2x6GMS7lDkXSkJFy3EWh 25 | CmfxkmFGwOgwKt3Jd1pF9ftcSEMhu4WcMgxi9vZr9OdkJLxmk033sVKI/hnkPaHw 26 | g0Y2YBH5v0xmi8sYU7weOcwynkjZARpUltBUQ0pWCF5uJsEB8uE8PPDD3c4= 27 | -----END CERTIFICATE----- 28 | 29 | -------------------------------------------------------------------------------- /testing/configs/client-auth/bads-ckey.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAxzdfEeseTs/rukjly6MSLHM+Rh0enA3Ai4Mj2sdl31x3SbPo 3 | en08utVhjPmlxIUdkiMG4+ffe7N+JtDLG75CaxZp9CxytX7kywooRBJsRnQhmQPc 4 | a8MRWAJBIz+w/L+3AFkTIqWBfyT+1VO8TVKPkEpGdLDovZOmzZAASi9/sj+j6gM7 5 | AaCiDeZTf2ES66abA5pOp60Q6OEdwg/vCUJfarhKDpi9tj3P6qToy9Y4DiBUhOct 6 | 4MG8w5XwmKAC+Vfm8tb7tMiUoU0yvKKOcL6YXBXxB2kPcOYxYNobXavfVBEdwSrj 7 | Q7i/s3o6hkGQlm9F7JPEuVgbl/Jdwa64OYIqjQIDAQABAoIBAFUQf7fW/YoJnk5c 8 | 8kKRzyDL1Lt7k6Zu+NiZlqXEnutRQF5oQ8yJzXS5yH25296eOJI+AqMuT28ypZtN 9 | bGzcQOAZIgTxNcnp9Sf9nlPyyekLjY0Y6PXaxX0e+VFj0N8bvbiYUGNq6HCyC15r 10 | 8uvRZRvnm04YfEj20zLTWkxTG+OwJ6ZNha1vfq8z7MG5JTsZbP0g7e/LrEb3wI7J 11 | Zu9yHQUzq23HhfhpmLN/0l89YLtOaS8WNq4QvKYgZapw/0G1wWoWW4Y2/UpAxZ9r 12 | cqTBWSpCSCCgyWjiNhPbSJWfe/9J2bcanITLcvCLlPWGAHy1wpo9iBH57y7S+7YS 13 | 3yi7lgECgYEA8lwaRIChc38tmtQCNPtai/7uVDdeJe0uv8Jsg04FTF8KMYcD0V1g 14 | +T7rUPA+rTHwv8uAGLdzl4NW5Qryw18rDY+UivnaZkEdEsnlo3fc8MSQF78dDHCX 15 | nwmHfOmBnBoSbLl+W5ByHkJRHOnX+8qKq9ePNFUMf/hZNYuma9BCFBUCgYEA0m2p 16 | VDn12YdhFUUBIH91aD5cQIsBhkHFU4vqW4zBt6TsJpFciWbrBrTeRzeDou59aIsn 17 | zGBrLMykOY+EwwRku9KTVM4U791Z/NFbH89GqyUaicb4or+BXw5rGF8DmzSsDo0f 18 | ixJ9TVD5DmDi3c9ZQ7ljrtdSxPdA8kOoYPFsApkCgYEA08uZSPQAI6aoe/16UEK4 19 | Rk9qhz47kHlNuVZ27ehoyOzlQ5Lxyy0HacmKaxkILOLPuUxljTQEWAv3DAIdVI7+ 20 | WMN41Fq0eVe9yIWXoNtGwUGFirsA77YVSm5RcN++3GQMZedUfUAl+juKFvJkRS4j 21 | MTkXdGw+mDa3/wsjTGSa2mECgYABO6NCWxSVsbVf6oeXKSgG9FaWCjp4DuqZErjM 22 | 0IZSDSVVFIT2SSQXZffncuvSiJMziZ0yFV6LZKeRrsWYXu44K4Oxe4Oj5Cgi0xc1 23 | mIFRf2YoaIIMchLP+8Wk3ummfyiC7VDB/9m8Gj1bWDX8FrrvKqbq31gcz1YSFVNn 24 | PgLkAQKBgFzG8NdL8os55YcjBcOZMUs5QTKiQSyZM0Abab17k9JaqsU0jQtzeFsY 25 | FTiwh2uh6l4gdO/dGC/P0Vrp7F05NnO7oE4T+ojDzVQMnFpCBeL7x08GfUQkphEG 26 | m0Wqhhi8/24Sy934t5Txgkfoltg8ahkx934WjP6WWRnSAu+cf+vW 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /testing/configs/client-auth/tls-client-auth.yml: -------------------------------------------------------------------------------- 1 | ################### Heartbeat Configuration Example ######################### 2 | 3 | # This file is an example configuration file highlighting only some common options. 4 | # The heartbeat.reference.yml file in the same directory contains all the supported options 5 | # with detailed comments. You can use it for reference. 6 | # 7 | # You can find the full configuration reference here: 8 | # https://www.elastic.co/guide/en/beats/heartbeat/index.html 9 | 10 | ############################# Heartbeat ###################################### 11 | 12 | # Define a directory to load monitor definitions from. Definitions take the form 13 | # of individual yaml files. 14 | heartbeat.config.monitors: 15 | # Directory + glob pattern to search for configuration files 16 | path: ${path.config}/monitors.d/*.yml 17 | # If enabled, heartbeat will periodically check the config.monitors path for changes 18 | reload.enabled: false 19 | # How often to check for changes 20 | reload.period: 5s 21 | 22 | # Configure monitors inline 23 | heartbeat.monitors: 24 | - type: http 25 | 26 | # List or urls to query 27 | urls: ["https://client.badssl.com"] 28 | check.request: 29 | headers: 30 | User-Agent: "curl/7.55.1" 31 | response: 32 | include_body: always 33 | ssl: 34 | certificate: "bads-ccert.pem" 35 | key: "bads-ckey.pem" 36 | # Optional cipher override 37 | #cipher_suites: 38 | # - ECDHE-RSA-AES-128-GCM-SHA256 39 | # Configure task schedule 40 | schedule: '@every 10s' 41 | 42 | # Total test connection and data exchange timeout 43 | #timeout: 16s 44 | 45 | #==================== Elasticsearch template setting ========================== 46 | 47 | setup.template.settings: 48 | index.number_of_shards: 1 49 | index.codec: best_compression 50 | #_source.enabled: false 51 | 52 | #================================ General ===================================== 53 | 54 | # The name of the shipper that publishes the network data. It can be used to group 55 | # all the transactions sent by a single shipper in the web interface. 56 | #name: 57 | 58 | # The tags of the shipper are included in their own field with each 59 | # transaction published. 60 | #tags: ["service-X", "web-tier"] 61 | 62 | # Optional fields that you can specify to add additional information to the 63 | # output. 64 | #fields: 65 | # env: staging 66 | 67 | 68 | #============================== Kibana ===================================== 69 | 70 | # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. 71 | # This requires a Kibana endpoint configuration. 72 | setup.kibana: 73 | 74 | # Kibana Host 75 | # Scheme and port can be left out and will be set to the default (http and 5601) 76 | # In case you specify and additional path, the scheme is required: http://localhost:5601/path 77 | # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 78 | #host: "localhost:5601" 79 | 80 | # Kibana Space ID 81 | # ID of the Kibana Space into which the dashboards should be loaded. By default, 82 | # the Default Space will be used. 83 | #space.id: 84 | 85 | #============================= Elastic Cloud ================================== 86 | 87 | # These settings simplify using Heartbeat with the Elastic Cloud (https://cloud.elastic.co/). 88 | 89 | # The cloud.id setting overwrites the `output.elasticsearch.hosts` and 90 | # `setup.kibana.host` options. 91 | # You can find the `cloud.id` in the Elastic Cloud web UI. 92 | #cloud.id: 93 | 94 | # The cloud.auth setting overwrites the `output.elasticsearch.username` and 95 | # `output.elasticsearch.password` settings. The format is `:`. 96 | #cloud.auth: 97 | 98 | #================================ Outputs ===================================== 99 | 100 | # Configure what output to use when sending the data collected by the beat. 101 | output.console: ~ 102 | 103 | 104 | #-------------------------- Elasticsearch output ------------------------------ 105 | #output.elasticsearch: 106 | # Array of hosts to connect to. 107 | # hosts: ["localhost:9200"] 108 | 109 | # Protocol - either `http` (default) or `https`. 110 | #protocol: "https" 111 | 112 | # Authentication credentials - either API key or username/password. 113 | #api_key: "id:api_key" 114 | #username: "elastic" 115 | #password: "changeme" 116 | 117 | #----------------------------- Logstash output -------------------------------- 118 | #output.logstash: 119 | # The Logstash hosts 120 | #hosts: ["localhost:5044"] 121 | 122 | # Optional SSL. By default is off. 123 | # List of root certificates for HTTPS server verifications 124 | #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] 125 | 126 | # Certificate for SSL client authentication 127 | #ssl.certificate: "/etc/pki/client/cert.pem" 128 | 129 | # Client Certificate Key 130 | #ssl.key: "/etc/pki/client/cert.key" 131 | 132 | #================================ Processors ===================================== 133 | 134 | processors: 135 | - add_observer_metadata: 136 | # Optional, but recommended geo settings for the location Heartbeat is running in 137 | #geo: 138 | # Token describing this location 139 | #name: us-east-1a 140 | 141 | # Lat, Lon " 142 | #location: "37.926868, -78.024902" 143 | 144 | #================================ Logging ===================================== 145 | 146 | # Sets log level. The default log level is info. 147 | # Available log levels are: error, warning, info, debug 148 | #logging.level: debug 149 | 150 | # At debug level, you can selectively enable logging only for some components. 151 | # To enable all selectors use ["*"]. Examples of other selectors are "beat", 152 | # "publish", "service". 153 | #logging.selectors: ["*"] 154 | 155 | #============================== X-Pack Monitoring =============================== 156 | # heartbeat can export internal metrics to a central Elasticsearch monitoring 157 | # cluster. This requires xpack monitoring to be enabled in Elasticsearch. The 158 | # reporting is disabled by default. 159 | 160 | # Set to true to enable the monitoring reporter. 161 | #monitoring.enabled: false 162 | 163 | # Sets the UUID of the Elasticsearch cluster under which monitoring data for this 164 | # Heartbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch 165 | # is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch. 166 | #monitoring.cluster_uuid: 167 | 168 | # Uncomment to send the metrics to Elasticsearch. Most settings from the 169 | # Elasticsearch output are accepted here as well. 170 | # Note that the settings should point to your Elasticsearch *monitoring* cluster. 171 | # Any setting that is not set is automatically inherited from the Elasticsearch 172 | # output configuration, so if you have the Elasticsearch output configured such 173 | # that it is pointing to your Elasticsearch monitoring cluster, you can simply 174 | # uncomment the following line. 175 | #monitoring.elasticsearch: 176 | 177 | #================================= Migration ================================== 178 | 179 | # This allows to enable 6.7 migration aliases 180 | #migration.6_to_7.enabled: true 181 | -------------------------------------------------------------------------------- /testing/configs/complete.yml: -------------------------------------------------------------------------------- 1 | ################### Heartbeat Configuration Example ######################### 2 | 3 | # This file is an example configuration file highlighting only some common options. 4 | # The heartbeat.reference.yml file in the same directory contains all the supported options 5 | # with detailed comments. You can use it for reference. 6 | # 7 | # You can find the full configuration reference here: 8 | # https://www.elastic.co/guide/en/beats/heartbeat/index.html 9 | 10 | ############################# Heartbeat ###################################### 11 | 12 | # Define a directory to load monitor definitions from. Definitions take the form 13 | # of individual yaml files. 14 | heartbeat.config.monitors: 15 | # Directory + glob pattern to search for configuration files 16 | path: ${path.config}/monitors.d/*.yml 17 | # If enabled, heartbeat will periodically check the config.monitors path for changes 18 | reload.enabled: false 19 | # How often to check for changes 20 | reload.period: 5s 21 | 22 | # Configure monitors inline 23 | heartbeat.monitors: 24 | - type: http 25 | id: localhost 26 | urls: ["http://localhost:9200"] 27 | schedule: '@every 10s' 28 | - type: http 29 | id: elastic-co 30 | urls: ["https://www.elastic.co"] 31 | schedule: '@every 10s' 32 | mode: all 33 | - type: http 34 | id: andrewvc-com 35 | urls: ["http://blog.andrewvc.com"] 36 | schedule: '@every 10s' 37 | mode: all 38 | - type: http 39 | id: secure-avc 40 | urls: ["https://blog.andrewvc.com"] 41 | schedule: '@every 10s' 42 | mode: all 43 | 44 | processors: 45 | - add_observer_metadata: 46 | geo: 47 | name: "${GEO_NAME}" 48 | location: "37.926868, -78.024902" 49 | 50 | #==================== Elasticsearch template setting ========================== 51 | 52 | setup.template.settings: 53 | index.number_of_shards: 1 54 | index.codec: best_compression 55 | #_source.enabled: false 56 | 57 | #================================ General ===================================== 58 | 59 | # The name of the shipper that publishes the network data. It can be used to group 60 | # all the transactions sent by a single shipper in the web interface. 61 | #name: 62 | 63 | # The tags of the shipper are included in their own field with each 64 | # transaction published. 65 | #tags: ["service-X", "web-tier"] 66 | 67 | # Optional fields that you can specify to add additional information to the 68 | # output. 69 | #fields: 70 | # env: staging 71 | 72 | 73 | #============================== Dashboards ===================================== 74 | # These settings control loading the sample dashboards to the Kibana index. Loading 75 | # the dashboards is disabled by default and can be enabled either by setting the 76 | # options here or by using the `setup` command. 77 | #setup.dashboards.enabled: false 78 | 79 | # The URL from where to download the dashboards archive. By default this URL 80 | # has a value which is computed based on the Beat name and version. For released 81 | # versions, this URL points to the dashboard archive on the artifacts.elastic.co 82 | # website. 83 | #setup.dashboards.url: 84 | 85 | #============================== Kibana ===================================== 86 | 87 | # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. 88 | # This requires a Kibana endpoint configuration. 89 | setup.kibana: 90 | 91 | # Kibana Host 92 | # Scheme and port can be left out and will be set to the default (http and 5601) 93 | # In case you specify and additional path, the scheme is required: http://localhost:5601/path 94 | # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 95 | #host: "localhost:5601" 96 | 97 | # Kibana Space ID 98 | # ID of the Kibana Space into which the dashboards should be loaded. By default, 99 | # the Default Space will be used. 100 | #space.id: 101 | 102 | #============================= Elastic Cloud ================================== 103 | 104 | # These settings simplify using heartbeat with the Elastic Cloud (https://cloud.elastic.co/). 105 | 106 | # The cloud.id setting overwrites the `output.elasticsearch.hosts` and 107 | # `setup.kibana.host` options. 108 | # You can find the `cloud.id` in the Elastic Cloud web UI. 109 | #cloud.id: 110 | 111 | # The cloud.auth setting overwrites the `output.elasticsearch.username` and 112 | # `output.elasticsearch.password` settings. The format is `:`. 113 | #cloud.auth: 114 | 115 | #================================ Outputs ===================================== 116 | 117 | # Configure what output to use when sending the data collected by the beat. 118 | 119 | #-------------------------- Elasticsearch output ------------------------------ 120 | output.elasticsearch: 121 | # Array of hosts to connect to. 122 | hosts: ["localhost:9200"] 123 | 124 | # Optional protocol and basic auth credentials. 125 | #protocol: "https" 126 | #username: "elastic" 127 | #password: "changeme" 128 | 129 | #----------------------------- Logstash output -------------------------------- 130 | #output.logstash: 131 | # The Logstash hosts 132 | #hosts: ["localhost:5044"] 133 | 134 | # Optional SSL. By default is off. 135 | # List of root certificates for HTTPS server verifications 136 | #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] 137 | 138 | # Certificate for SSL client authentication 139 | #ssl.certificate: "/etc/pki/client/cert.pem" 140 | 141 | # Client Certificate Key 142 | #ssl.key: "/etc/pki/client/cert.key" 143 | 144 | #================================ Processors ===================================== 145 | 146 | #================================ Logging ===================================== 147 | 148 | # Sets log level. The default log level is info. 149 | # Available log levels are: error, warning, info, debug 150 | #logging.level: debug 151 | 152 | # At debug level, you can selectively enable logging only for some components. 153 | # To enable all selectors use ["*"]. Examples of other selectors are "beat", 154 | # "publish", "service". 155 | #logging.selectors: ["*"] 156 | 157 | #============================== Xpack Monitoring =============================== 158 | # heartbeat can export internal metrics to a central Elasticsearch monitoring 159 | # cluster. This requires xpack monitoring to be enabled in Elasticsearch. The 160 | # reporting is disabled by default. 161 | 162 | # Set to true to enable the monitoring reporter. 163 | #monitoring.enabled: false 164 | 165 | # Uncomment to send the metrics to Elasticsearch. Most settings from the 166 | # Elasticsearch output are accepted here as well. 167 | # Note that the settings should point to your Elasticsearch *monitoring* cluster. 168 | # Any setting that is not set is automatically inherited from the Elasticsearch 169 | # output configuration, so if you have the Elasticsearch output configured such 170 | # that it is pointing to your Elasticsearch monitoring cluster, you can simply 171 | # uncomment the following line. 172 | #monitoring.elasticsearch: 173 | 174 | #================================= Migration ================================== 175 | 176 | # This allows to enable 6.7 migration aliases 177 | #migration.6_to_7.enabled: true 178 | -------------------------------------------------------------------------------- /testing/configs/demo.yml: -------------------------------------------------------------------------------- 1 | --- 2 | heartbeat.config.monitors: 3 | path: "${path.config}/monitors.d/*.yml" 4 | reload.enabled: false 5 | reload.period: 5s 6 | 7 | heartbeat.synthetic_suites: 8 | - name: Todos suite 9 | path: "/home/andrewvc/projects/synthetics/examples/todos" 10 | schedule: "@every 1m" 11 | 12 | heartbeat.monitors: 13 | - type: http 14 | id: elastic-co 15 | name: Elastic Homepage 16 | urls: ["https://www.elastic.co"] 17 | schedule: "@every 60s" 18 | mode: all 19 | ipv6: false 20 | tags: ["org:elastic"] 21 | - type: http 22 | id: elastic-co-404 23 | name: Elastic 404 24 | urls: ["https://www.elastic.co/i/am/not/a/realpagebutactually/a/404"] 25 | schedule: "@every 60s" 26 | mode: all 27 | ipv6: false 28 | tags: ["org:elastic"] 29 | response.include_body_max_bytes: 101024 30 | - type: http 31 | id: elastic-observability 32 | name: Elastic Forums 33 | urls: ["https://www.elastic.co/observability"] 34 | schedule: "@every 60s" 35 | tags: ["org:elastic"] 36 | - type: http 37 | id: ir-elastic-co 38 | name: Elastic Investor Relations 39 | urls: ["https://ir.elastic.co"] 40 | schedule: "@every 60s" 41 | tags: ["org:elastic"] 42 | - type: http 43 | id: elastic-community 44 | name: Elastic Community 45 | urls: ["https://community.elastic.co"] 46 | schedule: "@every 5m" 47 | tags: ["org:elastic"] 48 | - type: http 49 | id: elastic-training 50 | name: Elastic Training 51 | urls: ["https://training.elastic.co"] 52 | schedule: "@every 5m" 53 | tags: ["org:elastic"] 54 | - type: http 55 | id: hacker-news 56 | name: Hacker News 57 | urls: ["http://news.ycombinator.com"] 58 | schedule: "@every 30s" 59 | - type: http 60 | id: nytimes 61 | name: New York Times 62 | urls: ["https://nytimes.com"] 63 | schedule: "@every 30s" 64 | - type: http 65 | id: google-homepage 66 | name: Google Homepage 67 | urls: https://www.google.com 68 | tags: ["org:google"] 69 | schedule: '@every 30s' 70 | - type: http 71 | id: youtube-homepage 72 | name: Youtube Homepage 73 | urls: https://www.youtube.com 74 | tags: ["org:google"] 75 | schedule: '@every 30s' 76 | - type: http 77 | id: android-homepage 78 | name: Android Homepage 79 | urls: https://www.android.com 80 | tags: ["org:google"] 81 | schedule: "@every 30s" 82 | - type: icmp 83 | id: google-dns 84 | name: Google DNS 85 | hosts: ["8.8.8.8"] 86 | schedule: "@every 30s" 87 | tags: ["service:dns", "org:google"] 88 | - type: icmp 89 | name: Cloudflare DNS 90 | hosts: ["1.1.1.1"] 91 | schedule: "@every 30s" 92 | tags: ["service:dns", "org:cloudflare"] 93 | - type: tcp 94 | id: gmail-smtp 95 | name: GMail SMTP 96 | hosts: ["smtp.gmail.com:587"] 97 | schedule: "@every 30s" 98 | tags: ["service:smtp", "org:google"] 99 | - type: tcp 100 | id: o365-smtp 101 | name: Office 365 SMTP 102 | hosts: ["smtp.office365.com:587"] 103 | schedule: "@every 30s" 104 | tags: ["service:smtp", "org:microsoft"] 105 | - type: http 106 | id: example.net 107 | urls: ["https://example.net"] 108 | schedule: "@every 30s" 109 | mode: all 110 | ipv6: false 111 | - type: tcp 112 | hosts: ["localhost:18278"] 113 | id: always-down 114 | name: Always Down Local Port 115 | schedule: "@every 30s" 116 | - type: http 117 | urls: ["https://www.cloudflare.com"] 118 | id: cloudflare-home 119 | name: Cloudflare Homepage 120 | schedule: "@every 30s" 121 | tags: [ "org:cloudflare" ] 122 | - type: http 123 | urls: ["https://developers.cloudflare.com"] 124 | id: cloudflare-developers 125 | name: Cloudflare Developers 126 | schedule: "@every 30s" 127 | tags: [ "org:cloudflare" ] 128 | - type: http 129 | urls: ["https://blog.cloudflare.com"] 130 | id: cloudflare-blog 131 | name: Cloudflare Blog 132 | schedule: "@every 30s" 133 | tags: [ "org:cloudflare" ] 134 | - type: http 135 | urls: ["https://expired.badssl.com/"] 136 | id: expired-badssl 137 | name: BadSSL Expired 138 | schedule: "@every 30s" 139 | tags: [ "org:badssl" ] 140 | - type: http 141 | urls: ["https://wrong.host.badssl.com/"] 142 | id: badhost-badssl 143 | name: BadSSL Wrong Host 144 | schedule: "@every 30s" 145 | tags: [ "org:badssl" ] 146 | processors: 147 | - add_observer_metadata: 148 | geo: 149 | name: minneapolis 150 | location: 44.986656, -93.258133 151 | setup.template.settings: 152 | index.number_of_shards: 1 153 | index.codec: best_compression 154 | setup.kibana: 155 | output.elasticsearch: 156 | hosts: 157 | - localhost:9200 158 | -------------------------------------------------------------------------------- /testing/configs/generate.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # Simple generator script for creating arbitrary numbers of monitors. 4 | # If you need to modify it just copy this to a new file. 5 | # use: ./generate.py 50 6 | # where the first argument is the number of monitors you want to generate 7 | 8 | import sys 9 | import yaml 10 | 11 | with open("./_template.yml", 'r') as stream: 12 | y = yaml.safe_load(stream) 13 | 14 | count = int(sys.argv[1]) 15 | 16 | statusToPattern = { 17 | 'up': '200x1', 18 | 'down': '400x1', 19 | 'intermittent': '200x5,500x1', 20 | } 21 | 22 | monitors = [] 23 | for i in range(0, count): 24 | status = 'up' 25 | if i % 15 == 0: 26 | status = 'intermittent' 27 | elif i % 10 == 0: 28 | status = 'down' 29 | 30 | url = "http://localhost:5678/pattern?r=%s" % statusToPattern[status] 31 | monitors.append({ 32 | "id": '%04d-%s' % (i, status), 33 | "name": "Test %04d - %s" % (i, status), 34 | "type": "http", 35 | "schedule": "@every 30s", 36 | "urls": url, 37 | "timeout": "1s" 38 | }) 39 | 40 | y['heartbeat.monitors'] = monitors 41 | print yaml.dump(y) 42 | -------------------------------------------------------------------------------- /testing/configs/generate_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -ex 2 | ./generate.py 100 > 100-monitors.yml 3 | ./generate.py 300 > 300-monitors.yml 4 | ./generate.py 1000 > 1000-monitors.yml 5 | ./generate.py 10000 > 10000-monitors.yml 6 | ./generate.py 50000 > 50000-monitors.yml 7 | -------------------------------------------------------------------------------- /testing/configs/geo.yml: -------------------------------------------------------------------------------- 1 | # How to run this: 2 | # This needs env set, and if multiple are run concurrently separate data paths 3 | # `env GEO_NAME="minneapolis" ./heartbeat -e -d /tmp/hb1` 4 | # `env GEO_NAME="st-paul" ./heartbeat -e -d /tmp/hb2` 5 | 6 | 7 | heartbeat.config.monitors: 8 | # Directory + glob pattern to search for configuration files 9 | path: ${path.config}/monitors.d/*.yml 10 | # If enabled, heartbeat will periodically check the config.monitors path for changes 11 | reload.enabled: false 12 | # How often to check for changes 13 | reload.period: 5s 14 | 15 | # Configure monitors inline 16 | heartbeat.monitors: 17 | - type: http 18 | id: occasional-issues 19 | urls: ["http://localhost:5678/pattern?r=200x60,500x20"] 20 | schedule: '@every 1s' 21 | - type: http 22 | id: always-green 23 | urls: ["http://localhost:5678/"] 24 | schedule: '@every 1s' 25 | mode: all 26 | - type: http 27 | id: always-down 28 | urls: ["http://localhost:5678/pattern?r=500x4,404x4"] 29 | schedule: '@every 1s' 30 | mode: all 31 | - type: http 32 | id: mixed-1 33 | urls: ["http://localhost:5678/pattern?r=200x500,404x4"] 34 | schedule: '@every 1s' 35 | mode: all 36 | - type: http 37 | id: mixed-2 38 | urls: ["http://localhost:5678/pattern?r=200x500,404x4"] 39 | schedule: '@every 1s' 40 | mode: all 41 | - type: http 42 | id: mixed-3 43 | urls: ["http://localhost:5678/pattern?r=200x500,404x4"] 44 | schedule: '@every 1s' 45 | mode: all 46 | - type: http 47 | id: mixed-4 48 | urls: ["http://localhost:5678/pattern?r=200x500,404x4"] 49 | schedule: '@every 1s' 50 | mode: all 51 | 52 | setup.template.settings: 53 | index.number_of_shards: 1 54 | index.codec: best_compression 55 | #_source.enabled: false 56 | 57 | setup.kibana: 58 | 59 | output.elasticsearch: 60 | hosts: ["localhost:9200"] 61 | 62 | processors: 63 | - add_observer_metadata: 64 | geo: 65 | name: "${GEO_NAME}" 66 | location: "37.926868, -78.024902" 67 | -------------------------------------------------------------------------------- /testing/configs/mock-kubernetes.yml: -------------------------------------------------------------------------------- 1 | ################### Heartbeat Configuration Example ######################### 2 | 3 | # This file is an example configuration file highlighting only some common options. 4 | # The heartbeat.reference.yml file in the same directory contains all the supported options 5 | # with detailed comments. You can use it for reference. 6 | # 7 | # You can find the full configuration reference here: 8 | # https://www.elastic.co/guide/en/beats/heartbeat/index.html 9 | 10 | ############################# Heartbeat ###################################### 11 | 12 | # Define a directory to load monitor definitions from. Definitions take the form 13 | # of individual yaml files. 14 | heartbeat.config.monitors: 15 | # Directory + glob pattern to search for configuration files 16 | path: ${path.config}/monitors.d/*.yml 17 | # If enabled, heartbeat will periodically check the config.monitors path for changes 18 | reload.enabled: false 19 | # How often to check for changes 20 | reload.period: 5s 21 | 22 | # Configure monitors inline 23 | heartbeat.monitors: 24 | - type: tcp 25 | id: redis 26 | name: Redis 27 | hosts: ["localhost:6379"] 28 | schedule: '@every 10s' 29 | processors: 30 | - add_fields: 31 | target: kubernetes 32 | fields: 33 | container: 34 | id: 4f79ebad-e2b3-46ab-abba-bc00dda090c7 35 | image: custom-redis 36 | name: custom-redis 37 | node: 38 | name: demo 39 | pod: 40 | name: custom-redis 41 | uid: 5f75eba1-e2b3-46ab-abba-bc00dda090c1 42 | - type: tcp 43 | hosts: ["localhost:5601"] 44 | schedule: '@every 10s' 45 | id: kbn 46 | name: Kibana 47 | processors: 48 | - add_fields: 49 | target: kubernetes 50 | fields: 51 | container: 52 | id: 4f79ebad-e2b3-46ab-abba-bc00dda090c7 53 | image: custom-redis 54 | name: custom-redis 55 | node: 56 | name: demo 57 | pod: 58 | name: custom-redis 59 | uid: 5f75eba1-e2b3-46ab-abba-bc00dda090c1 60 | - type: tcp 61 | hosts: ["localhost:9200"] 62 | schedule: '@every 10s' 63 | id: es 64 | name: Elasticsearch 65 | processors: 66 | - add_fields: 67 | target: kubernetes 68 | fields: 69 | container: 70 | id: 4f79ebad-e2b3-46ab-abba-bc00dda090c7 71 | image: custom-redis 72 | name: custom-redis 73 | node: 74 | name: demo 75 | pod: 76 | name: custom-redis 77 | uid: 5f75eba1-e2b3-46ab-abba-bc00dda090c1 78 | - type: http 79 | hosts: ["localhost:5678"] 80 | schedule: '@every 10s' 81 | id: pet-clinic 82 | name: Pet Clinic 83 | processors: 84 | - add_fields: 85 | target: kubernetes 86 | fields: 87 | container: 88 | id: 4f79ebad-e2b3-46ab-abba-bc00dda090c7 89 | image: custom-redis 90 | name: custom-redis 91 | node: 92 | name: demo 93 | pod: 94 | name: custom-redis 95 | uid: 5f75eba1-e2b3-46ab-abba-bc00dda090c1 96 | 97 | 98 | # Total test connection and data exchange timeout 99 | #timeout: 16s 100 | 101 | #==================== Elasticsearch template setting ========================== 102 | 103 | setup.template.settings: 104 | index.number_of_shards: 1 105 | index.codec: best_compression 106 | #_source.enabled: false 107 | 108 | #================================ General ===================================== 109 | 110 | # The name of the shipper that publishes the network data. It can be used to group 111 | # all the transactions sent by a single shipper in the web interface. 112 | #name: 113 | 114 | # The tags of the shipper are included in their own field with each 115 | # transaction published. 116 | #tags: ["service-X", "web-tier"] 117 | 118 | # Optional fields that you can specify to add additional information to the 119 | # output. 120 | #fields: 121 | # env: staging 122 | 123 | 124 | #============================== Kibana ===================================== 125 | 126 | # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. 127 | # This requires a Kibana endpoint configuration. 128 | setup.kibana: 129 | 130 | # Kibana Host 131 | # Scheme and port can be left out and will be set to the default (http and 5601) 132 | # In case you specify and additional path, the scheme is required: http://localhost:5601/path 133 | # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 134 | #host: "localhost:5601" 135 | 136 | # Kibana Space ID 137 | # ID of the Kibana Space into which the dashboards should be loaded. By default, 138 | # the Default Space will be used. 139 | #space.id: 140 | 141 | #============================= Elastic Cloud ================================== 142 | 143 | # These settings simplify using Heartbeat with the Elastic Cloud (https://cloud.elastic.co/). 144 | 145 | # The cloud.id setting overwrites the `output.elasticsearch.hosts` and 146 | # `setup.kibana.host` options. 147 | # You can find the `cloud.id` in the Elastic Cloud web UI. 148 | #cloud.id: 149 | 150 | # The cloud.auth setting overwrites the `output.elasticsearch.username` and 151 | # `output.elasticsearch.password` settings. The format is `:`. 152 | #cloud.auth: 153 | 154 | #================================ Outputs ===================================== 155 | 156 | # Configure what output to use when sending the data collected by the beat. 157 | 158 | #-------------------------- Elasticsearch output ------------------------------ 159 | output.elasticsearch: 160 | # Array of hosts to connect to. 161 | hosts: ["localhost:9200"] 162 | 163 | # Optional protocol and basic auth credentials. 164 | #protocol: "https" 165 | #username: "elastic" 166 | #password: "changeme" 167 | 168 | #----------------------------- Logstash output -------------------------------- 169 | #output.logstash: 170 | # The Logstash hosts 171 | #hosts: ["localhost:5044"] 172 | 173 | # Optional SSL. By default is off. 174 | # List of root certificates for HTTPS server verifications 175 | #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] 176 | 177 | # Certificate for SSL client authentication 178 | #ssl.certificate: "/etc/pki/client/cert.pem" 179 | 180 | # Client Certificate Key 181 | #ssl.key: "/etc/pki/client/cert.key" 182 | 183 | #================================ Processors ===================================== 184 | 185 | processors: 186 | - add_observer_metadata: 187 | geo: 188 | name: us-midwest-dc 189 | 190 | #================================ Logging ===================================== 191 | 192 | # Sets log level. The default log level is info. 193 | # Available log levels are: error, warning, info, debug 194 | #logging.level: debug 195 | 196 | # At debug level, you can selectively enable logging only for some components. 197 | # To enable all selectors use ["*"]. Examples of other selectors are "beat", 198 | # "publish", "service". 199 | #logging.selectors: ["*"] 200 | 201 | #============================== X-Pack Monitoring =============================== 202 | # heartbeat can export internal metrics to a central Elasticsearch monitoring 203 | # cluster. This requires xpack monitoring to be enabled in Elasticsearch. The 204 | # reporting is disabled by default. 205 | 206 | # Set to true to enable the monitoring reporter. 207 | #monitoring.enabled: false 208 | 209 | # Sets the UUID of the Elasticsearch cluster under which monitoring data for this 210 | # Heartbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch 211 | # is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch. 212 | #monitoring.cluster_uuid: 213 | 214 | # Uncomment to send the metrics to Elasticsearch. Most settings from the 215 | # Elasticsearch output are accepted here as well. 216 | # Note that the settings should point to your Elasticsearch *monitoring* cluster. 217 | # Any setting that is not set is automatically inherited from the Elasticsearch 218 | # output configuration, so if you have the Elasticsearch output configured such 219 | # that it is pointing to your Elasticsearch monitoring cluster, you can simply 220 | # uncomment the following line. 221 | #monitoring.elasticsearch: 222 | 223 | #================================= Migration ================================== 224 | 225 | # This allows to enable 6.7 migration aliases 226 | #migration.6_to_7.enabled: true 227 | -------------------------------------------------------------------------------- /testing/configs/redirects.yml: -------------------------------------------------------------------------------- 1 | ################### Heartbeat Configuration Example ######################### 2 | 3 | # This file is an example configuration file highlighting only some common options. 4 | # The heartbeat.reference.yml file in the same directory contains all the supported options 5 | # with detailed comments. You can use it for reference. 6 | # 7 | # You can find the full configuration reference here: 8 | # https://www.elastic.co/guide/en/beats/heartbeat/index.html 9 | 10 | ############################# Heartbeat ###################################### 11 | 12 | # Define a directory to load monitor definitions from. Definitions take the form 13 | # of individual yaml files. 14 | heartbeat.config.monitors: 15 | # Directory + glob pattern to search for configuration files 16 | path: ${path.config}/monitors.d/*.yml 17 | # If enabled, heartbeat will periodically check the config.monitors path for changes 18 | reload.enabled: false 19 | # How often to check for changes 20 | reload.period: 5s 21 | 22 | # Configure monitors inline 23 | heartbeat.monitors: 24 | - type: http 25 | urls: ["http://localhost:5678/redirect?to=/redirect?to=/redirect?to=/", "http://elastic.co"] 26 | max_redirects: 10 27 | schedule: '@every 10s' 28 | 29 | #==================== Elasticsearch template setting ========================== 30 | 31 | setup.template.settings: 32 | index.number_of_shards: 1 33 | index.codec: best_compression 34 | #_source.enabled: false 35 | 36 | #================================ General ===================================== 37 | 38 | # The name of the shipper that publishes the network data. It can be used to group 39 | # all the transactions sent by a single shipper in the web interface. 40 | #name: 41 | 42 | # The tags of the shipper are included in their own field with each 43 | # transaction published. 44 | #tags: ["service-X", "web-tier"] 45 | 46 | # Optional fields that you can specify to add additional information to the 47 | # output. 48 | #fields: 49 | # env: staging 50 | 51 | 52 | #============================== Kibana ===================================== 53 | 54 | # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. 55 | # This requires a Kibana endpoint configuration. 56 | setup.kibana: 57 | 58 | # Kibana Host 59 | # Scheme and port can be left out and will be set to the default (http and 5601) 60 | # In case you specify and additional path, the scheme is required: http://localhost:5601/path 61 | # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 62 | #host: "localhost:5601" 63 | 64 | # Kibana Space ID 65 | # ID of the Kibana Space into which the dashboards should be loaded. By default, 66 | # the Default Space will be used. 67 | #space.id: 68 | 69 | #============================= Elastic Cloud ================================== 70 | 71 | # These settings simplify using Heartbeat with the Elastic Cloud (https://cloud.elastic.co/). 72 | 73 | # The cloud.id setting overwrites the `output.elasticsearch.hosts` and 74 | # `setup.kibana.host` options. 75 | # You can find the `cloud.id` in the Elastic Cloud web UI. 76 | #cloud.id: 77 | 78 | # The cloud.auth setting overwrites the `output.elasticsearch.username` and 79 | # `output.elasticsearch.password` settings. The format is `:`. 80 | #cloud.auth: 81 | 82 | #================================ Outputs ===================================== 83 | 84 | # Configure what output to use when sending the data collected by the beat. 85 | # 86 | 87 | output.console: ~ 88 | 89 | #-------------------------- Elasticsearch output ------------------------------ 90 | #output.elasticsearch: 91 | # Array of hosts to connect to. 92 | #hosts: ["localhost:9200"] 93 | 94 | # Protocol - either `http` (default) or `https`. 95 | #protocol: "https" 96 | 97 | # Authentication credentials - either API key or username/password. 98 | #api_key: "id:api_key" 99 | #username: "elastic" 100 | #password: "changeme" 101 | 102 | #----------------------------- Logstash output -------------------------------- 103 | #output.logstash: 104 | # The Logstash hosts 105 | #hosts: ["localhost:5044"] 106 | 107 | # Optional SSL. By default is off. 108 | # List of root certificates for HTTPS server verifications 109 | #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] 110 | 111 | # Certificate for SSL client authentication 112 | #ssl.certificate: "/etc/pki/client/cert.pem" 113 | 114 | # Client Certificate Key 115 | #ssl.key: "/etc/pki/client/cert.key" 116 | 117 | #================================ Processors ===================================== 118 | 119 | processors: 120 | - add_observer_metadata: 121 | # Optional, but recommended geo settings for the location Heartbeat is running in 122 | #geo: 123 | # Token describing this location 124 | #name: us-east-1a 125 | 126 | # Lat, Lon " 127 | #location: "37.926868, -78.024902" 128 | 129 | #================================ Logging ===================================== 130 | 131 | # Sets log level. The default log level is info. 132 | # Available log levels are: error, warning, info, debug 133 | #logging.level: debug 134 | 135 | # At debug level, you can selectively enable logging only for some components. 136 | # To enable all selectors use ["*"]. Examples of other selectors are "beat", 137 | # "publish", "service". 138 | #logging.selectors: ["*"] 139 | 140 | #============================== X-Pack Monitoring =============================== 141 | # heartbeat can export internal metrics to a central Elasticsearch monitoring 142 | # cluster. This requires xpack monitoring to be enabled in Elasticsearch. The 143 | # reporting is disabled by default. 144 | 145 | # Set to true to enable the monitoring reporter. 146 | #monitoring.enabled: false 147 | 148 | # Sets the UUID of the Elasticsearch cluster under which monitoring data for this 149 | # Heartbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch 150 | # is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch. 151 | #monitoring.cluster_uuid: 152 | 153 | # Uncomment to send the metrics to Elasticsearch. Most settings from the 154 | # Elasticsearch output are accepted here as well. 155 | # Note that the settings should point to your Elasticsearch *monitoring* cluster. 156 | # Any setting that is not set is automatically inherited from the Elasticsearch 157 | # output configuration, so if you have the Elasticsearch output configured such 158 | # that it is pointing to your Elasticsearch monitoring cluster, you can simply 159 | # uncomment the following line. 160 | #monitoring.elasticsearch: 161 | 162 | #================================= Migration ================================== 163 | 164 | # This allows to enable 6.7 migration aliases 165 | #migration.6_to_7.enabled: true 166 | -------------------------------------------------------------------------------- /testing/configs/sample-synthetics.yml: -------------------------------------------------------------------------------- 1 | - type: http 2 | enabled: true 3 | id: SimpleHTTP 4 | urls: http://www.google.com 5 | schedule: "@every 15s" 6 | name: Simple HTTP 7 | - type: browser 8 | enabled: true 9 | id: my-monitor 10 | name: My Monitor 11 | source: 12 | inline: 13 | script: 14 | step("load homepage", async () => { 15 | await page.goto('https://www.elastic.co'); 16 | }); 17 | schedule: "@every 1m" 18 | -------------------------------------------------------------------------------- /testing/configs/tcp_multiport.yml: -------------------------------------------------------------------------------- 1 | ################### Heartbeat Configuration Example ######################### 2 | 3 | # This file is an example configuration file highlighting only some common options. 4 | # The heartbeat.reference.yml file in the same directory contains all the supported options 5 | # with detailed comments. You can use it for reference. 6 | # 7 | # You can find the full configuration reference here: 8 | # https://www.elastic.co/guide/en/beats/heartbeat/index.html 9 | 10 | ############################# Heartbeat ###################################### 11 | 12 | # Define a directory to load monitor definitions from. Definitions take the form 13 | # of individual yaml files. 14 | heartbeat.config.monitors: 15 | # Directory + glob pattern to search for configuration files 16 | path: ${path.config}/monitors.d/*.yml 17 | # If enabled, heartbeat will periodically check the config.monitors path for changes 18 | reload.enabled: false 19 | # How often to check for changes 20 | reload.period: 5s 21 | 22 | # Configure monitors inline 23 | heartbeat.monitors: 24 | - type: tcp 25 | hosts: ["127.0.0.1"] 26 | ports: [9200, 5601, 123, 456] 27 | schedule: '@every 10s' 28 | - type: tcp 29 | hosts: ["127.0.0.1"] 30 | ports: [5601, 5601, 123, 456] 31 | schedule: '@every 10s' 32 | - type: tcp 33 | hosts: ["127.0.0.1"] 34 | ports: [123, 5601, 123, 456] 35 | schedule: '@every 10s' 36 | - type: tcp 37 | hosts: ["127.0.0.1"] 38 | ports: [456, 5601, 123, 456] 39 | schedule: '@every 10s' 40 | 41 | #==================== Elasticsearch template setting ========================== 42 | 43 | setup.template.settings: 44 | index.number_of_shards: 1 45 | index.codec: best_compression 46 | #_source.enabled: false 47 | 48 | #================================ General ===================================== 49 | 50 | # The name of the shipper that publishes the network data. It can be used to group 51 | # all the transactions sent by a single shipper in the web interface. 52 | #name: 53 | 54 | # The tags of the shipper are included in their own field with each 55 | # transaction published. 56 | #tags: ["service-X", "web-tier"] 57 | 58 | # Optional fields that you can specify to add additional information to the 59 | # output. 60 | #fields: 61 | # env: staging 62 | 63 | 64 | #============================== Dashboards ===================================== 65 | # These settings control loading the sample dashboards to the Kibana index. Loading 66 | # the dashboards is disabled by default and can be enabled either by setting the 67 | # options here, or by using the `-setup` CLI flag or the `setup` command. 68 | #setup.dashboards.enabled: false 69 | 70 | # The URL from where to download the dashboards archive. By default this URL 71 | # has a value which is computed based on the Beat name and version. For released 72 | # versions, this URL points to the dashboard archive on the artifacts.elastic.co 73 | # website. 74 | #setup.dashboards.url: 75 | 76 | #============================== Kibana ===================================== 77 | 78 | # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API. 79 | # This requires a Kibana endpoint configuration. 80 | setup.kibana: 81 | 82 | # Kibana Host 83 | # Scheme and port can be left out and will be set to the default (http and 5601) 84 | # In case you specify and additional path, the scheme is required: http://localhost:5601/path 85 | # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 86 | #host: "localhost:5601" 87 | 88 | # Kibana Space ID 89 | # ID of the Kibana Space into which the dashboards should be loaded. By default, 90 | # the Default Space will be used. 91 | #space.id: 92 | 93 | #============================= Elastic Cloud ================================== 94 | 95 | # These settings simplify using heartbeat with the Elastic Cloud (https://cloud.elastic.co/). 96 | 97 | # The cloud.id setting overwrites the `output.elasticsearch.hosts` and 98 | # `setup.kibana.host` options. 99 | # You can find the `cloud.id` in the Elastic Cloud web UI. 100 | #cloud.id: 101 | 102 | # The cloud.auth setting overwrites the `output.elasticsearch.username` and 103 | # `output.elasticsearch.password` settings. The format is `:`. 104 | #cloud.auth: 105 | 106 | #================================ Outputs ===================================== 107 | 108 | # Configure what output to use when sending the data collected by the beat. 109 | 110 | #-------------------------- Elasticsearch output ------------------------------ 111 | output.elasticsearch: 112 | # Array of hosts to connect to. 113 | hosts: ["localhost:9200"] 114 | 115 | # Enabled ilm (beta) to use index lifecycle management instead daily indices. 116 | #ilm.enabled: false 117 | 118 | # Optional protocol and basic auth credentials. 119 | #protocol: "https" 120 | #username: "elastic" 121 | #password: "changeme" 122 | 123 | #----------------------------- Logstash output -------------------------------- 124 | #output.logstash: 125 | # The Logstash hosts 126 | #hosts: ["localhost:5044"] 127 | 128 | # Optional SSL. By default is off. 129 | # List of root certificates for HTTPS server verifications 130 | #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] 131 | 132 | # Certificate for SSL client authentication 133 | #ssl.certificate: "/etc/pki/client/cert.pem" 134 | 135 | # Client Certificate Key 136 | #ssl.key: "/etc/pki/client/cert.key" 137 | 138 | #================================ Processors ===================================== 139 | 140 | # Configure processors to enhance or manipulate events generated by the beat. 141 | 142 | processors: 143 | - add_host_metadata: ~ 144 | - add_cloud_metadata: ~ 145 | 146 | #================================ Logging ===================================== 147 | 148 | # Sets log level. The default log level is info. 149 | # Available log levels are: error, warning, info, debug 150 | #logging.level: debug 151 | 152 | # At debug level, you can selectively enable logging only for some components. 153 | # To enable all selectors use ["*"]. Examples of other selectors are "beat", 154 | # "publish", "service". 155 | #logging.selectors: ["*"] 156 | 157 | #============================== Xpack Monitoring =============================== 158 | # heartbeat can export internal metrics to a central Elasticsearch monitoring 159 | # cluster. This requires xpack monitoring to be enabled in Elasticsearch. The 160 | # reporting is disabled by default. 161 | 162 | # Set to true to enable the monitoring reporter. 163 | #xpack.monitoring.enabled: false 164 | 165 | # Uncomment to send the metrics to Elasticsearch. Most settings from the 166 | # Elasticsearch output are accepted here as well. Any setting that is not set is 167 | # automatically inherited from the Elasticsearch output configuration, so if you 168 | # have the Elasticsearch output configured, you can simply uncomment the 169 | # following line. 170 | #xpack.monitoring.elasticsearch: 171 | -------------------------------------------------------------------------------- /testing/dummy_http/README.md: -------------------------------------------------------------------------------- 1 | Run with `go run main.go` 2 | -------------------------------------------------------------------------------- /testing/dummy_http/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "math/rand" 6 | "net/http" 7 | "net/url" 8 | "os" 9 | "regexp" 10 | "strconv" 11 | "strings" 12 | "sync" 13 | "sync/atomic" 14 | "time" 15 | ) 16 | 17 | var readme = []byte( 18 | "Dummy HTTP Server\n" + 19 | "Example req: Use a path like /pattern?r='200x50,404x20,200|500x30'. \n" + 20 | "That pattern would return 50 200 responses, then 20 404s, then randomly return a mix of 200 and 500\n" + 21 | "responses 30 times\n" + 22 | "\n" + 23 | "To test redirects use /redirect?to=/newpath\n", 24 | ) 25 | 26 | func main() { 27 | states := &sync.Map{} 28 | 29 | var reqs uint64 = 0 30 | 31 | http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { 32 | atomic.AddUint64(&reqs, 1) 33 | 34 | writer.Write([]byte(readme)) 35 | }) 36 | 37 | http.HandleFunc("/pattern", func(writer http.ResponseWriter, request *http.Request) { 38 | atomic.AddUint64(&reqs, 1) 39 | 40 | status, body := handlePattern(states, request.URL) 41 | writer.WriteHeader(status) 42 | writer.Write([]byte(body)) 43 | }) 44 | 45 | http.HandleFunc("/redirect", func(writer http.ResponseWriter, request *http.Request) { 46 | atomic.AddUint64(&reqs, 1) 47 | 48 | if request == nil || request.URL.Query().Get("to") == "" { 49 | writer.WriteHeader(400) 50 | writer.Write([]byte("Please specify 'to' query parameter")) 51 | return 52 | } 53 | 54 | to := request.URL.Query().Get("to") 55 | http.Redirect(writer, request, to, 302) 56 | }) 57 | 58 | go func() { 59 | for { 60 | time.Sleep(time.Second * 10) 61 | r := atomic.LoadUint64(&reqs) 62 | fmt.Printf("Processed %d reqs\n", r) 63 | } 64 | }() 65 | 66 | port := 5678 67 | fmt.Printf("Starting server on port %d\n", port) 68 | err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil) 69 | if err != nil { 70 | fmt.Printf("Could not start server: %s", err) 71 | os.Exit(1) 72 | } 73 | } 74 | 75 | type responsePattern struct { 76 | httpStatuses []int 77 | httpStatusesLen int 78 | countLimit int 79 | } 80 | 81 | func (rp *responsePattern) next() (status int, body string) { 82 | var idx int 83 | if rp.httpStatusesLen > 1 { 84 | fmt.Printf("INTN %d\n", rp.httpStatusesLen) 85 | idx = rand.Intn(rp.httpStatusesLen) 86 | } else { 87 | idx = 0 88 | } 89 | status = rp.httpStatuses[idx] 90 | return status, strconv.Itoa(status) 91 | } 92 | 93 | type responsePatternSequence struct { 94 | currentPatternIdx int 95 | currentPattern *responsePattern 96 | currentPatternCount int 97 | patterns []*responsePattern 98 | shuffle bool 99 | mtx sync.Mutex 100 | } 101 | 102 | func (ps *responsePatternSequence) next() (status int, body string) { 103 | ps.mtx.Lock() 104 | ps.mtx.Unlock() 105 | 106 | if ps.currentPatternCount >= ps.currentPattern.countLimit { 107 | ps.advancePattern() 108 | } 109 | 110 | ps.currentPatternCount = ps.currentPatternCount + 1 111 | return ps.currentPattern.next() 112 | } 113 | 114 | func (ps *responsePatternSequence) advancePattern() { 115 | if ps.shuffle { 116 | ps.currentPatternIdx = rand.Intn(len(ps.patterns)) - 1 117 | ps.currentPattern = ps.patterns[ps.currentPatternIdx] 118 | } else { 119 | var nextIdx = ps.currentPatternIdx + 1 120 | if nextIdx == len(ps.patterns) { 121 | nextIdx = 0 122 | } 123 | ps.currentPatternIdx = nextIdx 124 | ps.currentPattern = ps.patterns[nextIdx] 125 | } 126 | 127 | ps.currentPatternCount = 0 128 | } 129 | 130 | var statusListRegexp = regexp.MustCompile("^[|\\d]+$") 131 | 132 | func handlePattern(states *sync.Map, url *url.URL) (status int, body string) { 133 | query := url.Query() 134 | 135 | rpsInter, ok := states.Load(url.RawQuery) 136 | var rps *responsePatternSequence 137 | if !ok { 138 | patterns, err := compilePatterns(query.Get("r")) 139 | if err != nil { 140 | return 400, err.Error() 141 | } 142 | rps = NewResponsePatternSequence(patterns, query.Get("shuffle") == "true") 143 | states.Store(url.RawQuery, rps) 144 | } else { 145 | rps = rpsInter.(*responsePatternSequence) 146 | } 147 | 148 | return rps.next() 149 | } 150 | 151 | func NewResponsePatternSequence(patterns []*responsePattern, shuffle bool) *responsePatternSequence { 152 | ps := responsePatternSequence{ 153 | currentPatternIdx: 0, 154 | currentPattern: patterns[0], 155 | currentPatternCount: 0, 156 | patterns: patterns, 157 | shuffle: shuffle, 158 | mtx: sync.Mutex{}, 159 | } 160 | 161 | return &ps 162 | } 163 | 164 | func compilePatterns(patternsStr string) (patterns []*responsePattern, err error) { 165 | splitPatterns := strings.Split(patternsStr, ",") 166 | 167 | for _, patternStr := range splitPatterns { 168 | rp, err := compilePattern(patternStr) 169 | if err != nil { 170 | return nil, err 171 | } 172 | patterns = append(patterns, rp) 173 | } 174 | 175 | return patterns, nil 176 | } 177 | 178 | func compilePattern(patternStr string) (*responsePattern, error) { 179 | rp := responsePattern{} 180 | 181 | splitPattern := strings.Split(patternStr, "x") 182 | if len(splitPattern) != 2 { 183 | return nil, fmt.Errorf("Bad pattern '%s', expected a STATUSxCOUNT as pattern. Got %s") 184 | } 185 | 186 | statusDefStr := splitPattern[0] 187 | if statusListRegexp.MatchString(statusDefStr) { 188 | statuses := strings.Split(statusDefStr, "|") 189 | for _, statusStr := range statuses { 190 | status, _ := strconv.Atoi(statusStr) 191 | rp.httpStatuses = append(rp.httpStatuses, status) 192 | } 193 | rp.httpStatusesLen = len(rp.httpStatuses) 194 | } else { 195 | return nil, fmt.Errorf("Expected a | separated list of numbers for status code def, got '%s'", statusDefStr) 196 | 197 | } 198 | 199 | count, err := strconv.Atoi(splitPattern[1]) 200 | if err != nil { 201 | return nil, fmt.Errorf("Repeat def should be an int, got '%s'", splitPattern[1]) 202 | } 203 | rp.countLimit = count 204 | 205 | return &rp, nil 206 | } 207 | -------------------------------------------------------------------------------- /testing/extend_history/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /testing/extend_history/README.md: -------------------------------------------------------------------------------- 1 | # Extend History 2 | 3 | Extends the history of existing heartbeat data. Useful for testing. One would typically create a small sample of data, perhaps a minute's worth, then run `node extend_history.js 7d` to multiply the amount of data until there is at least 7 days worth of data. The program takes a single argument specifying how far back the data should extend at a minimum. Since it adds data by doubling it this may create a good bit more than the target amount of data. 4 | 5 | ## Development 6 | 7 | Run `./watch-tsc` in a console to continually recompile typescript. -------------------------------------------------------------------------------- /testing/extend_history/extend_history.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | var __generator = (this && this.__generator) || function (thisArg, body) { 12 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 13 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 14 | function verb(n) { return function (v) { return step([n, v]); }; } 15 | function step(op) { 16 | if (f) throw new TypeError("Generator is already executing."); 17 | while (_) try { 18 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 19 | if (y = 0, t) op = [op[0] & 2, t.value]; 20 | switch (op[0]) { 21 | case 0: case 1: t = op; break; 22 | case 4: _.label++; return { value: op[1], done: false }; 23 | case 5: _.label++; y = op[1]; op = [0]; continue; 24 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 25 | default: 26 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 27 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 28 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 29 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 30 | if (t[2]) _.ops.pop(); 31 | _.trys.pop(); continue; 32 | } 33 | op = body.call(thisArg, _); 34 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 35 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 36 | } 37 | }; 38 | var Client = require('@elastic/elasticsearch').Client; 39 | var parseDuration = require('parse-duration'); 40 | var moment = require('moment'); 41 | var client = new Client({ node: 'http://localhost:9200' }); 42 | function main() { 43 | return __awaiter(this, void 0, void 0, function () { 44 | var version, indexPrefix, cutoffDuration, cutoff, templateName, template, now, sourceIndices, i, docsIndexed, earliest, offset, destIndex, ago, countRes, e_1, name_1, e_2; 45 | return __generator(this, function (_a) { 46 | switch (_a.label) { 47 | case 0: return [4, getVersion()]; 48 | case 1: 49 | version = _a.sent(); 50 | indexPrefix = "heartbeat-" + version; 51 | console.log("Deleting all previous extended indices..."); 52 | return [4, client.indices["delete"]({ index: "extended-hb-*" })]; 53 | case 2: 54 | _a.sent(); 55 | cutoffDuration = process.argv[2] ? parseDuration(process.argv[2]) : parseDuration('10d'); 56 | cutoff = new Date().getTime() - parseDuration('10d'); 57 | templateName = "heartbeat-" + version + ".0.0"; 58 | return [4, client.indices.getTemplate({ name: templateName })]; 59 | case 3: 60 | template = (_a.sent()).body[templateName]; 61 | template.index_patterns = ["heartbeat-" + version + ".0.0-*", "extended-hb-*"]; 62 | template.settings.index.sort = { 63 | field: ["monitor.id", "@timestamp"], 64 | order: ["asc", "desc"] 65 | }; 66 | return [4, client.indices.putTemplate({ name: templateName, body: template })]; 67 | case 4: 68 | _a.sent(); 69 | now = new Date().valueOf(); 70 | sourceIndices = [indexPrefix + ".*20*"]; 71 | i = 0; 72 | docsIndexed = 0; 73 | _a.label = 5; 74 | case 5: 75 | if (!true) return [3, 15]; 76 | return [4, earliestTimestamp(indexPrefix)]; 77 | case 6: 78 | earliest = _a.sent(); 79 | if (earliest < cutoff) { 80 | return [3, 15]; 81 | } 82 | console.log("EC", earliest, cutoff); 83 | offset = now - earliest; 84 | destIndex = "extended-hb-" + i; 85 | _a.label = 7; 86 | case 7: 87 | _a.trys.push([7, 10, , 11]); 88 | ago = moment(new Date().valueOf() - offset); 89 | console.log("Cutoff", (new Date()).getTime() - offset, new Date().valueOf(), offset, cutoff); 90 | console.log("Reindex " + sourceIndices + " -> " + destIndex + " (offset = " + ago.fromNow() + ")"); 91 | return [4, reindex(sourceIndices, destIndex, offset)]; 92 | case 8: 93 | _a.sent(); 94 | return [4, client.count({ index: sourceIndices })]; 95 | case 9: 96 | countRes = _a.sent(); 97 | console.log("Total indexed: ", countRes.body.count); 98 | sourceIndices.push(destIndex); 99 | return [3, 11]; 100 | case 10: 101 | e_1 = _a.sent(); 102 | console.error("Error reindexing", e_1); 103 | process.exit(1); 104 | return [3, 11]; 105 | case 11: 106 | _a.trys.push([11, 13, , 14]); 107 | name_1 = indexPrefix + ".0.0-extension-" + i; 108 | console.log("Alias index " + destIndex + " to " + name_1); 109 | return [4, client.indices.putAlias({ 110 | index: destIndex, 111 | name: name_1 112 | })]; 113 | case 12: 114 | _a.sent(); 115 | return [3, 14]; 116 | case 13: 117 | e_2 = _a.sent(); 118 | console.error("Error aliasing", JSON.stringify(e_2)); 119 | process.exit(1); 120 | return [3, 14]; 121 | case 14: 122 | i++; 123 | return [3, 5]; 124 | case 15: return [2]; 125 | } 126 | }); 127 | }); 128 | } 129 | main(); 130 | function earliestTimestamp(indexPrefix) { 131 | return __awaiter(this, void 0, void 0, function () { 132 | var res; 133 | return __generator(this, function (_a) { 134 | switch (_a.label) { 135 | case 0: return [4, client.search({ 136 | index: indexPrefix + "*", 137 | body: { 138 | aggs: { 139 | earliest: { min: { field: "@timestamp" } } 140 | } 141 | } 142 | })]; 143 | case 1: 144 | res = _a.sent(); 145 | return [2, res.body.aggregations.earliest.value]; 146 | } 147 | }); 148 | }); 149 | } 150 | function getVersion() { 151 | return __awaiter(this, void 0, void 0, function () { 152 | return __generator(this, function (_a) { 153 | switch (_a.label) { 154 | case 0: return [4, client.info()]; 155 | case 1: return [2, (_a.sent()).body.version.number.split(".")[0]]; 156 | } 157 | }); 158 | }); 159 | } 160 | function reindex(sourceIndices, destIndex, offset) { 161 | return __awaiter(this, void 0, void 0, function () { 162 | var body, res, t; 163 | return __generator(this, function (_a) { 164 | switch (_a.label) { 165 | case 0: 166 | body = { 167 | source: { index: sourceIndices }, 168 | dest: { index: destIndex }, 169 | script: { 170 | source: "\n String offsetStr = Long.toString(params.offset);\n ctx._id = ctx._id + offsetStr;\n Instant origTs = Instant.parse(ctx._source[\"@timestamp\"]);\n ctx._source.monitor.check_group = ctx._source.monitor.check_group + \"-^-\" + offsetStr;\n ctx._source[\"@timestamp\"] = origTs.minus(params.offset, ChronoUnit.MILLIS);\n\n Instant tsStart = Instant.parse(ctx._source.monitor.timespan.gte);\n ctx._source.monitor.timespan.gte = tsStart.minus(params.offset, ChronoUnit.MILLIS);\n Instant tsEnd = Instant.parse(ctx._source.monitor.timespan.lt);\n ctx._source.monitor.timespan.lt = tsEnd.minus(params.offset, ChronoUnit.MILLIS);\n ", 171 | params: { offset: offset } 172 | } 173 | }; 174 | return [4, client.reindex({ 175 | wait_for_completion: false, 176 | refresh: true, 177 | timeout: "1h", 178 | max_docs: 1000000, 179 | body: body 180 | })]; 181 | case 1: 182 | res = _a.sent(); 183 | _a.label = 2; 184 | case 2: 185 | if (!true) return [3, 5]; 186 | return [4, client.tasks.get({ task_id: res.body.task })]; 187 | case 3: 188 | t = _a.sent(); 189 | return [4, new Promise(function (r) { return setTimeout(r, 2000); })]; 190 | case 4: 191 | _a.sent(); 192 | console.log("Waiting for async reindex..."); 193 | if (t.body.completed) { 194 | return [3, 5]; 195 | } 196 | return [3, 2]; 197 | case 5: return [2]; 198 | } 199 | }); 200 | }); 201 | } 202 | //# sourceMappingURL=extend_history.js.map -------------------------------------------------------------------------------- /testing/extend_history/extend_history.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extend_history.js","sourceRoot":"","sources":["extend_history.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEQ,IAAA,iDAAM,CAAuC;AACrD,IAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAChD,IAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAE7D,SAAe,IAAI;;;;;wBACC,WAAM,UAAU,EAAE,EAAA;;oBAA5B,OAAO,GAAG,SAAkB;oBAC5B,WAAW,GAAG,eAAa,OAAS,CAAA;oBAE1C,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBACzD,WAAM,MAAM,CAAC,OAAO,CAAC,QAAM,CAAA,CAAC,EAAC,KAAK,EAAE,eAAe,EAAC,CAAC,EAAA;;oBAArD,SAAqD,CAAC;oBAEhD,cAAc,GAAW,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACjG,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBAErD,YAAY,GAAG,eAAa,OAAO,SAAM,CAAC;oBAC9B,WAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,EAAA;;oBAAlE,QAAQ,GAAG,CAAC,SAAsD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;oBAC5F,QAAQ,CAAC,cAAc,GAAG,CAAC,eAAa,OAAO,WAAQ,EAAE,eAAe,CAAC,CAAC;oBAE1E,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG;wBAC9B,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;wBACnC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;qBACtB,CAAC;oBAEF,WAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC,EAAA;;oBAAtE,SAAsE,CAAC;oBAEjE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;oBAE3B,aAAa,GAAG,CAAI,WAAW,UAAO,CAAC,CAAC;oBAE1C,CAAC,GAAG,CAAC,CAAC;oBACN,WAAW,GAAG,CAAC,CAAC;;;yBACb,IAAI;oBACU,WAAM,iBAAiB,CAAC,WAAW,CAAC,EAAA;;oBAA/C,QAAQ,GAAG,SAAoC;oBAC5D,IAAI,QAAQ,GAAG,MAAM,EAAE;wBACrB,eAAM;qBACP;oBACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAGvB,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;oBAExB,SAAS,GAAG,iBAAe,CAAG,CAAA;;;;oBAG1B,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;oBAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC7F,OAAO,CAAC,GAAG,CAAC,aAAW,aAAa,YAAO,SAAS,mBAAc,GAAG,CAAC,OAAO,EAAE,MAAG,CAAC,CAAC;oBACpF,WAAM,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,EAAA;;oBAA/C,SAA+C,CAAA;oBAErC,WAAM,MAAM,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,aAAa,EAAC,CAAC,EAAA;;oBAArD,QAAQ,GAAG,SAA0C;oBAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAG7C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;oBAE9B,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAC,CAAC,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;oBAIV,SAAU,WAAW,uBAAkB,CAAG,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,iBAAe,SAAS,YAAO,MAAM,CAAC,CAAC;oBACnD,WAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;4BAC1B,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,MAAI;yBACb,CAAC,EAAA;;oBAHF,SAGE,CAAC;;;;oBAEH,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAC,CAAC,CAAC,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;oBAGpB,CAAC,EAAE,CAAC;;;;;;CAEX;AAED,IAAI,EAAE,CAAA;AAEN,SAAe,iBAAiB,CAAC,WAAmB;;;;;wBACpC,WAAM,MAAM,CAAC,MAAM,CAAC;wBAC5B,KAAK,EAAK,WAAW,MAAG;wBACxB,IAAI,EAAE;4BACF,IAAI,EAAE;gCACF,QAAQ,EAAE,EAAC,GAAG,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC,EAAC;6BACzC;yBACJ;qBACJ,CAAC,EAAA;;oBAPI,GAAG,GAAG,SAOV;oBAEF,WAAO,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAC;;;;CAC/C;AAED,SAAe,UAAU;;;;wBACb,WAAM,MAAM,CAAC,IAAI,EAAE,EAAA;wBAA3B,WAAO,CAAC,SAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC;;;;CAClE;AAED,SAAe,OAAO,CAAC,aAAgC,EAAE,SAAiB,EAAE,MAAc;;;;;;oBAChF,IAAI,GAAG;wBACT,MAAM,EAAE,EAAC,KAAK,EAAE,aAAa,EAAC;wBAC9B,IAAI,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC;wBACxB,MAAM,EAAE;4BACJ,MAAM,EAAE,u1BAWC;4BACT,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE;yBACrB;qBACJ,CAAC;oBAEU,WAAM,MAAM,CAAC,OAAO,CAAC;4BAC7B,mBAAmB,EAAE,KAAK;4BAC1B,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,IAAI;4BACpB,QAAQ,EAAE,OAAO;4BACV,IAAI,MAAA;yBACP,CAAC,EAAA;;oBANI,GAAG,GAAG,SAMV;;;yBACK,IAAI;oBACC,WAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,EAAA;;oBAApD,CAAC,GAAG,SAAgD;oBAE1D,WAAM,IAAI,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAnB,CAAmB,CAAC,EAAA;;oBAA3C,SAA2C,CAAA;oBAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;wBACpB,cAAM;qBACP;;;;;;CAEN"} -------------------------------------------------------------------------------- /testing/extend_history/extend_history.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const { Client } = require('@elastic/elasticsearch'); 4 | const parseDuration = require('parse-duration'); 5 | const moment = require('moment'); 6 | const client = new Client({ node: 'http://localhost:9200' }); 7 | 8 | async function main() { 9 | const version = await getVersion(); 10 | const indexPrefix = `heartbeat-${version}` 11 | 12 | console.log("Deleting all previous extended indices..."); 13 | await client.indices.delete({index: `extended-hb-*`}); 14 | 15 | const cutoffDuration: number = process.argv[2] ? parseDuration(process.argv[2]) : parseDuration('10d'); 16 | const cutoff = new Date().getTime() - parseDuration('10d'); 17 | 18 | const templateName = `heartbeat-${version}.0.0`; 19 | const template = (await client.indices.getTemplate({name: templateName})).body[templateName]; 20 | template.index_patterns = [`heartbeat-${version}.0.0-*`, "extended-hb-*"]; 21 | 22 | template.settings.index.sort = { 23 | field: ["monitor.id", "@timestamp"], 24 | order: ["asc", "desc"] 25 | }; 26 | 27 | await client.indices.putTemplate({name: templateName, body: template}); 28 | 29 | const now = new Date().valueOf(); 30 | 31 | const sourceIndices = [`${indexPrefix}.*20*`]; 32 | 33 | let i = 0; 34 | let docsIndexed = 0; 35 | while (true) { 36 | const earliest = await earliestTimestamp(indexPrefix); 37 | if (earliest < cutoff) { 38 | break; 39 | } 40 | console.log("EC", earliest, cutoff); 41 | 42 | // We're going to double the number of entries hence 43 | const offset = now - earliest; 44 | 45 | const destIndex = `extended-hb-${i}` 46 | 47 | try { 48 | const ago = moment(new Date().valueOf() - offset); 49 | console.log("Cutoff", (new Date()).getTime() - offset, new Date().valueOf(), offset, cutoff); 50 | console.log(`Reindex ${sourceIndices} -> ${destIndex} (offset = ${ago.fromNow()})`); 51 | await reindex(sourceIndices, destIndex, offset) 52 | 53 | const countRes = await client.count({index: sourceIndices}); 54 | console.log("Total indexed: ", countRes.body.count); 55 | 56 | 57 | sourceIndices.push(destIndex); 58 | } catch (e) { 59 | console.error("Error reindexing", e); 60 | process.exit(1); 61 | } 62 | 63 | try { 64 | const name = `${indexPrefix}.0.0-extension-${i}`; 65 | console.log(`Alias index ${destIndex} to ${name}`); 66 | await client.indices.putAlias({ 67 | index: destIndex, 68 | name: name 69 | }); 70 | } catch (e) { 71 | console.error("Error aliasing", JSON.stringify(e)); 72 | process.exit(1); 73 | } 74 | 75 | i++; 76 | } 77 | } 78 | 79 | main() 80 | 81 | async function earliestTimestamp(indexPrefix: string) { 82 | const res = await client.search({ 83 | index: `${indexPrefix}*`, 84 | body: { 85 | aggs: { 86 | earliest: {min: {field: "@timestamp"}} 87 | } 88 | } 89 | }) 90 | 91 | return res.body.aggregations.earliest.value; 92 | } 93 | 94 | async function getVersion() { 95 | return (await client.info()).body.version.number.split(".")[0]; 96 | } 97 | 98 | async function reindex(sourceIndices: string | string[], destIndex: string, offset: number) { 99 | const body = { 100 | source: {index: sourceIndices}, 101 | dest: {index: destIndex}, 102 | script: { 103 | source: ` 104 | String offsetStr = Long.toString(params.offset); 105 | ctx._id = ctx._id + offsetStr; 106 | Instant origTs = Instant.parse(ctx._source["@timestamp"]); 107 | ctx._source.monitor.check_group = ctx._source.monitor.check_group + "-^-" + offsetStr; 108 | ctx._source["@timestamp"] = origTs.minus(params.offset, ChronoUnit.MILLIS); 109 | 110 | Instant tsStart = Instant.parse(ctx._source.monitor.timespan.gte); 111 | ctx._source.monitor.timespan.gte = tsStart.minus(params.offset, ChronoUnit.MILLIS); 112 | Instant tsEnd = Instant.parse(ctx._source.monitor.timespan.lt); 113 | ctx._source.monitor.timespan.lt = tsEnd.minus(params.offset, ChronoUnit.MILLIS); 114 | `, 115 | params: { offset } 116 | } 117 | }; 118 | 119 | const res = await client.reindex({ 120 | wait_for_completion: false, 121 | refresh: true, 122 | timeout: "1h", 123 | max_docs: 1000000, 124 | body 125 | }); 126 | while (true) { 127 | const t = await client.tasks.get({task_id: res.body.task}); 128 | //console.log("Task status", t); 129 | await new Promise(r => setTimeout(r, 2000)) 130 | console.log("Waiting for async reindex..."); 131 | if (t.body.completed) { 132 | break; 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /testing/extend_history/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extend_history", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@elastic/elasticsearch": { 8 | "version": "7.3.0", 9 | "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-7.3.0.tgz", 10 | "integrity": "sha512-CA8V4txIS+BPZg37ZVtOi5mN2xnXYAeQUCvgkjdtc2CzTd5pJrjdPzdmaDDATNc8nhlHMrqxMZZmpKD3OUkjAg==", 11 | "requires": { 12 | "debug": "^4.1.1", 13 | "decompress-response": "^4.2.0", 14 | "into-stream": "^5.1.0", 15 | "ms": "^2.1.1", 16 | "once": "^1.4.0", 17 | "pump": "^3.0.0" 18 | } 19 | }, 20 | "@types/node": { 21 | "version": "12.7.8", 22 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", 23 | "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==" 24 | }, 25 | "core-util-is": { 26 | "version": "1.0.2", 27 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 28 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 29 | }, 30 | "debug": { 31 | "version": "4.1.1", 32 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 33 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 34 | "requires": { 35 | "ms": "^2.1.1" 36 | } 37 | }, 38 | "decompress-response": { 39 | "version": "4.2.1", 40 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 41 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 42 | "requires": { 43 | "mimic-response": "^2.0.0" 44 | } 45 | }, 46 | "end-of-stream": { 47 | "version": "1.4.4", 48 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 49 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 50 | "requires": { 51 | "once": "^1.4.0" 52 | } 53 | }, 54 | "from2": { 55 | "version": "2.3.0", 56 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 57 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 58 | "requires": { 59 | "inherits": "^2.0.1", 60 | "readable-stream": "^2.0.0" 61 | } 62 | }, 63 | "inherits": { 64 | "version": "2.0.4", 65 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 66 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 67 | }, 68 | "into-stream": { 69 | "version": "5.1.0", 70 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.0.tgz", 71 | "integrity": "sha512-cbDhb8qlxKMxPBk/QxTtYg1DQ4CwXmadu7quG3B7nrJsgSncEreF2kwWKZFdnjc/lSNNIkFPsjI7SM0Cx/QXPw==", 72 | "requires": { 73 | "from2": "^2.3.0", 74 | "p-is-promise": "^2.0.0" 75 | } 76 | }, 77 | "isarray": { 78 | "version": "1.0.0", 79 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 80 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 81 | }, 82 | "mimic-response": { 83 | "version": "2.0.0", 84 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", 85 | "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" 86 | }, 87 | "moment": { 88 | "version": "2.24.0", 89 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", 90 | "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" 91 | }, 92 | "ms": { 93 | "version": "2.1.2", 94 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 95 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 96 | }, 97 | "once": { 98 | "version": "1.4.0", 99 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 100 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 101 | "requires": { 102 | "wrappy": "1" 103 | } 104 | }, 105 | "p-is-promise": { 106 | "version": "2.1.0", 107 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", 108 | "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" 109 | }, 110 | "parse-duration": { 111 | "version": "0.1.1", 112 | "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-0.1.1.tgz", 113 | "integrity": "sha1-ExFN3JiRwezSgANiRFVN5DZHoiY=" 114 | }, 115 | "process-nextick-args": { 116 | "version": "2.0.1", 117 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 118 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 119 | }, 120 | "pump": { 121 | "version": "3.0.0", 122 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 123 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 124 | "requires": { 125 | "end-of-stream": "^1.1.0", 126 | "once": "^1.3.1" 127 | } 128 | }, 129 | "readable-stream": { 130 | "version": "2.3.6", 131 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 132 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 133 | "requires": { 134 | "core-util-is": "~1.0.0", 135 | "inherits": "~2.0.3", 136 | "isarray": "~1.0.0", 137 | "process-nextick-args": "~2.0.0", 138 | "safe-buffer": "~5.1.1", 139 | "string_decoder": "~1.1.1", 140 | "util-deprecate": "~1.0.1" 141 | } 142 | }, 143 | "safe-buffer": { 144 | "version": "5.1.2", 145 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 146 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 147 | }, 148 | "string_decoder": { 149 | "version": "1.1.1", 150 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 151 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 152 | "requires": { 153 | "safe-buffer": "~5.1.0" 154 | } 155 | }, 156 | "util-deprecate": { 157 | "version": "1.0.2", 158 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 159 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 160 | }, 161 | "wrappy": { 162 | "version": "1.0.2", 163 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 164 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 165 | } 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /testing/extend_history/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "extend_history", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "extend_history.js", 6 | "dependencies": { 7 | "@elastic/elasticsearch": "^7.3.0", 8 | "@types/node": "^12.7.8", 9 | "moment": "^2.24.0", 10 | "parse-duration": "^0.1.1" 11 | }, 12 | "devDependencies": {}, 13 | "scripts": { 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "author": "elastic/uptime", 17 | "license": "ISC" 18 | } 19 | -------------------------------------------------------------------------------- /testing/extend_history/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitAny": true, 5 | "removeComments": true, 6 | "preserveConstEnums": true, 7 | "sourceMap": true 8 | }, 9 | "files": [ 10 | "extend_history.ts" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /testing/extend_history/watch-tsc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | tsc -w -p . 3 | -------------------------------------------------------------------------------- /testing/hb-alter.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'yaml' 4 | require 'fileutils' 5 | require 'tmpdir' 6 | 7 | class Transformer 8 | def self.run(config_path, ops_sequence) 9 | puts "Running on #{config_path} with ops #{ops_sequence}" 10 | if !config_path || !ops_sequence 11 | puts "Usage: hb-alter.rb op1,op2" 12 | puts "Valid ops: #{self.instance_methods - Object.instance_methods - [:save, :config]}" 13 | exit 1 14 | end 15 | 16 | t = self.new(config_path, ops_sequence) 17 | t.run() 18 | t.exec() 19 | end 20 | 21 | attr_reader :config 22 | 23 | def initialize(config_path, ops_sequence) 24 | @config_path = config_path 25 | self.reload_yaml 26 | @ops_sequence = ops_sequence.split(",") 27 | end 28 | 29 | def reload_yaml() 30 | File.open(@config_path) do |f| 31 | @config = YAML.load(f) 32 | end 33 | end 34 | 35 | def run() 36 | @ops_sequence.each do |op| 37 | args = [] 38 | if op =~ /(\w+)\(([^\)]+)\)/ 39 | op = $1 40 | args = $2.split(",") 41 | end 42 | print "Run: #{op}(#{args.join(', ')})..." 43 | puts "done\n" 44 | self.send(op, *args) 45 | end 46 | end 47 | 48 | def put_test_roles 49 | cmd = "/usr/bin/env sh #{File.dirname(__FILE__)}/add_test_roles.sh" 50 | puts "Running: #{cmd}" 51 | system(cmd) 52 | end 53 | 54 | def use_config(name) 55 | path = File.join(File.dirname(__FILE__), 'configs', name) 56 | puts "Copy #{path} to heartbeat.yml" 57 | FileUtils.cp(path, 'heartbeat.yml') 58 | FileUtils.chmod(0755, 'heartbeat.yml') 59 | self.reload_yaml 60 | end 61 | 62 | def to_console 63 | @config.delete("output.elasticsearch") rescue nil 64 | @config["output.console"] = nil 65 | end 66 | 67 | def to_es 68 | @config.delete("output.console") rescue nil 69 | @config["output.elasticsearch"] = { 70 | "hosts" => "localhost:9200", 71 | "username" => "elastic", 72 | "password" => "changeme" 73 | } 74 | end 75 | 76 | def monitor_elastic_co 77 | @config["heartbeat.monitors"] = [{ 78 | "type" => "http", 79 | "id" => "elastic-co", 80 | "name" => "Elastic.co", 81 | "urls" => [ "https://www.elastic.co" ], 82 | "schedule" => "@every 10s" 83 | }] 84 | end 85 | 86 | def ping_google 87 | @config["heartbeat.monitors"] = [{ 88 | "type" => "icmp", 89 | "id" => "ping-google", 90 | "name" => "Google Ping", 91 | "hosts" => [ "google.com" ], 92 | "schedule" => "@every 10s" 93 | }] 94 | end 95 | 96 | def to_secure_es 97 | @config.delete("output.console") rescue nil 98 | @config["output.elasticsearch"] = { 99 | "hosts" => ["localhost:9200"], 100 | "protocol" => "https", 101 | "username" => "heartbeat", 102 | "password" => "changeme", 103 | "ssl" => { 104 | "certificate_authorities" => "${HOME}/projects/kibana/packages/kbn-dev-utils/certs/ca.crt", 105 | "certificate" => "${HOME}/projects/kibana/packages/kbn-dev-utils/certs/elasticsearch.crt", 106 | "key" => "${HOME}/projects/kibana/packages/kbn-dev-utils/certs/elasticsearch.key" 107 | } 108 | } 109 | end 110 | 111 | def to_auth_es 112 | @config.delete("output.console") rescue nil 113 | @config["output.elasticsearch"] = { 114 | "hosts" => ["localhost:9200"], 115 | "protocol" => "http", 116 | "username" => "elastic", 117 | "password" => "changeme", 118 | } 119 | end 120 | 121 | 122 | def add_geo(name,location=nil) 123 | p = @config['processors'].find {|p| p.has_key?('add_observer_metadata')} 124 | if !p 125 | p = {} 126 | @config['processors'].push(p) 127 | end 128 | p.merge!({ 129 | "add_observer_metadata" => { 130 | "geo" => { 131 | "name" => name, 132 | "location" => location || "44.986656, -93.258133" 133 | } 134 | } 135 | }) 136 | end 137 | 138 | def print_yaml 139 | puts @config.to_yaml 140 | end 141 | 142 | def exec 143 | self.save() 144 | dir = Dir.mktmpdir("heartbeat-tmp-data-") 145 | at_exit { FileUtils.remove_entry(dir) } 146 | cmd = ["nice", "-n", "19", "./heartbeat", "-e", "--path.data", dir] 147 | puts "Running: #{cmd.join(' ')}" 148 | $stdout.sync = true 149 | system(*cmd, out: $stdout, err: $stderr) 150 | end 151 | 152 | def save() 153 | yaml = @config.to_yaml 154 | File.open(@config_path, "w") do |f| 155 | f.write(yaml) 156 | end 157 | end 158 | end 159 | 160 | 161 | Transformer.run('heartbeat.yml', ARGV[0]) 162 | --------------------------------------------------------------------------------