mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-18 00:19:49 +01:00
Metrics: wrte api documentation
This commit is contained in:
parent
e55378e1c4
commit
93c37b30c0
101
docs/api-v1.md
101
docs/api-v1.md
@ -292,104 +292,5 @@ Event types:
|
|||||||
|
|
||||||
# Metrics
|
# Metrics
|
||||||
|
|
||||||
**GET: http://unleash.host.com/api/metrics**
|
[Metrics](api/metrics.md)
|
||||||
|
|
||||||
Get aggregated state of metrics
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"globalCount": 1420,
|
|
||||||
"apps": {
|
|
||||||
"app-name": {
|
|
||||||
"count": 1420,
|
|
||||||
"clients": [
|
|
||||||
"instance-id"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"clients": {
|
|
||||||
"instance-id": {
|
|
||||||
"appName": "app-name",
|
|
||||||
"count": 1420,
|
|
||||||
"started": "2016-11-13T19:50:54.395Z",
|
|
||||||
"init": "2016-11-13T19:50:54.395Z",
|
|
||||||
"ping": "2016-11-13T19:51:14.403Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
**GET: http://unleash.host.com/api/metrics/features**
|
|
||||||
|
|
||||||
Get metrics per toggle
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"lastHour": {
|
|
||||||
"toggle-name-1": {
|
|
||||||
"yes": 0,
|
|
||||||
"no": 720
|
|
||||||
},
|
|
||||||
"toggle-name-2": {
|
|
||||||
"yes": 0,
|
|
||||||
"no": 463
|
|
||||||
},
|
|
||||||
"toggle-name-3": {
|
|
||||||
"yes": 237,
|
|
||||||
"no": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lastMinute": {
|
|
||||||
"toggle-name-1": {
|
|
||||||
"yes": 0,
|
|
||||||
"no": 0
|
|
||||||
},
|
|
||||||
"toggle-name-2": {
|
|
||||||
"yes": 0,
|
|
||||||
"no": 0
|
|
||||||
},
|
|
||||||
"toggle-name-3": {
|
|
||||||
"yes": 0,
|
|
||||||
"no": 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**POST: http://unleash.host.com/api/client/register**
|
|
||||||
|
|
||||||
Register a client instance with the unleash server
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"appName": "appName",
|
|
||||||
"instanceId": "instanceId",
|
|
||||||
"strategies": ["default", "some-strategy-1"],
|
|
||||||
"started": "2016-11-03T07:16:43.572Z",
|
|
||||||
"interval": 10000,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**POST: http://unleash.host.com/api/client/metrics**
|
|
||||||
|
|
||||||
Register a metrics payload with a timed bucket
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"appName": "appName",
|
|
||||||
"instanceId": "instanceId",
|
|
||||||
"bucket": {
|
|
||||||
"start": "2016-11-03T07:16:43.572Z",
|
|
||||||
"stop": "2016-11-03T07:16:53.572Z",
|
|
||||||
"toggles": {
|
|
||||||
"toggle-name-1": {
|
|
||||||
"yes": 123,
|
|
||||||
"no": 321
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
224
docs/api/metrics.md
Normal file
224
docs/api/metrics.md
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
# This document describes the client metrics endpoints
|
||||||
|
|
||||||
|
### Client registration
|
||||||
|
|
||||||
|
`POST: http://unleash.host.com/api/client/register`
|
||||||
|
|
||||||
|
Register a client instance with the unleash server. The client should send all fields specified.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"appName": "appName",
|
||||||
|
"instanceId": "instanceId",
|
||||||
|
"strategies": ["default", "some-strategy-1"],
|
||||||
|
"started": "2016-11-03T07:16:43.572Z",
|
||||||
|
"interval": 10000,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**Fields:**
|
||||||
|
|
||||||
|
* **appName** - Name of the application seen by unleash-server
|
||||||
|
* **instanceId** - Instance id for this application (typically hostname, podId or similar)
|
||||||
|
* **strategies** - List of strategies implemented by this application
|
||||||
|
* **started** - When this client started. Should be reported as UTC time.
|
||||||
|
* **interval** - At wich interval will this client be expected to send metrics?
|
||||||
|
|
||||||
|
### Send metrics
|
||||||
|
|
||||||
|
`POST http://unleash.host.com/api/client/metrics`
|
||||||
|
|
||||||
|
Register a metrics payload with a timed bucket.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"appName": "appName",
|
||||||
|
"instanceId": "instanceId",
|
||||||
|
"bucket": {
|
||||||
|
"start": "2016-11-03T07:16:43.572Z",
|
||||||
|
"stop": "2016-11-03T07:16:53.572Z",
|
||||||
|
"toggles": {
|
||||||
|
"toggle-name-1": {
|
||||||
|
"yes": 123,
|
||||||
|
"no": 321
|
||||||
|
},
|
||||||
|
"toggle-name-2": {
|
||||||
|
"yes": 111,
|
||||||
|
"no": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Seen-toggles
|
||||||
|
|
||||||
|
`GET http://unleash.host.com/api/client/seen-toggles`
|
||||||
|
|
||||||
|
This enpoints returns a list of applications and what toogles
|
||||||
|
unleash has seend for each application. It will only guarantee
|
||||||
|
toggles reported by client applications within the last hour, but
|
||||||
|
will in most cases remember seen-toggles for applications longer
|
||||||
|
|
||||||
|
**Example response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"appName": "demo-app",
|
||||||
|
"seenToggles": [
|
||||||
|
"add-feature-2",
|
||||||
|
"toggle-2",
|
||||||
|
"toggle-3"
|
||||||
|
],
|
||||||
|
"metricsCount": 127
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appName": "demo-app-2",
|
||||||
|
"seenToggles": [
|
||||||
|
"add-feature-2",
|
||||||
|
"toggle-2",
|
||||||
|
"toggle-3"
|
||||||
|
],
|
||||||
|
"metricsCount": 21
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields:**
|
||||||
|
|
||||||
|
* **appName** - Name of the application seen by unleash-server
|
||||||
|
* **seenToggles** - array of toggles names seen by unleash-server for this application
|
||||||
|
* **metricsCount** - number of metrics counted across all toggles for this application.
|
||||||
|
|
||||||
|
|
||||||
|
### Feature-Toggles metrics
|
||||||
|
|
||||||
|
`GET http://unleash.host.com/api/metrics/feature-toggles`
|
||||||
|
|
||||||
|
This endpoint gives _last minute_ and _last hour_ metrics for all active toggles. This is based on
|
||||||
|
metrics reported by client applications. Yes is the number of times a given feature toggle
|
||||||
|
was evaluated to enabled in a client applcation, and no is the number it avaluated to false.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Example response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"lastHour": {
|
||||||
|
"add-feature-2": {
|
||||||
|
"yes": 0,
|
||||||
|
"no": 527
|
||||||
|
},
|
||||||
|
"toggle-2": {
|
||||||
|
"yes": 265,
|
||||||
|
"no": 85
|
||||||
|
},
|
||||||
|
"toggle-3": {
|
||||||
|
"yes": 257,
|
||||||
|
"no": 93
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastMinute": {
|
||||||
|
"add-feature-2": {
|
||||||
|
"yes": 0,
|
||||||
|
"no": 527
|
||||||
|
},
|
||||||
|
"toggle-2": {
|
||||||
|
"yes": 265,
|
||||||
|
"no": 85
|
||||||
|
},
|
||||||
|
"toggle-3": {
|
||||||
|
"yes": 257,
|
||||||
|
"no": 93
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields:**
|
||||||
|
|
||||||
|
* **lastHour** - Hour projection collected metrics for all feature toggles.
|
||||||
|
* **lastMinute** - Mintue projection collected metrics for all feature toggles.
|
||||||
|
|
||||||
|
|
||||||
|
### Applications
|
||||||
|
|
||||||
|
`GET http://unleash.host.com/api/client/applications`
|
||||||
|
|
||||||
|
This endpoint returns a list of known applications (seen the last two days) and
|
||||||
|
a link to follow for more datails.
|
||||||
|
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"applications": [
|
||||||
|
{
|
||||||
|
"appName": "test",
|
||||||
|
"links": {
|
||||||
|
"appDetails": "/api/client/applications/test"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appName": "demo-app-2",
|
||||||
|
"links": {
|
||||||
|
"appDetails": "/api/client/applications/demo-app-2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"appName": "demo-app",
|
||||||
|
"links": {
|
||||||
|
"appDetails": "/api/client/applications/demo-app"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Application Details
|
||||||
|
|
||||||
|
`GET http://unleash.host.com/api/client/applications/:appName`
|
||||||
|
|
||||||
|
This endpoint gives insight into details about a client applcation, such as instances,
|
||||||
|
strategies implemented and seen toogles.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"appName": "demo-app",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"instanceId": "generated-732038-17080",
|
||||||
|
"clientIp": "::ffff:127.0.0.1",
|
||||||
|
"lastSeen": "2016-11-30T17:32:04.265Z",
|
||||||
|
"createdAt": "2016-11-30T17:31:08.914Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"instanceId": "generated-639919-11185",
|
||||||
|
"clientIp": "::ffff:127.0.0.1",
|
||||||
|
"lastSeen": "2016-11-30T16:04:15.991Z",
|
||||||
|
"createdAt": "2016-11-30T10:49:11.223Z"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"strategies": [
|
||||||
|
{
|
||||||
|
"appName": "demo-app",
|
||||||
|
"strategies": [
|
||||||
|
"default",
|
||||||
|
"extra"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"seenToggles": [
|
||||||
|
"add-feature-2",
|
||||||
|
"toggle-2",
|
||||||
|
"toggle-3"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
@ -21,18 +21,12 @@ module.exports = function (app, config) {
|
|||||||
|
|
||||||
const metrics = new ClientMetrics(clientMetricsStore);
|
const metrics = new ClientMetrics(clientMetricsStore);
|
||||||
|
|
||||||
/**
|
|
||||||
* [{
|
|
||||||
"appName": "mfinn",
|
|
||||||
"toggles": ["toggle1", "toggle2"],
|
|
||||||
}]
|
|
||||||
*/
|
|
||||||
app.get('/client/seen-toggles', (req, res) => {
|
app.get('/client/seen-toggles', (req, res) => {
|
||||||
const seenAppToggles = metrics.getAppsWitToggles();
|
const seenAppToggles = metrics.getAppsWitToggles();
|
||||||
res.json(seenAppToggles);
|
res.json(seenAppToggles);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/metrics/features', (req, res) => {
|
app.get('/metrics/feature-toggles', (req, res) => {
|
||||||
res.json(metrics.getTogglesMetrics());
|
res.json(metrics.getTogglesMetrics());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user