At times snowflake id generation would create org and bucket IDs with
characters that had special meaning for the storage engine.
The storage engine concats the org and bucket bytes together into a
single 128 bit value. That value is used in the old measurement
section. Measurement was transformed into the tag, _measurement.
However, certain properties of the older measurement data location
are still required for the org/bucket bytes. We cannot have
commas, spaces, nor backslashes.
This PR puts a specific ID generator in place during the creation of
orgs and buckets. The IDs are just random numbers but with each
of the restricted chars incremented by one. While this changes the
entropy distribution somewhat, it does not matter too much for our
purposes.
... because now org and bucket ids are checked for previous existence
transactionally in the key-value stores. If the ID does already exist
then we try to generate a new key up to 100 times.
Semantically, we've done the following:
// name of the client sending the alert.
client: "influxdata"
// url of the client sending the alert.
client_url: the endpoint URL for now (needs to change to rule)
// The class/type of the event, for example ping failure or cpu load
class: check's name
// Logical grouping of components of a service, for example app-stack
group: source measurement
Co-authored-by: Alirie Gray <alirie.gray@gmail.com>
* refactor(ui): move check message to its own card
* refactor(ui): ensure builder cards fill width of overlay
* refactor(ui): make conditions boxes fill width of parent
* refactor(ui): allow check properties card to grow
* refactor(ui): remove matching rules card
* chore(ui): update changelog
Remove unused action
Co-Author: Deniz Kusefoglu <deniz@influxdata.com>
add Limits and LimitsStatus to cloud types
Add asset limits for checks, rules and endpoints
Filter blocked endpoint types
fix: type error
Co-Author: Deniz Kusefoglu <deniz@influxdata.com>
This adds the _version: 1 correctly to the body of the HTTP POST.
Additionally, this fixes the imports when using secrets.
The POSTed JSON body now is:
```json
{
"_check_id": "046cac59e2aa3000",
"_check_name": "High CPU User Usage",
"_level": "crit",
"_measurement": "notifications",
"_message": "High CPU User Usage: rsavage.prod is crit",
"_notification_endpoint_id": "046cad0c83aec000",
"_notification_endpoint_name": "HTTP Endpoint",
"_notification_rule_id": "046dff53d4183000",
"_notification_rule_name": "HTTP Notification",
"_source_measurement": "cpu",
"_source_timestamp": 1567797375000000000,
"_start": "2019-09-06T19:15:59Z",
"_status_timestamp": 1567797376416632300,
"_stop": "2019-09-06T19:16:20.362006739Z",
"_time": "2019-09-06T19:16:20.609629338Z",
"_type": "threshold",
"_version": 1,
"cpu": "cpu-total",
"host": "rsavage.prod",
"usage_user": 91.12278069517379
}
```
Closes https://github.com/influxdata/influxdb/issues/15022
After we switched to using PUT in the API, we'll need to include the
entire check in our update request. Ideally we could just always use
PATCH, but due to a defect in the API we currently cannot.
The current behavior is that the update is pushed into the scheduler,
and the scheduler cherry pick's what it needs. This leaves the task itself out
meaning any logging the scheduler did was not going to have the new task information in it.
We need to only update the updated at time when we recieve a external request for
an update. LatestCompleted is an internal request from the scheduler.
If the user specifies an aggregate window in the query they provide us,
we remove it so that we can property detect the deadman. This is not the
solution we will want long term, but should be sufficient for now.
* fix(ui): allow creating of check from first time widget
* refactor(ui): polish layout of endpoint dropdown
* refactor(ui): provide default URLs in endpoint overlay form
Co-Authored-By: Andrew Watkins <121watts@users.noreply.github.com>
* refactor(ui): ensure edit endpoint can be canceled
Co-Authored-By: Andrew Watkins <121watts@users.noreply.github.com>
* refactor(ui): move endpoint error out of footer
Co-Authored-By: Andrew Watkins <121watts@users.noreply.github.com>
* refactor(ui): appease the linter
* fix(ui): use correct slack and http url defaults
* chore(ui): remove obsolete stylesheet
* fix(ui): remove GET and PUT options from http method dropdown
* fix(ui): capitalize form labels in endpoint form
* fix(ui): change default endpoint name to be type agnostic
* fix(ui): appease linter
* refactor(ui): shrink check message template field
* refactor(ui): reverse sort of threshold levels in check builder