Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hydrospheredata/sonar
Sonar: reborn
https://github.com/hydrospheredata/sonar
hydrosphere monitoring scala
Last synced: 28 days ago
JSON representation
Sonar: reborn
- Host: GitHub
- URL: https://github.com/hydrospheredata/sonar
- Owner: Hydrospheredata
- Created: 2019-01-16T11:09:07.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-11-12T16:39:50.000Z (about 3 years ago)
- Last Synced: 2024-04-14T07:52:52.075Z (9 months ago)
- Topics: hydrosphere, monitoring, scala
- Language: Scala
- Size: 400 KB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Sonar2
## API
### Create Metric Specification
```
POST /monitoring/metricspec
{
"name": string,
"modelVersionId": long,
"config": { },
"withHealth": boolean (optional),
"kind": string
}200 OK
{
"name": string,
"modelVersionId": long,
"config": { },
"withHealth": boolean (optional),
"kind": string,
"id" : string
}
```#### Metric Specification kinds and their configs
- `KSMetricSpec` – Kolmogorov-Smirnov test
```
{
"input": string
}
```- `RFMetricSpec` – Random Forest (through serving app)
```
{
"input": string,
"applicationName": string,
"threshold": double (optional, only for health)
}
```- `AEMetricSpec` – Autoencoder (through serving app)
```
{
"input": string,
"applicationName": string,
"threshold": double (optional, only for health)
}
```- `imageAEMetricSpec` – Image Autoencoder
```
{
"applicationName": string,
"threshold": double (optional, only for health)
}
```- `GANMetricSpec` – GAN (through serving app)
```
{
"input": string,
"applicationName": string,
"applicationSignature": string
}
```- `LatencyMetricSpec` – Request Latency
```
{
"interval": long (in seconds),
"threshold": double (optional, only for health)
}
```- `CounterMetricSpec` – Request Counter
```
{
"interval": long (in seconds)
}
```- `ErrorRateMetricSpec` – Error Rate
```
{
"interval": long (in seconds),
"threshold": double (optional, only for health)
}
```- `AccuracyMetricSpec` – Prediction Accuracy
```
{}
```### Get Metric Specification
#### By ID
```
GET /monitoring/metricspec/{metric-spec-uuid}200 OK
{
"name": string,
"modelVersionId": long,
"config": { },
"withHealth": boolean (optional),
"kind": string
"id": string
}
```#### By Model Version
```
GET /monitoring/metricspec/modelversion/{model-version-id}200 OK
[
{
"name": string,
"modelVersionId": long,
"config": { },
"withHealth": boolean (optional),
"kind": string
"id": string,
},
...
]
```#### All
```
GET /monitoring/metricspec200 OK
[
{
"name": string,
"modelVersionId": long,
"config": { },
"withHealth": boolean (optional),
"kind": string
"id": string,
},
...
]
```### Get Metrics
```
GET /monitoring/metrics?modelVersionId=&interval=&metrics=&columnIndex=200 OK
[
{
"name": string,
"value": double,
"labels": {
"modelVersionId": string
},
"health": int (0 or 1, nullable),
"timestamp": long (seconds)
},
...
]
```#### Metric Names
- Kolmogorov-Smirnov
- `kolmogorovsmirnov`
- `kolmogorovsmirnov_level`
- Autoencoder
- `autoencoder_reconstructed`
- Random Forest
- `randomforest`
- GAN
- `gan_outlier`
- `gan_inlier`
- Request Latency
- `latency`
- Request Counter
- `counter`
- Error Rate
- `error_rate`
- Prediction Accuracy
- `accuracy`### Get Profiles
```
GET /monitoring/profiles/{model-version-id}/{field-name}200 OK
{
"training": {} (nullable),
"production": {} (nullable)
}
```#### Profile Types
- NumericalProfile
```
{
"name": string (field name),
"modelVersionId": long,
"commonStatistics": {
"count": long,
"distinctCount": long,
"missing": long
},
"quantileStatistics": {
"min": double,
"max": double,
"median": double,
"percentile5": double,
"percentile95": double,
"q1": double,
"q3": double,
"range": double,
"interquartileRange": double
},
"descriptiveStatistics": {
"standardDeviation": double,
"variationCoef": double,
"kurtosis": double,
"mean": double,
"skewness": double (nullable),
"variance": double
},
"histogram": {
"min": double,
"max": double,
"step": double,
"bars": int,
"frequencies": [
int,
...
],
"bins": [
double,
...
]
},
"kind":"NumericalProfile"
}
}
```#### Getting field names
```
GET /monitoring/fields/{model-version-id}200 OK
[
string,
...
]
```### Training data upload
#### Start processing
```
POST /monitoring/profiles/batch/{model-version-id}
Transfer-Encoding: chunked200 OK
"ok"
```#### Get processing status
```
GET /monitoring/profiles/batch/{model-version-id}/status200 OK
{
"kind": string
}
```##### Statuses:
- Success
- Failure
- Processing
- NotRegistered#### Get training data for a model
```
GET /monitoring/training_data?modelVersionId={model-version-id}200 OK
[
"s3://bucket/data1.csv",
"s3://bucket/data2.csv"
]
```